]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/tests/val.py
new tests
[wxWidgets.git] / utils / wxPython / tests / val.py
diff --git a/utils/wxPython/tests/val.py b/utils/wxPython/tests/val.py
new file mode 100644 (file)
index 0000000..9a05123
--- /dev/null
@@ -0,0 +1,108 @@
+from wxPython.wx import *
+import string
+
+
+class floatValidator(wxPyValidator):
+
+    def __init__(self, obj=None, attrName=""):
+        wxPyValidator.__init__(self)
+        self.numList = ['1','2','3','4','5','6','7','8','9','0','.']
+        EVT_CHAR(self, self.OnChar)
+        self.obj = obj
+        self.attrName = attrName
+
+    def Clone(self):
+        return floatValidator(self.obj, self.attrName)
+
+    def TransferToWindow(self):
+        if self.obj and hasattr(self.obj, self.attrName):
+            tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
+            tc.SetValue(str(getattr(self.obj, self.attrName)))
+        return true
+
+    def TransferFromWindow(self):
+        if self.obj and self.attrName:
+            tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
+            text = tc.GetValue()
+            setattr(self.obj, self.attrName, string.atof(text))
+        return true
+
+
+    def Validate(self, win):
+        tc = wxPyTypeCast(self.GetWindow(), "wxTextCtrl")
+        val = tc.GetValue()
+
+        for x in val:
+            if x not in self.numList:
+                return false
+
+        return true
+
+    def OnChar(self, event):
+        key = event.KeyCode()
+        if key < WXK_SPACE or key == WXK_DELETE or key > 255:
+            event.Skip()
+            return
+
+        if chr(key) in self.numList:
+            event.Skip()
+            return
+
+        if not wxValidator_IsSilent():
+            wxBell()
+
+        # Returning without calling even.Skip eats the event before it
+        # gets to the text control
+        return
+
+
+
+class MyDialog(wxDialog):
+    def __init__(self, parent):
+        wxDialog.__init__(self, parent, -1, "hello")
+
+        self.theValue =  555.12
+        fltValidator = floatValidator(self, "theValue")
+
+        Vbox = wxBoxSizer(wxVERTICAL)
+        Tbox = wxBoxSizer(wxHORIZONTAL)
+        Tbox.Add(wxStaticText(self, -1, "Initial Balance"), 0, wxALL,5)
+        Tbox.Add(wxTextCtrl(self, 13, "123.45", validator = fltValidator,
+                            size=(100, -1)), 0, wxALL,5)
+
+        Vbox.Add(Tbox, 0, 0)
+
+        Tbox = wxBoxSizer(wxHORIZONTAL)
+        Tbox.Add(wxButton(self, wxID_OK, "Ok"), 0, wxALL,5)
+        Tbox.Add(wxButton(self, wxID_CANCEL, "Cancel"), 0, wxALL,5)
+
+        Vbox.Add(Tbox, 0, 0)
+
+        self.SetAutoLayout(true)
+        self.SetSizer(Vbox)
+        Vbox.Fit(self)
+
+
+class TestFrame(wxFrame):
+    def __init__(self, parent):
+        wxFrame.__init__(self, parent, -1, "Testing...", size=(150,75))
+        wxButton(self, 25, "Click Me")
+        EVT_BUTTON(self, 25, self.OnClick)
+
+
+    def OnClick(self, event):
+        dlg = MyDialog(self)
+        dlg.ShowModal()
+        print dlg.theValue
+        dlg.Destroy()
+
+
+
+app = wxPySimpleApp()
+frame = TestFrame(None)
+frame.Show(true)
+app.MainLoop()
+
+
+
+