@frankL
from objc_util import *
import os
import photos
import ui
class PhotosPickerTableView(ui.View):
def __init__(self,w,h,d):
self.width = w
self.height = h
self.selected = None
ok = ui.ButtonItem()
ok.image = ui.Image.named('iob:ios7_checkmark_outline_32')
ok.action = self.ok_action
self.right_button_items = (ok,)
tbl = ui.TableView()
tbl.frame = (0,0,d,h)
tbl.row_height = d
self.assets = ['test:Lenna','test:Mandrill','test:Numbers','test:Pattern','test:Peppers','test:Boat','test:Bridge','test:Sailboat']
tbl.data_source = ui.ListDataSource(items=range(len(self.assets)))
tbl.separator_color=(1,0,0,0)
tbl.delegate = self
tbl.data_source.tableview_cell_for_row = self.tableview_cell_for_row
tbl.background_color = (0,0,0,0)
self.add_subview(tbl)
pha =ui.View(name='photo_area')
pha.frame = (d,0,w-d,h)
self.add_subview(pha)
img = ui.ImageView(name='selected_photo')
img.frame = (0,0,w-d,h)
img.content_mode=ui.CONTENT_SCALE_ASPECT_FIT
img.background_color = (0.5,0.5,0.5,1)
pha.add_subview(img)
self.tableview_did_select(tbl,0,0)
self.photo_scale = 1
def ok_action(self,sender):
self.close()
def tableview_did_select(self, tableview, section, row):
ui_image = ui.Image.named(self.assets[row])
self['photo_area']['selected_photo'].image = ui_image
self.selected = row
def tableview_cell_for_row(self,tableview, section, row):
cell = ui.TableViewCell()
v = 0.4 + (row % 2)*0.4
cell.bg_color = (v,v,v,v)
selected_cell = ui.View()
#selected_cell.bg_color = 'blue'
selected_cell.border_width = 2
selected_cell.border_color = 'blue'
cell.selected_background_view = selected_cell
photo = ui.ImageView()
photo.frame = (0,0,tableview.row_height,tableview.row_height)
photo.image = ui.Image.named(self.assets[row])
photo.content_mode = ui.CONTENT_SCALE_ASPECT_FIT
cell.content_view.add_subview(photo)
return cell
def main():
# Hide script
w,h = ui.get_screen_size()
mi = min(w,h)*0.9
my_back = PhotosPickerTableView(mi,mi,100)
my_back.background_color='white'
my_back.name = 'Photos Picker via TableView'
my_back.present('sheet',hide_title_bar=False)
my_back.wait_modal()
# Protect against import
if __name__ == '__main__':
main()