--- /dev/null
+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()
+
+
+
+
+
+
+