X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ca298c88524c5c44c38d71af0c1f8ab81543e6a9..cf694132f1c28509a9f84377ce8d374bae4177ad:/utils/wxPython/lib/dialogs.py?ds=inline diff --git a/utils/wxPython/lib/dialogs.py b/utils/wxPython/lib/dialogs.py new file mode 100644 index 0000000000..1af300f716 --- /dev/null +++ b/utils/wxPython/lib/dialogs.py @@ -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() + + + + + + +