]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/run.py
New style
[wxWidgets.git] / wxPython / demo / run.py
index 0e238b55fc55744859aa2b362f690e9baf13df00..336f5bf648171ca79b91d50af0a0b6d28d9d2b4c 100755 (executable)
@@ -40,9 +40,10 @@ class Log:
 
 
 class RunDemoApp(wx.App):
-    def __init__(self, name, module):
+    def __init__(self, name, module, useShell):
         self.name = name
         self.demoModule = module
+        self.useShell = useShell
         wx.App.__init__(self, 0)
 
 
@@ -62,6 +63,12 @@ class RunDemoApp(wx.App):
         self.Bind(wx.EVT_MENU, self.OnButton, 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)
         frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame)
@@ -75,16 +82,20 @@ class RunDemoApp(wx.App):
             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'):
+                ns['win'] = frame.otherWin
+                frect = frame.otherWin.GetRect()
                 p = wx.Panel(frame, -1)
                 b = wx.Button(p, -1, " Exit ", (10,10))
                 p.Fit()
-                frame.SetClientSize(p.GetSize())
-                #frame.SetSize((200, 100))
+                #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
@@ -96,6 +107,24 @@ class RunDemoApp(wx.App):
         self.frame = frame
         #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
 
 
@@ -113,6 +142,13 @@ class RunDemoApp(wx.App):
 
 
 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
@@ -121,7 +157,7 @@ def main(argv):
     module = __import__(name)
 
 
-    app = RunDemoApp(name, module)
+    app = RunDemoApp(name, module, useShell)
     app.MainLoop()