commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r8189 - in trunk/gnue-forms/src: GFObjects input/displayHandlers


From: johannes
Subject: [gnue] r8189 - in trunk/gnue-forms/src: GFObjects input/displayHandlers uidrivers/wx26/widgets
Date: Thu, 2 Mar 2006 13:40:36 -0600 (CST)

Author: johannes
Date: 2006-03-02 13:40:35 -0600 (Thu, 02 Mar 2006)
New Revision: 8189

Modified:
   trunk/gnue-forms/src/GFObjects/GFButton.py
   trunk/gnue-forms/src/input/displayHandlers/Base.py
   trunk/gnue-forms/src/input/displayHandlers/Cursor.py
   trunk/gnue-forms/src/uidrivers/wx26/widgets/button.py
Log:
Update the current entries' field value before calling a trigger code 
via GFButton. This ensures to have always an up to date field value 
available, even if there's no focus-change.


Modified: trunk/gnue-forms/src/GFObjects/GFButton.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFButton.py  2006-03-02 19:20:42 UTC (rev 
8188)
+++ trunk/gnue-forms/src/GFObjects/GFButton.py  2006-03-02 19:40:35 UTC (rev 
8189)
@@ -68,17 +68,32 @@
 
 
   # Helper method for user events: fire button
-  def __fire(self):
-    self.processTrigger('On-Action', False)
+  def __fire (self):
+    self.processTrigger ('On-Action', False)
 
 
   # Event handlers
 
-  def __handleKEYPRESS(self, event):
+  def __handleKEYPRESS (self, event):
+
     if event.text == ' ':
-      self.__fire()
-      event.drop()
+      self.__fire ()
+      event.drop ()
 
-  def __handleENTER(self, event):
-    self.__fire()
-    event.drop()
+  def __handleENTER (self, event):
+    self.__fire ()
+    event.drop ()
+
+
+  # ---------------------------------------------------------------------------
+  # Fire the trigger associated with the button from outside GF
+  # ---------------------------------------------------------------------------
+
+  def doFire (self):
+    """
+    Update the current entrie's value and execute the trigger associated with
+    the button.
+    """
+
+    self._form._currentEntry._displayHandler.updateFieldValue ()
+    self.__fire ()

Modified: trunk/gnue-forms/src/input/displayHandlers/Base.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Base.py  2006-03-02 19:20:42 UTC 
(rev 8188)
+++ trunk/gnue-forms/src/input/displayHandlers/Base.py  2006-03-02 19:40:35 UTC 
(rev 8189)
@@ -180,3 +180,12 @@
     assert gDebug (5, "Entry %s: selectToEnd not supported." % self.entry.name 
)
     return
 
+
+  def updateFieldValue (self):
+    """
+    Update the associated field with the current value of the display handler
+    """
+
+    assert gDebug (5, "Entry %s: updateFieldValue not supported." %
+        self.entry.name)
+    pass

Modified: trunk/gnue-forms/src/input/displayHandlers/Cursor.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2006-03-02 
19:20:42 UTC (rev 8188)
+++ trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2006-03-02 
19:40:35 UTC (rev 8189)
@@ -37,7 +37,20 @@
 import sys
 #from gnue.forms.input.displayHandlers import Base
 from gnue.common import events
+from gnue.common.apps import errors
 
+# =============================================================================
+# Exceptions
+# =============================================================================
+
+class InvalidFieldValueError (errors.UserError):
+  def __init__ (self, field, value):
+    msg = u_("Invalid value '%(value)s' for field '%(field)s") \
+          % {'value': value, 'field': field}
+    errors.UserError.__init__ (self, msg)
+
+
+
 # TODO: When Base is used inherit from that instead
 class BaseCursor(events.EventAware):
   """
@@ -738,3 +751,16 @@
       self.display = self._buildDisplayHelper(self.work, True)
     else:
       self.display = self._buildDisplayHelper(self.value, False)
+
+
+  def updateFieldValue (self):
+    """
+    Update the associated field with the current value of the display handler
+    """
+
+    if self._buildValue ():
+      if self.field._allowedValues and \
+         not self.field._allowedValues.has_key ("%s" % self.value):
+        raise InvalidFieldValueError, (self.field.name, self.value)
+
+      self.field.setValue (self.value)

Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/button.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/button.py       2006-03-02 
19:20:42 UTC (rev 8188)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/button.py       2006-03-02 
19:40:35 UTC (rev 8189)
@@ -38,6 +38,7 @@
   # --------------------------------------------------------------------------
   # Create a button widget
   # --------------------------------------------------------------------------
+
   def _createWidget (self, event, spacer):
     """
     Creates a new Button widget.
@@ -61,7 +62,7 @@
 
   def __click (self, event):
 
-    self._eventHandler (events.Event ('buttonActivated', self._gfObject))
+    self._gfObject.doFire ()
     event.Skip ()
 
 





reply via email to

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