[gnue] r9876 - trunk/gnue-forms/src/GFObjects

[email protected]
Newsgroups gmane.comp.cms.gnue.cvs
Message-ID <[email protected]>
Author: reinhard
Date: 2008-06-09 06:07:23 -0500 (Mon, 09 Jun 2008)
New Revision: 9876

Modified:
   trunk/gnue-forms/src/GFObjects/GFField.py
   trunk/gnue-forms/src/GFObjects/GFTabStop.py
Log:
Made "editable" property of fields available in trigger namespace.


Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py	2008-05-08 07:50:04 UTC (rev 9875)
+++ trunk/gnue-forms/src/GFObjects/GFField.py	2008-06-09 11:07:23 UTC (rev 9876)
@@ -134,8 +134,12 @@
             'setFKDescription'  : {'function': self.set_value}}
 
         self._triggerProperties = {
-            'value': {'get': self.get_value,
-                      'set': self.set_value}}
+            'value': {
+                'get': self.get_value,
+                'set': self.set_value},
+            'editable': {
+                'get': self.__get_editable,
+                'set': self.__set_editable}}
 
         self._triggerGet = self.__get_value
         self._triggerSet = self.__set_value
@@ -335,6 +339,25 @@
 
 
     # -------------------------------------------------------------------------
+    # Get/Set editable property
+    # -------------------------------------------------------------------------
+
+    def __get_editable(self):
+
+        return self.editable
+
+    # -------------------------------------------------------------------------
+
+    def __set_editable(self, value):
+
+        if value in ['Y', 'N', 'null', 'new', 'update']:
+            self.editable = value
+            for entry in self._entryList:
+                entry.update_editable()
+        else:
+            raise InvalidPropertyValueError('editable', value)
+
+    # -------------------------------------------------------------------------
     # Reading and writing the user value of the field
     # -------------------------------------------------------------------------
 
@@ -839,3 +862,16 @@
                 ) % {
                     'value': value,
                     'name': field.name}, field._url, field._lineNumber)
+
+# =============================================================================
+
+class InvalidPropertyValueError(errors.ApplicationError):
+    """
+    An invalid value is assigned to a property.
+    """
+    def __init__(self, property, value):
+        errors.ApplicationError.__init__(self, u_(
+                    "Invalid value '%(value)s' for property '%(property)s'"
+                ) % {
+                    'value': value,
+                    'property': property})

Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFTabStop.py	2008-05-08 07:50:04 UTC (rev 9875)
+++ trunk/gnue-forms/src/GFObjects/GFTabStop.py	2008-06-09 11:07:23 UTC (rev 9876)
@@ -259,10 +259,7 @@
                     self.refresh_ui(refresh_start, self._rows - 1)
 
                     # Set widgets to editable or non-editable
-                    for index in range(refresh_start, last_enabled_row + 1):
-                        offset = index - self._visibleIndex
-                        self.uiWidget._ui_set_editable_(index,
-                                self._field.is_editable(offset))
+                    self.__update_editable(refresh_start)
 
         finally:
             # If this was the currently focused widget, move the focus along
@@ -275,6 +272,28 @@
 
 
     # -------------------------------------------------------------------------
+    # Set the widgets to editable or non-editable
+    # -------------------------------------------------------------------------
+
+    def update_editable(self):
+        """
+        Update the editable 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)
+
+    # -------------------------------------------------------------------------
+
+    def __update_editable(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))
+
+    # -------------------------------------------------------------------------
     # Change the focus to this object
     # -------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.