]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/Main.py
Added stub for wxIcon(const char **xpm)
[wxWidgets.git] / wxPython / demo / Main.py
index b53d83aacec79e8facfbbe80e6e42859499b80da..40f9425b844e052327d8f02774e3328187f68b76 100644 (file)
 # Licence:      wxWindows license
 #----------------------------------------------------------------------------
 
 # Licence:      wxWindows license
 #----------------------------------------------------------------------------
 
-import sys, os, time, string
+import sys, os, time
 from   wxPython.wx import *
 from   wxPython.html import wxHtmlWindow
 
 from   wxPython.wx import *
 from   wxPython.html import wxHtmlWindow
 
+##from wxPython.stc import *
+
 import images
 
 import images
 
+
 #---------------------------------------------------------------------------
 
 
 _treeList = [
 #---------------------------------------------------------------------------
 
 
 _treeList = [
-    ('New since last release', ['wxGenericDirCtrl',
-                                'wxImageFromStream',
-                                'RowColSizer',
-                                'Unicode',
-                                ]),
-
-    ('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame',
-                 'wxGrid', 'wxSashWindow',
-                 'wxScrolledWindow', 'wxSplitterWindow',
-                 'wxStatusBar', 'wxNotebook',
-                 'wxHtmlWindow',
-                 'wxStyledTextCtrl_1', 'wxStyledTextCtrl_2',
-                 'wxPopupWindow',
-                 'wxDynamicSashWindow',
-                 ]),
-
-    ('Common Dialogs', ['wxColourDialog', 'wxDirDialog', 'wxFileDialog',
-                        'wxSingleChoiceDialog', 'wxTextEntryDialog',
-                        'wxFontDialog', 'wxPageSetupDialog', 'wxPrintDialog',
-                        'wxMessageDialog', 'wxProgressDialog', 'wxFindReplaceDialog',
-                        ]),
-
-    ('Controls', ['wxButton', 'wxCheckBox', 'wxCheckListBox', 'wxChoice',
-                  'wxComboBox', 'wxGauge', 'wxListBox', 'wxListCtrl', 'VirtualListCtrl',
-                  'wxTextCtrl',
-                  'wxTreeCtrl', 'wxSpinButton', 'wxSpinCtrl', 'wxStaticText',
-                  'wxStaticBitmap', 'wxRadioBox', 'wxSlider', 'wxToolBar',
-                  'wxCalendarCtrl', 'wxToggleButton',
-                  'wxEditableListBox', 'wxLEDNumberCtrl',
-                  ]),
-
-    ('Window Layout', ['wxLayoutConstraints', 'LayoutAnchors', 'Sizers', 'XML_Resource',
-                       'RowColSizer',
-                       ]),
-
-    ('Miscellaneous', [ 'DragAndDrop', 'CustomDragAndDrop', 'URLDragAndDrop',
-                        'FontEnumerator',
-                        'wxTimer', 'wxValidator', 'wxGLCanvas', 'DialogUnits',
-                        'wxImage', 'wxMask', 'PrintFramework', 'wxOGL',
-                        'PythonEvents', 'Threads',
-                        'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE',
-                        'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave",
-                        'wxJoystick', 'DrawXXXList', 'ErrorDialogs', 'wxMimeTypesManager',
-                        'ContextHelp', 'SplitTree', 'Unicode',
-                        ]),
-
-    ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog',
-                          'wxMultipleChoiceDialog', 'wxPlotCanvas', 'wxFloatBar',
-                          'wxCalendar', 'wxMVCTree', 'wxVTKRenderWindow',
-                          'FileBrowseButton', 'GenericButtons', 'wxEditor',
-                          'ColourSelect', 'ImageBrowser',
-                          'infoframe', 'ColourDB', 'PyCrust', 'PyCrustWithFilling',
-                          'TablePrint',
-                          'wxRightTextCtrl',
-                          ]),
-
-    ('Cool Contribs', ['pyTree', 'hangman',
-                       #'SlashDot',
-                       'XMLtreeview'
-                       ]),
-
-    ]
+    # new stuff
+    ('Recent Additions', [
+        'wxIntCtrl',
+        'wxPyColourChooser',
+        'wxScrolledPanel',
+        ]),
+
+    # managed windows == things with a (optional) caption you can close
+    ('Base Frames and Dialogs', [
+        'wxDialog',
+        'wxFrame',
+        'wxMDIWindows',
+        'wxMiniFrame',
+        'wxWizard',
+        ]),
+
+    # the common dialogs
+    ('Common Dialogs', [
+        'wxColourDialog',
+        'wxDirDialog',
+        'wxFileDialog',
+        'wxFindReplaceDialog',
+        'wxFontDialog',
+        'wxMessageDialog',
+        'wxPageSetupDialog',
+        'wxPrintDialog',
+        'wxProgressDialog',
+        'wxSingleChoiceDialog',
+        'wxTextEntryDialog',
+        ]),
+
+    # dialogs from libraries
+    ('More Dialogs', [
+        'ErrorDialogs',
+        'ImageBrowser',
+        'wxMultipleChoiceDialog',
+        'wxScrolledMessageDialog',
+        ]),
+
+    # core controls
+    ('Core Windows/Controls', [
+        'wxButton',
+        'wxCheckBox',
+        'wxCheckListBox',
+        'wxChoice',
+        'wxComboBox',
+        'wxGauge',
+        'wxGenericDirCtrl',
+        'wxGrid',
+        'wxListBox',
+        'wxListCtrl',
+        'wxListCtrl_virtual',
+        'wxMenu',
+        'wxNotebook',
+        'wxPopupWindow',
+        'wxRadioBox',
+        'wxRadioButton',
+        'wxSashWindow',
+        'wxScrolledWindow',
+        'wxSlider',
+        'wxSpinButton',
+        'wxSpinCtrl',
+        'wxSplitterWindow',
+        'wxStaticBitmap',
+        'wxStaticText',
+        'wxStatusBar',
+        'wxTextCtrl',
+        'wxToggleButton',
+        'wxToolBar',
+        'wxTreeCtrl',
+        'wxValidator',
+        ]),
+
+    # controls coming from other librairies
+    ('More Windows/Controls', [
+        #'wxFloatBar',          deprecated
+        #'wxMVCTree',           deprecated
+        #'wxRightTextCtrl',    deprecated as we have wxTE_RIGHT now.
+        'ColourSelect',
+        'ContextHelp',
+        'FancyText',
+        'FileBrowseButton',
+        'GenericButtons',
+        'PyCrust',
+        'PyCrustWithFilling',
+        'SplitTree',
+        'TablePrint',
+        'Throbber',
+        'wxCalendar',
+        'wxCalendarCtrl',
+        'wxPyColourChooser',
+        'wxDynamicSashWindow',
+        'wxEditableListBox',
+        'wxEditor',
+        'wxHtmlWindow',
+        'wxIEHtmlWin',
+        'wxIntCtrl',
+        'wxLEDNumberCtrl',
+        'wxMimeTypesManager',
+        'wxMultiSash',
+        'wxPopupControl',
+        'wxStyledTextCtrl_1',
+        'wxStyledTextCtrl_2',
+        'wxTimeCtrl',
+        ]),
+
+    # How to lay out the controls in a frame/dialog
+    ('Window Layout', [
+        'LayoutAnchors',
+        'Layoutf',
+        'RowColSizer',
+        'Sizers',
+        'wxLayoutConstraints',
+        'wxScrolledPanel',
+        'wxXmlResource',
+        'wxXmlResourceHandler',
+        ]),
+
+    # ditto
+    ('Process and Events', [
+        'EventManager',
+        'infoframe',
+        'OOR',
+        'PythonEvents',
+        'Threads',
+        'wxKeyEvents',
+        'wxProcess',
+        'wxTimer',
+        ]),
+
+    # Clipboard and DnD
+    ('Clipboard and DnD', [
+        'CustomDragAndDrop',
+        'DragAndDrop',
+        'URLDragAndDrop',
+        ]),
+
+    # Images
+    ('Using Images', [
+        'Throbber',
+        'wxArtProvider',
+        'wxDragImage',
+        'wxImage',
+        'wxImageFromStream',
+        'wxMask',
+        ]),
+
+    # Other stuff
+    ('Miscellaneous', [
+        'ColourDB',
+        'DialogUnits',
+        'DrawXXXList',
+        'FontEnumerator',
+        'PrintFramework',
+        'Throbber',
+        'Unicode',
+        'wxFileHistory',
+        'wxJoystick',
+        'wxOGL',
+        'wxWave',
+        ]),
+
+    # need libs not coming with the demo
+    ('Objects using an external library', [
+        'ActiveXWrapper_Acrobat',
+        'ActiveXWrapper_IE',
+        'wxGLCanvas',
+        'wxPlotCanvas',
+        ]),
+
+
+    ('Check out the samples dir too', [
+        ]),
+
+]
+
+
 
 #---------------------------------------------------------------------------
 
 
 #---------------------------------------------------------------------------
 
