2 #----------------------------------------------------------------------------
4 # Purpose: Simple framework for running individual demos
8 # Created: 6-March-2000
10 # Copyright: (c) 2000 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------------
15 This program will load and run one of the individual demos in this
16 directory within its own frame window. Just specify the module name
22 from wxPython
.wx
import *
24 #----------------------------------------------------------------------------
27 def WriteText(self
, text
):
28 sys
.stdout
.write(text
)
32 class RunDemoApp(wxApp
):
33 def __init__(self
, name
, module
):
35 self
.demoModule
= module
36 wxApp
.__init
__(self
, wxPlatform
== "__WXMAC__")
40 wxInitAllImageHandlers()
41 frame
= wxFrame(None, -1, "RunDemo: " + self
.name
, size
=(0,0),
42 style
=wxNO_FULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE
)
43 frame
.CreateStatusBar()
46 menu
.Append(101, "E&xit\tAlt-X", "Exit demo")
47 EVT_MENU(self
, 101, self
.OnButton
)
48 menuBar
.Append(menu
, "&File")
49 frame
.SetMenuBar(menuBar
)
51 win
= self
.demoModule
.runTest(frame
, frame
, Log())
53 # a window will be returned if the demo does not create
54 # its own top-level window
56 # so set the frame to a good size for showing stuff
57 frame
.SetSize((640, 480))
61 # otherwise the demo made its own frame, so just put a
63 if hasattr(frame
, 'otherWin'):
64 b
= wxButton(frame
, -1, " Exit ")
65 frame
.SetSize((200, 100))
66 EVT_BUTTON(frame
, b
.GetId(), self
.OnButton
)
68 # It was probably a dialog or something that is already
69 # gone, so we're done.
73 self
.SetTopWindow(frame
)
78 def OnButton(self
, evt
):
79 self
.frame
.Close(true
)
81 #----------------------------------------------------------------------------
86 print "Please specify a demo module name on the command-line"
90 if name
[-3:] == '.py':
92 module
= __import__(name
)
95 app
= RunDemoApp(name
, module
)
100 if __name__
== "__main__":