]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/lib/dialogs.py
wxPython 2.0b9, first phase (win32)
[wxWidgets.git] / utils / wxPython / lib / dialogs.py
diff --git a/utils/wxPython/lib/dialogs.py b/utils/wxPython/lib/dialogs.py
new file mode 100644 (file)
index 0000000..1af300f
--- /dev/null
@@ -0,0 +1,106 @@
+from wxPython.wx import *
+from layoutf import Layoutf
+import string
+
+
+
+class wxScrolledMessageDialog(wxDialog):
+
+    def __init__(self, parent, msg, caption, pos = None, size = None):
+        if not pos:
+            pos = wxDefaultPosition
+        if not size:
+            size = wxSize(500,300)
+        wxDialog.__init__(self, parent, -1, caption, pos, size)
+        text = wxTextCtrl(self, -1, msg, wxDefaultPosition,
+                             wxDefaultSize,
+                             wxTE_MULTILINE | wxTE_READONLY)
+        ok = wxButton(self, wxID_OK, "OK")
+        text.SetConstraints(Layoutf('t=t5#1;b=t5#2;l=l5#1;r=r5#1', (self,ok)))
+        ok.SetConstraints(Layoutf('b=b5#1;x%w50#1;w!80;h!25', (self,)))
+        self.SetAutoLayout(TRUE)
+
+
+
+class wxMultipleChoiceDialog(wxDialog):
+
+    def __init__(self, parent, msg, title, lst, pos = None, size = None):
+        if not pos:
+            pos = wxDefaultPosition
+        if not size:
+            size = wxSize(200,200)
+        wxDialog.__init__(self, parent, -1, title, pos, size)
+        dc = wxClientDC(self)
+        height = 0
+        for line in string.split(msg,'\n'):
+            height = height + dc.GetTextExtent(msg)[1] + 4
+        stat = wxStaticText(self, -1, msg)
+        self.lbox = wxListBox(self, 100, wxDefaultPosition,
+                                 wxDefaultSize, lst, wxLB_MULTIPLE)
+        ok = wxButton(self, wxID_OK, "OK")
+        cancel = wxButton(self, wxID_CANCEL, "Cancel")
+        stat.SetConstraints(Layoutf('t=t10#1;l=l5#1;r=r5#1;h!%d' % (height,),
+                                   (self,)))
+        self.lbox.SetConstraints(Layoutf('t=b10#2;l=l5#1;r=r5#1;b=t5#3',
+                                 (self, stat, ok)))
+        ok.SetConstraints(Layoutf('b=b5#1;x%w25#1;w!80;h!25', (self,)))
+        cancel.SetConstraints(Layoutf('b=b5#1;x%w75#1;w!80;h!25', (self,)))
+        self.SetAutoLayout(TRUE)
+        self.lst = lst
+
+    def OnSize(self, event):
+        self.Layout()
+
+    def GetValue(self):
+        return self.lbox.GetSelections()
+
+    def GetValueString(self):
+        sel = self.lbox.GetSelections()
+        val = []
+        for i in sel:
+            val.append(self.lst[i])
+        return tuple(val)
+
+if __name__ == '__main__':
+    class MyFrame(wxFrame):
+        def __init__(self):
+            wxFrame.__init__(self, NULL, -1, "hello",
+                                wxDefaultPosition, wxSize(200,200))
+            wxButton(self, 100, "Multiple Test",wxPoint(0,0))
+            wxButton(self, 101, "Message Test", wxPoint(0,100))
+            EVT_BUTTON(self, 100, self.OnMultipleTest)
+            EVT_BUTTON(self, 101, self.OnMessageTest)
+
+        def OnMultipleTest(self, event):
+            self.lst = [ 'apple', 'pear', 'banana', 'coconut', 'orange',
+                         'etc', 'etc..', 'etc...' ]
+            dlg = wxMultipleChoiceDialog(self,
+                                         "Pick some from\n this list\nblabla",
+                                         "m.s.d.", self.lst)
+            if (dlg.ShowModal() == wxID_OK):
+                print "Selection:", dlg.GetValue(), " -> ", dlg.GetValueString()
+
+        def OnMessageTest(self, event):
+            import sys;
+            f = open(sys.argv[0],"r")
+            msg = f.read()
+            dlg = wxScrolledMessageDialog(self, msg, "message test")
+            dlg.ShowModal()
+
+
+    class MyApp(wxApp):
+        def OnInit(self):
+            frame = MyFrame()
+            frame.Show(TRUE)
+            self.SetTopWindow(frame)
+            return TRUE
+
+    app = MyApp(0)
+    app.MainLoop()
+
+
+
+
+
+
+