commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r10108 - in trunk/gnue-forms/src: GFObjects uidrivers/curses uidr


From: reinhard
Subject: [gnue] r10108 - in trunk/gnue-forms/src: GFObjects uidrivers/curses uidrivers/curses/widgets uidrivers/qt3/widgets uidrivers/qt4/widgets uidrivers/wx/widgets
Date: Wed, 9 Dec 2009 15:06:52 -0600 (CST)

Author: reinhard
Date: 2009-12-09 15:06:51 -0600 (Wed, 09 Dec 2009)
New Revision: 10108

Modified:
   trunk/gnue-forms/src/GFObjects/GFButton.py
   trunk/gnue-forms/src/GFObjects/GFContainer.py
   trunk/gnue-forms/src/GFObjects/GFEntry.py
   trunk/gnue-forms/src/GFObjects/GFGridLine.py
   trunk/gnue-forms/src/GFObjects/GFPage.py
   trunk/gnue-forms/src/GFObjects/GFTabStop.py
   trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
Log:
Disable labels for disabled controls, and disable boxes which only contain
disabled children.


Modified: trunk/gnue-forms/src/GFObjects/GFButton.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFButton.py  2009-12-09 17:27:09 UTC (rev 
10107)
+++ trunk/gnue-forms/src/GFObjects/GFButton.py  2009-12-09 21:06:51 UTC (rev 
10108)
@@ -83,7 +83,7 @@
     # Determine whether this widget is enabled or disabled
     # -------------------------------------------------------------------------
 
-    def _is_enabled_(self, index):
+    def _is_enabled_(self, index=None):
         """
         Return True if the widget should be enabled, False if it should be
         disabled.

Modified: trunk/gnue-forms/src/GFObjects/GFContainer.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFContainer.py       2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/GFObjects/GFContainer.py       2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -36,6 +36,8 @@
     A base class for all GFObjects that can be containers
     """
 
+    ui_enabled = True
+
     # -------------------------------------------------------------------------
     # Determine the focus order of a given list of entries
     # -------------------------------------------------------------------------
@@ -102,3 +104,33 @@
                 returnValue.extend(tabStop)
 
         return returnValue
+
+
+    # -------------------------------------------------------------------------
+    # Determine whether this container is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def update_status(self):
+        """
+        Update the enabled/disabled status for this widget.
+        """
+
+        # This is never called for GFBlock objects.
+
+        for child in self._children:
+            # Safety check for comments
+            if hasattr(child, '_is_enabled_'):
+                if child._is_enabled_():
+                    new_ui_enabled = True
+                    break
+            if hasattr(child, 'ui_enabled'):
+                if child.ui_enabled:
+                    new_ui_enabled = True
+                    break
+        else:
+            new_ui_enabled = False
+
+        if new_ui_enabled != self.ui_enabled:
+            self.ui_enabled = new_ui_enabled
+            self.uiWidget._ui_set_enabled_(self.ui_enabled)
+            self.getParent().update_status()

Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFEntry.py   2009-12-09 17:27:09 UTC (rev 
10107)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py   2009-12-09 21:06:51 UTC (rev 
10108)
@@ -109,7 +109,7 @@
     # Determine whether this widget is enabled or disabled
     # -------------------------------------------------------------------------
 
-    def _is_enabled_(self, index):
+    def _is_enabled_(self, index=None):
         """
         Return True if the widget should be enabled, False if it should be
         disabled.

Modified: trunk/gnue-forms/src/GFObjects/GFGridLine.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFGridLine.py        2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/GFObjects/GFGridLine.py        2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -47,6 +47,7 @@
     def __init__(self, parent=None):
         GFContainer.__init__(self, parent, "GFGridLine")
 
+
     # -------------------------------------------------------------------------
     # Number of rows has changed
     # -------------------------------------------------------------------------
@@ -54,3 +55,17 @@
     def rows_changed(self, new_rows):
 
         self._rows = new_rows
+
+
+    # -------------------------------------------------------------------------
+    # Determine whether this container is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def update_status(self):
+        """
+        Update the enabled/disabled status for this widget.
+        """
+
+        # We never consider grids disabled, because they are at least useful to
+        # scroll to a different record.
+        pass

Modified: trunk/gnue-forms/src/GFObjects/GFPage.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFPage.py    2009-12-09 17:27:09 UTC (rev 
10107)
+++ trunk/gnue-forms/src/GFObjects/GFPage.py    2009-12-09 21:06:51 UTC (rev 
10108)
@@ -167,3 +167,16 @@
         """
 
         self.processTrigger('POST-FOCUSOUT')
