commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r10107 - in trunk/gnue-forms/src: . GFObjects uidrivers/curses/wi


From: reinhard
Subject: [gnue] r10107 - in trunk/gnue-forms/src: . GFObjects uidrivers/curses/widgets uidrivers/qt3/widgets uidrivers/qt4/widgets uidrivers/wx/widgets
Date: Wed, 9 Dec 2009 11:27:09 -0600 (CST)

Author: reinhard
Date: 2009-12-09 11:27:09 -0600 (Wed, 09 Dec 2009)
New Revision: 10107

Modified:
   trunk/gnue-forms/src/GFForm.py
   trunk/gnue-forms/src/GFObjects/GFButton.py
   trunk/gnue-forms/src/GFObjects/GFEntry.py
   trunk/gnue-forms/src/GFObjects/GFField.py
   trunk/gnue-forms/src/GFObjects/GFTabStop.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py
   trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/image.py
Log:
Disable entries when they are not editable, since this is what users are used
to. Disable buttons in filter mode.


Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py      2009-12-09 16:27:29 UTC (rev 10106)
+++ trunk/gnue-forms/src/GFForm.py      2009-12-09 17:27:09 UTC (rev 10107)
@@ -92,6 +92,9 @@
         # Dictionary to locate actions
         self._actions = {}
 
+        # Buttons on this form
+        self._buttons = []
+
         # Dictionary with all the subforms
         self.__subforms = {}
 
@@ -1286,6 +1289,11 @@
             for block in self._logic._blockList:
                 block.init_filter()
 
+            # Update enabled/disabled status for all buttons (in this case:
+            # disable all buttons)
+            for button in self._buttons:
+                button.update_status()
+
             self.status_message(u_('Enter your filter criteria.'))
         finally:
             self.beginEditing()
@@ -1313,6 +1321,11 @@
             for block in self._logic._blockList:
                 block.change_filter()
 
+            # Update enabled/disabled status for all buttons (in this case:
+            # disable all buttons)
+            for button in self._buttons:
+                button.update_status()
+
             self.status_message(u_('Enter your filter criteria.'))
         finally:
             self.beginEditing()
@@ -1332,6 +1345,10 @@
             for block in self._logic._blockList:
                 block.discard_filter()
 
+            # Update enabled/disabled status for all buttons
+            for button in self._buttons:
+                button.update_status()
+
             self.status_message(u_('Query canceled.'))
         finally:
             if self._currentBlock is not None:
@@ -1368,6 +1385,10 @@
                 for block in self._logic._blockList:
                     block.mode = "normal"
 
+                # Update enabled/disabled status for all buttons
+                for button in self._buttons:
+                    button.update_status()
+
                 for block in self._logic._blockList:
                     block.apply_filter()
 

Modified: trunk/gnue-forms/src/GFObjects/GFButton.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFButton.py  2009-12-09 16:27:29 UTC (rev 
10106)
+++ trunk/gnue-forms/src/GFObjects/GFButton.py  2009-12-09 17:27:09 UTC (rev 
10107)
@@ -63,6 +63,8 @@
 
         GFTabStop._phase_1_init_(self)
 
+        self._form._buttons.append(self)
+
         if self._block:
             self._block._entryList.append(self)
 
@@ -78,6 +80,22 @@
 
 
     # -------------------------------------------------------------------------
+    # Determine whether this widget is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def _is_enabled_(self, index):
+        """
+        Return True if the widget should be enabled, False if it should be
+        disabled.
+        """
+
+        if not GFTabStop._is_enabled_(self, index):
+            return False
+        else:
+            return not self._form.in_filter_mode()
+
+
+    # -------------------------------------------------------------------------
     # Fire the trigger associated with the button from outside GF
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFEntry.py   2009-12-09 16:27:29 UTC (rev 
10106)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py   2009-12-09 17:27:09 UTC (rev 
10107)
@@ -25,7 +25,7 @@
 The primary data entry widget in forms
 """
 
-from gnue.forms.GFObjects.GFTabStop import GFFieldBound
+from gnue.forms.GFObjects.GFTabStop import GFTabStop, GFFieldBound
 
 # =============================================================================
 # Class for data entry widgets
@@ -106,6 +106,24 @@
 
 
     # -------------------------------------------------------------------------
+    # Determine whether this widget is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def _is_enabled_(self, index):
+        """
+        Return True if the widget should be enabled, False if it should be
+        disabled.
+        """
+
+        # "label" style entries don't get disabled when the attached field is
+        # not editable.
+        if self.style == 'label':
+            return GFTabStop._is_enabled_(self, index)
+        else:
+            return GFFieldBound._is_enabled_(self, index)
+
+
+    # -------------------------------------------------------------------------
     # Indicate whether this widget makes use of the separate label column
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2009-12-09 16:27:29 UTC (rev 
10106)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2009-12-09 17:27:09 UTC (rev 
10107)
@@ -353,7 +353,7 @@
         if value in ['Y', 'N', 'null', 'new', 'update']:
             self.editable = value
             for entry in self._entryList:
-                entry.update_editable()
+                entry.update_status()
         else:
             raise InvalidPropertyValueError('editable', value)
 

Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 16:27:29 UTC (rev 
10106)
+++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 17:27:09 UTC (rev 
10107)
@@ -49,6 +49,7 @@
     # Attributes
     # -------------------------------------------------------------------------
   
+    enabled = True
     navigable = False
 
     # -------------------------------------------------------------------------
@@ -112,7 +113,9 @@
         if self._block:
             self._block._entryList.append(self)
 
+        self.__last_enabled_row = self._rows - 1
 
+
     # -------------------------------------------------------------------------
     # UI events (called from UIEntry/UIButton)
     # -------------------------------------------------------------------------
@@ -284,7 +287,7 @@
 
                 # Enable rows if necessary
                 for i in range(self.__last_enabled_row+1, last_enabled_row+1):
-                    self.uiWidget._ui__set_enabled_(i, False)
+                    self.uiWidget._ui_set_enabled_(i, False)
 
                 self.__last_enabled_row = last_enabled_row
 
@@ -309,8 +312,9 @@
                 if isinstance(self, GFFieldBound) and refresh_start is not 
None:
                     self.refresh_ui(refresh_start, self._rows - 1)
 
+                if refresh_start is not None:
                     # Set widgets to editable or non-editable
-                    self.__update_editable(refresh_start)
+                    self.__update_status(refresh_start)
 
                 # Let the marker for the current row in grids follow.
                 self.ui_set_current_row()
@@ -329,26 +333,38 @@
     # Set the widgets to editable or non-editable
     # -------------------------------------------------------------------------
 
-    def update_editable(self):
+    def update_status(self):
         """
