git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			198 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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.
 | 
						|
#
 | 
						|
# 11/22/2003 - Jeff Grimmett (grimmtooth@softhome.net)
 | 
						|
#
 | 
						|
# o Updated for wx namespace
 | 
						|
# 
 | 
						|
# 11/25/2003 - Jeff Grimmett (grimmtooth@softhome.net)
 | 
						|
#
 | 
						|
# o Looks like we have issues until the library is updated.
 | 
						|
#   - Had to rename back to wx* naming conventions
 | 
						|
#   - Getting unusual failures in the library itself when that is done.
 | 
						|
#
 | 
						|
 | 
						|
import  sys
 | 
						|
 | 
						|
import  wx
 | 
						|
import  wx.lib.ErrorDialogs as  edlg
 | 
						|
 | 
						|
_debug = 0
 | 
						|
 | 
						|
ID_TEXT = 10000
 | 
						|
ID_BUTTON_wxPyNonFatalError = 10001
 | 
						|
ID_BUTTON_wxPyFatalError = 10002
 | 
						|
ID_BUTTON_wxPyFatalErrorDialog = 10003
 | 
						|
ID_BUTTON_wxPyNonFatalErrorDialog = 10004
 | 
						|
ID_BUTTON_wxPyFatalErrorDialogWithTraceback = 10005
 | 
						|
ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback = 10006
 | 
						|
 | 
						|
