[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):