@@ -96,14 +214,19 @@ class MyLog(wxPyLog):
         if self.logTime:
             message = time.strftime("%X", time.localtime(timeStamp)) + \
                       ": " + message
         if self.logTime:
             message = time.strftime("%X", time.localtime(timeStamp)) + \
                       ": " + message
-        self.tc.AppendText(message + '\n')
+        if self.tc:
+            self.tc.AppendText(message + '\n')
+
 
 
+class MyTP(wxPyTipProvider):
+    def GetTip(self):
+        return "This is my tip"
 
 #---------------------------------------------------------------------------
 
 def opj(path):
     """Convert paths to the platform-specific separator"""
 
 #---------------------------------------------------------------------------
 
 def opj(path):
     """Convert paths to the platform-specific separator"""
-    return apply(os.path.join, tuple(string.split(path, '/')))
+    return apply(os.path.join, tuple(path.split('/')))
 
 
 #---------------------------------------------------------------------------
 
 
 #---------------------------------------------------------------------------
@@ -117,6 +240,7 @@ class wxPythonDemo(wxFrame):
 
         self.cwd = os.getcwd()
         self.curOverview = ""
 
         self.cwd = os.getcwd()
         self.curOverview = ""
+        self.window = None
 
         icon = images.getMondrianIcon()
         self.SetIcon(icon)
 
         icon = images.getMondrianIcon()
         self.SetIcon(icon)
