X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/346a9b8e1fcfe30629f0d1ee4675e9e8f89890cf..4c4732c6ed8cb0aaa70fb2d4c6e5a958868c5349:/src/pgu/gui/input.py diff --git a/src/pgu/gui/input.py b/src/pgu/gui/input.py deleted file mode 100644 index 3f3f653..0000000 --- a/src/pgu/gui/input.py +++ /dev/null @@ -1,169 +0,0 @@ -""" -""" -import pygame -from pygame.locals import * - -from const import * -import widget - -class Input(widget.Widget): - """A single line text input. - -
Input(value="",size=20)
- -
-
value
initial text -
size
size for the text box, in characters -
- - Example - - w = Input(value="Cuzco the Goat",size=20) - - w = Input("Marbles") - - - """ - def __init__(self,value="",size=20,customFont = None,**params): - params.setdefault('cls','input') - widget.Widget.__init__(self,**params) - self.value = value - self.pos = len(str(value)) - self.vpos = 0 - if customFont != None: - self.font = customFont - else: - self.font = self.style.font - w,h = self.font.size("e"*size) - if not self.style.height: self.style.height = h - if not self.style.width: self.style.width = w - #self.style.height = max(self.style.height,h) - #self.style.width = max(self.style.width,w) - #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 paint(self,s): - - r = pygame.Rect(0,0,self.rect.w,self.rect.h) - - cs = 2 #NOTE: should be in a style - - w,h = self.font.size(self.value[0:self.pos]) - x = w-self.vpos - if x < 0: self.vpos -= -x - if x+cs > s.get_width(): self.vpos += x+cs-s.get_width() - - s.blit(self.font.render(self.value, 1, self.style.color),(-self.vpos,0)) - - if self.container.myfocus is self: - w,h = self.font.size(self.value[0:self.pos]) - r.x = w-self.vpos - r.w = cs - r.h = h - s.fill(self.style.color,r) - - def _setvalue(self,v): - self.__dict__['value'] = v - self.send(CHANGE) - - def event(self,e): - used = None - if e.type == KEYDOWN: - if e.key == K_BACKSPACE: - if self.pos: - self._setvalue(self.value[:self.pos-1] + self.value[self.pos:]) - self.pos -= 1 - elif e.key == K_DELETE: - if len(self.value) > self.pos: - self._setvalue(self.value[:self.pos] + self.value[self.pos+1:]) - elif e.key == K_HOME: - self.pos = 0 - elif e.key == K_END: - self.pos = len(self.value) - elif e.key == K_LEFT: - if self.pos > 0: self.pos -= 1 - used = True - elif e.key == K_RIGHT: - if self.pos < len(self.value): self.pos += 1 - used = True - elif e.key == K_RETURN: - self.next() - elif e.key == K_TAB: - pass - else: - #c = str(e.unicode) - try: - c = (e.unicode).encode('latin-1') - if c: - self._setvalue(self.value[:self.pos] + c + self.value[self.pos:]) - self.pos += 1 - except: #ignore weird characters - pass - self.repaint() - elif e.type == FOCUS: - self.repaint() - elif e.type == BLUR: - self.repaint() - - self.pcls = "" - if self.container.myfocus is self: self.pcls = "focus" - - return used - - def __setattr__(self,k,v): - if k == 'value': - if v == None: v = '' - v = str(v) - self.pos = len(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() - -class Password(Input): - """A password input, text is *-ed out. - -
Password(value="",size=20)
- -
-
value
initial text -
size
size for the text box, in characters -
- - Example - - w = Password(value="password",size=20) - - w = Password("53[r3+") - - - """ - - def paint(self,s): - hidden="*" - show=len(self.value)*hidden - - #print "self.value:",self.value - - if self.pos == None: self.pos = len(self.value) - - r = pygame.Rect(0,0,self.rect.w,self.rect.h) - - cs = 2 #NOTE: should be in a style - - w,h = self.font.size(show) - x = w-self.vpos - if x < 0: self.vpos -= -x - if x+cs > s.get_width(): self.vpos += x+cs-s.get_width() - - s.blit(self.font.render(show, 1, self.style.color),(-self.vpos,0)) - - if self.container.myfocus is self: - #w,h = self.font.size(self.value[0:self.pos]) - w,h = self.font.size(show[0:self.pos]) - r.x = w-self.vpos - r.w = cs - r.h = h - s.fill(self.style.color,r) -