mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2026-09-20 12:59:31 +08:00
Added a set of sophisticated Error Dialogs from Chris Fama.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -65,6 +65,8 @@ C++ pointer.
|
||||
Added some optimization methods to wxDC: GetBoundingBox, DrawLineList,
|
||||
DrawPointList.
|
||||
|
||||
Added a set of sophisticated Error Dialogs from Chris Fama.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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__
|
||||
@@ -31,6 +31,7 @@ _treeList = [
|
||||
'OOR',
|
||||
'wxFindReplaceDialog',
|
||||
'DrawXXXList',
|
||||
'ErrorDialogs',
|
||||
##'wxPopupWindow',
|
||||
]),
|
||||
|
||||
@@ -64,7 +65,7 @@ _treeList = [
|
||||
'PythonEvents', 'Threads',
|
||||
'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE',
|
||||
'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave",
|
||||
'wxJoystick', 'DrawXXXList',
|
||||
'wxJoystick', 'DrawXXXList', 'ErrorDialogs',
|
||||
]),
|
||||
|
||||
('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user