@@ -130,9 +254,9 @@ class wxPythonDemo(wxFrame):
             EVT_MENU(self.tbicon, self.TBMENU_RESTORE, self.OnTaskBarActivate)
             EVT_MENU(self.tbicon, self.TBMENU_CLOSE, self.OnTaskBarClose)
 
             EVT_MENU(self.tbicon, self.TBMENU_RESTORE, self.OnTaskBarActivate)
             EVT_MENU(self.tbicon, self.TBMENU_CLOSE, self.OnTaskBarClose)
 
+        wxCallAfter(self.ShowTip)
 
         self.otherWin = None
 
         self.otherWin = None
-        self.showTip = true
         EVT_IDLE(self, self.OnIdle)
         EVT_CLOSE(self, self.OnCloseWindow)
         EVT_ICONIZE(self, self.OnIconfiy)
         EVT_IDLE(self, self.OnIdle)
         EVT_CLOSE(self, self.OnCloseWindow)
         EVT_ICONIZE(self, self.OnIconfiy)
@@ -148,8 +272,8 @@ class wxPythonDemo(wxFrame):
         EVT_ERASE_BACKGROUND(splitter, EmptyHandler)
         EVT_ERASE_BACKGROUND(splitter2, EmptyHandler)
 
         EVT_ERASE_BACKGROUND(splitter, EmptyHandler)
         EVT_ERASE_BACKGROUND(splitter2, EmptyHandler)
 
-        # Prevent TreeCtrl from displaying all items after destruction when true
-        self.dying = false
+        # Prevent TreeCtrl from displaying all items after destruction when True
+        self.dying = False
 
         # Make a File menu
         self.mainmenu = wxMenuBar()
 
         # Make a File menu
         self.mainmenu = wxMenuBar()
@@ -157,6 +281,7 @@ class wxPythonDemo(wxFrame):
         exitID = wxNewId()
         menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!')
         EVT_MENU(self, exitID, self.OnFileExit)
         exitID = wxNewId()
         menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!')
         EVT_MENU(self, exitID, self.OnFileExit)
+        wxApp_SetMacExitMenuItemId(exitID)
         self.mainmenu.Append(menu, '&File')
 
         # Make a Demo menu
         self.mainmenu.Append(menu, '&File')
 
         # Make a Demo menu
@@ -173,16 +298,33 @@ class wxPythonDemo(wxFrame):
 
         # Make a Help menu
         helpID = wxNewId()
 
         # Make a Help menu
         helpID = wxNewId()
+        findID = wxNewId()
+        findnextID = wxNewId()
         menu = wxMenu()
         menu = wxMenu()
+        menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code')
+        menu.Append(findnextID, 'Find &Next\tF3', 'Find Next')
+        menu.AppendSeparator()
         menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!')
         menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!')
+        wxApp_SetMacAboutMenuItemId(helpID)
         EVT_MENU(self, helpID, self.OnHelpAbout)
         EVT_MENU(self, helpID, self.OnHelpAbout)
+        EVT_MENU(self, findID, self.OnHelpFind)
+        EVT_MENU(self, findnextID, self.OnFindNext)
+        EVT_COMMAND_FIND(self, -1, self.OnFind)
+        EVT_COMMAND_FIND_NEXT(self, -1, self.OnFind)
+        EVT_COMMAND_FIND_CLOSE(self, -1 , self.OnFindClose)
         self.mainmenu.Append(menu, '&Help')
         self.SetMenuBar(self.mainmenu)
 
         self.mainmenu.Append(menu, '&Help')
         self.SetMenuBar(self.mainmenu)
 
-        # set the menu accellerator table...
-        aTable = wxAcceleratorTable([(wxACCEL_ALT,  ord('X'), exitID),
-                                     (wxACCEL_CTRL, ord('H'), helpID)])
-        self.SetAcceleratorTable(aTable)
+        self.finddata = wxFindReplaceData()
+
+        if 0:
+            # This is another way to set Accelerators, in addition to
+            # using the '\t<key>' syntax in the menu items.
+            aTable = wxAcceleratorTable([(wxACCEL_ALT,  ord('X'), exitID),
+                                         (wxACCEL_CTRL, ord('H'), helpID),
+                                         (wxACCEL_CTRL, ord('F'), findID),
+                                         (wxACCEL_NORMAL, WXK_F3, findnextID)])
+            self.SetAcceleratorTable(aTable)
 
 
         # Create a TreeCtrl
 
 
         # Create a TreeCtrl
@@ -190,8 +332,8 @@ class wxPythonDemo(wxFrame):
         self.treeMap = {}
         self.tree = wxTreeCtrl(splitter, tID,
                                style=wxTR_HAS_BUTTONS |
         self.treeMap = {}
         self.tree = wxTreeCtrl(splitter, tID,
                                style=wxTR_HAS_BUTTONS |
-                               wxTR_EDIT_LABELS |
-                               wxTR_HAS_VARIABLE_ROW_HEIGHT)
+                               wxTR_HAS_VARIABLE_ROW_HEIGHT
+                               )
 
         #self.tree.SetBackgroundColour(wxNamedColour("Pink"))
         root = self.tree.AddRoot("wxPython Overview")
 
         #self.tree.SetBackgroundColour(wxNamedColour("Pink"))
         root = self.tree.AddRoot("wxPython Overview")
@@ -238,7 +380,8 @@ class wxPythonDemo(wxFrame):
 
         # Set up a TextCtrl on the Demo Code Notebook page
         self.txt = wxTextCtrl(self.nb, -1,
 
         # Set up a TextCtrl on the Demo Code Notebook page
         self.txt = wxTextCtrl(self.nb, -1,
-                              style = wxTE_MULTILINE|wxTE_READONLY|wxHSCROLL)
+                              style = wxTE_MULTILINE|wxTE_READONLY|
+                              wxHSCROLL|wxTE_RICH2|wxTE_NOHIDESEL)
         self.nb.AddPage(self.txt, "Demo Code")
 
 
         self.nb.AddPage(self.txt, "Demo Code")
 
 
@@ -252,17 +395,18 @@ class wxPythonDemo(wxFrame):
         # But instead of the above we want to show how to use our own wxLog class
         wxLog_SetActiveTarget(MyLog(self.log))
 
         # But instead of the above we want to show how to use our own wxLog class
         wxLog_SetActiveTarget(MyLog(self.log))
 
+        # for serious debugging
+        #wxLog_SetActiveTarget(wxLogStderr())
+        #wxLog_SetTraceMask(wxTraceMessages)
 
 
+        self.Show(True)
 
 
-        self.Show(true)
 
         # add the windows to the splitter and split it.
 
         # add the windows to the splitter and split it.
-        splitter2.SplitHorizontally(self.nb, self.log)
-        splitter.SplitVertically(self.tree, splitter2)
+        splitter2.SplitHorizontally(self.nb, self.log, 450)
+        splitter.SplitVertically(self.tree, splitter2, 180)
 
 
-        splitter.SetSashPosition(180, true)
         splitter.SetMinimumPaneSize(20)
         splitter.SetMinimumPaneSize(20)
-        splitter2.SetSashPosition(450, true)
         splitter2.SetMinimumPaneSize(20)
 
 
         splitter2.SetMinimumPaneSize(20)
 
 
