import sys, os
from wxPython.wx import *
-
+from wxPython.lib.splashscreen import SplashScreen
#---------------------------------------------------------------------------
+_useSplitter = true
+_useNestedSplitter = true
_treeList = [
+ ('New since last release', ['wxMVCTree', 'wxVTKRenderWindow']),
+
('Managed Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame']),
- ('Miscellaneous Windows', ['wxGrid', 'wxSashWindow',
+ ('Non-Managed Windows', ['wxGrid', 'wxSashWindow',
'wxScrolledWindow', 'wxSplitterWindow',
'wxStatusBar', 'wxToolBar', 'wxNotebook',
'wxHtmlWindow']),
('Window Layout', ['wxLayoutConstraints', 'Sizers', 'OldSizers']),
- ('Miscellaneous', ['wxTimer', 'wxValidator', 'wxGLCanvas', 'DialogUnits',
- 'wxImage', 'PrintFramework', 'wxOGL']),
+ ('Miscellaneous', [ 'DragAndDrop', 'CustomDragAndDrop', 'FontEnumerator',
+ 'wxTimer', 'wxValidator', 'wxGLCanvas', 'DialogUnits',
+ 'wxImage', 'PrintFramework', 'wxOGL', 'PythonEvents',
+ 'Threads']),
- ('wxPython Library', ['OldSizers', 'Layoutf', 'wxScrolledMessageDialog',
+ ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',
'wxMultipleChoiceDialog', 'wxPlotCanvas', 'wxFloatBar',
- 'PyShell']),
+ 'PyShell', 'wxCalendar', 'wxMVCTree', 'wxVTKRenderWindow']),
('Cool Contribs', ['pyTree', 'hangman', 'SlashDot', 'XMLtreeview']),
self.Centre(wxBOTH)
self.CreateStatusBar(1, wxST_SIZEGRIP)
- splitter = wxSplitterWindow(self, -1)
- splitter2 = wxSplitterWindow(splitter, -1)
+
+ if _useSplitter:
+ splitter = wxSplitterWindow(self, -1)
+ if _useNestedSplitter:
+ splitter2 = wxSplitterWindow(splitter, -1)
+ logParent = nbParent = splitter2
+ else:
+ nbParent = splitter
+ logParent = wxFrame(self, -1, "wxPython Demo: log window",
+ (0,0), (500, 150))
+ logParent.Show(true)
+ else:
+ nbParent = self
+ logParent = wxFrame(self, -1, "wxPython Demo: log window",
+ (0,0), (500, 150))
+ logParent.Show(true)
+
+
# Prevent TreeCtrl from displaying all items after destruction
self.dying = false
# Create a TreeCtrl
- tID = wxNewId()
- self.treeMap = {}
- self.tree = wxTreeCtrl(splitter, tID)
- root = self.tree.AddRoot("Overview")
- for item in _treeList:
- child = self.tree.AppendItem(root, item[0])
- for childItem in item[1]:
- theDemo = self.tree.AppendItem(child, childItem)
- self.treeMap[childItem] = theDemo
-
- self.tree.Expand(root)
- EVT_TREE_ITEM_EXPANDED (self.tree, tID, self.OnItemExpanded)
- EVT_TREE_ITEM_COLLAPSED (self.tree, tID, self.OnItemCollapsed)
- EVT_TREE_SEL_CHANGED (self.tree, tID, self.OnSelChanged)
+ if _useSplitter:
+ tID = wxNewId()
+ self.treeMap = {}
+ self.tree = wxTreeCtrl(splitter, tID)
+ root = self.tree.AddRoot("Overview")
+ for item in _treeList:
+ child = self.tree.AppendItem(root, item[0])
+ for childItem in item[1]:
+ theDemo = self.tree.AppendItem(child, childItem)
+ self.treeMap[childItem] = theDemo
+
+ self.tree.Expand(root)
+ EVT_TREE_ITEM_EXPANDED (self.tree, tID, self.OnItemExpanded)
+ EVT_TREE_ITEM_COLLAPSED (self.tree, tID, self.OnItemCollapsed)
+ EVT_TREE_SEL_CHANGED (self.tree, tID, self.OnSelChanged)
# Create a Notebook
- self.nb = wxNotebook(splitter2, -1)
+ self.nb = wxNotebook(nbParent, -1)
# Set up a TextCtrl on the Overview Notebook page
self.ovr = wxTextCtrl(self.nb, -1, style = wxTE_MULTILINE|wxTE_READONLY)
# Set up a log on the View Log Notebook page
- self.log = wxTextCtrl(splitter2, -1,
+ self.log = wxTextCtrl(logParent, -1,
style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL)
(w, self.charHeight) = self.log.GetTextExtent('X')
self.WriteText('wxPython Demo Log:\n')
+ self.Show(true)
# add the windows to the splitter and split it.
- splitter.SplitVertically(self.tree, splitter2)
- splitter.SetSashPosition(180, true)
- splitter.SetMinimumPaneSize(20)
+ if _useSplitter:
+ if _useNestedSplitter:
+ splitter2.SplitHorizontally(self.nb, self.log)
+ splitter2.SetSashPosition(360, true)
+ splitter2.SetMinimumPaneSize(20)
+
+ splitter.SplitVertically(self.tree, splitter2)
+ else:
+ splitter.SplitVertically(self.tree, self.nb)
+
+ splitter.SetSashPosition(180, true)
+ splitter.SetMinimumPaneSize(20)
- splitter2.SplitHorizontally(self.nb, self.log)
- splitter2.SetSashPosition(360, true)
- splitter2.SetMinimumPaneSize(20)
# make our log window be stdout
#sys.stdout = self
# select initial items
self.nb.SetSelection(0)
- self.tree.SelectItem(root)
+ if _useSplitter:
+ self.tree.SelectItem(root)
if len(sys.argv) == 2:
try:
selectedDemo = self.treeMap[sys.argv[1]]
except:
selectedDemo = None
- if selectedDemo:
+ if selectedDemo and _useSplitter:
self.tree.SelectItem(selectedDemo)
self.tree.EnsureVisible(selectedDemo)
+ self.WriteText('window handle: %s\n' % self.GetHandle())
+
+
#---------------------------------------------
def WriteText(self, text):
self.log.WriteText(text)
if self.dying:
return
+ item = event.GetItem()
+ itemText = self.tree.GetItemText(item)
+ self.RunDemo(itemText)
+
+
+ #---------------------------------------------
+ def RunDemo(self, itemText):
if self.nb.GetPageCount() == 3:
if self.nb.GetSelection() == 2:
self.nb.SetSelection(0)
self.nb.DeletePage(2)
- item = event.GetItem()
- itemText = self.tree.GetItemText(item)
-
if itemText == 'Overview':
self.GetDemoFile('Main.py')
self.SetOverview('Overview', overview)
else:
if os.path.exists(itemText + '.py'):
+ wxBeginBusyCursor()
self.GetDemoFile(itemText + '.py')
module = __import__(itemText, globals())
self.SetOverview(itemText, module.overview)
+ wxEndBusyCursor()
# in case runTest is modal, make sure things look right...
self.nb.Refresh();
self.window = module.runTest(self, self.nb, self)
if self.window:
self.nb.AddPage(self.window, 'Demo')
- self.nb.ResizeChildren()
+ #self.nb.ResizeChildren()
self.nb.SetSelection(2)
+ #self.nb.ResizeChildren()
+ #if self.window.GetAutoLayout():
+ # self.window.Layout()
else:
self.ovr.Clear()
#---------------------------------------------
def OnDemoMenu(self, event):
- try:
- selectedDemo = self.treeMap[self.mainmenu.GetLabel(event.GetId())]
- except:
- selectedDemo = None
- if selectedDemo:
- self.tree.SelectItem(selectedDemo)
- self.tree.EnsureVisible(selectedDemo)
-
+ if _useSplitter:
+ try:
+ selectedDemo = self.treeMap[self.mainmenu.GetLabel(event.GetId())]
+ except:
+ selectedDemo = None
+ if selectedDemo:
+ self.tree.SelectItem(selectedDemo)
+ self.tree.EnsureVisible(selectedDemo)
+ else:
+ self.RunDemo(self.mainmenu.GetLabel(event.GetId()))
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
wxImage_AddHandler(wxJPEGHandler())
wxImage_AddHandler(wxPNGHandler())
wxImage_AddHandler(wxGIFHandler())
- frame = wxPythonDemo(NULL, -1, "wxPython: (A Demonstration)")
+
+ self.splash = SplashScreen(None, bitmapfile='bitmaps/splash.gif',
+ duration=4000, callback=self.AfterSplash)
+ self.splash.Show(true)
+ wxYield()
+ return true
+
+ def AfterSplash(self):
+ self.splash.Close(true)
+ frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)")
frame.Show(true)
self.SetTopWindow(frame)
return true