commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r10272 - in trunk/gnue-forms: . src src/GFObjects src/input/displ


From: reinhard
Subject: [gnue] r10272 - in trunk/gnue-forms: . src src/GFObjects src/input/displayHandlers src/uidrivers/wx/widgets
Date: Thu, 16 Dec 2010 14:56:25 -0600 (CST)

Author: reinhard
Date: 2010-12-16 14:56:25 -0600 (Thu, 16 Dec 2010)
New Revision: 10272

Modified:
   trunk/gnue-forms/
   trunk/gnue-forms/src/GFForm.py
   trunk/gnue-forms/src/GFObjects/GFEntry.py
   trunk/gnue-forms/src/GFObjects/GFTabStop.py
   trunk/gnue-forms/src/input/displayHandlers/Checkbox.py
   trunk/gnue-forms/src/input/displayHandlers/Cursor.py
   trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
Log:
Reworked text entry simulation, the previous implementation was broken
especially with regard to backspace handling.



Property changes on: trunk/gnue-forms
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2010-12-16 20:35:26.068000078 +0100
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: forms

   + timestamp: 2010-12-16 21:55:02.346999884 +0100
committer: Reinhard Müller <address@hidden>
properties: 
        branch-nick: forms

Name: bzr:file-ids
   - src/input/displayHandlers/Cursor.py        
address@hidden:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCursor.py

   + src/GFForm.py      address@hidden:trunk%2Fgnue-forms:src%2FGFForm.py
src/GFObjects/GFEntry.py        
address@hidden:trunk%2Fgnue-forms:src%2FGFObjects%2FGFEntry.py
src/GFObjects/GFTabStop.py      
address@hidden:trunk%2Fgnue-forms:src%2FGFObjects%2FGFTabStop.py
src/input/displayHandlers/Checkbox.py   
address@hidden:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCheckbox.py
src/input/displayHandlers/Cursor.py     
address@hidden:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCursor.py
src/uidrivers/wx/widgets/entry.py       
address@hidden:trunk%2Fgnue-forms:src%2Fuidrivers%2Fwx%2Fwidgets%2Fentry.py

Name: bzr:revision-id:v4
   - 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden
3126 address@hidden
3127 address@hidden
3128 address@hidden
3129 address@hidden
3130 address@hidden
3131 address@hidden
3132 address@hidden
3133 address@hidden
3134 address@hidden
3135 address@hidden
3136 address@hidden
3137 address@hidden
3138 address@hidden
3139 address@hidden
3140 address@hidden
3141 address@hidden
3142 address@hidden
3143 address@hidden
3144 address@hidden
3145 address@hidden
3146 address@hidden
3147 address@hidden
3148 address@hidden
3149 address@hidden
3150 address@hidden
3151 address@hidden
3152 address@hidden
3153 address@hidden
3154 address@hidden
3155 address@hidden
3156 address@hidden
3157 address@hidden
3158 address@hidden
3159 address@hidden
3160 address@hidden
3161 address@hidden
3162 address@hidden
3163 address@hidden
3164 address@hidden
3165 address@hidden
3166 address@hidden
3167 address@hidden
3168 address@hidden
3169 address@hidden
3170 address@hidden
3171 address@hidden
3172 address@hidden
3173 address@hidden
3174 address@hidden
3175 address@hidden
3176 address@hidden
3177 address@hidden

   + 3116 address@hidden
3117 address@hidden
3118 address@hidden
3119 address@hidden
3120 address@hidden
3121 address@hidden
3122 address@hidden
3123 address@hidden
3124 address@hidden
3125 address@hidden
3126 address@hidden
3127 address@hidden
3128 address@hidden
3129 address@hidden
3130 address@hidden
3131 address@hidden
3132 address@hidden
3133 address@hidden
3134 address@hidden
3135 address@hidden
3136 address@hidden
3137 address@hidden
3138 address@hidden
3139 address@hidden
3140 address@hidden
3141 address@hidden
3142 address@hidden
3143 address@hidden
3144 address@hidden
3145 address@hidden
3146 address@hidden
3147 address@hidden
3148 address@hidden
3149 address@hidden
3150 address@hidden
3151 address@hidden
3152 address@hidden
3153 address@hidden
3154 address@hidden
3155 address@hidden
3156 address@hidden
3157 address@hidden
3158 address@hidden
3159 address@hidden
3160 address@hidden
3161 address@hidden
3162 address@hidden
3163 address@hidden
3164 address@hidden
3165 address@hidden
3166 address@hidden
3167 address@hidden
3168 address@hidden
3169 address@hidden
3170 address@hidden
3171 address@hidden
3172 address@hidden
3173 address@hidden
3174 address@hidden
3175 address@hidden
3176 address@hidden
3177 address@hidden
3178 address@hidden

