git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| #----------------------------------------------------------------------------
 | |
| # Name:         run.py
 | |
| # Purpose:      Simple framework for running individual demos
 | |
| #
 | |
| # Author:       Robin Dunn
 | |
| #
 | |
| # Created:      6-March-2000
 | |
| # RCS-ID:       $Id$
 | |
| # Copyright:    (c) 2000 by Total Control Software
 | |
| # Licence:      wxWindows license
 | |
| #----------------------------------------------------------------------------
 | |
| 
 | |
| """
 | |
| This program will load and run one of the individual demos in this
 | |
| directory within its own frame window.  Just specify the module name
 | |
| on the command line.
 | |
| """
 | |
| 
 | |
| 
 | |
| import sys, os
 | |
| from wxPython.wx import *
 | |
| 
 | |
| #----------------------------------------------------------------------------
 | |
| 
 | |
| class Log:
 | |
|     def WriteText(self, text):
 | |
|         sys.stdout.write(text)
 | |
|     write = WriteText
 | |
| 
 | |
| 
 | |
| class RunDemoApp(wxApp):
 | |
|     def __init__(self, name, module):
 | |
|         self.name = name
 | |
|         self.demoModule = module
 | |
|         wxApp.__init__(self, wxPlatform == "__WXMAC__")
 | |
| 
 | |
| 
 | |
|     def OnInit(self):
 | |
|         wxInitAllImageHandlers()
 | |
|         frame = wxFrame(None, -1, "RunDemo: " + self.name, size=(0,0),
 | |
|                         style=wxNO_FULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE)
 | |
|         frame.CreateStatusBar()
 | |
|         menuBar = wxMenuBar()
 | |
|         menu = wxMenu()
 | |
|         menu.Append(101, "E&xit\tAlt-X", "Exit demo")
 | |
|         EVT_MENU(self, 101, self.OnButton)
 | |
|         menuBar.Append(menu, "&File")
 | |
|         frame.SetMenuBar(menuBar)
 | |
|         frame.Show(true)
 | |
|         win = self.demoModule.runTest(frame, frame, Log())
 | |
| 
 | |
|         # a window will be returned if the demo does not create
 | |
|         # its own top-level window
 | |
|         if win:
 | |
|             # so set the frame to a good size for showing stuff
 | |
|             frame.SetSize((640, 480))
 | |
|             win.SetFocus()
 | |
| 
 | |
|         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
 | |
| 
 | |
|         self.SetTopWindow(frame)
 | |
|         self.frame = frame
 | |
|         return true
 | |
| 
 | |
| 
 | |
|     def OnButton(self, evt):
 | |
|         self.frame.Close(true)
 | |
| 
 | |
| #----------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| def main(argv):
 | |
|     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]
 | |
|     module = __import__(name)
 | |
| 
 | |
| 
 | |
|     app = RunDemoApp(name, module)
 | |
|     app.MainLoop()
 | |
| 
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main(sys.argv)
 | |
| 
 | |
| 
 |