commit-gnue
[Top][All Lists]
Advanced

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

r5775 - in trunk/gnue-forms: samples/zipcode src src/uidrivers/wx/widget


From: jamest
Subject: r5775 - in trunk/gnue-forms: samples/zipcode src src/uidrivers/wx/widgets
Date: Mon, 3 May 2004 18:47:02 -0500 (CDT)

Author: jamest
Date: 2004-05-03 18:47:00 -0500 (Mon, 03 May 2004)
New Revision: 5775

Modified:
   trunk/gnue-forms/samples/zipcode/states.gfd
   trunk/gnue-forms/src/GFConfig.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
Log:
added new config option dropdownMode which defaults to auto
mode can be either windows or gtk1 as it appears that gtk2
handles dropdown events differently than gtk1.  auto is fairly 
dumb at the moment.  Setting it to windows mode on win32 and gtk1
mode on everything else.


Modified: trunk/gnue-forms/samples/zipcode/states.gfd
===================================================================
--- trunk/gnue-forms/samples/zipcode/states.gfd 2004-05-03 21:56:39 UTC (rev 
5774)
+++ trunk/gnue-forms/samples/zipcode/states.gfd 2004-05-03 23:47:00 UTC (rev 
5775)
@@ -38,6 +38,7 @@
       <label name="Label_5" rows="1" text="Zip" c:x="27" c:y="9"/>
       <entry block="cities" field="zip" c:width="10" c:x="27" c:y="10"/>
       <entry block="cities" field="zop" hidden="" c:width="1" c:x="27" 
c:y="1"/>
+      <entry block="blkstate" field="entdesc" rows="1" c:width="30" c:x="7" 
c:y="12"/>
     </page>
   </layout>
 </form>

Modified: trunk/gnue-forms/src/GFConfig.py
===================================================================
--- trunk/gnue-forms/src/GFConfig.py    2004-05-03 21:56:39 UTC (rev 5774)
+++ trunk/gnue-forms/src/GFConfig.py    2004-05-03 23:47:00 UTC (rev 5775)
@@ -360,6 +360,13 @@
     'Typecast'   : GTypecast.text,
     'Default'    : 'wx' },
 
+  { 'Name'       : 'dropdownMode',
+    'Type'       : 'Setting',
+    'Comment'    : 'The style of dropdown handler to use. Possible values: 
auto, windows, gtk1',
+    'Description': 'The style of dropdown handler to use. Possible values: 
auto, windows, gtk1',
+    'Typecast'   : GTypecast.text,
+    'Default'    : 'auto' },
+
   #
   # Do not alter below here unless you really, really want to (and you know 
what you are doing)
   #

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2004-05-03 21:56:39 UTC 
(rev 5774)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2004-05-03 23:47:00 UTC 
(rev 5775)
@@ -29,6 +29,7 @@
 from wxPython.wx import *
 from gnue.common import events
 from types import UnicodeType
+import sys
 
 from gnue.forms.uidrivers.wx.widgets._base import UIHelper
 from gnue.forms.uidrivers.wx.common import _eventObjTowxWindow, wxEncode, 
wxDecode
@@ -43,6 +44,7 @@
   """
   A wxPython-based UI driver for GNUe Forms
   """
+  
   def _createWidget(self, event, spacer):
     """
     Creates a single instance of a data entry widget
@@ -55,11 +57,18 @@
     defaultSize  = wxSize(self.itemWidth,self.itemHeight+1)
 
     if style == 'dropdown':
+      if gConfigForms('dropdownMode') == 'auto':
+        if  sys.platform == "win32":
+          self.dropdownMode = 'windows'
+          self.comboHandler = self._windowsComboHandler
+        else:
+          self.dropdownMode = 'gtk1'
+          self.comboHandler = self._gtk1ComboHandler
+          
       if event.initialize:
         choices = []
         for val in object._field.allowedValues()[1]:
-          choices.append(wxEncode(val))
-          
+          choices.append(wxEncode(val))          
       else:
         choices = [""]
 
@@ -76,8 +85,8 @@
         EVT_TEXT(event.container, newWidget_Id, self.comboHandler)
         EVT_TEXT_ENTER(event.container, newWidget_Id, self.comboHandler)
         self.comboDropped = True    # True if the combobox is dropped and the 
list is visible.
-        # 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...
+                                    # 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 == 'label':
@@ -111,17 +120,18 @@
       _setDefaultEventHandlers(newWidget, event.eventHandler, 
event.initialize, self._uiDriver)
     return newWidget
 
-  def comboHandler(self, event):
+  def _WindowsComboHandler(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
-    eventType = event.GetEventType()
-
+    eventType = event.GetEventType()    
     if self.comboDropped == True:
-      if eventType in [wxEVT_COMMAND_COMBOBOX_SELECTED, 
wxEVT_COMMAND_TEXT_UPDATED, wxEVT_COMMAND_TEXT_ENTER]:
+      if eventType in [wxEVT_COMMAND_COMBOBOX_SELECTED, 
+                       wxEVT_COMMAND_TEXT_UPDATED, 
+                       wxEVT_COMMAND_TEXT_ENTER]:
         self.comboDropped = False
 
         object = _eventObjTowxWindow(event)
@@ -132,7 +142,8 @@
                               index=selection, 
text=wxDecode(event.GetString()),
                             _form=gfObject._form)
     else:
-      if eventType in 
[wxEVT_COMMAND_COMBOBOX_SELECTED,wxEVT_COMMAND_TEXT_ENTER]:
+      if eventType in [wxEVT_COMMAND_COMBOBOX_SELECTED,
+                       wxEVT_COMMAND_TEXT_ENTER]:
         self.comboDropped = True
 
         object = _eventObjTowxWindow(event)
@@ -144,7 +155,31 @@
     self._eventHandler(action)
     #event.Skip()   #Is it needed here?
 
+    
+  def _gtk1ComboHandler(self, event):
+    """
+    Handles combobox for gtk1 style wx.  Unlike the windows handler opening a 
combobox
+    doesn't cause a wxEVT_COMMAND_COMBOBOX_SELECTED event so the widget gets 
confused.
+    """
+    action = None
+    eventType = event.GetEventType()
+    #print "Mode: ", self.dropdownMode
+    #print "Selected: %s\nUpdated: %s\nTextEnter: %s\nEventType %s   -   
DropDown Open? %s " % (wxEVT_COMMAND_COMBOBOX_SELECTED, 
wxEVT_COMMAND_TEXT_UPDATED,                        
wxEVT_COMMAND_TEXT_ENTER,eventType,self.comboDropped)
+    
+    if eventType in [wxEVT_COMMAND_COMBOBOX_SELECTED, 
+                     wxEVT_COMMAND_TEXT_ENTER]:
+      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)
+    #event.Skip()   #Is it needed here?
+    
+
   def checkboxHandler(self,event):
     """
     Handles checkbox toggling if checkbox is clicked.





reply via email to

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