X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/317a64e59a6f107f8d50dcc4e9396b74dc0b473e..629e65c221872f05494069a78f72ed1052f99230:/wxPython/demo/Main.py diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 9fd4ad208a..37b4fa8b83 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -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', @@ -113,6 +112,7 @@ _treeList = [ 'StaticBitmap', 'StaticText', 'StatusBar', + 'StockButtons', 'TextCtrl', 'ToggleButton', 'ToolBar', @@ -163,6 +163,7 @@ _treeList = [ 'StyledTextCtrl_2', 'TablePrint', 'Throbber', + 'Ticker', 'TimeCtrl', 'VListBox', ]), @@ -189,7 +190,7 @@ _treeList = [ 'PythonEvents', 'Threads', 'Timer', - 'infoframe', + ##'infoframe', # needs better explaination and some fixing ]), # Clipboard and DnD @@ -214,7 +215,7 @@ _treeList = [ # Other stuff ('Miscellaneous', [ 'ColourDB', - 'DialogUnits', + ##'DialogUnits', # needs more explainations 'DrawXXXList', 'FileHistory', 'FontEnumerator', @@ -274,7 +275,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 +445,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 +484,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 +534,7 @@ class DemoCodePanel(wx.Panel): def ActiveModuleChanged(self): self.LoadDemoSource(self.demoModules.GetSource()) self.UpdateControlState() + self.ReloadDemo() def LoadDemoSource(self, source): @@ -574,12 +578,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 +628,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 +636,6 @@ class DemoCodePanel(wx.Panel): os.unlink(modifiedFilename) # Delete the modified copy busy = wx.BusyInfo("Reloading demo module...") self.ActiveModuleChanged() - self.ReloadDemo() #--------------------------------------------------------------------------- @@ -716,8 +717,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 +813,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 +951,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 +959,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 +1233,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 +1249,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,21 +1268,27 @@ 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.UpdateNotebook() + self.SetOverview(self.demoModules.name + " Overview", overviewText) + 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): if self.demoPage: @@ -1607,7 +1583,7 @@ def main(): os.chdir(demoPath) except: pass - app = MyApp(0) ##wx.Platform == "__WXMAC__") + app = MyApp(False) app.MainLoop() #---------------------------------------------------------------------------