]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/demo/Main.py
Added some test code...
[wxWidgets.git] / utils / wxPython / demo / Main.py
index 5e42ae882a60ebf244352ce2f3dd4818b6abc09f..f5292d51f0ed06f39a200a1574815ca26eddfe77 100644 (file)
 
 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']),
@@ -38,12 +42,14 @@ _treeList = [
 
     ('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']),
 
@@ -64,8 +70,24 @@ class wxPythonDemo(wxFrame):
 
         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
@@ -105,23 +127,24 @@ class wxPythonDemo(wxFrame):
 
 
         # 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)
@@ -136,38 +159,49 @@ class wxPythonDemo(wxFrame):
 
 
         # 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)
@@ -197,14 +231,18 @@ class wxPythonDemo(wxFrame):
         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)
@@ -213,9 +251,11 @@ class wxPythonDemo(wxFrame):
 
         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();
@@ -224,8 +264,11 @@ class wxPythonDemo(wxFrame):
                 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()
@@ -293,14 +336,16 @@ class wxPythonDemo(wxFrame):
 
     #---------------------------------------------
     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()))
 
 #---------------------------------------------------------------------------
 #---------------------------------------------------------------------------
@@ -310,7 +355,16 @@ class MyApp(wxApp):
         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