Name: bzr:text-parents
   - src/input/displayHandlers/Cursor.py        address@hidden

   + src/GFForm.py      address@hidden
src/GFObjects/GFEntry.py        address@hidden
src/GFObjects/GFTabStop.py      address@hidden
src/input/displayHandlers/Checkbox.py   address@hidden
src/uidrivers/wx/widgets/entry.py       address@hidden


Modified: trunk/gnue-forms/src/GFForm.py
===================================================================
--- trunk/gnue-forms/src/GFForm.py      2010-12-16 19:46:27 UTC (rev 10271)
+++ trunk/gnue-forms/src/GFForm.py      2010-12-16 20:56:25 UTC (rev 10272)
@@ -161,7 +161,6 @@
             'paste': {'function': self.paste},
             'select_all': {'function': self.select_all},
             'enter_text': {'function': self.enter_text},
-            'backspace': {'function': self.backspace},
 
             # Focus movement
             'next_entry': {'function': self.next_entry},
@@ -741,7 +740,7 @@
 
 
     # =========================================================================
-    # Clipboard and selection
+    # Clipboard, selection, and text entry
     # =========================================================================
 
     # -------------------------------------------------------------------------
@@ -776,6 +775,7 @@
         if isinstance(self._currentEntry, GFFieldBound):
             self._currentEntry.paste()
 
+
     # -------------------------------------------------------------------------
     # Selection
     # -------------------------------------------------------------------------
@@ -788,6 +788,7 @@
         if isinstance(self._currentEntry, GFFieldBound):
             self._currentEntry.select_all()
 
+
     # -------------------------------------------------------------------------
     # Text entry
     # -------------------------------------------------------------------------
@@ -795,21 +796,17 @@
     def enter_text(self, text):
         """
         Enter text into the current entry as if typed in by the user.
-        """
 
-        if isinstance(self._currentEntry, GFFieldBound):
-            self._currentEntry.enter_text(text)
+        When given a backspace in the text parameter, the current entry behaves
+        as if the backspace key was hit by the user.
 
-    # -------------------------------------------------------------------------
-
-    def backspace(self):
+        Not all kinds of entries handle this.
         """
-        Delete the character left to the cursor in the current entry.
-        """
 
-        if isinstance(self._currentEntry, GFFieldBound):
-            self._currentEntry.backspace()
+        if isinstance(self._currentEntry, GFEntry):
+            self._currentEntry.enter_text(text)
 
+
     # =========================================================================
     # Focus functions
     # =========================================================================

Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFEntry.py   2010-12-16 19:46:27 UTC (rev 
10271)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py   2010-12-16 20:56:25 UTC (rev 
10272)
@@ -158,6 +158,25 @@
     has_label = property(__get_has_label)
 
 
+    # -------------------------------------------------------------------------
+    # Simulate text entry
+    # -------------------------------------------------------------------------
+
+    def enter_text(self, text):
+        """
+        Add the given text to the entry as if it was typed in by the user.
+
+        This can only used for real texts, it does not process function or
+        control keys. If the entry currently has an active selection, it is
+        overwritten.
+
+        @param text: text to add to the entry.
+        @type text: unicode
+        """
+
+        self.uiWidget._ui_enter_text_(self.visible_index, text)
+
+
     # =========================================================================
     # Trigger functions
     # =========================================================================

Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
===================================================================
--- trunk/gnue-forms/src/GFObjects/GFTabStop.py 2010-12-16 19:46:27 UTC (rev 
10271)
+++ trunk/gnue-forms/src/GFObjects/GFTabStop.py 2010-12-16 20:56:25 UTC (rev 
10272)
@@ -709,29 +709,8 @@
         if self.uiWidget is not None and self.visible_index is not None:
             self.uiWidget._ui_select_all_(self.visible_index)
 
-    # -------------------------------------------------------------------------
 
