]),
# 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',
'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',
# load original module
self.LoadFromFile(modOriginal, GetOriginalFilename(name))
+ self.SetActive(modOriginal)
# load modified module (if one exists)
if DoesModifiedExist(name):
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)
module = self.demoModules.GetActive()
self.ShutdownDemoModule()
overviewText = ""
- prevSelect = -1
# o If the demo returns a window it is placed in a tab.
# o Otherwise, a placeholder tab is created, informing the user that the
if hasattr(module, "overview"):
overviewText = module.overview
- # in case runTest is modal, make sure things look right
- # before it starts...
- prevSelect = self.UpdateNotebook()
- wx.YieldIfNeeded()
-
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)
+ self.demoPage = DemoErrorPanel(self.nb, self.codePage,
+ 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)
+ self.demoPage = DemoErrorPanel(self.nb, self.codePage,
+ self.demoModules.GetErrorInfo(), self)
self.SetOverview(self.demoModules.name + " Overview", overviewText)
- self.UpdateNotebook(prevSelect)
+
+ 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 page:
if not pageExists:
# Add a new page
-
- # panel = wx.Panel(nb, -1)
- # page.Reparent(panel)
- # panel.page = page
- # nb.AddPage(panel, pageText)
nb.AddPage(page, pageText)
if debug: wx.LogMessage("DBG: ADDED %s" % pageText)
else:
- # if nb.GetPage(pagePos).page != page:
if nb.GetPage(pagePos) != page:
# Reload an existing page
nb.Freeze()
-
- # panel = nb.GetPage(pagePos)
- # panel.page = page
- # page.Reparent(panel)
-
nb.DeletePage(pagePos)
nb.InsertPage(pagePos, page, pageText)
nb.Thaw()
if select >= 0 and select < nb.GetPageCount():
nb.SetSelection(select)
- return select
-
#---------------------------------------------
def SetOverview(self, name, text):
self.curOverview = text
os.chdir(demoPath)
except:
pass
- app = MyApp(0) ##wx.Platform == "__WXMAC__")
+ app = MyApp(False)
app.MainLoop()
#---------------------------------------------------------------------------