Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # multiselect checkbox v2
- # author: joe
- import appuifw as A
- import graphics as G
- run=1
- def exit():
- global run
- run=0
- A.app.exit_key_handler=exit
- img=G.Image.new(G.sysinfo.display_pixels())
- class CSelect:
- def __init__(self,items=[]):
- self.cur,self.page,self.offset=0,0,12
- self.items=items
- self.tmp=[]
- self.c=A.Canvas(redraw_callback=self.redraw)
- A.app.screen='full'
- A.app.body=self.c
- def redraw(self,rect):
- if img:
- self.c.blit(img)
- def down(self):
- if self.page*self.offset+self.cur<len(self.items)-1 and self.cur<self.offset-1:self.cur+=1
- else:
- if len(self.items)>self.page*self.offset+self.cur and self.cur==self.offset-1:
- self.page=self.page+1
- self.cur=0
- def up(self):
- if self.cur>0:
- self.cur-=1
- else:
- if self.page>0:
- self.page=self.page-1
- self.cur=self.offset-1
- def select(self):
- if self.page*self.offset+self.cur not in self.tmp:
- self.tmp.append(self.page*self.offset+self.cur)
- else:
- self.tmp.remove(self.page*self.offset+self.cur)
- def show(self):
- self.c.bind(63497,self.up)
- self.c.bind(63498,self.down)
- self.c.bind(63557,self.select)
- px,py,th=20,30,14
- while run:
- img.clear(0)
- if len(self.items)-self.page*self.offset<self.offset:mx=len(self.items)-self.page*self.offset
- else:mx=self.offset
- for index in range(0,mx):
- tc=(0xffffff,0x00ff00)[index==self.cur]
- fc=(None,0x00ff00)[self.page*self.offset+index in self.tmp]
- img.text((px,py+index*th),self.items[index+self.page*self.offset],tc,'legend')
- img.rectangle((px-15,(py+index*th)-10,px-5,py+index*th),0xdadada)
- img.rectangle((px-14,(py+index*th)-9,px-6,(py+index*th)-1),fill=fc)
- img.text((px-15,py-15),u'Pilih Item:',0xffffff,'legend')
- 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)
- self.redraw(0)
- A.e32.ao_sleep(0)
- menu=[u'Item %d' %i for i in range(30)]
- kk=CSelect(menu)
- kk.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement