Merged wxPython 2.4.x to the 2.5 branch (Finally!!!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -11,7 +11,7 @@
 | 
			
		||||
# Licence:      wxWindows license
 | 
			
		||||
#----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
import sys, os, time, string
 | 
			
		||||
import sys, os, time
 | 
			
		||||
from   wxPython.wx import *
 | 
			
		||||
from   wxPython.html import wxHtmlWindow
 | 
			
		||||
 | 
			
		||||
@@ -19,27 +19,19 @@ from   wxPython.html import wxHtmlWindow
 | 
			
		||||
 | 
			
		||||
import images
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_treeList = [
 | 
			
		||||
    # new stuff
 | 
			
		||||
    ('New since last release', [
 | 
			
		||||
        'RowColSizer',
 | 
			
		||||
        'Unicode',
 | 
			
		||||
        'wxFileHistory',
 | 
			
		||||
        'wxGenericDirCtrl',
 | 
			
		||||
        'wxImageFromStream',
 | 
			
		||||
        'wxArtProvider',
 | 
			
		||||
        'ScrolledPanel',
 | 
			
		||||
        'wxMenu',
 | 
			
		||||
        'wxIEHtmlWin',
 | 
			
		||||
        'wxKeyEvents',
 | 
			
		||||
        'wxWizard',
 | 
			
		||||
        'wxXmlResourceHandler',
 | 
			
		||||
    ('Recent Additions', [
 | 
			
		||||
        'wxIntCtrl',
 | 
			
		||||
        'wxPyColourChooser',
 | 
			
		||||
        'wxScrolledPanel',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # managed windows == things with a caption you can close
 | 
			
		||||
    # managed windows == things with a (optional) caption you can close
 | 
			
		||||
    ('Base Frames and Dialogs', [
 | 
			
		||||
        'wxDialog',
 | 
			
		||||
        'wxFrame',
 | 
			
		||||
@@ -88,14 +80,15 @@ _treeList = [
 | 
			
		||||
        'wxNotebook',
 | 
			
		||||
        'wxPopupWindow',
 | 
			
		||||
        'wxRadioBox',
 | 
			
		||||
        'wxRadioButton',
 | 
			
		||||
        'wxSashWindow',
 | 
			
		||||
        'wxSlider',
 | 
			
		||||
        'wxScrolledWindow',
 | 
			
		||||
        'wxSplitterWindow',
 | 
			
		||||
        'wxSlider',
 | 
			
		||||
        'wxSpinButton',
 | 
			
		||||
        'wxSpinCtrl',
 | 
			
		||||
        'wxStaticText',
 | 
			
		||||
        'wxSplitterWindow',
 | 
			
		||||
        'wxStaticBitmap',
 | 
			
		||||
        'wxStaticText',
 | 
			
		||||
        'wxStatusBar',
 | 
			
		||||
        'wxTextCtrl',
 | 
			
		||||
        'wxToggleButton',
 | 
			
		||||
@@ -106,6 +99,9 @@ _treeList = [
 | 
			
		||||
 | 
			
		||||
    # controls coming from other librairies
 | 
			
		||||
    ('More Windows/Controls', [
 | 
			
		||||
        #'wxFloatBar',          deprecated
 | 
			
		||||
        #'wxMVCTree',           deprecated
 | 
			
		||||
        #'wxRightTextCtrl',    deprecated as we have wxTE_RIGHT now.
 | 
			
		||||
        'ColourSelect',
 | 
			
		||||
        'ContextHelp',
 | 
			
		||||
        'FancyText',
 | 
			
		||||
@@ -115,20 +111,23 @@ _treeList = [
 | 
			
		||||
        'PyCrustWithFilling',
 | 
			
		||||
        'SplitTree',
 | 
			
		||||
        'TablePrint',
 | 
			
		||||
        'Throbber',
 | 
			
		||||
        'wxCalendar',
 | 
			
		||||
        'wxCalendarCtrl',
 | 
			
		||||
        'wxPyColourChooser',
 | 
			
		||||
        'wxDynamicSashWindow',
 | 
			
		||||
        'wxEditableListBox',
 | 
			
		||||
        'wxEditor',
 | 
			
		||||
        #'wxFloatBar',          deprecated
 | 
			
		||||
        'wxHtmlWindow',
 | 
			
		||||
        'wxIEHtmlWin',
 | 
			
		||||
        'wxIntCtrl',
 | 
			
		||||
        'wxLEDNumberCtrl',
 | 
			
		||||
        'wxMimeTypesManager',
 | 
			
		||||
        #'wxMVCTree',           deprecated
 | 
			
		||||
        'wxRightTextCtrl',
 | 
			
		||||
        'wxMultiSash',
 | 
			
		||||
        'wxPopupControl',
 | 
			
		||||
        'wxStyledTextCtrl_1',
 | 
			
		||||
        'wxStyledTextCtrl_2',
 | 
			
		||||
        'wxTimeCtrl',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # How to lay out the controls in a frame/dialog
 | 
			
		||||
@@ -136,22 +135,23 @@ _treeList = [
 | 
			
		||||
        'LayoutAnchors',
 | 
			
		||||
        'Layoutf',
 | 
			
		||||
        'RowColSizer',
 | 
			
		||||
        'ScrolledPanel',
 | 
			
		||||
        'Sizers',
 | 
			
		||||
        'wxLayoutConstraints',
 | 
			
		||||
        'wxScrolledPanel',
 | 
			
		||||
        'wxXmlResource',
 | 
			
		||||
        'wxXmlResourceHandler',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # ditto
 | 
			
		||||
    ('Process and Events', [
 | 
			
		||||
        'EventManager',
 | 
			
		||||
        'infoframe',
 | 
			
		||||
        'OOR',
 | 
			
		||||
        'PythonEvents',
 | 
			
		||||
        'Threads',
 | 
			
		||||
        'wxKeyEvents',
 | 
			
		||||
        'wxProcess',
 | 
			
		||||
        'wxTimer',
 | 
			
		||||
        'wxKeyEvents',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # Clipboard and DnD
 | 
			
		||||
@@ -162,12 +162,13 @@ _treeList = [
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # Images
 | 
			
		||||
    ('Images', [
 | 
			
		||||
    ('Using Images', [
 | 
			
		||||
        'Throbber',
 | 
			
		||||
        'wxArtProvider',
 | 
			
		||||
        'wxDragImage',
 | 
			
		||||
        'wxImage',
 | 
			
		||||
        'wxImageFromStream',
 | 
			
		||||
        'wxMask',
 | 
			
		||||
        'wxArtProvider',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # Other stuff
 | 
			
		||||
@@ -177,6 +178,7 @@ _treeList = [
 | 
			
		||||
        'DrawXXXList',
 | 
			
		||||
        'FontEnumerator',
 | 
			
		||||
        'PrintFramework',
 | 
			
		||||
        'Throbber',
 | 
			
		||||
        'Unicode',
 | 
			
		||||
        'wxFileHistory',
 | 
			
		||||
        'wxJoystick',
 | 
			
		||||
@@ -212,7 +214,8 @@ class MyLog(wxPyLog):
 | 
			
		||||
        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):
 | 
			
		||||
@@ -223,7 +226,7 @@ class MyTP(wxPyTipProvider):
 | 
			
		||||
 | 
			
		||||
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('/')))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#---------------------------------------------------------------------------
 | 
			
		||||
@@ -237,6 +240,7 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
 | 
			
		||||
        self.cwd = os.getcwd()
 | 
			
		||||
        self.curOverview = ""
 | 
			
		||||
        self.window = None
 | 
			
		||||
 | 
			
		||||
        icon = images.getMondrianIcon()
 | 
			
		||||
        self.SetIcon(icon)
 | 
			
		||||
@@ -250,9 +254,9 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
            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.showTip = true
 | 
			
		||||
        EVT_IDLE(self, self.OnIdle)
 | 
			
		||||
        EVT_CLOSE(self, self.OnCloseWindow)
 | 
			
		||||
        EVT_ICONIZE(self, self.OnIconfiy)
 | 
			
		||||
@@ -268,8 +272,8 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
        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()
 | 
			
		||||
@@ -277,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)
 | 
			
		||||
        wxApp_SetMacExitMenuItemId(exitID)
 | 
			
		||||
        self.mainmenu.Append(menu, '&File')
 | 
			
		||||
 | 
			
		||||
        # Make a Demo menu
 | 
			
		||||
@@ -293,16 +298,33 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
 | 
			
		||||
        # Make a Help menu
 | 
			
		||||
        helpID = wxNewId()
 | 
			
		||||
        findID = wxNewId()
 | 
			
		||||
        findnextID = wxNewId()
 | 
			
		||||
        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!!!')
 | 
			
		||||
        wxApp_SetMacAboutMenuItemId(helpID)
 | 
			
		||||
        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)
 | 
			
		||||
 | 
			
		||||
        # 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
 | 
			
		||||
@@ -358,7 +380,8 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
 | 
			
		||||
        # 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")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -376,16 +399,14 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
        #wxLog_SetActiveTarget(wxLogStderr())
 | 
			
		||||
        #wxLog_SetTraceMask(wxTraceMessages)
 | 
			
		||||
 | 
			
		||||
        self.Show(true)
 | 
			
		||||
        self.Show(True)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        # 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)
 | 
			
		||||
        splitter2.SetSashPosition(450, true)
 | 
			
		||||
        splitter2.SetMinimumPaneSize(20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -453,6 +474,11 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
        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:
 | 
			
		||||
@@ -478,7 +504,7 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
                wxSafeYield()
 | 
			
		||||
 | 
			
		||||
                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.SetSelection(2)
 | 
			
		||||
                    self.nb.Refresh()  # without this wxMac has troubles showing the just added page
 | 
			
		||||
@@ -507,7 +533,7 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
        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)
 | 
			
		||||
 | 
			
		||||
@@ -516,17 +542,61 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
    def OnFileExit(self, *event):
 | 
			
		||||
        self.Close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    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):
 | 
			
		||||
        self.dying = true
 | 
			
		||||
        self.dying = True
 | 
			
		||||
        self.window = None
 | 
			
		||||
        self.mainmenu = None
 | 
			
		||||
        if hasattr(self, "tbicon"):
 | 
			
		||||
@@ -541,10 +611,6 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
            self.window = self.otherWin
 | 
			
		||||
            self.otherWin = None
 | 
			
		||||
 | 
			
		||||
        if self.showTip:
 | 
			
		||||
            self.ShowTip()
 | 
			
		||||
            self.showTip = false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------
 | 
			
		||||
    def ShowTip(self):
 | 
			
		||||
@@ -575,9 +641,9 @@ class wxPythonDemo(wxFrame):
 | 
			
		||||
    #---------------------------------------------
 | 
			
		||||
    def OnTaskBarActivate(self, evt):
 | 
			
		||||
        if self.IsIconized():
 | 
			
		||||
            self.Iconize(false)
 | 
			
		||||
            self.Iconize(False)
 | 
			
		||||
        if not self.IsShown():
 | 
			
		||||
            self.Show(true)
 | 
			
		||||
            self.Show(True)
 | 
			
		||||
        self.Raise()
 | 
			
		||||
 | 
			
		||||
    #---------------------------------------------
 | 
			
		||||
@@ -628,7 +694,7 @@ class MySplashScreen(wxSplashScreen):
 | 
			
		||||
 | 
			
		||||
    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...
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -638,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.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        #import locale
 | 
			
		||||
        #self.locale = wxLocale(wxLANGUAGE_FRENCH)
 | 
			
		||||
        #locale.setlocale(locale.LC_ALL, 'fr')
 | 
			
		||||
 | 
			
		||||
        wxInitAllImageHandlers()
 | 
			
		||||
        splash = MySplashScreen()
 | 
			
		||||
        splash.Show()
 | 
			
		||||
        return true
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user