-        Update the editable state of this entry.
+        Update the enabled/disabled state of this entry.
 
         This function is called by the field if the editable state of the field
         is changed by a trigger.
         """
-        self.__update_editable(0)
+        self.__update_status(0)
 
     # -------------------------------------------------------------------------
 
-    def __update_editable(self, refresh_start):
+    def __update_status(self, refresh_start):
 
         for index in range(refresh_start, self.__last_enabled_row + 1):
-            offset = index - self._visibleIndex
-            self.uiWidget._ui_set_editable_(index,
-                    self._field.is_editable(offset))
+            self.uiWidget._ui_set_enabled_(index, self._is_enabled_(index))
 
 
     # -------------------------------------------------------------------------
+    # Determine whether this widget is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def _is_enabled_(self, index):
+        """
+        Return True if the widget should be enabled, False if it should be
+        disabled.
+        """
+
+        # Normal case: user setting.
+        return self.enabled
+
+
+    # -------------------------------------------------------------------------
     # Find out whether this control is navigable
     # -------------------------------------------------------------------------
 
@@ -555,6 +571,23 @@
 
 
     # -------------------------------------------------------------------------
+    # Determine whether this widget is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def _is_enabled_(self, index):
+        """
+        Return True if the widget should be enabled, False if it should be
+        disabled.
+        """
+
+        if not GFTabStop._is_enabled_(self, index):
+            return False
+        else:
+            offset = index - self._visibleIndex
+            return self._field.is_editable(offset)
+
+
+    # -------------------------------------------------------------------------
     # UI events (called from UIEntry)
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2009-12-09 
16:27:29 UTC (rev 10106)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2009-12-09 
17:27:09 UTC (rev 10107)
@@ -108,16 +108,6 @@
 
 
     # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        # Not much we can do here.
-        pass
-
-
-    # -------------------------------------------------------------------------
     # Set value for entry
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -151,16 +151,6 @@
 
 
     # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        # TODO: grey out entry, disallow changes if possible.
-        pass
-
-
-    # -------------------------------------------------------------------------
     # Set value and cursor position
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py 2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/image.py 2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -95,15 +95,6 @@
         return (width, height)
 
 
-    # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        pass
-
-
     # ------------------------------------------------------------------------
     # Set the widget's PIL
     # ------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -143,16 +143,6 @@
 
 
     # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        # TODO: grey out entry, disallow changes if possible.
-        pass
-
-
-    # -------------------------------------------------------------------------
     # Set value and cursor position
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py 2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/qt4/widgets/image.py 2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -95,15 +95,6 @@
         return (width, height)
 
 
-    # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        pass
-
-
     # ------------------------------------------------------------------------
     # Set the widget's PIL
     # ------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -453,29 +453,6 @@
 
 
     # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        # Simple text controls can be explicitly set to non-editable, so they
-        # don't accept keyboard input.
-        if isinstance(self.widgets[index], wx.TextCtrl):
-            self.widgets[index].SetEditable(editable)
-
-        # We set the background color to grey for all kinds of widgets if they
-        # are not editable, so the user can see some difference.
-        if not 'wxMac' in wx.PlatformInfo:
-            if editable:
-                colour = wx.NullColour
-            else:
-                colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNFACE)
-
-            self.widgets[index].SetBackgroundColour(colour)
-            self.widgets[index].Refresh()
-
-
-    # -------------------------------------------------------------------------
     # Set the value of a widget
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/image.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/image.py  2009-12-09 16:27:29 UTC 
(rev 10106)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/image.py  2009-12-09 17:27:09 UTC 
(rev 10107)
@@ -221,15 +221,6 @@
         return (width, height)
 
 
-    # -------------------------------------------------------------------------
-    # Set "editable" status for this widget
-    # -------------------------------------------------------------------------
-
-    def _ui_set_editable_(self, index, editable):
-
-        pass
-
-
     # ------------------------------------------------------------------------
     # Set the widget's PIL
     # ------------------------------------------------------------------------





reply via email to

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