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_STRING = ", wx.VERSION_STRING
+print "pid:", os.getpid()
+##raw_input("Press a key...")
+
+assertMode = wx.PYAPP_ASSERT_DIALOG
+##assertMode = wx.PYAPP_ASSERT_EXCEPTION
+
#----------------------------------------------------------------------------
class Log:
def WriteText(self, text):
- sys.stdout.write(text)
+ if text[-1:] == '\n':
+ text = text[:-1]
+ wx.LogMessage(text)
write = WriteText
-class RunDemoApp(wxApp):
+class RunDemoApp(wx.App):
def __init__(self, name, module):
self.name = name
self.demoModule = module
- wxApp.__init__(self, 0)
+ wx.App.__init__(self, 0)
+
def OnInit(self):
- wxInitAllImageHandlers()
- frame = wxFrame(None, -1, "RunDemo: " + self.name, size=(0,0),
- style=wxNO_FULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE)
+ wx.InitAllImageHandlers()
+ wx.Log_SetActiveTarget(wx.LogStderr())
+
+ self.SetAssertMode(assertMode)
+
+ frame = wx.Frame(None, -1, "RunDemo: " + self.name, pos=(50,50), size=(200,100),
+ style=wx.NO_FULL_REPAINT_ON_RESIZE|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\tAlt-X", "Exit demo")
+ self.Bind(wx.EVT_MENU, self.OnButton, item)
menuBar.Append(menu, "&File")
+
frame.SetMenuBar(menuBar)
- frame.Show(true)
+ frame.Show(True)
+ frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
+
win = self.demoModule.runTest(frame, frame, Log())
# a window will be returned if the demo does not create
# so set the frame to a good size for showing stuff
frame.SetSize((640, 480))
win.SetFocus()
+ self.window = win
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)
+ p = wx.Panel(frame, -1)
+ b = wx.Button(p, -1, " Exit ", (10,10))
+ p.Fit()
+ frame.SetClientSize(p.GetSize())
+ #frame.SetSize((200, 100))
+ frame.Bind(wx.EVT_BUTTON, self.OnButton, b)
else:
# It was probably a dialog or something that is already
# gone, so we're done.
frame.Destroy()
- return true
+ return True
self.SetTopWindow(frame)
self.frame = frame
- return true
+ #wx.Log_SetActiveTarget(wx.LogStderr())
+ #wx.Log_SetTraceMask(wx.TraceMessages)
+ return True
def OnButton(self, evt):
- self.frame.Close(true)
+ self.frame.Close(True)
+
+
+ def OnCloseFrame(self, evt):
+ if hasattr(self, "window") and hasattr(self.window, "ShutdownDemo"):
+ self.window.ShutdownDemo()
+ evt.Skip()
+
#----------------------------------------------------------------------------
def main(argv):
- if len(argv) != 2:
+ 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)