X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9416aa89ca06d0fb20b1002e026d2c7ac7aa6a17..61940a7061d0b5d5122b1e1e939cfa2d72596999:/wxPython/demo/wxValidator.py diff --git a/wxPython/demo/wxValidator.py b/wxPython/demo/wxValidator.py index 4209150905..b31b56b8f3 100644 --- a/wxPython/demo/wxValidator.py +++ b/wxPython/demo/wxValidator.py @@ -1,19 +1,22 @@ +# 11/22/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# -from wxPython.wx import * -from wxPython.lib.grids import wxFlexGridSizer +import string +import wx -import string #---------------------------------------------------------------------- ALPHA_ONLY = 1 DIGIT_ONLY = 2 -class MyValidator(wxPyValidator): +class MyValidator(wx.PyValidator): def __init__(self, flag=None, pyVar=None): - wxPyValidator.__init__(self) + wx.PyValidator.__init__(self) self.flag = flag - EVT_CHAR(self, self.OnChar) + self.Bind(wx.EVT_CHAR, self.OnChar) def Clone(self): return MyValidator(self.flag) @@ -21,33 +24,37 @@ class MyValidator(wxPyValidator): def Validate(self, win): tc = self.GetWindow() val = tc.GetValue() + if self.flag == ALPHA_ONLY: for x in val: if x not in string.letters: - return false + return False elif self.flag == DIGIT_ONLY: for x in val: if x not in string.digits: - return false + return False - return true + return True def OnChar(self, event): key = event.KeyCode() - if key < WXK_SPACE or key == WXK_DELETE or key > 255: + + if key < wx.WXK_SPACE or key == wx.WXK_DELETE or key > 255: event.Skip() return + if self.flag == ALPHA_ONLY and chr(key) in string.letters: event.Skip() return + if self.flag == DIGIT_ONLY and chr(key) in string.digits: event.Skip() return - if not wxValidator_IsSilent(): - wxBell() + if not wx.Validator_IsSilent(): + wx.Bell() # Returning without calling even.Skip eats the event before it # gets to the text control @@ -55,40 +62,40 @@ class MyValidator(wxPyValidator): #---------------------------------------------------------------------- -class TestValidatorPanel(wxPanel): +class TestValidatorPanel(wx.Panel): def __init__(self, parent): - wxPanel.__init__(self, parent, -1) - self.SetAutoLayout(true) + wx.Panel.__init__(self, parent, -1) + self.SetAutoLayout(True) VSPACE = 10 - fgs = wxFlexGridSizer(0, 2) + fgs = wx.FlexGridSizer(0, 2) - fgs.Add(1,1); - fgs.Add(wxStaticText(self, -1, "These controls have validators that limit\n" + fgs.Add((1,1)) + fgs.Add(wx.StaticText(self, -1, "These controls have validators that limit\n" "the type of characters that can be entered.")) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) - label = wxStaticText(self, -1, "Alpha Only: ") - fgs.Add(label, 0, wxALIGN_RIGHT|wxCENTER) + label = wx.StaticText(self, -1, "Alpha Only: ") + fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER) - fgs.Add(wxTextCtrl(self, -1, "", validator = MyValidator(ALPHA_ONLY))) + fgs.Add(wx.TextCtrl(self, -1, "", validator = MyValidator(ALPHA_ONLY))) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) - label = wxStaticText(self, -1, "Digits Only: ") - fgs.Add(label, 0, wxALIGN_RIGHT|wxCENTER) - fgs.Add(wxTextCtrl(self, -1, "", validator = MyValidator(DIGIT_ONLY))) + label = wx.StaticText(self, -1, "Digits Only: ") + fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER) + fgs.Add(wx.TextCtrl(self, -1, "", validator = MyValidator(DIGIT_ONLY))) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) - fgs.Add(0,0) - b = wxButton(self, -1, "Test Dialog Validation") - EVT_BUTTON(self, b.GetId(), self.OnDoDialog) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) + fgs.Add((0,0)) + b = wx.Button(self, -1, "Test Dialog Validation") + self.Bind(wx.EVT_BUTTON, self.OnDoDialog, b) fgs.Add(b) - border = wxBoxSizer() - border.Add(fgs, 1, wxGROW|wxALL, 25) + border = wx.BoxSizer() + border.Add(fgs, 1, wx.GROW|wx.ALL, 25) self.SetSizer(border) self.Layout() @@ -100,14 +107,14 @@ class TestValidatorPanel(wxPanel): #---------------------------------------------------------------------- -class TextObjectValidator(wxPyValidator): +class TextObjectValidator(wx.PyValidator): """ This validator is used to ensure that the user has entered something into the text object editor dialog's text field. """ def __init__(self): """ Standard constructor. """ - wxPyValidator.__init__(self) + wx.PyValidator.__init__(self) @@ -126,67 +133,74 @@ class TextObjectValidator(wxPyValidator): text = textCtrl.GetValue() if len(text) == 0: - wxMessageBox("A text object must contain some text!", "Error") + wx.MessageBox("A text object must contain some text!", "Error") + textCtrl.SetBackgroundColour("pink") textCtrl.SetFocus() - return false + textCtrl.Refresh() + return False else: - return true + textCtrl.SetBackgroundColour( + wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)) + textCtrl.Refresh() + return True def TransferToWindow(self): """ Transfer data from validator to window. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. """ - return true # Prevent wxDialog from complaining. + return True # Prevent wxDialog from complaining. def TransferFromWindow(self): """ Transfer data from window to validator. - The default implementation returns false, indicating that an error - occurred. We simply return true, as we don't do any data transfer. + The default implementation returns False, indicating that an error + occurred. We simply return True, as we don't do any data transfer. """ - return true # Prevent wxDialog from complaining. + return True # Prevent wxDialog from complaining. #---------------------------------------------------------------------- -class TestValidateDialog(wxDialog): +class TestValidateDialog(wx.Dialog): def __init__(self, parent): - wxDialog.__init__(self, parent, -1, "Validated Dialog") + wx.Dialog.__init__(self, parent, -1, "Validated Dialog") - self.SetAutoLayout(true) + self.SetAutoLayout(True) VSPACE = 10 - fgs = wxFlexGridSizer(0, 2) + fgs = wx.FlexGridSizer(0, 2) - fgs.Add(1,1); - fgs.Add(wxStaticText(self, -1, + fgs.Add((1,1)); + fgs.Add(wx.StaticText(self, -1, "These controls must have text entered into them. Each\n" "one has a validator that is checked when the Okay\n" "button is clicked.")) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) - label = wxStaticText(self, -1, "First: ") - fgs.Add(label, 0, wxALIGN_RIGHT|wxCENTER) + label = wx.StaticText(self, -1, "First: ") + fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER) - fgs.Add(wxTextCtrl(self, -1, "", validator = TextObjectValidator())) + fgs.Add(wx.TextCtrl(self, -1, "", validator = TextObjectValidator())) - fgs.Add(1,VSPACE); fgs.Add(1,VSPACE) + fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE)) - label = wxStaticText(self, -1, "Second: ") - fgs.Add(label, 0, wxALIGN_RIGHT|wxCENTER) - fgs.Add(wxTextCtrl(self, -1, "", validator = TextObjectValidator())) + label = wx.StaticText(self, -1, "Second: ") + fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER) + fgs.Add(wx.TextCtrl(self, -1, "", validator = TextObjectValidator())) - buttons = wxBoxSizer(wxHORIZONTAL) - buttons.Add(wxButton(self, wxID_OK, "Okay"), 0, wxALL, 10) - buttons.Add(wxButton(self, wxID_CANCEL, "Cancel"), 0, wxALL, 10) + buttons = wx.BoxSizer(wx.HORIZONTAL) + b = wx.Button(self, wx.ID_OK, "Okay") + b.SetDefault() + buttons.Add(b, 0, wx.ALL, 10) + buttons.Add(wx.Button(self, wx.ID_CANCEL, "Cancel"), 0, wx.ALL, 10) - border = wxBoxSizer(wxVERTICAL) - border.Add(fgs, 1, wxGROW|wxALL, 25) + border = wx.BoxSizer(wx.VERTICAL) + border.Add(fgs, 1, wx.GROW|wx.ALL, 25) border.Add(buttons) self.SetSizer(border) border.Fit(self) @@ -203,23 +217,28 @@ def runTest(frame, nb, log): - - - - - - overview = """\ -wxValidator is the base class for a family of validator classes that mediate between a class of control, and application data. - -A validator has three major roles: - -1. to transfer data from a C++ variable or own storage to and from a control; + +
+wxValidator is the base class for a family of validator classes that mediate +between a class of control, and application data. + +A validator has three major roles: + +
Validators can be plugged into controls dynamically. + + +""" -2. to validate data in a control, and show an appropriate error message; -3. to filter events (such as keystrokes), thereby changing the behaviour of the associated control. -Validators can be plugged into controls dynamically. +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])]) -"""