+
+
+    # -------------------------------------------------------------------------
+    # Determine whether this container is enabled or disabled
+    # -------------------------------------------------------------------------
+
+    def update_status(self):
+        """
+        Update the enabled/disabled status for this widget.
+        """
+
+        # We never disable whole pages.
+        pass

Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 17:27:09 UTC (rev 
10107)
+++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2009-12-09 21:06:51 UTC (rev 
10108)
@@ -348,13 +348,14 @@
 
         for index in range(refresh_start, self.__last_enabled_row + 1):
             self.uiWidget._ui_set_enabled_(index, self._is_enabled_(index))
+        self.getParent().update_status()
 
 
     # -------------------------------------------------------------------------
     # Determine whether this widget is enabled or disabled
     # -------------------------------------------------------------------------
 
-    def _is_enabled_(self, index):
+    def _is_enabled_(self, index=None):
         """
         Return True if the widget should be enabled, False if it should be
         disabled.
@@ -384,7 +385,7 @@
             return False
 
         # Attached field is not editable in current mode: not navigable.
-        if isinstance(self, GFFieldBound) and not self._field.is_editable():
+        if isinstance(self, GFFieldBound) and not self._field.is_editable(0):
             return False
 
         # Control not navigable in query mode.
@@ -574,7 +575,7 @@
     # Determine whether this widget is enabled or disabled
     # -------------------------------------------------------------------------
 
-    def _is_enabled_(self, index):
+    def _is_enabled_(self, index=None):
         """
         Return True if the widget should be enabled, False if it should be
         disabled.
@@ -583,7 +584,10 @@
         if not GFTabStop._is_enabled_(self, index):
             return False
         else:
-            offset = index - self._visibleIndex
+            if index is None:
+                offset = 0
+            else:
+                offset = index - self._visibleIndex
             return self._field.is_editable(offset)
 
 

Modified: trunk/gnue-forms/src/uidrivers/curses/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/curses/UIdriver.py   2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -70,20 +70,21 @@
         curses.init_pair(9, curses.COLOR_WHITE, curses.COLOR_RED)
 
         self.attr = {}
-        self.attr['title']       = curses.color_pair(1)
-        self.attr['page']        = curses.color_pair(2)
-        self.attr['currentpage'] = curses.color_pair(3)
-        self.attr['background']  = curses.color_pair(4)
-        self.attr['entry']       = curses.color_pair(5)
-        self.attr['focusentry']  = curses.color_pair(6) + curses.A_BOLD
-        self.attr['disabled']    = curses.color_pair(5) + curses.A_BOLD
-        self.attr['status']      = curses.color_pair(7)
-        self.attr['fkeys']       = curses.color_pair(4)
-        self.attr['infomsg']     = curses.color_pair(8) + curses.A_BOLD
-        self.attr['warnmsg']     = curses.color_pair(9) + curses.A_BOLD
-        self.attr['errormsg']    = curses.color_pair(9) + curses.A_BOLD \
-                                                        + curses.A_BLINK
-        self.attr['window 1']    = curses.color_pair(5)
+        self.attr['title']         = curses.color_pair(1)
+        self.attr['page']          = curses.color_pair(2)
+        self.attr['currentpage']   = curses.color_pair(3)
+        self.attr['background']    = curses.color_pair(4)
+        self.attr['backdisabled']  = curses.color_pair(4) + curses.A_BOLD
+        self.attr['entry']         = curses.color_pair(5)
+        self.attr['focusentry']    = curses.color_pair(6) + curses.A_BOLD
+        self.attr['disabled']      = curses.color_pair(5) + curses.A_BOLD
+        self.attr['status']        = curses.color_pair(7)
+        self.attr['fkeys']         = curses.color_pair(4)
+        self.attr['infomsg']       = curses.color_pair(8) + curses.A_BOLD
+        self.attr['warnmsg']       = curses.color_pair(9) + curses.A_BOLD
+        self.attr['errormsg']      = curses.color_pair(9) + curses.A_BOLD \
+                                                          + curses.A_BLINK
+        self.attr['window 1']      = curses.color_pair(5)
         self.attr['focusdisabled'] = curses.color_pair(6)
 
         self.__current_form = None

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py      2009-12-09 
17:27:09 UTC (rev 10107)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/_base.py      2009-12-09 
21:06:51 UTC (rev 10108)
@@ -277,6 +277,16 @@
     _hints_ = {}
 
     # -------------------------------------------------------------------------
+    # Set enabled/disabled status for this box
+    # -------------------------------------------------------------------------
+
+    def _ui_set_enabled_(self, value):
+
+        # Nothing to do for a box
+        pass
+
+
+    # -------------------------------------------------------------------------
     # Order the size hints according to their proportion
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2009-12-09 
17:27:09 UTC (rev 10107)
+++ trunk/gnue-forms/src/uidrivers/curses/widgets/entry.py      2009-12-09 
21:06:51 UTC (rev 10108)
@@ -336,6 +336,20 @@
     attribute = property(__get_attr, None, None,
             """ The current attribute to use for this widget """)
 
