MaskedEdit patch from Will Sadkin:

- Added handling for WXK_DELETE and WXK_INSERT, such that shift-delete
   cuts, shift-insert pastes, and ctrl-insert copies.
 - Fixed masked.numctrl to allow space for a group char, as this format is
   apparently used in several world locales.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2006-06-10 22:13:54 +00:00
parent fce161de8a
commit 35d8bffe01
3 changed files with 58 additions and 10 deletions

View File

@@ -678,6 +678,7 @@ class NumCtrl(BaseMaskedTextCtrl, NumCtrlAccessorsMixin):
## dbg("old_decimalchar: '%s'" % old_decimalchar)
groupchar = old_groupchar
decimalchar = old_decimalchar
old_numvalue = self._GetNumValue(self._GetValue())
if kwargs.has_key('groupChar'):
maskededit_kwargs['groupChar'] = kwargs['groupChar']
@@ -829,12 +830,20 @@ class NumCtrl(BaseMaskedTextCtrl, NumCtrlAccessorsMixin):
# Ensure current value of control obeys any new restrictions imposed:
text = self._GetValue()
## dbg('text value: "%s"' % text)
if kwargs.has_key('groupChar') and text.find(old_groupchar) != -1:
text = text.replace(old_groupchar, self._groupChar)
if kwargs.has_key('decimalChar') and text.find(old_decimalchar) != -1:
text = text.replace(old_decimalchar, self._decimalChar)
if kwargs.has_key('groupChar') and self._groupChar != old_groupchar and text.find(old_groupchar) != -1:
text = old_numvalue
## dbg('old_groupchar: "%s" newgroupchar: "%s"' % (old_groupchar, self._groupChar))
if kwargs.has_key('decimalChar') and self._decimalChar != old_decimalchar and text.find(old_decimalchar) != -1:
text = old_numvalue
if text != self._GetValue():
wx.TextCtrl.SetValue(self, text)
if self._decimalChar != '.':
# ensure latest decimal char is in "numeric value" so it won't be removed
# when going to the GUI:
text = text.replace('.', self._decimalChar)
newtext = self._toGUI(text)
## dbg('calling wx.TextCtrl.SetValue(self, %s)' % newtext)
wx.TextCtrl.SetValue(self, newtext)
value = self.GetValue()
@@ -1568,7 +1577,12 @@ class NumCtrl(BaseMaskedTextCtrl, NumCtrlAccessorsMixin):
#
field = self._FindField(sel_start)
edit_start, edit_end = field._extent
paste_text = paste_text.replace(self._groupChar, '').replace('(', '-').replace(')','')
# handle possibility of groupChar being a space:
newtext = paste_text.lstrip()
lspace_count = len(paste_text) - len(newtext)
paste_text = ' ' * lspace_count + newtext.replace(self._groupChar, '').replace('(', '-').replace(')','')
if field._insertRight and self._groupDigits:
# want to paste to the left; see if it will fit:
left_text = old_value[edit_start:sel_start].lstrip()
@@ -1759,6 +1773,9 @@ __i=0
## 1. Add support for printf-style format specification.
## 2. Add option for repositioning on 'illegal' insertion point.
##
## Version 1.3
## 1. fixed to allow space for a group char.
##
## Version 1.2
## 1. Allowed select/replace digits.
## 2. Fixed undo to ignore grouping chars.