-    def enter_text(self, text):
-        """
-        Add the given text to the entry as if it was typed in by the user.
-
-        This can only used for real texts, it does not process function or
-        control keys. If the entry currently has an active selection, it is
-        overwritten.
-
-        @param text: text to add to the entry.
-        @type text: unicode
-        """
-
-        self._displayHandler.enter_text(text)
-
     # -------------------------------------------------------------------------
-
-    def backspace(self):
-
-        self._displayHandler.backspace()
-
-    # -------------------------------------------------------------------------
     # Refresh the user interface with the current field data for current row
     # -------------------------------------------------------------------------
 

Modified: trunk/gnue-forms/src/input/displayHandlers/Checkbox.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Checkbox.py      2010-12-16 
19:46:27 UTC (rev 10271)
+++ trunk/gnue-forms/src/input/displayHandlers/Checkbox.py      2010-12-16 
20:56:25 UTC (rev 10272)
@@ -123,7 +123,7 @@
 
 
   # Correctly handle requestKEYPRESS event
-  def enter_text(self, text):
+  def _addText(self, text):
     if text == ' ':
       self.__toggle ()
     elif text in ['0', '-']:      # TODO: add "Y" for current language

Modified: trunk/gnue-forms/src/input/displayHandlers/Cursor.py
===================================================================
--- trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2010-12-16 
19:46:27 UTC (rev 10271)
+++ trunk/gnue-forms/src/input/displayHandlers/Cursor.py        2010-12-16 
20:56:25 UTC (rev 10272)
@@ -180,15 +180,6 @@
 
     def _addText(self, event):
 
-        self.enter_text(event.text)
-
-    # -------------------------------------------------------------------------
-
-    def enter_text(self, text):
-        """
-        Enter a text into the entry.
-        """
-
         if self._selection1 is not None:
             # If text is selected, then we will replace
             (start, end) = self.getSelectionArea()
@@ -224,12 +215,6 @@
 
     def _backspace(self, event):
 
-        self.backspace()
-
-    # -------------------------------------------------------------------------
-
-    def backspace(self):
-
         # If there is a selection, delete the selected portion.
         if self._selection1 is not None:
             (start, end) = self.getSelectionArea()

Modified: trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2010-12-16 19:46:27 UTC 
(rev 10271)
+++ trunk/gnue-forms/src/uidrivers/wx/widgets/entry.py  2010-12-16 20:56:25 UTC 
(rev 10272)
@@ -657,6 +657,28 @@
 
 
     # -------------------------------------------------------------------------
+    # Keypress simulation
+    # -------------------------------------------------------------------------
+
+    def _ui_enter_text_(self, index, text):
+
+        widget = self.widgets[index]
+
+        if isinstance(widget, (wx.TextCtrl, wx.ComboBox, NumberEntryCtrl)):
+            if isinstance(widget, wx.ComboBox):
+                (s1, s2) = widget.GetMark()
+            else:
+                (s1, s2) = widget.GetSelection()
+            if text == "\x08":
+                # Backspace
+                if s1 == s2 and s1 > 0:
+                    s1 -= 1
+                widget.Remove(s1, s2)
+            else:
+                widget.Replace(s1, s2, text)
+
+
+    # -------------------------------------------------------------------------
     # Clipboard and selection
     # -------------------------------------------------------------------------
 
@@ -910,6 +932,12 @@
 
     # -------------------------------------------------------------------------
 
+    def GetSelection(self, *args, **kwargs):
+
+        return self.GetTextCtrl().GetSelection(*args, **kwargs)
+
+    # -------------------------------------------------------------------------
+
     def SetSelection(self, *args, **kwargs):
 
         return self.GetTextCtrl().SetSelection(*args, **kwargs)
@@ -920,6 +948,18 @@
 
         return self.GetTextCtrl().SetInsertionPoint(*args, **kwargs)
 
+    # -------------------------------------------------------------------------
+
+    def Remove(self, *args, **kwargs):
+
+        return self.GetTextCtrl().Remove(*args, **kwargs)
+
+    # -------------------------------------------------------------------------
+
+    def Replace(self, *args, **kwargs):
+
+        return self.GetTextCtrl().Replace(*args, **kwargs)
+
 # =============================================================================
 
 class NumberEntryPopup(wx.combo.ComboPopup):




reply via email to

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