[Top][All Lists]
[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(),
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r9150 - in trunk/gnue-forms/src: GFObjects input/displayHandlers uidrivers/wx26/widgets,
reinhard <=