commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r8177 - trunk/gnue-forms/src/uidrivers/wx26/widgets


From: johannes
Subject: [gnue] r8177 - trunk/gnue-forms/src/uidrivers/wx26/widgets
Date: Fri, 24 Feb 2006 05:50:37 -0600 (CST)

Author: johannes
Date: 2006-02-24 05:50:37 -0600 (Fri, 24 Feb 2006)
New Revision: 8177

Modified:
   trunk/gnue-forms/src/uidrivers/wx26/widgets/box.py
   trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
Log:
Further improvents for entry-widgets and dropdowns on MSW and Mac


Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/box.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/box.py  2006-02-22 13:06:09 UTC 
(rev 8176)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/box.py  2006-02-24 11:50:37 UTC 
(rev 8177)
@@ -38,19 +38,14 @@
 
   def _createWidget (self, event, spacer):
 
-    offsX = self._uiDriver.cellWidth / 2
-    offsY = self._uiDriver.cellHeight / 2
+    offs = 2
+    pos  = (self.itemX + offs, self.itemY + offs)
+    size = (self.itemWidth - offs * 2, self.itemHeight - offs * 2)
 
-    pos  = (self.itemX + offsX, self.itemY + offsY)
-    size = (self.itemWidth - offsX * 2, self.itemHeight - offsY * 2)
+    return wx.StaticBox (event.container, -1, self._gfObject.label, pos, size)
 
-    newWidget = wx.StaticBox (event.container, wx.ID_ANY, self._gfObject.label,
-        pos, size)
 
-    return newWidget
 
-
-
 # =============================================================================
 # Configuration data
 # =============================================================================

Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py        2006-02-22 
13:06:09 UTC (rev 8176)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py        2006-02-24 
11:50:37 UTC (rev 8177)
@@ -94,9 +94,13 @@
     result = wx.TextCtrl (parent, -1, '', self.__pos, self.__size, xFlags)
 
     result.Bind (wx.EVT_CHAR, self.__keypress)
-    result.Bind (wx.EVT_LEFT_UP, self.__leftMouseUp)
     result.Bind (wx.EVT_SET_FOCUS, self.__setFocus)
 
+    # Currently wxMac does *not* recieve a button release event, so we don't
+    # bind it here. Instead we check the insertion point in the keypress event
+    if not 'wxMac' in wx.PlatformInfo:
+      result.Bind (wx.EVT_LEFT_UP, self.__leftMouseUp)
+
     return result
 
 
@@ -154,9 +158,12 @@
 
     result.Bind (wx.EVT_COMBOBOX, self.__itemSelected)
     item.Bind (wx.EVT_CHAR, self.__keypress)
-    item.Bind (wx.EVT_LEFT_UP, self.__leftMouseUp)
     item.Bind (wx.EVT_SET_FOCUS, self.__setFocus)
 
+    # On Mac we don't bind the button release event, as it does not get fired
+    if not 'wxMac' in wx.PlatformInfo:
+      item.Bind (wx.EVT_LEFT_UP, self.__leftMouseUp)
+
     # On MWS a ComboBox widget does not get an EVT_CHAR event for the left- and
     # right-keys. That's why we need to add a EVT_KEY_DOWN-handler here
     if 'wxMSW' in wx.PlatformInfo:
@@ -187,13 +194,17 @@
   def __setFocus (self, event):
 
     if self._form._currentEntry != self._gfObject:
-      self._request ('FOCUS', data = self._gfObject)
+      wx.CallAfter (self._request, 'FOCUS', data = self._gfObject)
 
       # adjust the record number if necessary
-      count  = self.widgets.index (event.GetEventObject ())
+      lookup = event.GetEventObject ()
+      if 'wxMac' in wx.PlatformInfo and self._gfObject.style == 'dropdown':
+        lookup = lookup.GetParent ()
+
+      count  = self.widgets.index (lookup)
       adjust = count - self._gfObject._visibleIndex
       if adjust:
-        self._request ('JUMPRECORD', data = adjust)
+        wx.CallAfter (self._request, 'JUMPRECORD', data = adjust)
 
     event.Skip ()
 
@@ -205,23 +216,34 @@
   def __leftMouseUp (self, event):
 
     widget = event.GetEventObject ()
+    event.Skip ()
 
+    wx.CallAfter (self.__updateInsertionPoint, widget)
+
+
+  # ---------------------------------------------------------------------------
+  # Make sure the insertion point or selection of a widget is in sync with GF*
+  # ---------------------------------------------------------------------------
+
+  def __updateInsertionPoint (self, widget):
+
     if isinstance (widget, wx.TextCtrl):
       (left, right) = widget.GetSelection ()
 
     elif isinstance (widget, wx.ComboBox):
-      (left, right) = widget.GetMark ()
+      if 'wxMac' in wx.PlatformInfo:
+        (left, right) = widget._entry.GetSelection ()
+      else:
+        (left, right) = widget.GetMark ()
 
-    event.Skip ()
-
     if left == right:
       self._request ('CURSORMOVE', position = left)
+
     else:
       self._request ('SELECTWITHMOUSE', position1 = left, position2 = right,
             cursor = widget.GetInsertionPoint ())
 
 
-
   # ---------------------------------------------------------------------------
   # Toggle the state of a checkbox
   # ---------------------------------------------------------------------------
@@ -251,6 +273,9 @@
 
   def __keypress (self, event):
 
+    if 'wxMac' in wx.PlatformInfo or 'wxMSW' in wx.PlatformInfo:
+      self.__updateInsertionPoint (event.GetEventObject ())
+
     keycode = event.GetKeyCode ()
     unikey  = event.GetUnicodeKey ()
 





reply via email to

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