Advertisement
phjoe

Multiselect Checkbox 2

Dec 8th, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # multiselect checkbox v2
  2. # author: joe
  3. import appuifw as A
  4. import graphics as G
  5.  
  6. run=1
  7. def exit():
  8.  global run
  9.  run=0
  10. A.app.exit_key_handler=exit
  11. img=G.Image.new(G.sysinfo.display_pixels())
  12.  
  13. class CSelect:
  14.  def __init__(self,items=[]):
  15.   self.cur,self.page,self.offset=0,0,12
  16.   self.items=items
  17.   self.tmp=[]
  18.   self.c=A.Canvas(redraw_callback=self.redraw)
  19.   A.app.screen='full'
  20.   A.app.body=self.c
  21.  
  22.  def redraw(self,rect):
  23.   if img:
  24.    self.c.blit(img)
  25.  
  26.  def down(self):
  27.   if self.page*self.offset+self.cur<len(self.items)-1 and self.cur<self.offset-1:self.cur+=1
  28.   else:
  29.    if len(self.items)>self.page*self.offset+self.cur and self.cur==self.offset-1:
  30.     self.page=self.page+1
  31.     self.cur=0
  32.  
  33.  def up(self):
  34.   if self.cur>0:
  35.    self.cur-=1
  36.   else:
  37.    if self.page>0:
  38.     self.page=self.page-1
  39.     self.cur=self.offset-1
  40.  
  41.  def select(self):
  42.   if self.page*self.offset+self.cur not in self.tmp:
  43.    self.tmp.append(self.page*self.offset+self.cur)
  44.   else:
  45.    self.tmp.remove(self.page*self.offset+self.cur)
  46.  
  47.  def show(self):
  48.   self.c.bind(63497,self.up)
  49.   self.c.bind(63498,self.down)
  50.   self.c.bind(63557,self.select)
  51.   px,py,th=20,30,14
  52.   while run:
  53.    img.clear(0)
  54.    if len(self.items)-self.page*self.offset<self.offset:mx=len(self.items)-self.page*self.offset
  55.    else:mx=self.offset
  56.    for index in range(0,mx):
  57.     tc=(0xffffff,0x00ff00)[index==self.cur]
  58.     fc=(None,0x00ff00)[self.page*self.offset+index in self.tmp]
  59.     img.text((px,py+index*th),self.items[index+self.page*self.offset],tc,'legend')
  60.     img.rectangle((px-15,(py+index*th)-10,px-5,py+index*th),0xdadada)
  61.     img.rectangle((px-14,(py+index*th)-9,px-6,(py+index*th)-1),fill=fc)
  62.    img.text((px-15,py-15),u'Pilih Item:',0xffffff,'legend')
  63.    img.text((px-15,200),u'Halaman: (%d/%d) / Item: %d' %(self.page+1,(len(self.items)//self.offset)+1,self.page*self.offset+self.cur),0xdadada)
  64.    self.redraw(0)
  65.    A.e32.ao_sleep(0)
  66.  
  67. menu=[u'Item %d' %i for i in range(30)]
  68. kk=CSelect(menu)
  69. kk.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement