]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/ErrorDialogs.py
Added a set of sophisticated Error Dialogs from Chris Fama.
[wxWidgets.git] / wxPython / demo / ErrorDialogs.py
diff --git a/wxPython/demo/ErrorDialogs.py b/wxPython/demo/ErrorDialogs.py
new file mode 100644 (file)
index 0000000..c205c6b
--- /dev/null
@@ -0,0 +1,128 @@
+# demo for ErrorDialogs.py
+# usual wxWindows license stuff here.
+# by Chris Fama, with thanks to Robin Dunn, and others on the wxPython-users
+# mailing list.
+
+from wxPython.wx import *
+from wxPython.lib.ErrorDialogs import *
+_debug = 0
+ID_BUTTON_wxPyFatalErrorDialog = 10001
+ID_BUTTON_wxPyNonFatalErrorDialog = 10002
+ID_BUTTON_wxPyFatalErrorDialogWithTraceback = 10003
+ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback = 10004
+
+def ErrorDialogsDemoPanelFunc( parent, call_fit = true, set_sizer = true ):
+    item0 = wxBoxSizer( wxVERTICAL )
+
+    item1 = wxStaticText( parent, -1, "Please select one of the buttons below...", wxDefaultPosition, wxDefaultSize, 0 )
+    item0.AddWindow( item1, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    item2 = wxFlexGridSizer( 0, 2, 0, 0 )
+
+    item6 = wxButton( parent, ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback, "wxPyNonFatalErrorDialogWithTraceback", wxDefaultPosition, wxDefaultSize, 0 )
+    item6.SetDefault()
+    item2.AddWindow( item6, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    item3 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialog, "wxPyFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 )
+    item2.AddWindow( item3, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    item4 = wxButton( parent, ID_BUTTON_wxPyNonFatalErrorDialog, "wxPyNonFatalErrorDialog", wxDefaultPosition, wxDefaultSize, 0 )
+    item2.AddWindow( item4, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    item5 = wxButton( parent, ID_BUTTON_wxPyFatalErrorDialogWithTraceback, "wxPyFatalErrorDialogWithTraceback", wxDefaultPosition, wxDefaultSize, 0 )
+    item2.AddWindow( item5, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    item0.AddSizer( item2, 0, wxALIGN_CENTRE|wxALL, 5 )
+
+    if set_sizer == true:
+        parent.SetAutoLayout( true )
+        parent.SetSizer( item0 )
+        if call_fit == true:
+            item0.Fit( parent )
+            item0.SetSizeHints( parent )
+
+    return item0
+
+# End of generated bit
+
+class MyPanel(wxPanel):
+    def __init__(self,parent=None):
+        wxPanel.__init__(self,parent,-1)
+        args = (None, -1)
+        kwargs = {
+            'programname': "sumthing",
+            'mailto': "me@sumwear",
+            'whendismissed': "from wxPython.wx import * ; wxBell()"}
+        self.dialogs = map(apply,
+                           [wxPyNonFatalErrorDialogWithTraceback,
+                            wxPyNonFatalErrorDialog,#WithTraceback
+                            wxPyFatalErrorDialogWithTraceback,
+                            wxPyFatalErrorDialog],#WithTraceback
+                           (args,) * 4,
+                           (kwargs,) * 4)
+        ErrorDialogsDemoPanelFunc(self)
+
+        EVT_BUTTON(self,
+                   ID_BUTTON_wxPyFatalErrorDialog,
+                   self.DoDialog)
+        EVT_BUTTON(self,
+                   ID_BUTTON_wxPyFatalErrorDialogWithTraceback,
+                   self.DoDialog)
+        EVT_BUTTON(self,
+                   ID_BUTTON_wxPyNonFatalErrorDialog,
+                   self.DoDialog)
+        EVT_BUTTON(self,
+                   ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback,
+                   self.DoDialog)
+        EVT_CLOSE(self,self.OnClose)
+
+    IndexFromID = {
+        ID_BUTTON_wxPyFatalErrorDialog: 3,
+        ID_BUTTON_wxPyFatalErrorDialogWithTraceback: 2,
+        ID_BUTTON_wxPyNonFatalErrorDialog: 1,
+        ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback: 0
+        }
+
+    def DoDialog(self,event):
+        sys.stderr = self.dialogs[self.IndexFromID[event.GetId()]]
+        print "%s.DoDialog(): testing %s..." % (self,sys.stderr)
+        this_will_generate_a_NameError_exception
+
+    def OnClose(self,evt):
+        for d in self.dialogs:
+            d.Destroy ()
+        self.Destroy ()
+
+class MyFrame(wxFrame):
+    def __init__(self,parent=None):
+        wxFrame.__init__(self,parent,-1,
+                         "Please make a selection...",
+                         )
+        self. panel = MyPanel(self)
+        EVT_CLOSE (self,self.OnCloseWindow)
+
+    def OnCloseWindow(self,event):
+        self.panel.Close()
+        self.Destroy()
+
+class MyApp(wxApp):
+    def OnInit(self):
+        frame = MyFrame()
+        frame.Show(true)
+        self.SetTopWindow(frame)
+        return true
+
+def runTest(pframe, nb, log):
+    panel = MyPanel(nb)
+    return panel
+
+from wxPython.lib import ErrorDialogs
+ErrorDialogs._debug = 1
+
+if __name__ == "__main__":
+    sys.stderr = wxPyNonWindowingErrorHandler()
+    app = MyApp(0)
+    app.MainLoop()
+    sys.exit()
+else:
+    overview = ErrorDialogs.__doc__