]>
Commit | Line | Data |
---|---|---|
79f1bf32 RD |
1 | # demo for ErrorDialogs.py |
2 | # usual wxWindows license stuff here. | |
3 | # by Chris Fama, with thanks to Robin Dunn, and others on the wxPython-users | |
4 | # mailing list. | |
5 | ||
6 | from wxPython.wx import * | |
7 | from wxPython.lib.ErrorDialogs import * | |
8 | _debug = 0 | |
5e217089 RD |
9 | ID_TEXT = 10000 |
10 | ID_BUTTON_wxPyNonFatalError = 10001 | |
11 | ID_BUTTON_wxPyFatalError = 10002 | |
12 | ID_BUTTON_wxPyFatalErrorDialog = 10003 | |
13 | ID_BUTTON_wxPyNonFatalErrorDialog = 10004 | |
14 | ID_BUTTON_wxPyFatalErrorDialogWithTraceback = 10005 | |
15 | ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback = 10006 | |
79f1bf32 RD |
16 | |
17 | def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ): | |
18 | item0 = wxBoxSizer( wxVERTICAL ) | |
5e217089 RD |
19 | |
20 | item1 = wxStaticText( parent, ID_TEXT, "Please select one of the buttons below for an example using explicit errors...", wxDefaultPosition, wxDefaultSize, 0 ) | |
79f1bf32 RD |
21 | item0.AddWindow( item1, 0, wxALIGN_CENTRE|wxALL, 5 ) |
22 | ||
23 | item2 = wxFlexGridSizer( 0, 2, 0, 0 ) | |
5e217089 RD |
24 | |
25 | item3 = wxButton( parent, ID_BUTTON_wxPyNonFatalError, "wxPyNonFatalError", wxDefaultPosition, wxDefaultSize, 0 ) | |
79f1bf32 RD |
26 | item2.AddWindow( item3, 0, wxALIGN_CENTRE|wxALL, 5 ) |
27 | ||
5e217089 | 28 | item4 = wxButton( parent, ID_BUTTON_wxPyFatalError, "wxPyFatalError", wxDefaultPosition, wxDefaultSize, 0 ) |
79f1bf32 RD |
29 | item2.AddWindow( item4, 0, wxALIGN_CENTRE|wxALL, 5 ) |
30 | ||
79f1bf32 RD |
31 | item0.AddSizer( item2, 0, wxALIGN_CENTRE|wxALL, 5 ) |
32 | ||
5e217089 RD |
33 | item5 = wxStaticText( parent, ID_TEXT, "Please select one of the buttons below for interpreter errors...", wxDefaultPosition, wxDefaultSize, 0 ) |
34 | item0.AddWindow( item5, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
35 | ||
36 | item6 = wxFlexGridSizer( 0, 2, 0, 0 ) | |
37 | ||
38 | item7 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialog, "wxPyFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 ) | |
39 | item6.AddWindow( item7, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
40 | ||
41 | item8 = wxButton( parent, ID_BUTTON_wxPyNonFatalErrorDialog, "wxPyNonFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 ) | |
42 | item6.AddWindow( item8, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
43 | ||
44 | item9 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialogWithTraceback, "wxPyFatalErrorDialogWithTraceback", wxDefaultPosition, wxDefaultSize, 0 ) | |
45 | item6.AddWindow( item9, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
46 | ||
47 | item10 = wxButton( parent, ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback, "wxPyNonFatalErrorDialogWithTraceback", wxDefaultPosition, wxDefaultSize, 0 ) | |
48 | item10.SetDefault() | |
49 | item6.AddWindow( item10, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
50 | ||
51 | item0.AddSizer( item6, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
52 | ||
53 | item11 = wxFlexGridSizer( 0, 2, 0, 0 ) | |
54 | ||
55 | item0.AddSizer( item11, 0, wxALIGN_CENTRE|wxALL, 5 ) | |
56 | ||
79f1bf32 RD |
57 | if set_sizer == true: |
58 | parent.SetAutoLayout( true ) | |
59 | parent.SetSizer( item0 ) | |
60 | if call_fit == true: | |
61 | item0.Fit( parent ) | |
62 | item0.SetSizeHints( parent ) | |
5e217089 | 63 | |
79f1bf32 RD |
64 | return item0 |
65 | ||
5e217089 RD |
66 | # Menu bar functions |
67 | ||
68 | # Bitmap functions | |
69 | ||
70 | ||
71 | # End of generated file | |
79f1bf32 RD |
72 | |
73 | class MyPanel(wxPanel): | |
74 | def __init__(self,parent=None): | |
75 | wxPanel.__init__(self,parent,-1) | |
76 | args = (None, -1) | |
77 | kwargs = { | |
78 | 'programname': "sumthing", | |
79 | 'mailto': "me@sumwear", | |
80 | 'whendismissed': "from wxPython.wx import * ; wxBell()"} | |
81 | self.dialogs = map(apply, | |
82 | [wxPyNonFatalErrorDialogWithTraceback, | |
83 | wxPyNonFatalErrorDialog,#WithTraceback | |
84 | wxPyFatalErrorDialogWithTraceback, | |
85 | wxPyFatalErrorDialog],#WithTraceback | |
86 | (args,) * 4, | |
87 | (kwargs,) * 4) | |
88 | ErrorDialogsDemoPanelFunc(self) | |
89 | ||
90 | EVT_BUTTON(self, | |
91 | ID_BUTTON_wxPyFatalErrorDialog, | |
92 | self.DoDialog) | |
5e217089 RD |
93 | EVT_BUTTON(self, |
94 | ID_BUTTON_wxPyNonFatalError, | |
95 | self.DoDialog) | |
96 | EVT_BUTTON(self, | |
97 | ID_BUTTON_wxPyFatalError, | |
98 | self.DoDialog) | |
79f1bf32 RD |
99 | EVT_BUTTON(self, |
100 | ID_BUTTON_wxPyFatalErrorDialogWithTraceback, | |
101 | self.DoDialog) | |
102 | EVT_BUTTON(self, | |
103 | ID_BUTTON_wxPyNonFatalErrorDialog, | |
104 | self.DoDialog) | |
105 | EVT_BUTTON(self, | |
106 | ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback, | |
107 | self.DoDialog) | |
108 | EVT_CLOSE(self,self.OnClose) | |
5e217089 | 109 | |
79f1bf32 RD |
110 | IndexFromID = { |
111 | ID_BUTTON_wxPyFatalErrorDialog: 3, | |
112 | ID_BUTTON_wxPyFatalErrorDialogWithTraceback: 2, | |
113 | ID_BUTTON_wxPyNonFatalErrorDialog: 1, | |
114 | ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback: 0 | |
115 | } | |
116 | ||
117 | def DoDialog(self,event): | |
5e217089 RD |
118 | id = event.GetId() |
119 | if id in [ID_BUTTON_wxPyFatalError,ID_BUTTON_wxPyNonFatalError]: | |
120 | if id == ID_BUTTON_wxPyFatalError: | |
121 | print "%s.DoDialog(): testing explicit wxPyFatalError..."\ | |
122 | % self | |
123 | wxPyFatalError(self,"Test Non-fatal error.<p>" | |
124 | "Nearly arbitrary HTML (i.e., that which is" | |
125 | " understood by <B><I>wxHtmlWindow</i></b>)." | |
126 | "<p><table border=\"2\"><tr><td>This</td><td>is</td></tr>" | |
127 | "<tr><td>a</td><td>table</td></tr></table></p>") | |
128 | else: | |
129 | print "%s.DoDialog(): testing explicit wxPyNonFatalError..."\ | |
130 | % self | |
131 | wxPyNonFatalError(self,"Test Non-fatal error.<p>" | |
132 | "Nearly arbitrary HTML (i.e., that which is" | |
133 | " understood by <B><I>wxHtmlWindow</i></b>)." | |
134 | "<p><table border=\"2\"><tr><td>This</td><td>is</td></tr>" | |
135 | "<tr><td>a</td><td>table</td></tr></table></p>") | |
136 | else: | |
137 | sys.stderr = self.dialogs[self.IndexFromID[id]] | |
138 | print "%s.DoDialog(): testing %s..." % (self,sys.stderr) | |
139 | this_will_generate_a_NameError_exception | |
79f1bf32 RD |
140 | |
141 | def OnClose(self,evt): | |
142 | for d in self.dialogs: | |
143 | d.Destroy () | |
144 | self.Destroy () | |
145 | ||
146 | class MyFrame(wxFrame): | |
147 | def __init__(self,parent=None): | |
148 | wxFrame.__init__(self,parent,-1, | |
149 | "Please make a selection...", | |
150 | ) | |
151 | self. panel = MyPanel(self) | |
152 | EVT_CLOSE (self,self.OnCloseWindow) | |
153 | ||
154 | def OnCloseWindow(self,event): | |
155 | self.panel.Close() | |
156 | self.Destroy() | |
157 | ||
158 | class MyApp(wxApp): | |
159 | def OnInit(self): | |
160 | frame = MyFrame() | |
161 | frame.Show(true) | |
162 | self.SetTopWindow(frame) | |
163 | return true | |
164 | ||
165 | def runTest(pframe, nb, log): | |
166 | panel = MyPanel(nb) | |
167 | return panel | |
168 | ||
169 | from wxPython.lib import ErrorDialogs | |
170 | ErrorDialogs._debug = 1 | |
171 | ||
172 | if __name__ == "__main__": | |
173 | sys.stderr = wxPyNonWindowingErrorHandler() | |
174 | app = MyApp(0) | |
175 | app.MainLoop() | |
176 | sys.exit() | |
177 | else: | |
178 | overview = ErrorDialogs.__doc__ |