Phuket2
Feb 01, 2016 - 15:37
Just been trying to help a friend with some example code. It's not good, but still gives some ideas... like food for thought
# coding: utf-8
import ui
import requests, json
_site = '''https://raw.githubusercontent.com/bahamas10/css-color-names/master/css-color-names.json'''
def get_json_data_from_site(website):
# generic url request for json data
# will fail if the url does not return json data....
# can avoid this with some simple checks, but is just an example
return requests.get(website).json()
def make_cell(tv, section, row):
data = tv.data_source.items
_key = data.keys()[row]
cell = ui.TableViewCell()
cell.frame = (0,0,ui.get_screen_size()[0] ,44)
cell.background_color = data.get(_key)
lb = ui.Label(frame = cell.bounds)
lb.text = _key
lb.alignment = ui.ALIGN_CENTER
lb.font = ('Avenir Next Condensed', 28)
cell.content_view.add_subview(lb)
return cell
class DSO (object):
def tableview_number_of_sections(self, tv):
# Return the number of sections (defaults to 1)
return 1
def tableview_number_of_rows(self, tv, section):
# Return the number of rows in the section
return len(tv.data_source.items.keys())
def tableview_cell_for_row(self, tv, section, row):
# Create and return a cell for the given section/row
return make_cell(tv, section, row)
'''
cell = ui.TableViewCell()
cell.text_label.text = 'Foo Bar'
return cell
'''
'''
def tableview_title_for_header(self, tv, section):
# Return a title for the given section.
# If this is not implemented, no section headers will be shown.
return 'Some Section'
'''
def tableview_can_delete(self, tv, section, row):
# Return True if the user should be able to delete the given row.
return True
def tableview_can_move(self, tv, section, row):
# Return True if a reordering control should be shown for the given row (in editing mode).
return True
def tableview_delete(self, tv, section, row):
# Called when the user confirms deletion of the given row.
pass
def tableview_move_row(self, tv, from_section, from_row, to_section, to_row):
# Called when the user moves a row with the reordering control (in editing mode).
pass
if __name__ == '__main__':
json_data = get_json_data_from_site(_site)
# setting f to the size of the screen
f = (0,0, ui.get_screen_size()[0], ui.get_screen_size()[1])
v = ui.View(frame = f)
v.name = 'css names - {} colours'.format(len(json_data.keys()))
tbl = ui.TableView()
tbl.frame = v.bounds
tbl.data_source = DSO()
tbl.data_source.items = json_data
v.add_subview(tbl)
v.present('')