X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e4a197e4c60e461b8068b0619692ea083e30b8b..0a5bb138a71dfc1c706fc0858fb2801500e2c2e8:/wxPython/demo/run.py diff --git a/wxPython/demo/run.py b/wxPython/demo/run.py index fcf5bd9029..3c27661e9e 100755 --- a/wxPython/demo/run.py +++ b/wxPython/demo/run.py @@ -17,9 +17,17 @@ directory within its own frame window. Just specify the module name on the command line. """ - +import wx # This module uses the new wx namespace import sys, os -from wxPython.wx import * + +# stuff for debugging +print "wx.version:", wx.version() +print "pid:", os.getpid() +##raw_input("Press Enter...") + +assertMode = wx.PYAPP_ASSERT_DIALOG +##assertMode = wx.PYAPP_ASSERT_EXCEPTION + #---------------------------------------------------------------------------- @@ -27,32 +35,42 @@ class Log: def WriteText(self, text): if text[-1:] == '\n': text = text[:-1] - wxLogMessage(text) + wx.LogMessage(text) write = WriteText -class RunDemoApp(wxApp): - def __init__(self, name, module): +class RunDemoApp(wx.App): + def __init__(self, name, module, useShell): self.name = name self.demoModule = module - wxApp.__init__(self, 0) ##wxPlatform == "__WXMAC__") + self.useShell = useShell + wx.App.__init__(self, redirect=False) def OnInit(self): - wxInitAllImageHandlers() - wxLog_SetActiveTarget(wxLogStderr()) + wx.Log_SetActiveTarget(wx.LogStderr()) - frame = wxFrame(None, -1, "RunDemo: " + self.name, pos=(50,50), size=(0,0), - style=wxNO_FULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE) + self.SetAssertMode(assertMode) + + frame = wx.Frame(None, -1, "RunDemo: " + self.name, pos=(50,50), size=(200,100), + style=wx.DEFAULT_FRAME_STYLE) frame.CreateStatusBar() - menuBar = wxMenuBar() - menu = wxMenu() - menu.Append(101, "E&xit\tAlt-X", "Exit demo") - EVT_MENU(self, 101, self.OnButton) + + menuBar = wx.MenuBar() + menu = wx.Menu() + item = menu.Append(-1, "E&xit\tCtrl-Q", "Exit demo") + self.Bind(wx.EVT_MENU, self.OnExitApp, item) menuBar.Append(menu, "&File") + + ns = {} + ns['wx'] = wx + ns['app'] = self + ns['module'] = self.demoModule + ns['frame'] = frame + frame.SetMenuBar(menuBar) frame.Show(True) - EVT_CLOSE(frame, self.OnCloseFrame) + frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame) win = self.demoModule.runTest(frame, frame, Log()) @@ -63,28 +81,41 @@ class RunDemoApp(wxApp): frame.SetSize((640, 480)) win.SetFocus() self.window = win + ns['win'] = win + frect = frame.GetRect() else: - # otherwise the demo made its own frame, so just put a - # button in this one - if hasattr(frame, 'otherWin'): - b = wxButton(frame, -1, " Exit ") - frame.SetSize((200, 100)) - EVT_BUTTON(frame, b.GetId(), self.OnButton) - else: - # It was probably a dialog or something that is already - # gone, so we're done. - frame.Destroy() - return True + # It was probably a dialog or something that is already + # gone, so we're done. + frame.Destroy() + return True self.SetTopWindow(frame) self.frame = frame - #wxLog_SetActiveTarget(wxLogStderr()) - #wxLog_SetTraceMask(wxTraceMessages) + #wx.Log_SetActiveTarget(wx.LogStderr()) + #wx.Log_SetTraceMask(wx.TraceMessages) + + if self.useShell: + # Make a PyShell window, and position it below our test window + from wx import py + shell = py.shell.ShellFrame(None, locals=ns) + frect.OffsetXY(0, frect.height) + frect.height = 400 + shell.SetRect(frect) + shell.Show() + + # Hook the close event of the test window so that we close + # the shell at the same time + def CloseShell(evt): + if shell: + shell.Close() + evt.Skip() + frame.Bind(wx.EVT_CLOSE, CloseShell) + return True - def OnButton(self, evt): + def OnExitApp(self, evt): self.frame.Close(True) @@ -98,17 +129,22 @@ class RunDemoApp(wxApp): def main(argv): + useShell = False + for x in range(len(sys.argv)): + if sys.argv[x] in ['--shell', '-shell', '-s']: + useShell = True + del sys.argv[x] + break + if len(argv) < 2: print "Please specify a demo module name on the command-line" raise SystemExit - name = argv[1] - if name[-3:] == '.py': - name = name[:-3] + name, ext = os.path.splitext(argv[1]) module = __import__(name) - app = RunDemoApp(name, module) + app = RunDemoApp(name, module, useShell) app.MainLoop()