]> git.saurik.com Git - wxWidgets.git/blame - wxPython/tests/val.py
A fix for attribrute sorting, but it's still broken if there are
[wxWidgets.git] / wxPython / tests / val.py
CommitLineData
9e46ac75
RD
1from wxPython.wx import *
2import string
3
4
5class floatValidator(wxPyValidator):
6
7 def __init__(self, obj=None, attrName=""):
8 wxPyValidator.__init__(self)
9 self.numList = ['1','2','3','4','5','6','7','8','9','0','.']
10 EVT_CHAR(self, self.OnChar)
11 self.obj = obj
12 self.attrName = attrName
13
14 def Clone(self):
15 return floatValidator(self.obj, self.attrName)
16
17 def TransferToWindow(self):
18 if self.obj and hasattr(self.obj, self.attrName):
19 tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
20 tc.SetValue(str(getattr(self.obj, self.attrName)))
21 return true
22
23 def TransferFromWindow(self):
24 if self.obj and self.attrName:
25 tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
26 text = tc.GetValue()
27 setattr(self.obj, self.attrName, string.atof(text))
28 return true
29
30
31 def Validate(self, win):
32 tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
33 val = tc.GetValue()
34
35 for x in val:
36 if x not in self.numList:
37 return false
38
39 return true
40
41 def OnChar(self, event):
42 key = event.KeyCode()
43 if key < WXK_SPACE or key == WXK_DELETE or key > 255:
44 event.Skip()
45 return
46
47 if chr(key) in self.numList:
48 event.Skip()
49 return
50
51 if not wxValidator_IsSilent():
52 wxBell()
53
54 # Returning without calling even.Skip eats the event before it
55 # gets to the text control
56 return
57
58
59
60class MyDialog(wxDialog):
61 def __init__(self, parent):
62 wxDialog.__init__(self, parent, -1, "hello")
63
64 self.theValue = 555.12
65 fltValidator = floatValidator(self, "theValue")
66
67 Vbox = wxBoxSizer(wxVERTICAL)
68 Tbox = wxBoxSizer(wxHORIZONTAL)
69 Tbox.Add(wxStaticText(self, -1, "Initial Balance"), 0, wxALL,5)
70 Tbox.Add(wxTextCtrl(self, 13, "123.45", validator = fltValidator,
71 size=(100, -1)), 0, wxALL,5)
72
73 Vbox.Add(Tbox, 0, 0)
74
75 Tbox = wxBoxSizer(wxHORIZONTAL)
76 Tbox.Add(wxButton(self, wxID_OK, "Ok"), 0, wxALL,5)
77 Tbox.Add(wxButton(self, wxID_CANCEL, "Cancel"), 0, wxALL,5)
78
79 Vbox.Add(Tbox, 0, 0)
80
81 self.SetAutoLayout(true)
82 self.SetSizer(Vbox)
83 Vbox.Fit(self)
84
85
86class TestFrame(wxFrame):
87 def __init__(self, parent):
88 wxFrame.__init__(self, parent, -1, "Testing...", size=(150,75))
89 wxButton(self, 25, "Click Me")
90 EVT_BUTTON(self, 25, self.OnClick)
91
92
93 def OnClick(self, event):
94 dlg = MyDialog(self)
95 dlg.ShowModal()
96 print dlg.theValue
97 dlg.Destroy()
98
99
100
101app = wxPySimpleApp()
102frame = TestFrame(None)
103frame.Show(true)
104app.MainLoop()
105
106
107
108