@@ -311,7 +455,7 @@ class wxPythonDemo(wxFrame):
         pt = event.GetPosition();
         item, flags = self.tree.HitTest(pt)
         if item == self.tree.GetSelection():
         pt = event.GetPosition();
         item, flags = self.tree.HitTest(pt)
         if item == self.tree.GetSelection():
-            self.SetOverview(self.tree.GetItemText(item), self.curOverview)
+            self.SetOverview(self.tree.GetItemText(item)+" Overview", self.curOverview)
         event.Skip()
 
     #---------------------------------------------
         event.Skip()
 
     #---------------------------------------------
@@ -330,6 +474,11 @@ class wxPythonDemo(wxFrame):
         if self.nb.GetPageCount() == 3:
             if self.nb.GetSelection() == 2:
                 self.nb.SetSelection(0)
         if self.nb.GetPageCount() == 3:
             if self.nb.GetSelection() == 2:
                 self.nb.SetSelection(0)
+            # inform the window that it's time to quit if it cares
+            if self.window is not None:
+                if hasattr(self.window, "ShutdownDemo"):
+                    self.window.ShutdownDemo()
+            wxSafeYield() # in case the page has pending events
             self.nb.DeletePage(2)
 
         if itemText == self.overviewText:
             self.nb.DeletePage(2)
 
         if itemText == self.overviewText:
@@ -348,16 +497,17 @@ class wxPythonDemo(wxFrame):
                     self.SetOverview(itemText + " Overview", module.overview)
                 finally:
                     wxEndBusyCursor()
                     self.SetOverview(itemText + " Overview", module.overview)
                 finally:
                     wxEndBusyCursor()
+                self.tree.Refresh()
 
                 # in case runTest is modal, make sure things look right...
                 self.nb.Refresh();
 
                 # in case runTest is modal, make sure things look right...
                 self.nb.Refresh();
-                wxYield()
+                wxSafeYield()
 
                 self.window = module.runTest(self, self.nb, self) ###
 
                 self.window = module.runTest(self, self.nb, self) ###
-                if self.window:
+                if self.window is not None:
                     self.nb.AddPage(self.window, 'Demo')
                     self.nb.AddPage(self.window, 'Demo')
-                    wxYield()
                     self.nb.SetSelection(2)
                     self.nb.SetSelection(2)
+                    self.nb.Refresh()  # without this wxMac has troubles showing the just added page
 
             else:
                 self.ovr.SetPage("")
 
             else:
                 self.ovr.SetPage("")
@@ -383,7 +533,7 @@ class wxPythonDemo(wxFrame):
         self.curOverview = text
         lead = text[:6]
         if lead != '<html>' and lead != '<HTML>':
         self.curOverview = text
         lead = text[:6]
         if lead != '<html>' and lead != '<HTML>':
-            text = string.join(string.split(text, '\n'), '<br>')
+            text = '<br>'.join(text.split('\n'))
         self.ovr.SetPage(text)
         self.nb.SetPageText(0, name)
 
         self.ovr.SetPage(text)
         self.nb.SetPageText(0, name)
 
@@ -392,17 +542,61 @@ class wxPythonDemo(wxFrame):
     def OnFileExit(self, *event):
         self.Close()
 
     def OnFileExit(self, *event):
         self.Close()
 
-
     def OnHelpAbout(self, event):
         from About import MyAboutBox
         about = MyAboutBox(self)
         about.ShowModal()
         about.Destroy()
 
     def OnHelpAbout(self, event):
         from About import MyAboutBox
         about = MyAboutBox(self)
         about.ShowModal()
         about.Destroy()
 
+    def OnHelpFind(self, event):
+        self.nb.SetSelection(1)
+        self.finddlg = wxFindReplaceDialog(self, self.finddata, "Find",
+                        wxFR_NOUPDOWN |
+                        wxFR_NOMATCHCASE |
+                        wxFR_NOWHOLEWORD)
+        self.finddlg.Show(True)
+
+    def OnFind(self, event):
+        self.nb.SetSelection(1)
+        end = self.txt.GetLastPosition()
+        textstring = self.txt.GetRange(0, end).lower()
+        start = self.txt.GetSelection()[1]
+        findstring = self.finddata.GetFindString().lower()
+        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 loc == -1:
+            dlg = wxMessageDialog(self, 'Find String Not Found',
+                          'Find String Not Found in Demo File',
+                          wxOK | wxICON_INFORMATION)
+            dlg.ShowModal()
+            dlg.Destroy()
+        if self.finddlg:
+            if loc == -1:
+                self.finddlg.SetFocus()
+                return
+            else:
+                self.finddlg.Destroy()
+        self.txt.SetSelection(loc, loc + len(findstring))
+        self.txt.ShowPosition(loc)
+
+
+
+    def OnFindNext(self, event):
+        if self.finddata.GetFindString():
+            self.OnFind(event)
+        else:
+            self.OnHelpFind(event)
+
+    def OnFindClose(self, event):
+        event.GetDialog().Destroy()
+
 
     #---------------------------------------------
     def OnCloseWindow(self, event):
 
     #---------------------------------------------
     def OnCloseWindow(self, event):
