Advertisement
phjoe

Powerbar

Jan 2nd, 2015
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # powerbar
  2. # joe, 2/01/2014
  3.  
  4. import appuifw as A
  5. import graphics as G
  6.  
  7. class Keyboard(object):
  8.  def __init__(self,onevent=lambda:None):
  9.   self._keyboard_state={}
  10.   self._downs={}
  11.   self._onevent=onevent
  12.  
  13.  def handle_event(self,event):
  14.   if event['type']==3:
  15.    code=event['scancode']
  16.    if not self.is_down(code):
  17.     self._downs[code]=self._downs.get(code,0)+1
  18.    self._keyboard_state[code]=1
  19.   elif event['type']==2:
  20.    self._keyboard_state[event['scancode']]=0
  21.   self._onevent()
  22.  
  23.  def is_down(self,scancode):
  24.   return self._keyboard_state.get(scancode,0)
  25.  
  26.  def pressed(self,scancode):
  27.   if self._downs.get(scancode,0):
  28.    self._downs[scancode]-=1
  29.    return True
  30.   return False
  31.  
  32.  def release(self,scancode):
  33.   if self._downs.get(scancode,0):
  34.    self._downs[scancode]-=2
  35.    return True
  36.   return False
  37.  
  38.  
  39. class Bar:
  40.  def __init__(self):
  41.   self.w,self.max=10,150
  42.   self.v=0
  43.  
  44.  def update(self):
  45.   self.v+=1
  46.   if self.v>self.max-1:self.v=self.max
  47.  
  48.  def full(self):
  49.   self.v=0
  50.  
  51.  def draw(self,g):
  52.   px,py=5,H-5
  53.   g.rectangle((px-1,py-self.max-1,px+self.w+1,py+1),0xffffff)
  54.   g.rectangle((px,py-(self.max-self.v),px+self.w,py),fill=0x00ee00)
  55.  
  56.  
  57. class App:
  58.  def __init__(self):
  59.   self.run=0
  60.   A.app.screen='full'
  61.   self.c = A.Canvas(redraw_callback=self.redraw,event_callback=kb.handle_event)
  62.   A.app.body=self.c
  63.   A.app.exit_key_handler = self.stop
  64.  
  65.  def stop(self):
  66.   self.run=0
  67.  
  68.  def redraw(self,x):
  69.   if bg:
  70.    self.c.blit(bg)
  71.  
  72.  def play(self):
  73.   self.run=1
  74.   while self.run:
  75.    bg.clear(0)
  76.    bg.text((25,H-8),u'Pow: %s' %(bar.v,'Maximum')[bar.v==bar.max],0xffffff)
  77.    bar.draw(bg)
  78.    self.redraw(0)
  79.    A.e32.ao_sleep(1e-04)
  80.    if kb.is_down(0x38):
  81.     bar.update()
  82.    elif kb.release(0x38):
  83.     bar.full()
  84.  
  85.  
  86.  
  87. W,H=G.sysinfo.display_pixels()
  88. bg=G.Image.new((W,H))
  89.  
  90. kb=Keyboard()
  91. bar=Bar()
  92. App().play()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement