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
, 0) ##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
) 
  75         #wxLog_SetActiveTarget(wxLogStderr()) 
  76         #wxLog_SetTraceMask(wxTraceMessages) 
  80     def OnButton(self
, evt
): 
  81         self
.frame
.Close(true
) 
  83 #---------------------------------------------------------------------------- 
  88         print "Please specify a demo module name on the command-line" 
  92     if name
[-3:] == '.py': 
  94     module 
= __import__(name
) 
  97     app 
= RunDemoApp(name
, module
) 
 102 if __name__ 
== "__main__":