commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r9150 - in trunk/gnue-forms/src: GFObjects input/displayHandlers


From: reinhard
Subject: [gnue] r9150 - in trunk/gnue-forms/src: GFObjects input/displayHandlers uidrivers/wx26/widgets
Date: Tue, 12 Dec 2006 11:57:40 -0600 (CST)

Author: reinhard
Date: 2006-12-12 11:57:40 -0600 (Tue, 12 Dec 2006)
New Revision: 9150

Modified:
   trunk/gnue-forms/src/GFObjects/GFField.py
   trunk/gnue-forms/src/input/displayHandlers/Cursor.py
   trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
Log:
Better place for handling autofill.


Modified: trunk/gnue-forms/src/GFObjects/GFField.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFField.py   2006-12-12 17:17:16 UTC (rev 
9149)
+++ trunk/gnue-forms/src/GFObjects/GFField.py   2006-12-12 17:57:40 UTC (rev 
9150)
@@ -237,6 +237,33 @@
 
 
     # -------------------------------------------------------------------------
+    # Autocomplete a value for this field
+    # -------------------------------------------------------------------------
+
+    def autocomplete(self, value):
+        """
+        Return the first valid user value that starts with the provided part.
+
+        The entry can use this function to implement autocompletion.
+
+        @param value: User entered string.
+        @type value: unicode
+        @returns: Autocompleted string.
+        @rtype: unicode
+        """
+
+        if not self.__is_lookup:
+            return value
+
+        for allowed in self._allowedValues.values():
+            if allowed.startswith(value):
+                return allowed
+
+        # Nothing found, return original user input.
+        return value
+
+
+    # -------------------------------------------------------------------------
     # Reading and writing the user value of the field
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/input/displayHandlers/Cursor.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2006-12-12 
17:17:16 UTC (rev 9149)
+++ trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2006-12-12 
17:57:40 UTC (rev 9150)
@@ -209,15 +209,7 @@
     
     # -------------------------------------------------------------------------
     # Validate the input
-    # TODO: This will be moved to the mask system!!
     # -------------------------------------------------------------------------
-    if self.field.length is not None and \
-       len(self.display)  + len(value) > self.field.length:
-      # TODO: Should we beep?
-      self.__beep()
-      assert gDebug (6, "Entry %s: Max length reached"  % self.entry.name )
-      return
-
     if ( self.field._numeric and \
          self.field._block.mode == 'normal' ):
       for char in value:
@@ -242,23 +234,34 @@
       minSelectionPos = min(self._selection1, self._selection2)
       maxSelectionPos = max(self._selection1, self._selection2)
 
-      self.work = self.work[:minSelectionPos]  \
+      new_value = self.work[:minSelectionPos]  \
                    + value        \
                    + self.work[maxSelectionPos:]
 
-      self._selection1 = None
-      self._cursor = minSelectionPos + len(value)
+      new_cursor = minSelectionPos + len(value)
 
     else:
       # Otherwise just graft the new text in place
 
-      self.work = self.work[:self._cursor] \
+      new_value = self.work[:self._cursor] \
                    + value                \
                    + self.work[self._cursor:]
 
-      self._cursor += len(value)
+      new_cursor = self._cursor + len(value)
 
+    # If text was added at the end, do autocompletion.
+    if new_cursor == len(new_value) and len(new_value) > len(self.work):
+        new_value = self.field.autocomplete(new_value)
 
+    # Check if max length isn't exceeded.
+    if self.field.length is not None and len(new_value) > self.field.length:
+        self.__beep()
+        event.refreshDisplay = True
+        return
+
+    self.work = new_value
+    self._cursor = new_cursor
+    self._selection1 = None
     self.modified = True
     self.display = self.build_display(self.work, True)
     event.refreshDisplay = True
@@ -581,7 +584,7 @@
 
   def parse_display(self, display):
 
-    if display == '':
+    if display == u"":
         return None
     else:
         return display
@@ -597,12 +600,9 @@
         """
         
         if value is None:
-            return ""
-        elif self.field._allowedValues:
-            for allowed in self.field._allowedValuesDescr:
-                if allowed.startswith(value):
-                    return allowed
-        return unicode(value)
+            return u""
+        else:
+            return unicode(value)
 
 
   def updateFieldValue (self):

Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py        2006-12-12 
17:17:16 UTC (rev 9149)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/entry.py        2006-12-12 
17:57:40 UTC (rev 9150)
@@ -355,8 +355,7 @@
 
         keycode = event.GetKeyCode()
         command = None
-        if keycode in [wx.WXK_BACK, wx.WXK_LEFT, wx.WXK_RIGHT, wx.WXK_DELETE,
-                wx.WXK_TAB, wx.WXK_RETURN]:
+        if keycode in [wx.WXK_TAB, wx.WXK_RETURN]:
             (command, args) = GFKeyMapper.KeyMapper.getEvent (keycode,
                     event.ShiftDown(),
                     event.CmdDown(),





reply via email to

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