Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # powerbar
- # joe, 2/01/2014
- import appuifw as A
- import graphics as G
- class Keyboard(object):
- def __init__(self,onevent=lambda:None):
- self._keyboard_state={}
- self._downs={}
- self._onevent=onevent
- def handle_event(self,event):
- if event['type']==3:
- code=event['scancode']
- if not self.is_down(code):
- self._downs[code]=self._downs.get(code,0)+1
- self._keyboard_state[code]=1
- elif event['type']==2:
- self._keyboard_state[event['scancode']]=0
- self._onevent()
- def is_down(self,scancode):
- return self._keyboard_state.get(scancode,0)
- def pressed(self,scancode):
- if self._downs.get(scancode,0):
- self._downs[scancode]-=1
- return True
- return False
- def release(self,scancode):
- if self._downs.get(scancode,0):
- self._downs[scancode]-=2
- return True
- return False
- class Bar:
- def __init__(self):
- self.w,self.max=10,150
- self.v=0
- def update(self):
- self.v+=1
- if self.v>self.max-1:self.v=self.max
- def full(self):
- self.v=0
- def draw(self,g):
- px,py=5,H-5
- g.rectangle((px-1,py-self.max-1,px+self.w+1,py+1),0xffffff)
- g.rectangle((px,py-(self.max-self.v),px+self.w,py),fill=0x00ee00)
- class App:
- def __init__(self):
- self.run=0
- A.app.screen='full'
- self.c = A.Canvas(redraw_callback=self.redraw,event_callback=kb.handle_event)
- A.app.body=self.c
- A.app.exit_key_handler = self.stop
- def stop(self):
- self.run=0
- def redraw(self,x):
- if bg:
- self.c.blit(bg)
- def play(self):
- self.run=1
- while self.run:
- bg.clear(0)
- bg.text((25,H-8),u'Pow: %s' %(bar.v,'Maximum')[bar.v==bar.max],0xffffff)
- bar.draw(bg)
- self.redraw(0)
- A.e32.ao_sleep(1e-04)
- if kb.is_down(0x38):
- bar.update()
- elif kb.release(0x38):
- bar.full()
- W,H=G.sysinfo.display_pixels()
- bg=G.Image.new((W,H))
- kb=Keyboard()
- bar=Bar()
- App().play()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement