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