[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5807 - in trunk/gnue-forms/src: . GFObjects uidrivers/wx uidrivers/wx/w
From: |
btami |
Subject: |
r5807 - in trunk/gnue-forms/src: . GFObjects uidrivers/wx uidrivers/wx/widgets |
Date: |
Wed, 12 May 2004 06:28:44 -0500 (CDT) |
Author: btami
Date: 2004-05-12 06:28:43 -0500 (Wed, 12 May 2004)
New Revision: 5807
Modified:
trunk/gnue-forms/src/GFDisplayHandler.py
trunk/gnue-forms/src/GFObjects/GFEntry.py
trunk/gnue-forms/src/GFParser.py
trunk/gnue-forms/src/uidrivers/wx/common.py
trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py
trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
Log:
implemented listbox widget as a new entry style
Modified: trunk/gnue-forms/src/GFDisplayHandler.py
===================================================================
--- trunk/gnue-forms/src/GFDisplayHandler.py 2004-05-12 01:59:38 UTC (rev
5806)
+++ trunk/gnue-forms/src/GFDisplayHandler.py 2004-05-12 11:28:43 UTC (rev
5807)
@@ -852,7 +852,93 @@
return True
+#############################################################################
+#
+# Handler for Listbox types
+#
+class ListboxDisplayHandler(FieldDisplayHandler):
+ def __init__(self, *args, **params):
+
+ FieldDisplayHandler.__init__(self, *args, **params)
+
+ # My events...
+ self.subevents.registerEventListeners( {
+ 'requestREPLACEVALUE' : self.replaceText } )
+
+
+ def beginEdit(self, event):
+ if self.editing == True and self.modified == False:
+ return
+
+ if not self._loadedAllowedValues and not
hasattr(self.field,'_allowedValues'):
+ self.field.allowedValues()
+ self._loadedAllowedValues = True
+
+ self.editing = True
+ self.modified = False
+
+ # TODO: Replace with formatter
+ self.setValue(self.field.getValue())
+
+ if self.value == None:
+ self.work = ""
+ else:
+ try:
+ self.work = self.field._allowedValues ["%s" % self.value]
+ except KeyError:
+ self.work = ""
+ event.__error__ = True
+ event.__errortext__ = _("Invalid value '%s' for keyed pull-down
field") % self.value
+
+ self._buildDisplay()
+
+ self.cursor = len(self.display)
+
+ # TODO: Replace with format mask
+ def _buildDisplayHelper(self, value, editing):
+ if value in (None,""):
+ return ""
+
+ if editing:
+ val = string.lower(value)
+ for disp in self.field._allowedValuesDescr:
+ if string.lower(disp[:len(val)]) == val:
+ display =
self.field._allowedValues[self.field._allowedValuesReverse[disp]]
+ return display
+ return value
+
+ if self.field._allowedValues.has_key ("%s" % value):
+ return self.field._allowedValues ["%s" % value]
+ else:
+ return ""
+
+ def _buildDisplay(self):
+ if self.editing:
+ self.display = self._buildDisplayHelper(self.work, True)
+ if self.cursor > len(self.work):
+ self.work = self.display
+ else:
+ self.display = self._buildDisplayHelper(self.value, False)
+
+
+ def replaceText(self, event):
+ self.selection1 = 0
+ self.selection2 = len(self.display)
+ self.addText(event)
+
+
+ def _buildValue(self):
+ if self.work == "":
+ self.value = '' # None
+ else:
+ try:
+ self.value = self.field._allowedValuesReverse[self.display]
+ except KeyError:
+ return False
+ return True
+
+
#############################################################################
#
# Handler for Checkbox types
Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFEntry.py 2004-05-12 01:59:38 UTC (rev
5806)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py 2004-05-12 11:28:43 UTC (rev
5807)
@@ -132,6 +132,9 @@
elif self.style == 'dropdown':
self._displayHandler = GFDisplayHandler.DropdownDisplayHandler(self,
self._form._instance.eventController)
+ elif self.style == 'listbox':
+ self._displayHandler = GFDisplayHandler.ListboxDisplayHandler(self,
+ self._form._instance.eventController)
elif self.style == 'password':
self._displayHandler = GFDisplayHandler.PasswordDisplayHandler(self,
self._form._instance.eventController,
Modified: trunk/gnue-forms/src/GFParser.py
===================================================================
--- trunk/gnue-forms/src/GFParser.py 2004-05-12 01:59:38 UTC (rev 5806)
+++ trunk/gnue-forms/src/GFParser.py 2004-05-12 11:28:43 UTC (rev 5807)
@@ -563,6 +563,7 @@
'default': {'Label': _('Default')},
'password': {'Label': _('Password/Hidden')},
'dropdown': {'Label': _('Dropdown/Combo box')},
+ 'listbox': {'Label': _('Listbox')},
'checkbox': {'Label': _('Checkbox')},
'label': {'Label': _('Label (non-editable)')} },
'Default': 'default',
Modified: trunk/gnue-forms/src/uidrivers/wx/common.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/common.py 2004-05-12 01:59:38 UTC (rev
5806)
+++ trunk/gnue-forms/src/uidrivers/wx/common.py 2004-05-12 11:28:43 UTC (rev
5807)
@@ -241,7 +241,11 @@
code=10)
elif command:
- action = events.Event('request%s' % command)
+ # let listbox handle PgUp,PgDn,Up,Down keys
+ if object.style == 'listbox' and object._type == 'GFEntry' and (keycode
in (312,313,317,319)):
+ event.Skip()
+ else:
+ action = events.Event('request%s' % command)
elif object._type == 'GFButton':
action = events.Event('buttonActivated',object)
Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py 2004-05-12 01:59:38 UTC
(rev 5806)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py 2004-05-12 11:28:43 UTC
(rev 5807)
@@ -105,7 +105,7 @@
# Check if foreign key changed
object = self._uiDriver._IdToGFObj[widget.GetId()]
try:
- if object.style == "dropdown" and \
+ if (object.style == "dropdown" or object.style == "listbox") and \
not object._field._allowedValues == widget._origAllowedValues:
try:
# Not in wx 2.2.x
Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2004-05-12 01:59:38 UTC
(rev 5806)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py 2004-05-12 11:28:43 UTC
(rev 5807)
@@ -88,7 +88,29 @@
# For some strange reason it is best to
initialize it True as if
# the list would be dropped down at
startup, though it is not...
+ elif style == 'listbox':
+ if event.initialize:
+ choices = []
+ for val in object._field.allowedValues()[1]:
+ choices.append(wxEncode(val))
+ else:
+ choices = [""]
+# choices.sort()
+
+ newWidget = wxListBox(event.container, -1, defaultPoint,
+ wxSize(self.itemWidth,self.itemHeight),
+ choices, wxLB_SINGLE)
+
+ newWidget.SetValue = lambda v: newWidget.SetStringSelection(v, True)
+
+ if event.initialize:
+ newWidget._origAllowedValues = object._field._allowedValues
+ newWidget.SetValue("")
+ newWidget_Id = newWidget.GetId()
+ EVT_LISTBOX(newWidget, newWidget_Id, self.listboxHandler)
+ EVT_LISTBOX_DCLICK(event.container, newWidget_Id, self.listboxHandler)
+
elif style == 'label':
newWidget = wxStaticText(event.container, -1,
"",defaultPoint,defaultSize,
wxST_NO_AUTORESIZE)
@@ -178,6 +200,26 @@
self._eventHandler(action)
#event.Skip() #Is it needed here?
+
+
+ def listboxHandler(self, event):
+ """
+ Handles listbox events
+ """
+ action = None
+ eventType = event.GetEventType()
+ if eventType in [wxEVT_COMMAND_LISTBOX_SELECTED,
+ wxEVT_COMMAND_LISTBOX_DOUBLECLICKED]:
+
+ object = _eventObjTowxWindow(event)
+ gfObject = self._uiDriver._IdToGFObj[object.GetId()]
+ selection = event.GetSelection()
+
+ action = events.Event('requestREPLACEVALUE',object=gfObject,
+ index=selection, text=wxDecode(event.GetString()),
+ _form=gfObject._form)
+
+ self._eventHandler(action)
def checkboxHandler(self,event):
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5807 - in trunk/gnue-forms/src: . GFObjects uidrivers/wx uidrivers/wx/widgets,
btami <=