commit-gnue
[Top][All Lists]
Advanced

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

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


From: johannes
Subject: [gnue] r9652 - trunk/gnue-forms/src/GFObjects
Date: Mon, 4 Jun 2007 08:17:00 -0500 (CDT)

Author: johannes
Date: 2007-06-04 08:16:59 -0500 (Mon, 04 Jun 2007)
New Revision: 9652

Modified:
   trunk/gnue-forms/src/GFObjects/GFBlock.py
   trunk/gnue-forms/src/GFObjects/GFField.py
Log:
Added (all) and (empty) choices to lookup style entries


Modified: trunk/gnue-forms/src/GFObjects/GFBlock.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFBlock.py   2007-06-04 12:51:21 UTC (rev 
9651)
+++ trunk/gnue-forms/src/GFObjects/GFBlock.py   2007-06-04 13:16:59 UTC (rev 
9652)
@@ -530,6 +530,7 @@
         self.__query_values = {}
         self.__query_values.update(self._queryDefaults)
         self.__current_record_changed(True)
+        self.__refresh_choices()
         if self._form.get_focus_block() is self:
             self.__update_record_status()
 
@@ -549,6 +550,7 @@
         self.__query_values = {}
         self.__query_values.update(self.__last_query_values)
         self.__current_record_changed(True)
+        self.__refresh_choices()
         if self._form.get_focus_block() is self:
             self.__update_record_status()
 
@@ -565,6 +567,7 @@
 
         self.mode = 'normal'
         self.__current_record_changed(True)
+        self.__refresh_choices()
 
     # -------------------------------------------------------------------------
 
@@ -582,6 +585,7 @@
         if self.__get_master_block() is None:
             # Condition for the master block
             conditions = self.__generate_condition_tree()
+            self.__refresh_choices()
 
             self.__in_query = True
             try:
@@ -1374,6 +1378,16 @@
 
 
     # -------------------------------------------------------------------------
+    # Update the list of choices in all fields of the block
+    # -------------------------------------------------------------------------
+
+    def __refresh_choices(self):
+
+        for field in self._fieldMap.itervalues():
+            field.refresh_choices()
+
+
+    # -------------------------------------------------------------------------
     # Things that have to be done if a new current record is activated
     # -------------------------------------------------------------------------
 
@@ -1532,11 +1546,16 @@
                                 pass
 
                         val = cond_value(val)
+                        # a Null-Character means a dropdown with '(empty)'
+                        # selected.
+                        if val == chr(0):
+                            conditions.append(['null', ['field', entry.field]])
   
-                        if (val.find('%') >= 0 or val.find('_') >= 0):
-                            condLike[entry] = val
                         else:
-                            condEq[entry] = val
+                            if (val.find('%') >= 0 or val.find('_') >= 0):
+                                condLike[entry] = val
+                            else:
+                                condEq[entry] = val
                     else:
                         condEq[entry] = val
 

Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2007-06-04 12:51:21 UTC (rev 
9651)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2007-06-04 13:16:59 UTC (rev 
9652)
@@ -313,6 +313,10 @@
 
         if value is None:
             return None
+        elif self._block.mode == 'query' and value.lower() == u_('(all)'):
+            return ''
+        elif self._block.mode == 'query' and value.lower() == u_('(empty)'):
+            return chr(0)
         elif isinstance(value, datatypes.InvalidValueType):
             return value
         elif value in self.__lookup_dict_reverse:
@@ -336,6 +340,11 @@
 
         db_value = self.__get_value(offset)
 
+        if self._block.mode == 'query' and db_value == chr(0):
+            return u_('(empty)')
+        elif self._block.mode == 'query' and db_value in ['', None]:
+            return u_('(all)')
+
         if self.__lookup_dict is None or db_value is None:
             return None
         elif db_value in self.__lookup_dict:
@@ -629,11 +638,27 @@
 
     def __refresh_ui_choices(self):
 
+        if self._block.mode == 'query':
+            lookup = ['(all)', '(empty)'] + self.__lookup_list
+            lookup.remove('')
+        else:
+            lookup = self.__lookup_list
+
         for entry in self._entryList:
-            entry.refresh_ui_choices(self.__lookup_list)
+            entry.refresh_ui_choices(lookup)
 
 
     # -------------------------------------------------------------------------
+    # Update the list of choices for all bound entries
+    # -------------------------------------------------------------------------
+
+    def refresh_choices(self):
+
+        if self.__is_lookup:
+            self.__refresh_ui_choices()
+
+
+    # -------------------------------------------------------------------------
     # Trigger functions
     # -------------------------------------------------------------------------
 





reply via email to

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