commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r9241 - in trunk/gnue-forms/src: . uidrivers/_commonGuiToolkit


From: reinhard
Subject: [gnue] r9241 - in trunk/gnue-forms/src: . uidrivers/_commonGuiToolkit
Date: Tue, 9 Jan 2007 12:09:55 -0600 (CST)

Author: reinhard
Date: 2007-01-09 12:09:54 -0600 (Tue, 09 Jan 2007)
New Revision: 9241

Modified:
   trunk/gnue-forms/src/GFForm.py
   trunk/gnue-forms/src/uidrivers/_commonGuiToolkit/ToolBar.py
Log:
Use canXX and cannotXX events to determine whether a button should be pressed
in or not. This finally makes it possible to disable toggle buttons and fixes
the non-working "deletable" attribute of blocks.


Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py      2007-01-09 16:25:08 UTC (rev 9240)
+++ trunk/gnue-forms/src/GFForm.py      2007-01-09 18:09:54 UTC (rev 9241)
@@ -1314,13 +1314,12 @@
                 self._currentBlock._focus_out()
 
             if not self._must_save():
-                # Notify the UI to not show the query button pressed in
-                self.dispatchEvent('endENTERQUERY', _form=self)
+                # We must refresh the UI events now as otherwise the query
+                # button will stick in.
+                self.refreshUIEvents()
                 self.beginEditing()
                 return
 
-            self.dispatchEvent('beginENTERQUERY', _form=self)
-
             for block in self._logic._blockList:
                 block.init_query()
 
@@ -1342,13 +1341,9 @@
                 self._currentBlock._focus_out()
 
             if not self._must_save():
-                # Notify the UI to not show the query button pressed in
-                self.dispatchEvent('endENTERQUERY', _form=self)
                 self.beginEditing()
                 return
 
-            self.dispatchEvent('beginENTERQUERY', _form=self)
-
             for block in self._logic._blockList:
                 block.copy_query()
 
@@ -1366,8 +1361,6 @@
         self.endEditing()
 
         try:
-            self.dispatchEvent('endENTERQUERY', _form=self)
-
             for block in self._logic._blockList:
                 block.cancel_query()
 
@@ -1395,8 +1388,6 @@
             # transaction.
             self.__rollback_all_connections()
 
-            self.dispatchEvent('endENTERQUERY', _form=self);
-
             try:
                 self._currentBlock.execute_query()
 
@@ -1720,11 +1711,6 @@
             else:
                 dispatchEvent('cannot' + event)
 
-        if record_status in ('void', 'deleted'):
-          dispatchEvent('beginMARKFORDELETE')
-        else:
-          dispatchEvent('endMARKFORDELETE')
-
         if self._currentBlock is not None \
                 and self._currentBlock.mode == 'query':
           dispatchEvent('cannotCOMMIT')

Modified: trunk/gnue-forms/src/uidrivers/_commonGuiToolkit/ToolBar.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/_commonGuiToolkit/ToolBar.py 2007-01-09 
16:25:08 UTC (rev 9240)
+++ trunk/gnue-forms/src/uidrivers/_commonGuiToolkit/ToolBar.py 2007-01-09 
18:09:54 UTC (rev 9241)
@@ -101,15 +101,21 @@
         else:
           name, contents = item
           userAction = UserActions.userActionMap [contents]
-          self.__actionMap[userAction.event] = self.addAction(name, userAction)
+          button = self.addAction(name, userAction)
+          button.__action = userAction
+          button.__press_enabled = False
+          button.__toggle_enabled = False
+          self.__actionMap[userAction.event] = button
           eventListeners = {
                   'can%s' %  userAction.event: self.__canRequestEvent,
-                  'cannot%s' %  userAction.event: self.__cannotRequestEvent }
+                  'cannot%s' %  userAction.event: self.__cannotRequestEvent}
 
           if userAction.canToggle:
-            eventListeners.update( {
-                    'begin%s' %  userAction.event: self.__beginRequestEvent,
-                    'end%s' %  userAction.event: self.__endRequestEvent } )
+            userAction = UserActions.userActionMap [userAction.canToggle]
+            self.__actionMap[userAction.event] = button
+            eventListeners.update({
+                    'can%s' %  userAction.event: self.__canRequestEvent,
+                    'cannot%s' %  userAction.event: self.__cannotRequestEvent})
 
           self.driver.registerEventListeners (eventListeners)
 
@@ -131,28 +137,41 @@
 
 
   def __canRequestEvent(self, event):
-    item = self.__actionMap[event.__event__[3:]]
-    self.enableItem(item)
+    e = event.__event__[3:]
+    item = self.__actionMap[e]
+    if e == item.__action.canToggle:
+        item.__toggle_enabled = True
+        if not item.__press_enabled:
+            self.enableItem(item)
+            self.startingItem(item)
+    else:
+        item.__press_enabled = True
+        if item.__toggle_enabled:
+            self.endingItem(item)
+        else:
+            self.enableItem(item)
+            # Usually, the button should already be displayed as not pressed
+            # in. We pull it out nevertheless in case it was presssed in by the
+            # user and the action caused by that did raise an exception.
+            self.endingItem(item)
 
   def __cannotRequestEvent(self, event):
     e = event.__event__[6:]
     item = self.__actionMap[e]
-    userAction = UserActions.userActionMap[e]
-    if userAction.canToggle:
-      return
-    self.disableItem(item)
+    if e == item.__action.canToggle:
+        item.__toggle_enabled = False
+        if not item.__press_enabled:
+            self.endingItem(item)
+            self.disableItem(item)
+    else:
+        item.__press_enabled = False
+        if item.__toggle_enabled:
+            self.startingItem(item)
+        else:
+            self.disableItem(item)
 
-  def __beginRequestEvent(self, event):
-    item = self.__actionMap[event.__event__[5:]]
-    self.startingItem(item)
 
-  def __endRequestEvent(self, event):
-    item = self.__actionMap[event.__event__[3:]]
-    self.endingItem(item)
 
-
-
-
 ####################################################################
 #
 #





reply via email to

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