[gnue] r10272 - in trunk/gnue-forms: . src src/GFObjects src/input/displayHandlers src/uidrivers/wx/widgets

[email protected] Thu, 16 Dec 2010 14:56:25 -0600 (CST)
Newsgroups gmane.comp.cms.gnue.cvs
Message-ID <[email protected]>
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=C3=BCller <[email protected]>
properties:=20
	branch-nick: forms

   + timestamp: 2010-12-16 21:55:02.346999884 +0100
committer: Reinhard M=C3=BCller <[email protected]>
properties:=20
	branch-nick: forms

Name: bzr:file-ids
   - src/input/displayHandlers/Cursor.py	7862@3a364389-8fce-0310-8f11-cc3=
63fde16c7:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCursor.py

   + src/GFForm.py	6@3a364389-8fce-0310-8f11-cc363fde16c7:trunk%2Fgnue-fo=
rms:src%2FGFForm.py
src/GFObjects/GFEntry.py	1459@3a364389-8fce-0310-8f11-cc363fde16c7:trunk%=
2Fgnue-forms:src%2FGFObjects%2FGFEntry.py
src/GFObjects/GFTabStop.py	3166@3a364389-8fce-0310-8f11-cc363fde16c7:trun=
k%2Fgnue-forms:src%2FGFObjects%2FGFTabStop.py
src/input/displayHandlers/Checkbox.py	7862@3a364389-8fce-0310-8f11-cc363f=
de16c7:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCheckbox.py
src/input/displayHandlers/Cursor.py	7862@3a364389-8fce-0310-8f11-cc363fde=
16c7:trunk%2Fgnue-forms:src%2Finput%2FdisplayHandlers%2FCursor.py
src/uidrivers/wx/widgets/entry.py	10053@3a364389-8fce-0310-8f11-cc363fde1=
6c7:trunk%2Fgnue-forms:src%2Fuidrivers%2Fwx%2Fwidgets%2Fentry.py

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

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

Name: bzr:text-parents
   - src/input/displayHandlers/Cursor.py	[email protected]=
01202174643-d9ydcs06o8kfy8h7

   + src/GFForm.py	[email protected]=
0j75xj
src/GFObjects/GFEntry.py	[email protected]=
jal1a3hhl6w5
src/GFObjects/GFTabStop.py	[email protected]=
8n81gdqfjhb3fi
src/input/displayHandlers/Checkbox.py	[email protected]=
02174643-d9ydcs06o8kfy8h7
src/uidrivers/wx/widgets/entry.py	[email protected]=
5220-2jxsfkmi6hfk5vix


Modified: trunk/gnue-forms/src/GFForm.py
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- 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},
=20
             # Focus movement
             'next_entry': {'function': self.next_entry},
@@ -741,7 +740,7 @@
=20
=20
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
-    # Clipboard and selection
+    # Clipboard, selection, and text entry
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
=20
     # ------------------------------------------------------------------=
-------
@@ -776,6 +775,7 @@
         if isinstance(self._currentEntry, GFFieldBound):
             self._currentEntry.paste()
=20
+
     # ------------------------------------------------------------------=
-------
     # Selection
     # ------------------------------------------------------------------=
-------
@@ -788,6 +788,7 @@
         if isinstance(self._currentEntry, GFFieldBound):
             self._currentEntry.select_all()
=20
+
     # ------------------------------------------------------------------=
-------
     # Text entry
     # ------------------------------------------------------------------=
-------
@@ -795,21 +796,17 @@
     def enter_text(self, text):
         """
         Enter text into the current entry as if typed in by the user.
-        """
=20
-        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.
=20
-    # ------------------------------------------------------------------=
-------
-
-    def backspace(self):
+        Not all kinds of entries handle this.
         """
-        Delete the character left to the cursor in the current entry.
-        """
=20
-        if isinstance(self._currentEntry, GFFieldBound):
-            self._currentEntry.backspace()
+        if isinstance(self._currentEntry, GFEntry):
+            self._currentEntry.enter_text(text)
=20
+
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
     # Focus functions
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D

Modified: trunk/gnue-forms/src/GFObjects/GFEntry.py
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/gnue-forms/src/GFObjects/GFEntry.py	2010-12-16 19:46:27 UTC (re=
v 10271)
+++ trunk/gnue-forms/src/GFObjects/GFEntry.py	2010-12-16 20:56:25 UTC (re=
v 10272)
@@ -158,6 +158,25 @@
     has_label =3D property(__get_has_label)
=20
=20
+    # ------------------------------------------------------------------=
-------
+    # Simulate text entry
+    # ------------------------------------------------------------------=
-------
+
+    def enter_text(self, text):
+        """
+        Add the given text to the entry as if it was typed in by the use=
r.
+
+        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)
+
+
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
     # Trigger functions
     # =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D

Modified: trunk/gnue-forms/src/GFObjects/GFTabStop.py
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- 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)
=20
-    # ------------------------------------------------------------------=
-------
=20
-    def enter_text(self, text):
-        """
-        Add the given text to the entry as if it was typed in by the use=
r.
-
-        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
     # ------------------------------------------------------------------=
-------
=20

Modified: trunk/gnue-forms/src/input/displayHandlers/Checkbox.py
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- 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 @@
=20
=20
   # Correctly handle requestKEYPRESS event
-  def enter_text(self, text):
+  def _addText(self, text):
     if text =3D=3D ' ':
       self.__toggle ()
     elif text in ['0', '-']:      # TODO: add "Y" for current language

Modified: trunk/gnue-forms/src/input/displayHandlers/Cursor.py
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- 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 @@
=20
     def _addText(self, event):
=20
-        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) =3D self.getSelectionArea()
@@ -224,12 +215,6 @@
=20
     def _backspace(self, event):
=20
-        self.backspace()
-
-    # ------------------------------------------------------------------=
-------
-
-    def backspace(self):
-
         # If there is a selection, delete the selected portion.
         if self._selection1 is not None:
             (start, end) =3D self.getSelectionArea()

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