]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/Main.py
Patch from FN that fixes bug in RefreshItem on an item that has no
[wxWidgets.git] / wxPython / demo / Main.py
index 94d03cb4588b10dfa1a3943dc029aa28fb764187..f86088a1d25cb8f0944a8e7ddfdd0c5303e71a7a 100644 (file)
@@ -36,8 +36,8 @@ import images
 
 # For debugging
 ##wx.Trap();
-##print "wx.VERSION_STRING = ", wx.VERSION_STRING
-##print os.getpid();
+##print "wx.VERSION_STRING = %s (%s)" % (wx.VERSION_STRING, wx.USE_UNICODE and 'unicode' or 'ansi')
+##print "pid:", os.getpid()
 ##raw_input("Press Enter...")
 
 
@@ -47,13 +47,12 @@ import images
 _treeList = [
     # new stuff
     ('Recent Additions/Updates', [
-        'StandardPaths',
-        'MediaCtrl',
-        'DatePickerCtrl',
         ]),
 
     # managed windows == things with a (optional) caption you can close
     ('Frames and Dialogs', [
+        'AUI_DockingWindowMgr',
+        'AUI_MDI',
         'Dialog',
         'Frame',
         'MDIWindows',
@@ -63,12 +62,14 @@ _treeList = [
 
     # the common dialogs
     ('Common Dialogs', [
+        'AboutBox',
         'ColourDialog',
         'DirDialog',
         'FileDialog',
         'FindReplaceDialog',
         'FontDialog',
         'MessageDialog',
+        'MultiChoiceDialog',
         'PageSetupDialog',
         'PrintDialog',
         'ProgressDialog',
@@ -79,7 +80,6 @@ _treeList = [
     # dialogs from libraries
     ('More Dialogs', [
         'ImageBrowser',
-        'MultipleChoiceDialog',
         'ScrolledMessageDialog',
         ]),
 
@@ -90,7 +90,6 @@ _treeList = [
         'CheckBox',
         'CheckListBox',
         'Choice',
-        'Choicebook',
         'ComboBox',
         'Gauge',
         'Grid',
@@ -99,15 +98,14 @@ _treeList = [
         'ListCtrl',
         'ListCtrl_virtual',
         'ListCtrl_edit',
-        'Listbook',
         'Menu',
-        'Notebook',
         'PopupMenu',
         'PopupWindow',
         'RadioBox',
         'RadioButton',
         'SashWindow',
         'ScrolledWindow',
+        'SearchCtrl',        
         'Slider',
         'SpinButton',
         'SpinCtrl',
@@ -123,11 +121,24 @@ _treeList = [
         'TreeCtrl',
         'Validator',
         ]),
+    
+    ('"Book" Controls', [
+        'AUI_Notebook',
+        'Choicebook',
+        'Listbook',
+        'Notebook',
+        'Toolbook',
+        'Treebook',
+        ]),
 
     ('Custom Controls', [
-        'AnalogClockWindow',
+        'AnalogClock',
+        'ButtonPanel',
         'ColourSelect',
+        'ComboTreeBox',
+        'CustomTreeCtrl',
         'Editor',
+        'FlatNotebook',
         'GenericButtons',
         'GenericDirCtrl',
         'LEDNumberCtrl',
@@ -142,27 +153,36 @@ _treeList = [
         'ActiveX_FlashWindow',
         'ActiveX_IEHtmlWindow',
         'ActiveX_PDFWindow',
-        #'RightTextCtrl',     deprecated as we have wxTE_RIGHT now.
+        'BitmapComboBox',
         'Calendar',
         'CalendarCtrl',
+        'CheckListCtrlMixin',
+        'CollapsiblePane',
+        'ComboCtrl',
         'ContextHelp',
         'DatePickerCtrl',
         'DynamicSashWindow',
         'EditableListBox',
+        'ExpandoTextCtrl',
         'FancyText',
         'FileBrowseButton',
         'FloatBar',  
         'FloatCanvas',
+        'FoldPanelBar',
         'HtmlWindow',
+        'HyperLinkCtrl',
         'IntCtrl',
-        'MediaCtrl',
         'MVCTree',   
         'MaskedEditControls',
         'MaskedNumCtrl',
-        'MimeTypesManager',
+        'MediaCtrl',
+        'MultiSplitterWindow',
+        'OwnerDrawnComboBox',
+        'Pickers',
         'PyCrust',
         'PyPlot',
         'PyShell',
+        'RichTextCtrl',
         'ScrolledPanel',
         'SplitTree',
         'StyledTextCtrl_1',
@@ -171,6 +191,7 @@ _treeList = [
         'Throbber',
         'Ticker',
         'TimeCtrl',
+        'TreeMixin',
         'VListBox',
         ]),
 
@@ -182,6 +203,7 @@ _treeList = [
         'Layoutf',
         'RowColSizer',
         'ScrolledPanel',
+        'SizedControls',
         'Sizers',
         'XmlResource',
         'XmlResourceHandler',
@@ -190,6 +212,7 @@ _treeList = [
 
     # ditto
     ('Process and Events', [
+        'DelayedResult',
         'EventManager',
         'KeyEvents',
         'Process',
@@ -208,37 +231,45 @@ _treeList = [
 
     # Images
     ('Using Images', [
+        'AlphaDrawing',
+        'AnimateCtrl',
         'ArtProvider',
+        'BitmapFromBuffer',
         'Cursor',
         'DragImage',
         'Image',
         'ImageAlpha',
         'ImageFromStream',
+        'Img2PyArtProvider',
         'Mask',
+        'RawBitmapAccess',
         'Throbber',
         ]),
 
     # Other stuff
     ('Miscellaneous', [
+        'AlphaDrawing',
         'ColourDB',
         ##'DialogUnits',   # needs more explanations
+        'DragScroller',
         'DrawXXXList',
         'FileHistory',
         'FontEnumerator',
+        'GraphicsContext',
+        'GLCanvas',
+        'I18N',        
         'Joystick',
+        'MimeTypesManager',
+        'MouseGestures',
         'OGL',
         'PrintFramework',
+        'PseudoDC',
         'ShapedWindow',
         'Sound',
         'StandardPaths',
         'Unicode',
         ]),
 
-    # need libs not coming with the demo
-    ('Samples using an external library', [
-        'GLCanvas',
-        ]),
-
 
     ('Check out the samples dir too', [
         ]),
@@ -447,9 +478,14 @@ try:
             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:12')
+                                  'fore:#000000,back:#FFFFFF,face:Courier,size:9')
     
             # Clear styles and revert to default.
             self.StyleClearAll()
@@ -795,7 +831,8 @@ class DemoModules:
     def LoadDict(self, modID):
         if self.name != __name__:
             source = self.modules[modID][1]
-            description = self.modules[modID][3]
+            #description = self.modules[modID][3]
+            description = self.modules[modID][2]
 
             try:
                 self.modules[modID][0] = {}
@@ -931,7 +968,7 @@ class DemoErrorPanel(wx.Panel):
         self.box = wx.BoxSizer(wx.VERTICAL)
 
         # Main Label
-        self.box.Add(wx.StaticText(self, -1, "An error has occured while trying to run the demo")
+        self.box.Add(wx.StaticText(self, -1, "An error has occurred while trying to run the demo")
                      , 0, wx.ALIGN_CENTER | wx.TOP, 10)
 
         # Exception Information
@@ -940,7 +977,7 @@ class DemoErrorPanel(wx.Panel):
         boxInfoGrid  = wx.FlexGridSizer(0, 2, 0, 0)
         textFlags    = wx.ALIGN_RIGHT | wx.LEFT | wx.RIGHT | wx.TOP
         boxInfoGrid.Add(wx.StaticText(self, -1, "Type: "), 0, textFlags, 5 )
-        boxInfoGrid.Add(wx.StaticText(self, -1, demoError.exception_type) , 0, textFlags, 5 )
+        boxInfoGrid.Add(wx.StaticText(self, -1, str(demoError.exception_type)) , 0, textFlags, 5 )
         boxInfoGrid.Add(wx.StaticText(self, -1, "Details: ") , 0, textFlags, 5 )
         boxInfoGrid.Add(wx.StaticText(self, -1, demoError.exception_details) , 0, textFlags, 5 )
         boxInfoSizer.Add(boxInfoGrid, 0, wx.ALIGN_CENTRE | wx.ALL, 5 )
@@ -1074,8 +1111,7 @@ class DemoTaskBarIcon(wx.TaskBarIcon):
 
 
     def OnTaskBarChange(self, evt):
-        names = [ "WXPdemo", "WXP", "Mondrian", "Test2m",
-                  "Blom08m", "Blom10m", "Blom15m" ]
+        names = [ "WXPdemo", "Mondrian", "Pencil", "Carrot" ]                  
         name = names[self.imgidx]
         
         getFunc = getattr(images, "get%sImage" % name)
@@ -1108,12 +1144,16 @@ class wxPythonDemo(wx.Frame):
         self.codePage = None
         self.shell = None
         self.firstTime = True
+        self.finddlg = None
 
         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
@@ -1146,14 +1186,14 @@ class wxPythonDemo(wx.Frame):
                            wx.ITEM_CHECK)
         self.Bind(wx.EVT_MENU, self.OnToggleRedirect, item)
  
-        item = menu.Append(-1, 'E&xit\tAlt-X', 'Get the heck outta here!')
-        self.Bind(wx.EVT_MENU, self.OnFileExit, item)
-        wx.App.SetMacExitMenuItemId(item.GetId())
+        exitItem = menu.Append(-1, 'E&xit\tCtrl-Q', 'Get the heck outta here!')
+        self.Bind(wx.EVT_MENU, self.OnFileExit, exitItem)
+        wx.App.SetMacExitMenuItemId(exitItem.GetId())
         self.mainmenu.Append(menu, '&File')
 
         # Make a Demo menu
         menu = wx.Menu()
-        for item in _treeList:
+        for item in _treeList[:-1]:
             submenu = wx.Menu()
             for childItem in item[1]:
                 mi = submenu.Append(-1, childItem)
@@ -1161,22 +1201,6 @@ class wxPythonDemo(wx.Frame):
             menu.AppendMenu(wx.NewId(), item[0], submenu)
         self.mainmenu.Append(menu, '&Demo')
 
-        # Make a Demo Code menu
-        #TODO: Add new menu items
-        #       Like the option-enabled entries to select the
-        #       active module
-        #TODO: should we bother?
-
-        #menu = wx.Menu()
-        #saveID = wx.NewId()
-        #restoreID = wx.NewId()
-       # 
-        #menu.Append(saveID, '&Save\tCtrl-S', 'Save edited demo')
-        #menu.Append(restoreID, '&Delete Modified\tCtrl-R', 'Delete modified copy')
-        #self.Bind(wx.EVT_MENU, self.codePage.OnSave, id=saveID)
-        #self.Bind(wx.EVT_MENU, self.codePage.OnRestore, id=restoreID)
-        #self.mainmenu.Append(menu, 'Demo &Code')
-       # 
 
         # Make a Help menu
         menu = wx.Menu()
@@ -1186,56 +1210,62 @@ class wxPythonDemo(wx.Frame):
 
         shellItem = menu.Append(-1, 'Open Py&Shell Window\tF5',
                                 'An interactive interpreter window with the demo app and frame objects in the namesapce')
+        inspToolItem = menu.Append(-1, 'Open &Widget Inspector\tF6',
+                                'A tool that lets you browse the live widgets and sizers in an application')
         menu.AppendSeparator()
-        helpItem = menu.Append(-1, '&About\tCtrl-H', 'wxPython RULES!!!')
+        helpItem = menu.Append(-1, '&About wxPython Demo', 'wxPython RULES!!!')
         wx.App.SetMacAboutMenuItemId(helpItem.GetId())
 
         self.Bind(wx.EVT_MENU, self.OnOpenShellWindow, shellItem)
+        self.Bind(wx.EVT_MENU, self.OnOpenWidgetInspector, inspToolItem)
         self.Bind(wx.EVT_MENU, self.OnHelpAbout, helpItem)
         self.Bind(wx.EVT_MENU, self.OnHelpFind,  findItem)
         self.Bind(wx.EVT_MENU, self.OnFindNext,  findnextItem)
-        self.Bind(wx.EVT_COMMAND_FIND, self.OnFind)
-        self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind)
-        self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose)
+        self.Bind(wx.EVT_FIND, self.OnFind)
+        self.Bind(wx.EVT_FIND_NEXT, self.OnFind)
+        self.Bind(wx.EVT_FIND_CLOSE, self.OnFindClose)
+        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateFindItems, findItem)
+        self.Bind(wx.EVT_UPDATE_UI, self.OnUpdateFindItems, findnextItem)
         self.mainmenu.Append(menu, '&Help')
         self.SetMenuBar(self.mainmenu)
 
         self.finddata = wx.FindReplaceData()
+        self.finddata.SetFlags(wx.FR_DOWN)
 
-        if 0:
+        if False:
             # This is another way to set Accelerators, in addition to
             # using the '\t<key>' syntax in the menu items.
-            aTable = wx.AcceleratorTable([(wx.ACCEL_ALT,  ord('X'), exitID),
-                                          (wx.ACCEL_CTRL, ord('H'), helpID),
-                                          (wx.ACCEL_CTRL, ord('F'), findID),
-                                          (wx.ACCEL_NORMAL, WXK_F3, findnextID)
+            aTable = wx.AcceleratorTable([(wx.ACCEL_ALT,  ord('X'), exitItem.GetId()),
+                                          (wx.ACCEL_CTRL, ord('H'), helpItem.GetId()),
+                                          (wx.ACCEL_CTRL, ord('F'), findItem.GetId()),
+                                          (wx.ACCEL_NORMAL, wx.WXK_F3, findnextItem.GetId()),
+                                          (wx.ACCEL_NORMAL, wx.WXK_F9, shellItem.GetId()),
                                           ])
             self.SetAcceleratorTable(aTable)
 
 
         # Create a TreeCtrl
         tID = wx.NewId()
+        leftPanel = wx.Panel(splitter)
+        
+        self.filter = wx.SearchCtrl(leftPanel)
+        self.filter.ShowCancelButton(True)
+        self.filter.Bind(wx.EVT_TEXT, self.RecreateTree)
+        self.filter.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN,
+                         lambda e: self.filter.SetValue(''))
+        
         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
                                )
 
-        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)
-
+        
         # 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
@@ -1262,6 +1292,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)
+        if wx.Platform == "__WXMAC__":
+            self.log.MacCheckSpelling(False)
 
         # Set the wxWindows log target to be this textctrl
         #wx.Log_SetActiveTarget(wx.LogTextCtrl(self.log))
@@ -1279,7 +1311,12 @@ class wxPythonDemo(wx.Frame):
 
         # 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)
@@ -1295,7 +1332,7 @@ class wxPythonDemo(wx.Frame):
 
         # select initial items
         self.nb.SetSelection(0)
-        self.tree.SelectItem(root)
+        self.tree.SelectItem(self.root)
 
         # Load 'Main' module
         self.LoadDemo(self.overviewText)
@@ -1313,6 +1350,30 @@ class wxPythonDemo(wx.Frame):
 
 
     #---------------------------------------------
+    
+    def RecreateTree(self, evt=None):
+        self.tree.Freeze()
+        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)
+        if filter:
+            self.tree.ExpandAll()
+        self.tree.Thaw()
+    
     def WriteText(self, text):
         if text[-1:] == '\n':
             text = text[:-1]
@@ -1396,7 +1457,7 @@ class wxPythonDemo(wx.Frame):
         
         # o The RunTest() for all samples must now return a window that can
         #   be palced in a tab in the main notebook.
-        # o If an error occurs (or has occured before) an error tab is created.
+        # o If an error occurs (or has occurred before) an error tab is created.
         
         if module is not None:
             wx.LogMessage("Running demo module...")
@@ -1513,25 +1574,40 @@ class wxPythonDemo(wx.Frame):
         about.Destroy()
 
     def OnHelpFind(self, event):
+        if self.finddlg != None:
+            return
+        
         self.nb.SetSelection(1)
         self.finddlg = wx.FindReplaceDialog(self, self.finddata, "Find",
-                        wx.FR_NOUPDOWN |
-                        wx.FR_NOMATCHCASE |
-                        wx.FR_NOWHOLEWORD)
+                        wx.FR_NOMATCHCASE | wx.FR_NOWHOLEWORD)
         self.finddlg.Show(True)
 
+
+    def OnUpdateFindItems(self, evt):
+        evt.Enable(self.finddlg == None)
+
+
     def OnFind(self, event):
         editor = self.codePage.editor
         self.nb.SetSelection(1)
         end = editor.GetLastPosition()
         textstring = editor.GetRange(0, end).lower()
-        start = editor.GetSelection()[1]
         findstring = self.finddata.GetFindString().lower()
-        loc = textstring.find(findstring, start)
+        backward = not (self.finddata.GetFlags() & wx.FR_DOWN)
+        if backward:
+            start = editor.GetSelection()[0]
+            loc = textstring.rfind(findstring, 0, start)
+        else:
+            start = editor.GetSelection()[1]
+            loc = textstring.find(findstring, start)
         if loc == -1 and start != 0:
             # string not found, start at beginning
-            start = 0
-            loc = textstring.find(findstring, start)
+            if backward:
+                start = end
+                loc = textstring.rfind(findstring, 0, start)
+            else:
+                start = 0
+                loc = textstring.find(findstring, start)
         if loc == -1:
             dlg = wx.MessageDialog(self, 'Find String Not Found',
                           'Find String Not Found in Demo File',
@@ -1544,6 +1620,7 @@ class wxPythonDemo(wx.Frame):
                 return
             else:
                 self.finddlg.Destroy()
+                self.finddlg = None
         editor.ShowPosition(loc)
         editor.SetSelection(loc, loc + len(findstring))
 
@@ -1557,6 +1634,7 @@ class wxPythonDemo(wx.Frame):
 
     def OnFindClose(self, event):
         event.GetDialog().Destroy()
+        self.finddlg = None
 
 
     def OnOpenShellWindow(self, evt):
@@ -1585,6 +1663,20 @@ class wxPythonDemo(wx.Frame):
                 evt.Skip()
             self.Bind(wx.EVT_CLOSE, CloseShell)
 
+
+    def OnOpenWidgetInspector(self, evt):
+        # Activate the widget inspection tool
+        from wx.lib.inspection import InspectionTool
+        if not InspectionTool().initialized:
+            InspectionTool().Init()
+
+        # Find a widget to be selected in the tree.  Use either the
+        # one under the cursor, if any, or this frame.
+        wnd = wx.FindWindowAtPointer()
+        if not wnd:
+            wnd = self
+        InspectionTool().Show(wnd, True)
+
         
     #---------------------------------------------
     def OnCloseWindow(self, event):
@@ -1592,7 +1684,8 @@ class wxPythonDemo(wx.Frame):
         self.demoPage = None
         self.codePage = None
         self.mainmenu = None
-        self.tbicon.Destroy()
+        if self.tbicon is not None:
+            self.tbicon.Destroy()
         self.Destroy()
 
 
@@ -1656,19 +1749,34 @@ class wxPythonDemo(wx.Frame):
 
 class MySplashScreen(wx.SplashScreen):
     def __init__(self):
-        bmp = wx.Image(opj("bitmaps/splash.gif")).ConvertToBitmap()
+        bmp = wx.Image(opj("bitmaps/splash.png")).ConvertToBitmap()
         wx.SplashScreen.__init__(self, bmp,
                                  wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
-                                 3000, None, -1)
+                                 5000, None, -1)
         self.Bind(wx.EVT_CLOSE, self.OnClose)
+        self.fc = wx.FutureCall(2000, self.ShowMain)
+
 
     def OnClose(self, evt):
+        # Make sure the default handler runs too so this window gets
+        # destroyed
+        evt.Skip()
         self.Hide()
+        
+        # if the timer is still running then go ahead and show the
+        # main frame now
+        if self.fc.IsRunning():
+            self.fc.Stop()
+            self.ShowMain()
+
+
+    def ShowMain(self):
         frame = wxPythonDemo(None, "wxPython: (A Demonstration)")
         frame.Show()
-        evt.Skip()  # Make sure the default handler runs too...
-
+        if self.fc.IsRunning():
+            self.Raise()
 
+        
 class MyApp(wx.App):
     def OnInit(self):
         """
@@ -1676,6 +1784,8 @@ class MyApp(wx.App):
         the main frame when it is time to do so.
         """
 
+        wx.SystemOptions.SetOptionInt("mac.window-plain-transition", 1)
+
         # For debugging
         #self.SetAssertMode(wx.PYAPP_ASSERT_DIALOG)
 
@@ -1684,7 +1794,7 @@ class MyApp(wx.App):
         # initialization, finally creating and showing the main
         # application window(s).  In this case we have nothing else to
         # do so we'll delay showing the main frame until later (see
-        # OnClose above) so the users can see the SplashScreen effect.        
+        # ShowMain above) so the users can see the SplashScreen effect.        
         splash = MySplashScreen()
         splash.Show()