]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/tests/dynamicform.py
Copied/merged from the 2.2 branch.
[wxWidgets.git] / wxPython / tests / dynamicform.py
diff --git a/wxPython/tests/dynamicform.py b/wxPython/tests/dynamicform.py
new file mode 100644 (file)
index 0000000..e65b3fd
--- /dev/null
@@ -0,0 +1,62 @@
+
+
+from wxPython.wx import *
+
+class FieldData:
+    def __init__(self, name, label, shortHelp="", defValue="",
+                 size=(-1, -1), style=0, ID=-1):
+        self.name = name
+        self.label = label
+        self.shortHelp = shortHelp
+        self.defValue = defValue
+        self.size = size
+        self.style = style
+        self.ID = ID
+
+
+class DynamicForm(wxPanel):
+    def __init__(self, parent, ID, fieldData):
+        wxPanel.__init__(self, parent, ID)
+
+        sizer = wxFlexGridSizer(cols=2, vgap=5, hgap=5)
+        for field in fieldData:
+            label = wxStaticText(self, -1, field.label)
+            sizer.Add(label, 0, wxALIGN_RIGHT)
+            text = wxTextCtrl(self, field.ID, field.defValue,
+                              size=field.size, style=field.style)
+            if field.shortHelp:
+                text.SetToolTip(wxToolTip(field.shortHelp))
+            self.__dict__["get_"+field.name] = text.GetValue
+            self.__dict__["set_"+field.name] = text.SetValue
+            sizer.Add(text, 0, wxEXPAND)
+
+        sizer.Fit(self)
+        self.SetAutoLayout(true)
+        self.SetSizer(sizer)
+
+
+class TestFrame(wxFrame):
+    testFields = [
+        FieldData("fname", "First name:", "Enter someone's first name"),
+        FieldData("lname", "Last name:",  "Enter someone's last name"),
+        FieldData("email", "Email address:", "just figure it out..."),
+        ]
+    def __init__(self):
+        wxFrame.__init__(self, None, -1, "This is a test")
+        form = DynamicForm(self, -1, self.testFields)
+        form.set_fname("Robin")
+        form.set_lname("Dunn")
+        self.form = form
+        self.Fit()
+        EVT_CLOSE(self, self.OnCloseWindow)
+
+    def OnCloseWindow(self, evt):
+        print self.form.get_email()
+        self.Destroy()
+
+
+app = wxPySimpleApp()
+frame = TestFrame()
+frame.Show(true)
+app.MainLoop()
+