commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5151 - in trunk/gnue-forms/src: . uidrivers/wx/widgets


From: btami
Subject: r5151 - in trunk/gnue-forms/src: . uidrivers/wx/widgets
Date: Tue, 24 Feb 2004 05:30:44 -0600 (CST)

Author: btami
Date: 2004-02-24 05:30:43 -0600 (Tue, 24 Feb 2004)
New Revision: 5151

Modified:
   trunk/gnue-forms/src/GFDisplayHandler.py
   trunk/gnue-forms/src/GFInstance.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
Log:
*xw dropdown now works
*cleaned up GFDisplayHandler
(by Kmetyko Gabor, alias kilo)

Modified: trunk/gnue-forms/src/GFDisplayHandler.py
===================================================================
--- trunk/gnue-forms/src/GFDisplayHandler.py    2004-02-24 09:42:48 UTC (rev 
5150)
+++ trunk/gnue-forms/src/GFDisplayHandler.py    2004-02-24 11:30:43 UTC (rev 
5151)
@@ -39,14 +39,14 @@
   import Image
 except ImportError:
   Image = None
-  
+
 try:
   from mx.DateTime import DateTime
 except ImportError:
   print """
    This GNUe tool requires mxDateTime to be installed
 
-   You can find the mxDateTime at 
+   You can find the mxDateTime at
 
    http://www.lemburg.com/files/python/mxDateTime.html
 
@@ -71,7 +71,7 @@
   #
 
   def setValue(self, value):
-    self.modified = 0
+    self.modified = False
     self.value = value
     self._buildDisplay()
 
@@ -107,7 +107,7 @@
 
   def isPending(self):
     return self.modified
-  
+
   #####################
   #
   # Editing methods
@@ -118,6 +118,9 @@
   # called when a widget first gets focus
   #
   def beginEdit(self, event):
+    """
+    Called when a widget first gets focus.
+    """
     self.editing = True
     self.modified = False
 
@@ -136,6 +139,9 @@
   # when enter is hit
   #
   def endEdit(self, event):
+    """
+    Called when a widget loses focus or when ENTER is hit.
+    """
     if not self.editing:
       return
 
@@ -259,7 +265,7 @@
     self.selection2 = event.end_pos
     self.cursor = event.position
     self.delete(event)
-    
+
   # Delete backwards one character
   def backspace(self, event):
 
@@ -277,7 +283,7 @@
       event.text = ""
 
       self.addText(event)
- 
+
   # Delete forward one character
   def delete(self, event):
     event.overstrike = True
@@ -366,8 +372,8 @@
     else:
       event.position = self.selection2
     self.moveCursor(event, True)
-    
-    
+
+
   # Select the entire text of the entry and move
   # the cursor to the end
   def selectAll(self, event):
@@ -535,21 +541,21 @@
 ##    FieldDisplayHandler.__init__(self, entry, eventHandler,
 ##            TextMask.TextMask(displayMask, inputMask, formatMask))
     FieldDisplayHandler.__init__(self, entry, eventHandler, None)
-    
+
   def _buildDisplayHelper(self, value, editing):
     if value == None:
       return ""
     else:
       return "*" * len(str(value))
 
-  # These are no-no's for password-type fields    
+  # These are no-no's for password-type fields
   def clipboardCopy(self, event):
     pass
 
   def clipboardCut(self, event):
     pass
 
-    
+
 #############################################################################
 #
 # Handler for Numeric types
@@ -572,10 +578,10 @@
 
   # TODO: Replace with format mask
   def _buildDisplayHelper(self, val, editing):
-    try: 
+    try:
       if val in (None,""):
         return ""
-    except TypeError: 
+    except TypeError:
       pass
 
     if editing and type(val) == types.StringType:
@@ -708,17 +714,18 @@
 
     # My events...
     self.subevents.registerEventListeners( {
-           'requestREPLACEVALUE' : self.replaceText  } )
+           'requestREPLACEVALUE' : self.replaceText,
+           'requestCOMBODROPPED' : self.beginEdit } )
 
 
   def beginEdit(self, event):
 
     if not self._loadedAllowedValues and not 
hasattr(self.field,'_allowedValues'):
       self.field.allowedValues()
-      self._loadedAllowedValues = 1
+      self._loadedAllowedValues = True
 
-    self.editing = 1
-    self.modified = 0
+    self.editing = True
+    self.modified = False
 
     # TODO: Replace with formatter
     self.setValue(self.field.getValue())
@@ -740,19 +747,15 @@
 
   # TODO: Replace with format mask
   def _buildDisplayHelper(self, value, editing):
-    self._dropdownIndex = 0
     if value in (None,""):
       return ""
 
     if editing:
-      i = 0
       val = string.lower(value)
       for disp in self.field._allowedValuesDescr:
-        if disp[:len(val)] == val:
+        if string.lower(disp[:len(val)]) == val:
           display = 
self.field._allowedValues[self.field._allowedValuesReverse[disp]]
-          self._dropdownIndex = i
           return str(display)
-
       return str(value)
 
     if self.field._allowedValues.has_key(str(value)):
@@ -780,7 +783,6 @@
                         # if it does then we'll need to pull
                         # the logic from FieldDisplayHandler.endEdit
                         # and add here.  - jamest
-    
 
 
   def _buildValue(self):

Modified: trunk/gnue-forms/src/GFInstance.py
===================================================================
--- trunk/gnue-forms/src/GFInstance.py  2004-02-24 09:42:48 UTC (rev 5150)
+++ trunk/gnue-forms/src/GFInstance.py  2004-02-24 11:30:43 UTC (rev 5151)
@@ -124,6 +124,7 @@
                            'endEDITMODE'         : self.proxyEntryEvent,
                            'requestINSERTAT'     : self.proxyEntryEvent,
                            'requestDELETERANGE'  : self.proxyEntryEvent,
+                           'requestCOMBODROPPED' : self.proxyEntryEvent,
 
                            # Selection/clipboard events (proxied)
                            'requestSELECTWITHMOUSE' : self.proxyEntryEvent,

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2004-02-24 09:42:48 UTC 
(rev 5150)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2004-02-24 11:30:43 UTC 
(rev 5151)
@@ -55,11 +55,13 @@
 
       newWidget = wxComboBox(event.container, -1, "",defaultPoint,
                               wxSize(self.itemWidth,self.itemHeight),
-                             choices, wxCB_DROPDOWN,) # |wxWANTS_CHARS,)
+                             choices, wxCB_DROPDOWN,) #|wxWANTS_CHARS,)
       if event.initialize:
         newWidget._origAllowedValues = object._field._allowedValues
         newWidget.SetValue("")
         EVT_COMBOBOX(newWidget, newWidget.GetId(), self.comboHandler)
+        EVT_TEXT(newWidget, newWidget.GetId(), self.comboHandler)
+        self.comboDropped = False   # True if the combobox is dropped and the 
list is visible
 
 
     elif style == 'label':
@@ -90,35 +92,57 @@
       newWidget = wxTextCtrl(event.container, -1, value, defaultPoint, 
defaultSize, styles)
     self._eventHandler = event.eventHandler
     if event.initialize:
-      _setDefaultEventHandlers(newWidget, event.eventHandler, 
event.initialize,self._uiDriver)
+      _setDefaultEventHandlers(newWidget, event.eventHandler, 
event.initialize, self._uiDriver)
     return newWidget
 
   def comboHandler(self, event):
+    """
+    Handles combobox
+    When combobox list is dropped, we call beginEdit, via event 
requestCOMBODROPPED
+    When a value is selected from the list, we call replaceText, via event 
requestREPLACEVALUE
+    """
     action = None
-    if event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED:
+    eventType = event.GetEventType()
+
+    if eventType == wxEVT_COMMAND_COMBOBOX_SELECTED:    #combobox dropped
+      if self.comboDropped == False:
+        self.comboDropped = True
+
+        object = _eventObjTowxWindow(event)
+        gfObject = self._uiDriver._IdToGFObj[object.GetId()]
+        uiObject = self._uiDriver._IdToUIObj[object.GetId()]
+        uiObject._eventHandler('requestFOCUS',gfObject,_form=gfObject._form)
+        #action = events.Event('requestCOMBODROPPED', _form=gfObject._form)
+
+    elif eventType == wxEVT_COMMAND_TEXT_UPDATED or eventType == 
wxEVT_COMMAND_TEXT_ENTER:   #value selected from list
+      self.comboDropped = False
+
       object = _eventObjTowxWindow(event)
-      id = object.GetId()
-
+      gfObject     = self._uiDriver._IdToGFObj[object.GetId()]
       selection = event.GetSelection()
 
-      gfObject     = self._uiDriver._IdToGFObj[id]
-      eventdata = [gfObject, event.GetString()]
       action = events.Event('requestREPLACEVALUE',object=gfObject,
                               index=selection, text=event.GetString(),
                             _form=gfObject._form)
     self._eventHandler(action)
+    event.Skip()
 
+
   def checkboxHandler(self,event):
+    """
+    Handles checkbox toggling if checkbox is clicked.
+    """
     action = None
     if event.GetEventType() == wxEVT_COMMAND_CHECKBOX_CLICKED:
       object = _eventObjTowxWindow(event)
       id = object.GetId()
-      
+
       gfObject     = self._uiDriver._IdToGFObj[id]
       eventdata = [gfObject, event.GetString()]
       action = events.Event('requestTOGGLECHKBOX', _form=gfObject._form)
     self._eventHandler(action)
 
+
 configuration = {
     'baseClass'  : UIEntry,
     'provides'   : 'GFEntry',





reply via email to

[Prev in Thread] Current Thread [Next in Thread]