_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',
'ColourDialog',
'DirDialog',
'FileDialog',
- 'FileDialog_Save',
'FindReplaceDialog',
'FontDialog',
'MessageDialog',
'StyledTextCtrl_2',
'TablePrint',
'Throbber',
+ 'Ticker',
'TimeCtrl',
'VListBox',
]),
'PythonEvents',
'Threads',
'Timer',
- 'infoframe',
+ ##'infoframe', # needs better explaination and some fixing
]),
# Clipboard and DnD
# Other stuff
('Miscellaneous', [
'ColourDB',
- 'DialogUnits',
+ ##'DialogUnits', # needs more explainations
'DrawXXXList',
'FileHistory',
'FontEnumerator',
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
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)
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)
def ActiveModuleChanged(self):
self.LoadDemoSource(self.demoModules.GetSource())
self.UpdateControlState()
+ self.ReloadDemo()
def LoadDemoSource(self, source):
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):
busy = wx.BusyInfo("Reloading demo module...")
self.demoModules.LoadFromFile(modModified, modifiedFilename)
self.ActiveModuleChanged()
- self.ReloadDemo()
def OnRestore(self, event): # Handles the "Delete Modified" button
os.unlink(modifiedFilename) # Delete the modified copy
busy = wx.BusyInfo("Reloading demo module...")
self.ActiveModuleChanged()
- self.ReloadDemo()
#---------------------------------------------------------------------------
# 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):
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:
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
self.curOverview = ""
self.demoPage = None
self.codePage = None
- self.useModified = False
self.shell = None
+ self.firstTime = True
icon = images.getMondrianIcon()
self.SetIcon(icon)
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)
self.codePage.LoadDemo(self.demoModules)
#---------------------------------------------
- def RunModule(self, loadSource):
+ def RunModule(self):
"""Runs the active module"""
module = self.demoModules.GetActive()
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):
os.chdir(demoPath)
except:
pass
- app = MyApp(0) ##wx.Platform == "__WXMAC__")
+ app = MyApp(False)
app.MainLoop()
#---------------------------------------------------------------------------