]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/Main.py
update from Vegh Janos
[wxWidgets.git] / wxPython / demo / Main.py
index 852a27adada4de35dc3f6fd6b18b1752289da8f9..21f66b777b34e2d48bed15f274715000a70560c7 100644 (file)
@@ -47,12 +47,12 @@ import images
 _treeList = [
     # new stuff
     ('Recent Additions/Updates', [
-        'OGL',
-        'FloatCanvas',
+        'StockButtons',
+        'Ticker',
         ]),
 
     # managed windows == things with a (optional) caption you can close
-    ('Base Frames and Dialogs', [
+    ('Frames and Dialogs', [
         'Dialog',
         'Frame',
         'MDIWindows',
@@ -65,7 +65,6 @@ _treeList = [
         'ColourDialog',
         'DirDialog',
         'FileDialog',
-        'FileDialog_Save',
         'FindReplaceDialog',
         'FontDialog',
         'MessageDialog',
@@ -163,6 +162,7 @@ _treeList = [
         'StyledTextCtrl_2',
         'TablePrint',
         'Throbber',
+        'Ticker',
         'TimeCtrl',
         'VListBox',
         ]),
@@ -189,7 +189,7 @@ _treeList = [
         'PythonEvents',
         'Threads',
         'Timer',
-        'infoframe',
+        ##'infoframe',    # needs better explaination and some fixing
         ]),
 
     # Clipboard and DnD
@@ -214,7 +214,7 @@ _treeList = [
     # Other stuff
     ('Miscellaneous', [
         'ColourDB',
-        'DialogUnits',
+        ##'DialogUnits',   # needs more explainations
         'DrawXXXList',
         'FileHistory',
         'FontEnumerator',
@@ -274,7 +274,7 @@ try:
 
     class DemoCodeEditor(PythonSTC):
         def __init__(self, parent):
-            PythonSTC.__init__(self, parent, -1, wx.BORDER_NONE)
+            PythonSTC.__init__(self, parent, -1, style=wx.BORDER_NONE)
             self.SetUpEditor()
 
         # Some methods to make it compatible with how the wxTextCtrl is used
@@ -444,8 +444,8 @@ try:
 except ImportError:
     class DemoCodeEditor(wx.TextCtrl):
         def __init__(self, parent):
-            wx.TextCtrl.__init__(self, parent, -1, style = wx.TE_MULTILINE | 
-                                 wx.HSCROLL | wx.TE_RICH2 | wx.TE_NOHIDESEL)
+            wx.TextCtrl.__init__(self, parent, -1, style =
+                                 wx.TE_MULTILINE | wx.HSCROLL | wx.TE_RICH2 | wx.TE_NOHIDESEL)
 
         def RegisterModifiedEvent(self, eventHandler):
             self.Bind(wx.EVT_TEXT, eventHandler)
@@ -483,7 +483,9 @@ modDefault = modOriginal
 class DemoCodePanel(wx.Panel):
     """Panel for the 'Demo Code' tab"""
     def __init__(self, parent, mainFrame):
-        wx.Panel.__init__(self, parent)
+        wx.Panel.__init__(self, parent, size=(1,1))
+        if 'wxMSW' in wx.PlatformInfo:
+            self.Hide()
         self.mainFrame = mainFrame
         self.editor = DemoCodeEditor(self)
         self.editor.RegisterModifiedEvent(self.OnCodeModified)
@@ -531,6 +533,7 @@ class DemoCodePanel(wx.Panel):
     def ActiveModuleChanged(self):
         self.LoadDemoSource(self.demoModules.GetSource())
         self.UpdateControlState()
+        self.ReloadDemo()
 
         
     def LoadDemoSource(self, source):
@@ -574,12 +577,11 @@ class DemoCodePanel(wx.Panel):
             busy = wx.BusyInfo("Reloading demo module...")
             self.demoModules.SetActive(modSelected)
             self.ActiveModuleChanged()
-            self.ReloadDemo()
 
 
     def ReloadDemo(self):
         if self.demoModules.name != __name__:
-            self.mainFrame.RunModule(False)
+            self.mainFrame.RunModule()
 
                 
     def OnCodeModified(self, event):
@@ -625,7 +627,6 @@ class DemoCodePanel(wx.Panel):
         busy = wx.BusyInfo("Reloading demo module...")
         self.demoModules.LoadFromFile(modModified, modifiedFilename)
         self.ActiveModuleChanged()
-        self.ReloadDemo()
 
 
     def OnRestore(self, event): # Handles the "Delete Modified" button
@@ -634,7 +635,6 @@ class DemoCodePanel(wx.Panel):
         os.unlink(modifiedFilename) # Delete the modified copy
         busy = wx.BusyInfo("Reloading demo module...")
         self.ActiveModuleChanged()
-        self.ReloadDemo()
 
 
 #---------------------------------------------------------------------------
@@ -716,8 +716,6 @@ class DemoModules:
         # load modified module (if one exists)
         if DoesModifiedExist(name):
            self.LoadFromFile(modModified, GetModifiedFilename(name))
-           if (modDefault == modModified):
-               self.SetActive(modModified)
 
 
     def LoadFromFile(self, modID, filename):
@@ -814,35 +812,6 @@ class DemoModules:
         self.modules[modID][2] = ""
 
 
-#---------------------------------------------------------------------------
-class ReloadDemoPanel(wx.Panel):
-    """
-    Panel put into the demo tab when the demo just shows some
-    top-level window.  Enables the demo to be reloaded after being
-    closed.
-    """
-
-    infoText = "This demo runs outside the main window"
-    
-    def __init__(self, parent, codePanel, log):
-        wx.Panel.__init__(self, parent, -1)
-        self.codePanel = codePanel
-        self.log = log
-
-        self.label = wx.StaticText(self, -1, self.infoText)
-        self.btnReload = wx.Button(self, -1, "Reload Demo")
-        self.btnReload.Bind(wx.EVT_BUTTON, self.OnReload)
-
-        self.box = wx.BoxSizer(wx.VERTICAL)
-        self.box.Add(self.label, 0, wx.ALIGN_CENTER | wx.ALL, 10)
-        self.box.Add(self.btnReload, 0, wx.ALIGN_CENTER | wx.ALL, 10)
-
-        self.box.Fit(self)
-        self.SetSizer(self.box)
-        
-    def OnReload(self, event):
-        self.codePanel.ReloadDemo()
-
 #---------------------------------------------------------------------------
 
 class DemoError:
@@ -981,7 +950,7 @@ class wxPythonDemo(wx.Frame):
     overviewText = "wxPython Overview"
 
     def __init__(self, parent, title):
-        wx.Frame.__init__(self, parent, -1, title, size = (950, 750),
+        wx.Frame.__init__(self, parent, -1, title, size = (950, 720),
                           style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE)
 
         self.loaded = False
@@ -989,8 +958,8 @@ class wxPythonDemo(wx.Frame):
         self.curOverview = ""
         self.demoPage = None
         self.codePage = None
-        self.useModified = False
         self.shell = None
+        self.firstTime = True
 
         icon = images.getMondrianIcon()
         self.SetIcon(icon)
@@ -1263,7 +1232,7 @@ class wxPythonDemo(wx.Frame):
                 if os.path.exists(GetOriginalFilename(demoName)):
                     wx.LogMessage("Loading demo %s.py..." % demoName)
                     self.demoModules = DemoModules(demoName)
-                    self.RunModule(True)
+                    self.LoadDemoSource()
                     self.tree.Refresh()
                 else:
                     self.SetOverview("wxPython", mainOverview)
@@ -1279,7 +1248,7 @@ class wxPythonDemo(wx.Frame):
         self.codePage.LoadDemo(self.demoModules)
         
     #---------------------------------------------
-    def RunModule(self, loadSource):
+    def RunModule(self):
         """Runs the active module"""
 
         module = self.demoModules.GetActive()
@@ -1298,20 +1267,26 @@ class wxPythonDemo(wx.Frame):
 
             try:
                 self.demoPage = module.runTest(self, self.nb, self)
-                if self.demoPage is None:
-                    self.demoPage = ReloadDemoPanel(self.nb, self.codePage, self)
             except:
                 self.demoPage = DemoErrorPanel(self.nb, self.codePage,
-                                               DemoError(sys.exc_info()), self)                
+                                               DemoError(sys.exc_info()), self)
+
+            assert self.demoPage is not None, "runTest must return a window!"
+            
         else:
             # There was a previous error in compiling or exec-ing
             self.demoPage = DemoErrorPanel(self.nb, self.codePage,
                                            self.demoModules.GetErrorInfo(), self)
-
-        if loadSource:
-            self.LoadDemoSource()
+            
         self.SetOverview(self.demoModules.name + " Overview", overviewText)
-        self.UpdateNotebook()
+
+        if self.firstTime:
+            # cahnge to the demo page the first time a module is run
+            self.UpdateNotebook(2)
+            self.firstTime = False
+        else:
+            # otherwise just stay on the same tab in case the user has changed to another one
+            self.UpdateNotebook()
 
     #---------------------------------------------
     def ShutdownDemoModule(self):
@@ -1607,7 +1582,7 @@ def main():
         os.chdir(demoPath)
     except:
         pass
-    app = MyApp(0) ##wx.Platform == "__WXMAC__")
+    app = MyApp(False)
     app.MainLoop()
 
 #---------------------------------------------------------------------------