commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r9354 - trunk/gnue-forms/src/input/displayHandlers


From: johannes
Subject: [gnue] r9354 - trunk/gnue-forms/src/input/displayHandlers
Date: Tue, 6 Feb 2007 08:19:08 -0600 (CST)

Author: johannes
Date: 2007-02-06 08:19:08 -0600 (Tue, 06 Feb 2007)
New Revision: 9354

Modified:
   trunk/gnue-forms/src/input/displayHandlers/datehandler.py
Log:
Added autocompletion for datetime fields


Modified: trunk/gnue-forms/src/input/displayHandlers/datehandler.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/datehandler.py   2007-02-06 
14:05:20 UTC (rev 9353)
+++ trunk/gnue-forms/src/input/displayHandlers/datehandler.py   2007-02-06 
14:19:08 UTC (rev 9354)
@@ -265,7 +265,7 @@
             kw = {}
             for index, item in enumerate(values):
                 value = int(item)
-                part = self._order[index].lower()
+                part = self._order[index]
 
                 # If the year is given without a century we will figure out
                 # which one to use.
@@ -288,7 +288,7 @@
         # mask.
         if display.isdigit() and len(display) == 8:
             for item in self._order:
-                if item.lower() == 'year':
+                if item == 'year':
                     year = int(display[:4])
                     display = display[4:]
                 elif item == 'month':
@@ -314,7 +314,7 @@
     def _autocomplete_(self, new_text, new_cursor):
 
         # We do not autocomplete dates starting with the year
-        if self._order[0].lower() == 'year':
+        if self._order[0] == 'year':
             return new_text, new_cursor
 
         today = datetime.date.today().strftime(str(self._input_mask))
@@ -597,7 +597,7 @@
             kw = {}
             for index, item in enumerate(values):
                 value = int(item)
-                part = self._order[index].lower()
+                part = self._order[index]
 
                 # If the year is given without a century we will figure out
                 # which one to use.
@@ -620,7 +620,7 @@
         # mask.
         if display.isdigit() and len(display) == 8:
             for item in self._order:
-                if item.lower() == 'year':
+                if item == 'year':
                     year = int(display[:4])
                     display = display[4:]
                 elif item == 'month':
@@ -648,7 +648,7 @@
             kw = {}
             for index, item in enumerate(values):
                 value = int(item)
-                part = self._order[index].lower()
+                part = self._order[index]
 
                 # If the year is given without a century we will figure out
                 # which one to use.
@@ -734,3 +734,52 @@
 
         # Does not seem to fit any pattern
         raise InvalidTimeLiteral, display
+
+    # -------------------------------------------------------------------------
+    # Autocompletion of a datetime value
+    # -------------------------------------------------------------------------
+
+    def _autocomplete_(self, new_text, new_cursor):
+
+        # We do not autocomplete dates starting with the year
+        if self._order[0] == 'year':
+            return new_text, new_cursor
+
+        today = datetime.date.today().strftime(str(self._input_mask))
+
+        # If the text is a number it must be the first component
+        if new_text.isdigit():
+            if len(new_text) > 2:
+                new_text = new_text[:2] + self._inter[0] + new_text[2:]
+                new_cursor += 1
+                new_text += self._inter[1] + "%s" % datetime.date.today().year
+
+            elif self._order[0] != 'month':
+                new_text = new_text + today[today.index(self._inter[0]):]
+
+            return new_text, new_cursor
+
+        else:
+            parts = new_text.split(self._inter[0], 1)
+            if len(parts) <> 2:
+                return new_text, new_cursor
+
+            lead = parts[0] + self._inter[0]
+            rest = parts[1]
+            # If we have nothing after the first intersection symbol, we have
+            # to complete the rest
+            if not rest:
+                if self._order[0] <> 'month':
+                    new_text = parts[0] + today[today.index(self._inter[0]):]
+                return new_text, new_cursor
+
+            parts = rest.split(self._inter[1], 1)
+            # If we have the first and the second component, stick it together
+            if len(parts) == 1:
+                lead += parts[0]
+                new_cursor = len(lead)
+                new_text = lead + today[today.rindex(self._inter[1]):]
+
+                return new_text, new_cursor
+
+        return new_text, new_cursor





reply via email to

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