+    # -------------------------------------------------------------------------
+
+    def __get_background_attribute(self):
+
+        if not self.enabled:
+            attr = 'backdisabled'
+        else:
+            attr = 'background'
+
+        return self.entry._uiDriver.attr[attr]
+
+    background_attribute = property(__get_background_attribute, None, None,
+            """ The current attribute to use for this widget """)
+
 # =============================================================================
 # Static Text style entry
 # =============================================================================
@@ -354,7 +368,7 @@
         text = ("%s" % self.value)[:self.width]
         text += ' ' * (self.width - len(text))
         self.entry._parent.write(self.left, self.top, text,
-                self.entry._uiDriver.attr['background'])
+                self.background_attribute)
 
 
 
@@ -752,7 +766,7 @@
         text = label[:self.width]
         text += ' ' * (self.width - len(text))
         self.entry._parent.write(self.left, self.top, text,
-                self.entry._uiDriver.attr['background'])
+                self.background_attribute)
 
         if self.value is None:
             text = '[-]'

Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py 2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/_base.py 2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -135,6 +135,15 @@
 
 
     # -------------------------------------------------------------------------
+    # Enable/disable this box
+    # -------------------------------------------------------------------------
+
+    def _ui_set_enabled_(self, value):
+
+        self._container.setEnabled(value)
+
+
+    # -------------------------------------------------------------------------
     # Does this box need both columns or rows ?
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/qt3/widgets/entry.py 2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -147,7 +147,10 @@
     # -------------------------------------------------------------------------
 
     def _ui_set_enabled_(self, index, value):
+
         self.widgets[index].setEnabled(value)
+        if not self.in_grid and self.label is not None:
+            self.label.setEnabled(value)
 
 
     # -------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py 2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/qt4/widgets/_base.py 2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -137,6 +137,15 @@
 
 
     # -------------------------------------------------------------------------
+    # Enable/disable this box
+    # -------------------------------------------------------------------------
+
+    def _ui_set_enabled_(self, value):
+
+        self._container.setEnabled(value)
+
+
+    # -------------------------------------------------------------------------
     # Does this box need both columns or rows ?
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/qt4/widgets/entry.py 2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -139,7 +139,10 @@
     # -------------------------------------------------------------------------
 
     def _ui_set_enabled_(self, index, value):
+
         self.widgets[index].setEnabled(value)
+        if not self.in_grid and self.label is not None:
+            self.label.setEnabled(value)
 
 
     # -------------------------------------------------------------------------

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py  2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/_base.py  2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -335,19 +335,20 @@
         # If a label is requested for the box, we have to wrap the container
         # with a StaticBoxSizer.
         if self._gfObject.label is not None and not self._gfObject.has_label:
-            box_title = wx.StaticBox(self._container, -1, self._gfObject.label)
-            box = wx.StaticBoxSizer(box_title, wx.VERTICAL)
+            self.box = wx.StaticBox(self._container, -1, self._gfObject.label)
+            box_sizer = wx.StaticBoxSizer(self.box, wx.VERTICAL)
             # Border inside the box is 6 pixel according to GNOME Human
             # Interface Guidlines.
-            box.Add(self._sizer, 1, wx.EXPAND | wx.ALL, 6)
+            box_sizer.Add(self._sizer, 1, wx.EXPAND | wx.ALL, 6)
 
-            add = box
+            add = box_sizer
 
             # Add another 6 pixel above and below the box (additionally to the
             # 6 pixel horizontal gap that exist anyway) according to GNOME
             # Human Interface Guidlines.
             border = 6
         else:
+            self.box = None
             if self._gfObject.label is not None:
                 self.label = wx.StaticText(parent, -1, self._gfObject.label)
             add = self._sizer
@@ -364,6 +365,18 @@
 
 
     # -------------------------------------------------------------------------
+    # Enable/disable this box
+    # -------------------------------------------------------------------------
+
+    def _ui_set_enabled_(self, value):
+
+        if self.label:
+            self.label.Enable(value)
+        elif self.box:
+            self.box.Enable(value)
+
+
+    # -------------------------------------------------------------------------
     # Do we need both rows/columns
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2009-12-09 17:27:09 UTC 
(rev 10107)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2009-12-09 21:06:51 UTC 
(rev 10108)
@@ -449,7 +449,10 @@
     # -------------------------------------------------------------------------
 
     def _ui_set_enabled_(self, index, value):
+
         self.widgets[index].Enable(value)
+        if not self.in_grid and self.label is not None:
+            self.label.Enable(value)
 
 
     # -------------------------------------------------------------------------





reply via email to

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