From 6eb30b09566a53ef510532f2a1705d7fc22985a8 Mon Sep 17 00:00:00 2001 From: Tony Anderson Date: Mon, 22 Jun 2009 14:04:24 +0000 Subject: initial commit --- (limited to 'pgu/gui/keysym.py') diff --git a/pgu/gui/keysym.py b/pgu/gui/keysym.py new file mode 100644 index 0000000..cc24089 --- /dev/null +++ b/pgu/gui/keysym.py @@ -0,0 +1,72 @@ +""" +""" +import pygame +from pygame.locals import * + +from const import * +import widget + +class Keysym(widget.Widget): + """A keysym input. + +

This widget records the keysym of the key pressed while this widget is in focus.

+ +
Keysym(value=None)
+ +
+
value
initial keysym, see pygame keysyms
+ + Example + + w = Input(value=pygame.locals.K_g) + + w = Input(pygame.locals.K_g) + + w = Input() + + + """ + + def __init__(self,value=None,**params): + params.setdefault('cls','keysym') + widget.Widget.__init__(self,**params) + self.value = value + + self.font = self.style.font + w,h = self.font.size("Right Super") #"Right Shift") + self.style.width,self.style.height = w,h + #self.rect.w=w+self.style.padding_left+self.style.padding_right + #self.rect.h=h+self.style.padding_top+self.style.padding_bottom + + def event(self,e): + used = None + if e.type == FOCUS or e.type == BLUR: self.repaint() + elif e.type == KEYDOWN: + if e.key != K_TAB: + self.value = e.key + self.repaint() + self.send(CHANGE) + used = True + self.next() + self.pcls = "" + if self.container.myfocus is self: self.pcls = "focus" + return used + + def paint(self,s): + r = pygame.rect.Rect(0,0,self.rect.w,self.rect.h) + #render_box(s,self.style.background,r) + if self.value == None: return + name = "" + for p in pygame.key.name(self.value).split(): name += p.capitalize()+" " + #r.x = self.style.padding_left; + #r.y = self.style.padding_bottom; + s.blit(self.style.font.render(name, 1, self.style.color), r) + + def __setattr__(self,k,v): + if k == 'value' and v != None: + v = int(v) + _v = self.__dict__.get(k,NOATTR) + self.__dict__[k]=v + if k == 'value' and _v != NOATTR and _v != v: + self.send(CHANGE) + self.repaint() -- cgit v0.9.1