Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Dropdown Select in Canvas
- # Author: Joe
- # 09/12/2014
- # note: this is just an example, not a module
- 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 Dropdown:
- def __init__(self,items=[]):
- self.cur,self.page,self.offset=0,0,6
- self.state=1
- self.items=items
- self.selected=None
- 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 not self.state:
- 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)-1>self.page*self.offset+self.cur and self.cur==self.offset-1:
- self.page=self.page+1
- self.cur=0
- def up(self):
- if not self.state:
- if self.cur>0:
- self.cur-=1
- if self.cur<0:self.state=1
- else:
- if self.page>0:
- self.page=self.page-1
- self.cur=self.offset-1
- def select(self):
- if self.state:self.state=0
- else:self.state=1
- self.selected=self.items[self.page * self.offset+self.cur]
- def show(self):
- self.c.bind(50,self.up)
- self.c.bind(56,self.down)
- self.c.bind(53,self.select)
- px,py,th=15,30,14
- bw=max([len(s) for s in self.items])+100
- while run:
- img.clear(0x363636)
- if not self.state:
- if len(self.items)-self.page*self.offset<self.offset:mx=len(self.items)-self.page*self.offset
- else:mx=self.offset
- img.rectangle((px-5,py-(th-2),px+bw,py+mx*th+4),0xdadada,0xfcfcfc)
- img.line((px-5,py+2,px+bw,py+2),0xeeeeee)
- img.polygon((px+bw-2,py-(th-4), px+bw-8, py, px+bw-14, py-(th-4)),fill=0)
- img.rectangle((px-3,py+self.cur*th+2,px+bw-2,py+self.cur*th+th+4),fill=0xefefef)
- for index in range(0,mx):
- img.text((px,py+index*th+th),self.items[index+self.page*self.offset],0)
- else:
- img.rectangle((px-5,py-(th-2),px+bw,py+4),0xdadada,0xfcfcfc)
- img.polygon((px+bw-2,py-(th-4), px+bw-8, py, px+bw-14, py-(th-4)),fill=0)
- img.text((px,py),(u'Silahkan Pilih',self.selected)[self.selected!=None],0)
- img.text((px-5,py-15),u'Menu:',0xdadada)
- img.text((px-5,186),u'Dropdown Selector',0xdadada)
- img.text((px-5,200),u'Scroll: (%d/%d) / Item: %s' %(self.page+1,(len(self.items)//self.offset)+1,(u'Belum dipilih',self.page*self.offset+self.cur) [self.selected!=None]),0xdadada)
- self.redraw(0)
- A.e32.ao_sleep(0)
- menu=[u'Item %d' %i for i in range(10)]
- dd=Dropdown(menu)
- dd.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement