]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/run.py
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
20 import wx
# This module uses the new wx namespace
24 print "wx.VERSION_STRING = ", wx
.VERSION_STRING
25 print "pid:", os
.getpid()
26 ##raw_input("Press Enter...")
28 assertMode
= wx
.PYAPP_ASSERT_DIALOG
29 ##assertMode = wx.PYAPP_ASSERT_EXCEPTION
32 #----------------------------------------------------------------------------
35 def WriteText(self
, text
):
42 class RunDemoApp(wx
.App
):
43 def __init__(self
, name
, module
, useShell
):
45 self
.demoModule
= module
46 self
.useShell
= useShell
47 wx
.App
.__init
__(self
, 0)
51 wx
.InitAllImageHandlers()
52 wx
.Log_SetActiveTarget(wx
.LogStderr())
54 self
.SetAssertMode(assertMode
)
56 frame
= wx
.Frame(None, -1, "RunDemo: " + self
.name
, pos
=(50,50), size
=(200,100),
57 style
=wx
.DEFAULT_FRAME_STYLE
)
58 frame
.CreateStatusBar()
60 menuBar
= wx
.MenuBar()
62 item
= menu
.Append(-1, "E&xit\tAlt-X", "Exit demo")
63 self
.Bind(wx
.EVT_MENU
, self
.OnButton
, item
)
64 menuBar
.Append(menu
, "&File")
69 ns
['module'] = self
.demoModule
72 frame
.SetMenuBar(menuBar
)
74 frame
.Bind(wx
.EVT_CLOSE
, self
.OnCloseFrame
)
76 win
= self
.demoModule
.runTest(frame
, frame
, Log())
78 # a window will be returned if the demo does not create
79 # its own top-level window
81 # so set the frame to a good size for showing stuff
82 frame
.SetSize((640, 480))
86 frect
= frame
.GetRect()
89 # otherwise the demo made its own frame, so just put a
91 if hasattr(frame
, 'otherWin'):
92 ns
['win'] = frame
.otherWin
93 frect
= frame
.otherWin
.GetRect()
94 p
= wx
.Panel(frame
, -1)
95 b
= wx
.Button(p
, -1, " Exit ", (10,10))
96 wx
.CallAfter(frame
.SetClientSize
, (200, 100))
97 frame
.Bind(wx
.EVT_BUTTON
, self
.OnButton
, b
)
99 # It was probably a dialog or something that is already
100 # gone, so we're done.
104 self
.SetTopWindow(frame
)
106 #wx.Log_SetActiveTarget(wx.LogStderr())
107 #wx.Log_SetTraceMask(wx.TraceMessages)
110 # Make a PyShell window, and position it below our test window
112 shell
= py
.shell
.ShellFrame(None, locals=ns
)
113 frect
.OffsetXY(0, frect
.height
)
118 # Hook the close event of the test window so that we close
119 # the shell at the same time
124 frame
.Bind(wx
.EVT_CLOSE
, CloseShell
)
129 def OnButton(self
, evt
):
130 self
.frame
.Close(True)
133 def OnCloseFrame(self
, evt
):
134 if hasattr(self
, "window") and hasattr(self
.window
, "ShutdownDemo"):
135 self
.window
.ShutdownDemo()
139 #----------------------------------------------------------------------------
144 for x
in range(len(sys
.argv
)):
145 if sys
.argv
[x
] in ['--shell', '-shell', '-s']:
151 print "Please specify a demo module name on the command-line"
154 name
, ext
= os
.path
.splitext(argv
[1])
155 module
= __import__(name
)
158 app
= RunDemoApp(name
, module
, useShell
)
163 if __name__
== "__main__":