-        self.dying = true
+        self.dying = True
         self.window = None
         self.mainmenu = None
         if hasattr(self, "tbicon"):
         self.window = None
         self.mainmenu = None
         if hasattr(self, "tbicon"):
@@ -417,10 +611,6 @@ class wxPythonDemo(wxFrame):
             self.window = self.otherWin
             self.otherWin = None
 
             self.window = self.otherWin
             self.otherWin = None
 
-        if self.showTip:
-            self.ShowTip()
-            self.showTip = false
-
 
     #---------------------------------------------
     def ShowTip(self):
 
     #---------------------------------------------
     def ShowTip(self):
@@ -431,6 +621,7 @@ class wxPythonDemo(wxFrame):
             showTip, index = (1, 0)
         if showTip:
             tp = wxCreateFileTipProvider(opj("data/tips.txt"), index)
             showTip, index = (1, 0)
         if showTip:
             tp = wxCreateFileTipProvider(opj("data/tips.txt"), index)
+            ##tp = MyTP(0)
             showTip = wxShowTip(self, tp)
             index = tp.GetCurrentTip()
             open(opj("data/showTips"), "w").write(str( (showTip, index) ))
             showTip = wxShowTip(self, tp)
             index = tp.GetCurrentTip()
             open(opj("data/showTips"), "w").write(str( (showTip, index) ))
@@ -450,9 +641,9 @@ class wxPythonDemo(wxFrame):
     #---------------------------------------------
     def OnTaskBarActivate(self, evt):
         if self.IsIconized():
     #---------------------------------------------
     def OnTaskBarActivate(self, evt):
         if self.IsIconized():
-            self.Iconize(false)
+            self.Iconize(False)
         if not self.IsShown():
         if not self.IsShown():
-            self.Show(true)
+            self.Show(True)
         self.Raise()
 
     #---------------------------------------------
         self.Raise()
 
     #---------------------------------------------
@@ -497,12 +688,13 @@ class MySplashScreen(wxSplashScreen):
         bmp = wxImage(opj("bitmaps/splash.gif")).ConvertToBitmap()
         wxSplashScreen.__init__(self, bmp,
                                 wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT,
         bmp = wxImage(opj("bitmaps/splash.gif")).ConvertToBitmap()
         wxSplashScreen.__init__(self, bmp,
                                 wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT,
-                                4000, None, -1)
+                                4000, None, -1,
+                                style = wxSIMPLE_BORDER|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP)
         EVT_CLOSE(self, self.OnClose)
 
     def OnClose(self, evt):
         frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)")
         EVT_CLOSE(self, self.OnClose)
 
     def OnClose(self, evt):
         frame = wxPythonDemo(None, -1, "wxPython: (A Demonstration)")
-        frame.Show(true)
+        frame.Show()
         evt.Skip()  # Make sure the default handler runs too...
 
 
         evt.Skip()  # Make sure the default handler runs too...
 
 
@@ -512,10 +704,15 @@ class MyApp(wxApp):
         Create and show the splash screen.  It will then create and show
         the main frame when it is time to do so.
         """
         Create and show the splash screen.  It will then create and show
         the main frame when it is time to do so.
         """
+
+        #import locale
+        #self.locale = wxLocale(wxLANGUAGE_FRENCH)
+        #locale.setlocale(locale.LC_ALL, 'fr')
+
         wxInitAllImageHandlers()
         splash = MySplashScreen()
         splash.Show()
         wxInitAllImageHandlers()
         splash = MySplashScreen()
         splash.Show()
-        return true
+        return True
 
 
 
 
 
 
@@ -527,7 +724,7 @@ def main():
         os.chdir(demoPath)
     except:
         pass
         os.chdir(demoPath)
     except:
         pass
-    app = MyApp(0)
+    app = MyApp(wxPlatform == "__WXMAC__")
     app.MainLoop()
 
 
     app.MainLoop()