Update of /cvsroot/freevo/freevo/src/gui
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25173
Modified Files:
InputBox.py LetterBoxGroup.py __init__.py
Removed Files:
LetterBox.py PasswordInputBox.py PasswordLetterBox.py
Log Message:
enhance input box, merge password and normal input
Index: InputBox.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/gui/InputBox.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** InputBox.py 18 Feb 2004 21:52:04 -0000 1.14
--- InputBox.py 21 Feb 2004 19:33:24 -0000 1.15
***************
*** 11,14 ****
--- 11,17 ----
# -----------------------------------------------------------------------
# $Log$
+ # Revision 1.15 2004/02/21 19:33:24 dischi
+ # enhance input box, merge password and normal input
+ #
# Revision 1.14 2004/02/18 21:52:04 dischi
# Major GUI update:
***************
*** 66,69 ****
--- 69,73 ----
height Integer
text String to print.
+ type 'normal' or 'password'
icon icon
text_prop A dict of 3 elements composing text proprieties:
***************
*** 74,78 ****
"""
! def __init__(self, text, handler=None, x=None, y=None, width=0, height=0,
icon=None, vertical_expansion=1, text_prop=None, parent='osd'):
--- 78,82 ----
"""
! def __init__(self, text, handler=None, type='text', x=None, y=None, width=0,
height=0,
icon=None, vertical_expansion=1, text_prop=None, parent='osd'):
***************
*** 80,118 ****
icon, vertical_expansion, text_prop, parent)
! self.lbg = LetterBoxGroup()
self.add_child(self.lbg)
!
def eventhandler(self, event):
! if event == INPUT_LEFT:
! self.lbg.change_selected_box('left')
! self.draw(update=True)
!
! elif event == INPUT_RIGHT:
! self.lbg.change_selected_box('right')
! self.draw(update=True)
!
! elif event == INPUT_ENTER:
self.destroy()
! if self.handler: self.handler(self.lbg.get_word())
! elif event == INPUT_EXIT:
self.destroy()
! elif event == INPUT_UP:
! self.lbg.get_selected_box().charUp()
! self.draw(update=True)
!
! elif event == INPUT_DOWN:
! self.lbg.get_selected_box().charDown()
! self.draw(update=True)
!
! elif event in (INPUT_0, INPUT_1, INPUT_2, INPUT_3,
! INPUT_4, INPUT_5, INPUT_6, INPUT_7,
! INPUT_8, INPUT_9, INPUT_0 ):
! self.lbg.get_selected_box().cycle_phone_char(event.arg)
! self.draw(update=True)
! else:
! return self.parent.eventhandler(event)
!
--- 84,105 ----
icon, vertical_expansion, text_prop, parent)
! self.lbg = LetterBoxGroup(type=type)
self.add_child(self.lbg)
!
def eventhandler(self, event):
+ if self.lbg.eventhandler(event):
+ self.draw()
+ return True
! if event == INPUT_ENTER:
self.destroy()
! if self.handler:
! self.handler(self.lbg.get_word())
! return True
! if event == INPUT_EXIT:
self.destroy()
+ return True
! return self.parent.eventhandler(event)
Index: LetterBoxGroup.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/gui/LetterBoxGroup.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** LetterBoxGroup.py 18 Feb 2004 21:52:04 -0000 1.14
--- LetterBoxGroup.py 21 Feb 2004 19:33:24 -0000 1.15
***************
*** 11,14 ****
--- 11,17 ----
# -----------------------------------------------------------------------
# $Log$
+ # Revision 1.15 2004/02/21 19:33:24 dischi
+ # enhance input box, merge password and normal input
+ #
# Revision 1.14 2004/02/18 21:52:04 dischi
# Major GUI update:
***************
*** 53,66 ****
import config
! from Container import Container
! from LayoutManagers import LayoutManager
! from LetterBox import *
! from PasswordLetterBox import *
!
class LetterBoxGroup(Container):
"""
! left x coordinate. Integer
! top y coordinate. Integer
width Integer
height Integer
--- 56,69 ----
import config
! from GUIObject import Align
! from Container import Container
! from LayoutManagers import LayoutManager
! from Button import Button
! from event import *
class LetterBoxGroup(Container):
"""
! x x coordinate. Integer
! y y coordinate. Integer
width Integer
height Integer
***************
*** 73,84 ****
bd_width Border width Integer
"""
-
-
def __init__(self, numboxes=7, text=None, handler=None, type=None,
! left=None, top=None, width=None, height=None, bg_color=None,
fg_color=None, selected_bg_color=None, selected_fg_color=None,
border=None, bd_color=None, bd_width=None):
! Container.__init__(self, 'widget', left, top, width, height, bg_color,
fg_color, selected_bg_color, selected_fg_color,
border, bd_color, bd_width)
--- 76,85 ----
bd_width Border width Integer
"""
def __init__(self, numboxes=7, text=None, handler=None, type=None,
! x=None, y=None, width=None, height=None, bg_color=None,
fg_color=None, selected_bg_color=None, selected_fg_color=None,
border=None, bd_color=None, bd_width=None):
! Container.__init__(self, 'widget', x, y, width, height, bg_color,
fg_color, selected_bg_color, selected_fg_color,
border, bd_color, bd_width)
***************
*** 99,110 ****
h = 0
for i in range(self.numboxes):
! if self.type == 'password':
! lb = PasswordLetterBox()
! else:
! lb = LetterBox()
if self.text and len(self.text) > i:
lb.set_text(self.text[i])
! l = l + lb.width
if lb.height > h: h = lb.height
if i == 0:
--- 100,109 ----
h = 0
for i in range(self.numboxes):
! lb = LetterBox(border=None)
! if self.type != 'password':
if self.text and len(self.text) > i:
lb.set_text(self.text[i])
! l = l + lb.width - self.bd_width
if lb.height > h: h = lb.height
if i == 0:
***************
*** 113,120 ****
self.boxes.append(lb)
! self.width = l
self.height = h
self.set_h_align(Align.CENTER)
--- 112,120 ----
self.boxes.append(lb)
! self.width = l + self.bd_width
self.height = h
self.set_h_align(Align.CENTER)
+ self.last_key = None
***************
*** 149,154 ****
word = ''
for box in self.boxes:
! if isinstance(box, PasswordLetterBox):
! word += box.real_char
else:
word = word + box.get_text()
--- 149,154 ----
word = ''
for box in self.boxes:
! if hasattr(box, 'real_text'):
! word += box.real_text
else:
word = word + box.get_text()
***************
*** 163,167 ****
--- 163,314 ----
Container._draw(self)
+
+ def eventhandler(self, event):
+ """
+ Handle basic events for this widget. Returns True when the event
+ was used and a redraw is needed.
+ """
+ if self.type == 'password':
+ if event == INPUT_LEFT or event == INPUT_UP:
+ the_box = self.get_selected_box()
+ if self.boxes.index(the_box) != 0:
+ self.change_selected_box('left')
+ the_box = self.get_selected_box()
+ the_box.set_text(' ')
+ the_box.real_text = ''
+ return True
+
+ if event in INPUT_ALL_NUMBERS:
+ the_box = self.get_selected_box()
+ the_box.real_text = str(event.arg)
+ the_box.set_text('*')
+ if self.boxes.index(the_box) != len(self.boxes)-1:
+ self.change_selected_box('right')
+ return True
+
+ else:
+ if event == INPUT_LEFT:
+ self.change_selected_box('left')
+ self.last_key = None
+ return True
+
+ if event == INPUT_RIGHT:
+ self.change_selected_box('right')
+ self.last_key = None
+ return True
+
+ if event == INPUT_UP:
+ self.get_selected_box().charUp()
+ self.last_key = None
+ return True
+
+ if event == INPUT_DOWN:
+ self.get_selected_box().charDown()
+ self.last_key = None
+ return True
+
+ if event in INPUT_ALL_NUMBERS:
+ if self.last_key and self.last_key != event:
+ self.change_selected_box('right')
+ self.last_key = event
+ self.get_selected_box().cycle_phone_char(event.arg)
+ return True
+
+ return False
+
+
+ class LetterBox(Button):
+ """
+ x x coordinate. Integer
+ y y coordinate. Integer
+ width Integer
+ height Integer
+ text Letter to hold.
+ bg_color Background color (Color)
+ fg_color Foreground color (Color)
+ border Border
+ bd_color Border color (Color)
+ bd_width Border width Integer
+ """
+ ourChars = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+ 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+ 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ '-', '.', ' ' ]
+
+ phoneChars = ([ " ", "-", ".", "0" ],
+ [ "1", ],
+ [ "A", "B", "C", "2" ],
+ [ "D", "E", "F", "3" ],
+ [ "G", "H", "I", "4" ],
+ [ "J", "K", "L", "5" ],
+ [ "M", "N", "O", "6" ],
+ [ "P", "Q", "R", "S", "7" ],
+ [ "T", "U", "V" "8"],
+ [ "W", "X", "Y", "Z" ,"9"])
+
+
+ def __init__(self, text=' ', x=None, y=None, width=35, height=35,
+ bg_color=None, fg_color=None, selected_bg_color=None,
+ selected_fg_color=None, border=None, bd_color=None,
+ bd_width=None):
+
+ Button.__init__(self, text, None, x, y, width, height, bg_color,
+ fg_color, selected_bg_color, selected_fg_color,
+ border, bd_color, bd_width)
+
+ self.h_margin = 0
+ self.v_margin = 0
+ self.h_spacing = 0
+ self.v_spacing = 0
+ self.set_v_align(Align.BOTTOM)
+ self.set_h_align(Align.CENTER)
+ self.label.set_v_align(Align.CENTER)
+ self.label.set_h_align(Align.CENTER)
+
+
+ def set_text(self, text):
+ text = text.upper()
+ Button.set_text(self, text)
+ self.label.width = self.width
+ self.label.height = self.height
+ self.label.set_v_align(Align.CENTER)
+ self.label.set_h_align(Align.CENTER)
+
+
+ def charUp(self):
+ charNow = self.ourChars.index(self.text)
+ if charNow < len(self.ourChars)-1:
+ charNext = charNow + 1
+ else:
+ charNext = 0
+
+ self.set_text(self.ourChars[charNext])
+
+
+ def charDown(self):
+ charNow = self.ourChars.index(self.text)
+ if charNow > 0:
+ charNext = charNow - 1
+ else:
+ charNext = len(self.ourChars)-1
+
+ self.set_text(self.ourChars[charNext])
+
+
+ def cycle_phone_char(self, number):
+ letters = self.phoneChars[number]
+
+ if not self.text in letters:
+ self.set_text(letters[0])
+ else:
+ i = letters.index(self.text)
+ if i < len(letters)-1:
+ i = i + 1
+ else:
+ i = 0
+ self.set_text(letters[i])
+
+
class LetterBoxLayout(LayoutManager):
***************
*** 171,178 ****
def layout(self):
! top = l = 0
for box in self.container.boxes:
! left = l
! l = l + box.width
! box.set_position(left, top)
--- 318,325 ----
def layout(self):
! y = l = 0
for box in self.container.boxes:
! x = l
! l = l + box.width - self.container.bd_width
! box.set_position(x, y)
Index: __init__.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/gui/__init__.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** __init__.py 18 Feb 2004 21:52:04 -0000 1.12
--- __init__.py 21 Feb 2004 19:33:24 -0000 1.13
***************
*** 25,28 ****
--- 25,31 ----
#-----------------------------------------------------------------------
# $Log$
+ # Revision 1.13 2004/02/21 19:33:24 dischi
+ # enhance input box, merge password and normal input
+ #
# Revision 1.12 2004/02/18 21:52:04 dischi
# Major GUI update:
***************
*** 70,80 ****
from Label import *
from Button import *
- from LetterBox import *
- from PasswordLetterBox import *
from LetterBoxGroup import *
from RegionScroller import *
from Scrollbar import *
from InputBox import *
- from PasswordInputBox import *
from LayoutManagers import *
from exceptions import *
--- 73,80 ----
--- LetterBox.py DELETED ---
--- PasswordInputBox.py DELETED ---
--- PasswordLetterBox.py DELETED ---
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog