Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.90 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3.  
  4. import ui
  5. from collections import namedtuple
  6. import string
  7.  
  8. MasterRec = namedtuple('MasterRec', 'title,image,accessory_type')
  9.  
  10. _interface_bg = 'navy'
  11. _interface_text_color = 'black'
  12.  
  13.  
  14.  
  15. def get_recs(nb_recs) :
  16. lst = []
  17. for i in range(nb_recs):
  18. x = MasterRec(title = str(i), image = None, accessory_type = 'disclosure_indicator')
  19. lst.append(x._asdict())
  20. return lst
  21.  
  22.  
  23.  
  24. class DetailView(ui.View):
  25. def __init__(self, parent):
  26. self.parent = parent
  27.  
  28. #self.flex = 'wh'
  29. self.bg_color = 'white'
  30. #self.border_width = 5
  31. #self.border_color = 'green'
  32. self.create_view()
  33.  
  34. def create_view(self):
  35. pass
  36.  
  37. def layout(self):
  38. self.corner_radius = 6
  39. r = ui.Rect(*self.bounds)
  40. self.frame = r
  41.  
  42.  
  43.  
  44. class MasterView(ui.View):
  45. def __init__(self, parent, width_percent = .33):
  46. self.parent = parent
  47.  
  48. self.bg_color = _interface_bg
  49. self.width_percent = width_percent
  50. self.table = None
  51.  
  52.  
  53. self.search = None
  54.  
  55. self.create_view()
  56.  
  57. def create_view(self):
  58.  
  59. self.search = SearchView(self)
  60.  
  61.  
  62. tbl = ui.TableView()
  63. tbl.corner_radius = 6
  64. tbl.border_width = .5
  65. tbl.background_color = _interface_bg
  66. self.table = tbl
  67. #self.table.data_source = self
  68. #self.table.data_source.accessory_action =
  69. #self.table.data_source.action = self.parent.hit
  70.  
  71. #master.add_subview(search)
  72. self.add_subview(self.table)
  73. self.add_subview(self.search)
  74.  
  75. def layout(self):
  76.  
  77. #resize ourself
  78. r = ui.Rect(*self.parent.bounds)
  79. r.width = r.width * self.width_percent
  80. self.frame = r
  81.  
  82. # resize the table
  83. r1 = ui.Rect(*self.bounds)
  84. self.table.frame = r1.inset(44, 5)
  85.  
  86.  
  87. self.search.border_width = 2
  88. # rezize search
  89. self.search.y= 0
  90. self.search.x = 0
  91. self.search.width = self.width
  92.  
  93.  
  94.  
  95.  
  96. class SearchView(ui.View):
  97. def __init__(self, parent):
  98. self.parent = parent
  99. self.search_field = None
  100. self.bg_color = _interface_bg
  101. self.height = 42
  102.  
  103. self.create_view()
  104.  
  105. def create_view(self):
  106. sf = ui.TextField()
  107. #self.search_field = ui.TextField()
  108. sf.corner_radius = 3
  109. sf.placeholder = 'Search'
  110. sf.alignment = ui.ALIGN_CENTER
  111. sf.flex = 'wh'
  112. sf.background_color = _interface_bg
  113. sf.text_color = _interface_text_color
  114. sf.delegate = self
  115.  
  116. self.search_field = sf
  117. self.add_subview(self.search_field)
  118.  
  119. def layout(self):
  120. self.search_field.frame = ui.Rect(*self.bounds).inset(8,8)
  121.  
  122. def textfield_should_change(self, textfield, range, replacement):
  123. # rough test. only ascii chars, no spaces
  124. if not replacement :
  125. return True
  126.  
  127. for c in str(replacement):
  128. if c not in string.ascii_letters:
  129. return False
  130.  
  131. return True
  132.  
  133.  
  134.  
  135. class UiRemindersStyle (ui.View):
  136. def __init__(self , master_width = .33, **kwargs):
  137. ui.View.__init__(self, **kwargs)
  138.  
  139. self.master_percent = master_width
  140.  
  141. self.master = None
  142. self.detail = None
  143. self.search = None
  144. self.table = None
  145. self.master_width = 0
  146.  
  147. #create the views
  148. self.create_views()
  149.  
  150. def create_views(self):
  151. # create the views, dont worry about sizes yet.. do it in layout
  152.  
  153. # create master view
  154. master = MasterView(self, self.master_percent)
  155. self.master = master
  156.  
  157. # create search view
  158. self.search = SearchView(self.master)
  159. #self.add_subview(self.search)
  160.  
  161. self.add_subview(master)
  162.  
  163. self.detail = DetailView(self)
  164. self.add_subview(self.detail)
  165.  
  166.  
  167.  
  168. def layout(self):
  169. # master view
  170. r = ui.Rect(*self.bounds)
  171. r.width = r.width * self.master_percent
  172. self.master.frame = r
  173.  
  174. r = ui.Rect(*self.bounds)
  175. r.width -= self.master.width
  176. r.x = self.master.width
  177.  
  178. self.detail.bounds = r.inset(10,10, 44, 0)
  179.  
  180. def set_master_data(self, items):
  181. print self.master.table
  182. tbl = self.master.table
  183. tbl.data_source = ui.ListDataSource(items = get_recs(40))
  184. tbl.data_source.action = self.hit_master
  185.  
  186. def hit_master(self, sender):
  187. print 'inside hit callback master'
  188. print sender.name
  189.  
  190.  
  191. if __name__ == '__main__':
  192. f = ui.Rect(0,0,768, 768)
  193. rem = UiRemindersStyle(frame = f, master_width =.5, name = 'Reminders')
  194. rem.set_master_data(range(40))
  195. rem.present('sheet')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement