]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/Main.py
Another package name fix
[wxWidgets.git] / wxPython / demo / Main.py
index b67361889d20cdbc6e58e28fe62cc99075035bc5..ba1b09105990a63f781ef77945dc93f66f9e3427 100644 (file)
@@ -50,7 +50,6 @@ _treeList = [
         'AnalogClock',
         'AUI_DockingWindowMgr',
         'AUI_Notebook',
         'AnalogClock',
         'AUI_DockingWindowMgr',
         'AUI_Notebook',
-        'BitmapFromBuffer',
         'CheckListCtrlMixin',
         'ComboTreeBox',
         'Pickers',
         'CheckListCtrlMixin',
         'ComboTreeBox',
         'Pickers',
@@ -58,6 +57,22 @@ _treeList = [
         'RichTextCtrl',
         'Treebook',
         'Toolbook',
         'RichTextCtrl',
         'Treebook',
         'Toolbook',
+        'BitmapFromBuffer',
+        'RawBitmapAccess',
+        'DragScroller',
+        'DelayedResult',
+        'ExpandoTextCtrl',
+        'ButtonPanel',
+        'FlatNotebook',
+        'CustomTreeCtrl',
+        'AboutBox',
+        'AnimateCtrl',
+        'AlphaDrawing',
+        'GraphicsContext',
+        'CollapsiblePane',
+        'ComboCtrl',
+        'OwnerDrawnComboBox',
+        'BitmapComboBox',
         ]),
 
     # managed windows == things with a (optional) caption you can close
         ]),
 
     # managed windows == things with a (optional) caption you can close
@@ -72,6 +87,7 @@ _treeList = [
 
     # the common dialogs
     ('Common Dialogs', [
 
     # the common dialogs
     ('Common Dialogs', [
+        'AboutBox',
         'ColourDialog',
         'DirDialog',
         'FileDialog',
         'ColourDialog',
         'DirDialog',
         'FileDialog',
@@ -141,9 +157,12 @@ _treeList = [
 
     ('Custom Controls', [
         'AnalogClock',
 
     ('Custom Controls', [
         'AnalogClock',
+        'ButtonPanel',
         'ColourSelect',
         'ComboTreeBox',
         'ColourSelect',
         'ComboTreeBox',
+        'CustomTreeCtrl',
         'Editor',
         'Editor',
+        'FlatNotebook',
         'GenericButtons',
         'GenericDirCtrl',
         'LEDNumberCtrl',
         'GenericButtons',
         'GenericDirCtrl',
         'LEDNumberCtrl',
@@ -158,20 +177,22 @@ _treeList = [
         'ActiveX_FlashWindow',
         'ActiveX_IEHtmlWindow',
         'ActiveX_PDFWindow',
         'ActiveX_FlashWindow',
         'ActiveX_IEHtmlWindow',
         'ActiveX_PDFWindow',
-        #'RightTextCtrl',     deprecated as we have wxTE_RIGHT now.
+        'BitmapComboBox',
         'Calendar',
         'CalendarCtrl',
         'CheckListCtrlMixin',
         'Calendar',
         'CalendarCtrl',
         'CheckListCtrlMixin',
+        'CollapsiblePane',
+        'ComboCtrl',
         'ContextHelp',
         'DatePickerCtrl',
         'DynamicSashWindow',
         'EditableListBox',
         'ContextHelp',
         'DatePickerCtrl',
         'DynamicSashWindow',
         'EditableListBox',
+        'ExpandoTextCtrl',
         'FancyText',
         'FileBrowseButton',
         'FloatBar',  
         'FloatCanvas',
         'FoldPanelBar',
         'FancyText',
         'FileBrowseButton',
         'FloatBar',  
         'FloatCanvas',
         'FoldPanelBar',
-        'GIFAnimationCtrl',
         'HtmlWindow',
         'HyperLinkCtrl',
         'IntCtrl',
         'HtmlWindow',
         'HyperLinkCtrl',
         'IntCtrl',
@@ -180,6 +201,7 @@ _treeList = [
         'MaskedNumCtrl',
         'MediaCtrl',
         'MultiSplitterWindow',
         'MaskedNumCtrl',
         'MediaCtrl',
         'MultiSplitterWindow',
+        'OwnerDrawnComboBox',
         'Pickers',
         'PyCrust',
         'PyPlot',
         'Pickers',
         'PyCrust',
         'PyPlot',
@@ -212,6 +234,7 @@ _treeList = [
 
     # ditto
     ('Process and Events', [
 
     # ditto
     ('Process and Events', [
+        'DelayedResult',
         'EventManager',
         'KeyEvents',
         'Process',
         'EventManager',
         'KeyEvents',
         'Process',
@@ -230,25 +253,30 @@ _treeList = [
 
     # Images
     ('Using Images', [
 
     # Images
     ('Using Images', [
+        'AlphaDrawing',
+        'AnimateCtrl',
         'ArtProvider',
         'BitmapFromBuffer',
         'Cursor',
         'DragImage',
         'ArtProvider',
         'BitmapFromBuffer',
         'Cursor',
         'DragImage',
-        'GIFAnimationCtrl',
         'Image',
         'ImageAlpha',
         'ImageFromStream',
         'Mask',
         'Image',
         'ImageAlpha',
         'ImageFromStream',
         'Mask',
+        'RawBitmapAccess',
         'Throbber',
         ]),
 
     # Other stuff
     ('Miscellaneous', [
         'Throbber',
         ]),
 
     # Other stuff
     ('Miscellaneous', [
+        'AlphaDrawing',
         'ColourDB',
         ##'DialogUnits',   # needs more explanations
         'ColourDB',
         ##'DialogUnits',   # needs more explanations
+        'DragScroller',
         'DrawXXXList',
         'FileHistory',
         'FontEnumerator',
         'DrawXXXList',
         'FileHistory',
         'FontEnumerator',
+        'GraphicsContext',
         'GLCanvas',
         'Joystick',
         'MimeTypesManager',
         'GLCanvas',
         'Joystick',
         'MimeTypesManager',
@@ -470,6 +498,11 @@ try:
             if wx.Platform == '__WXMSW__':
                 self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 
                                   'fore:#000000,back:#FFFFFF,face:Courier New,size:9')
             if wx.Platform == '__WXMSW__':
                 self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 
                                   'fore:#000000,back:#FFFFFF,face:Courier New,size:9')
+            elif wx.Platform == '__WXMAC__':
+                # TODO: if this looks fine on Linux too, remove the Mac-specific case 
+                # and use this whenever OS != MSW.
+                self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 
+                                  'fore:#000000,back:#FFFFFF,face:Courier')
             else:
                 self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 
                                   'fore:#000000,back:#FFFFFF,face:Courier,size:9')
             else:
                 self.StyleSetSpec(stc.STC_STYLE_DEFAULT, 
                                   'fore:#000000,back:#FFFFFF,face:Courier,size:9')
@@ -1136,8 +1169,11 @@ class wxPythonDemo(wx.Frame):
         icon = images.getWXPdemoIcon()
         self.SetIcon(icon)
 
         icon = images.getWXPdemoIcon()
         self.SetIcon(icon)
 
-        self.tbicon = DemoTaskBarIcon(self)
-
+        try:
+            self.tbicon = DemoTaskBarIcon(self)
+        except:
+            self.tbicon = None
+            
         wx.CallAfter(self.ShowTip)
 
         self.otherWin = None
         wx.CallAfter(self.ShowTip)
 
         self.otherWin = None
@@ -1226,27 +1262,23 @@ class wxPythonDemo(wx.Frame):
 
         # Create a TreeCtrl
         tID = wx.NewId()
 
         # Create a TreeCtrl
         tID = wx.NewId()
+        leftPanel = wx.Panel(splitter)
+        
+        self.filter = wx.TextCtrl(leftPanel)
+        self.filter.Bind(wx.EVT_TEXT, self.RecreateTree)
+        
         self.treeMap = {}
         self.treeMap = {}
-        self.tree = wx.TreeCtrl(splitter, tID, style =
+        self.tree = wx.TreeCtrl(leftPanel, tID, style =
                                 wx.TR_DEFAULT_STYLE #| wx.TR_HAS_VARIABLE_ROW_HEIGHT
                                )
 
                                 wx.TR_DEFAULT_STYLE #| wx.TR_HAS_VARIABLE_ROW_HEIGHT
                                )
 
-        root = self.tree.AddRoot("wxPython Overview")
-        firstChild = None
-        for item in _treeList:
-            child = self.tree.AppendItem(root, item[0])
-            if not firstChild: firstChild = child
-            for childItem in item[1]:
-                theDemo = self.tree.AppendItem(child, childItem)
-                self.treeMap[childItem] = theDemo
-
-        self.tree.Expand(root)
-        self.tree.Expand(firstChild)
+        self.root = self.tree.AddRoot("wxPython Overview")
+        self.RecreateTree()
         self.tree.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, id=tID)
         self.tree.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, id=tID)
         self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=tID)
         self.tree.Bind(wx.EVT_LEFT_DOWN, self.OnTreeLeftDown)
         self.tree.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, id=tID)
         self.tree.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, id=tID)
         self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=tID)
         self.tree.Bind(wx.EVT_LEFT_DOWN, self.OnTreeLeftDown)
-
+        
         # Set up a wx.html.HtmlWindow on the Overview Notebook page
         # we put it in a panel first because there seems to be a
         # refresh bug of some sort (wxGTK) when it is directly in
         # Set up a wx.html.HtmlWindow on the Overview Notebook page
         # we put it in a panel first because there seems to be a
         # refresh bug of some sort (wxGTK) when it is directly in
@@ -1273,6 +1305,8 @@ class wxPythonDemo(wx.Frame):
         # Set up a log window
         self.log = wx.TextCtrl(splitter2, -1,
                               style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
         # Set up a log window
         self.log = wx.TextCtrl(splitter2, -1,
                               style = wx.TE_MULTILINE|wx.TE_READONLY|wx.HSCROLL)
+        if wx.Platform == "__WXMAC__":
+            self.log.MacCheckSpelling(False)
 
         # Set the wxWindows log target to be this textctrl
         #wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
 
         # Set the wxWindows log target to be this textctrl
         #wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
@@ -1290,7 +1324,12 @@ class wxPythonDemo(wx.Frame):
 
         # add the windows to the splitter and split it.
         splitter2.SplitHorizontally(self.nb, self.log, -160)
 
         # add the windows to the splitter and split it.
         splitter2.SplitHorizontally(self.nb, self.log, -160)
-        splitter.SplitVertically(self.tree, splitter2, 200)
+        leftBox = wx.BoxSizer(wx.VERTICAL)
+        leftBox.Add(self.tree, 1, wx.EXPAND)
+        leftBox.Add(wx.StaticText(leftPanel, label = "Filter Demos:"), 0, wx.TOP|wx.LEFT, 5)
+        leftBox.Add(self.filter, 0, wx.EXPAND|wx.ALL, 5)
+        leftPanel.SetSizer(leftBox)
+        splitter.SplitVertically(leftPanel, splitter2, 220)
 
         splitter.SetMinimumPaneSize(120)
         splitter2.SetMinimumPaneSize(60)
 
         splitter.SetMinimumPaneSize(120)
         splitter2.SetMinimumPaneSize(60)
@@ -1306,7 +1345,7 @@ class wxPythonDemo(wx.Frame):
 
         # select initial items
         self.nb.SetSelection(0)
 
         # select initial items
         self.nb.SetSelection(0)
-        self.tree.SelectItem(root)
+        self.tree.SelectItem(self.root)
 
         # Load 'Main' module
         self.LoadDemo(self.overviewText)
 
         # Load 'Main' module
         self.LoadDemo(self.overviewText)
@@ -1324,6 +1363,27 @@ class wxPythonDemo(wx.Frame):
 
 
     #---------------------------------------------
 
 
     #---------------------------------------------
+    
+    def RecreateTree(self, evt=None):
+        self.tree.DeleteAllItems()
+        self.root = self.tree.AddRoot("wxPython Overview")
+        firstChild = None
+        filter = self.filter.GetValue()
+        for category, items in _treeList:
+            if filter:
+                items = [item for item in items if filter.lower() in item.lower()]
+            if items:
+                child = self.tree.AppendItem(self.root, category)
+                if not firstChild: firstChild = child
+                for childItem in items:
+                    theDemo = self.tree.AppendItem(child, childItem)
+                    self.treeMap[childItem] = theDemo
+
+        self.tree.Expand(self.root)
+        if firstChild:
+            self.tree.Expand(firstChild)
+
+    
     def WriteText(self, text):
         if text[-1:] == '\n':
             text = text[:-1]
     def WriteText(self, text):
         if text[-1:] == '\n':
             text = text[:-1]
@@ -1620,7 +1680,8 @@ class wxPythonDemo(wx.Frame):
         self.demoPage = None
         self.codePage = None
         self.mainmenu = None
         self.demoPage = None
         self.codePage = None
         self.mainmenu = None
-        self.tbicon.Destroy()
+        if self.tbicon is not None:
+            self.tbicon.Destroy()
         self.Destroy()
 
 
         self.Destroy()
 
 
@@ -1711,8 +1772,9 @@ class MySplashScreen(wx.SplashScreen):
         if self.fc.IsRunning():
             self.Raise()
         
         if self.fc.IsRunning():
             self.Raise()
         
+import wx.lib.mixins.inspect
 
 
-class MyApp(wx.App):
+class MyApp(wx.App, wx.lib.mixins.inspect.InspectionMixin):
     def OnInit(self):
         """
         Create and show the splash screen.  It will then create and show
     def OnInit(self):
         """
         Create and show the splash screen.  It will then create and show
@@ -1733,6 +1795,9 @@ class MyApp(wx.App):
         splash = MySplashScreen()
         splash.Show()
 
         splash = MySplashScreen()
         splash.Show()
 
+        # Setup the InspectionMixin
+        self.Init()
+        
         return True
 
 
         return True