def ErrorDialogsDemoPanelFunc( parent, call_fit = True, set_sizer = True ):
 | 
						|
    item0 = wx.BoxSizer( wx.VERTICAL )
 | 
						|
 | 
						|
    item1 = wx.StaticText(
 | 
						|
        parent, ID_TEXT, 
 | 
						|
        "Please select one of the buttons below for an example using explicit errors..."
 | 
						|
        )
 | 
						|
        
 | 
						|
    item0.AddWindow( item1, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item2 = wx.FlexGridSizer( 0, 2, 0, 0 )
 | 
						|
 | 
						|
    item3 = wx.Button( parent, ID_BUTTON_wxPyNonFatalError, "wxPyNonFatalError")
 | 
						|
    item2.AddWindow( item3, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item4 = wx.Button( parent, ID_BUTTON_wxPyFatalError, "wxPyFatalError")
 | 
						|
    item2.AddWindow( item4, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item0.AddSizer( item2, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item5 = wx.StaticText( parent, ID_TEXT, "Please select one of the buttons below for interpreter errors...")
 | 
						|
    item0.AddWindow( item5, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item6 = wx.FlexGridSizer( 0, 2, 0, 0 )
 | 
						|
 | 
						|
    item7 = wx.Button( parent, ID_BUTTON_wxPyFatalErrorDialog, "wxPyFatalErrorDialog")
 | 
						|
    item6.AddWindow( item7, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item8 = wx.Button( parent, ID_BUTTON_wxPyNonFatalErrorDialog, "wxPyNonFatalErrorDialog")
 | 
						|
    item6.AddWindow( item8, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item9 = wx.Button(
 | 
						|
        parent, ID_BUTTON_wxPyFatalErrorDialogWithTraceback, 
 | 
						|
        "wxPyFatalErrorDialogWithTraceback"
 | 
						|
        )
 | 
						|
    item6.AddWindow( item9, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item10 = wx.Button(
 | 
						|
        parent, ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback, 
 | 
						|
        "wxPyNonFatalErrorDialogWithTraceback"
 | 
						|
        )
 | 
						|
    item10.SetDefault()
 | 
						|
    item6.AddWindow( item10, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item0.AddSizer( item6, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    item11 = wx.FlexGridSizer( 0, 2, 0, 0 )
 | 
						|
 | 
						|
    item0.AddSizer( item11, 0, wx.ALIGN_CENTRE|wx.ALL, 5 )
 | 
						|
 | 
						|
    if set_sizer == True:
 | 
						|
        parent.SetAutoLayout( True )
 | 
						|
        parent.SetSizer( item0 )
 | 
						|
        if call_fit == True:
 | 
						|
            item0.Fit( parent )
 | 
						|
            item0.SetSizeHints( parent )
 | 
						|
 | 
						|
    return item0
 | 
						|
 | 
						|
# Menu bar functions
 | 
						|
 | 
						|
# Bitmap functions
 | 
						|
 | 
						|
 | 
						|
# End of generated file
 | 
						|
 | 
						|
class MyPanel(wx.Panel):
 | 
						|
    def __init__(self,parent=None):
 | 
						|
        wx.Panel.__init__(self,parent,-1)
 | 
						|
 | 
						|
        args = (None, -1)
 | 
						|
        kwargs = {
 | 
						|
            'programname': "sumthing",
 | 
						|
            'mailto': "me@sumwear",
 | 
						|
            'whendismissed': "from wxPython.wx import * ; wxBell()"
 | 
						|
            }
 | 
						|
 | 
						|
        self.dialogs = map(apply,
 | 
						|
                           [edlg.wxPyNonFatalErrorDialogWithTraceback,
 | 
						|
                            edlg.wxPyNonFatalErrorDialog,#WithTraceback
 | 
						|
                            edlg.wxPyFatalErrorDialogWithTraceback,
 | 
						|
                            edlg.wxPyFatalErrorDialog #WithTraceback
 | 
						|
                            ],
 | 
						|
                           (args,) * 4,
 | 
						|
                           (kwargs,) * 4
 | 
						|
                           )
 | 
						|
 | 
						|
        ErrorDialogsDemoPanelFunc(self)
 | 
						|
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyFatalErrorDialog)
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyNonFatalError)
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyFatalError)
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyFatalErrorDialogWithTraceback)
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyNonFatalErrorDialog)
 | 
						|
        self.Bind(wx.EVT_BUTTON, self.DoDialog, id=ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback)
 | 
						|
 | 
						|
    IndexFromID = {
 | 
						|
        ID_BUTTON_wxPyFatalErrorDialog: 3,
 | 
						|
        ID_BUTTON_wxPyFatalErrorDialogWithTraceback: 2,
 | 
						|
        ID_BUTTON_wxPyNonFatalErrorDialog: 1,
 | 
						|
        ID_BUTTON_wxPyNonFatalErrorDialogWithTraceback: 0
 | 
						|
        }
 | 
						|
 | 
						|
    def DoDialog(self,event):
 | 
						|
        id = event.GetId()
 | 
						|
 | 
						|
        if id in [ID_BUTTON_wxPyFatalError,ID_BUTTON_wxPyNonFatalError]:
 | 
						|
            if id == ID_BUTTON_wxPyFatalError:
 | 
						|
                print "%s.DoDialog(): testing explicit wxPyFatalError..."\
 | 
						|
                      % self
 | 
						|
                edlg.wxPyFatalError(self,"Test Non-fatal error.<p>"
 | 
						|
                               "Nearly arbitrary HTML (i.e., that which is"
 | 
						|
                               " understood by <B><I>wxHtmlWindow</i></b>)."
 | 
						|
                               "<p><table border=\"2\"><tr><td>This</td><td>is</td></tr>"
 | 
						|
                               "<tr><td>a</td><td>table</td></tr></table></p>")
 | 
						|
            else:
 | 
						|
                print "%s.DoDialog(): testing explicit wxPyNonFatalError..."\
 | 
						|
                      % self
 | 
						|
                edlg.wxPyNonFatalError(self,"Test Non-fatal error.<p>"
 | 
						|
                                  "Nearly arbitrary HTML (i.e., that which is"
 | 
						|
                                  " understood by <B><I>wxHtmlWindow</i></b>)."
 | 
						|
                                  "<p><table border=\"2\"><tr><td>This</td><td>is</td></tr>"
 | 
						|
                                  "<tr><td>a</td><td>table</td></tr></table></p>")
 | 
						|
        else:
 | 
						|
            sys.stderr = self.dialogs[self.IndexFromID[id]]
 | 
						|
            print "%s.DoDialog(): testing %s..." % (self,sys.stderr)
 | 
						|
            this_will_generate_a_NameError_exception
 | 
						|
 | 
						|
    def ShutdownDemo(self):
 | 
						|
        for d in self.dialogs:
 | 
						|
            d.Destroy()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class MyFrame(wx.Frame):
 | 
						|
    def __init__(self,parent=None):
 | 
						|
        wx.Frame.__init__(self,parent,-1,
 | 
						|
                         "Please make a selection...",
 | 
						|
                         )
 | 
						|
        self.panel = MyPanel(self)
 | 
						|
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
 | 
						|
 | 
						|
    def OnCloseWindow(self,event):
 | 
						|
        self.panel.Close()
 | 
						|
        self.Destroy()
 | 
						|
 | 
						|
class MyApp(wx.App):
 | 
						|
    def OnInit(self):
 | 
						|
        frame = MyFrame()
 | 
						|
        frame.Show(True)
 | 
						|
        self.SetTopWindow(frame)
 | 
						|
        return True
 | 
						|
 | 
						|
def runTest(pframe, nb, log):
 | 
						|
    panel = MyPanel(nb)
 | 
						|
    return panel
 | 
						|
 | 
						|
edlg._debug = 1
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    sys.stderr = edlg.wxPyNonWindowingErrorHandler()
 | 
						|
    app = MyApp(0)
 | 
						|
    app.MainLoop()
 | 
						|
    sys.exit()
 | 
						|
else:
 | 
						|
    overview = edlg.__doc__
 |