Merge #3 from the 2.6 branch, containing last set of changes before
the 2.6.2 release. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -3,6 +3,18 @@ import wx
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class StaticText(wx.StaticText):
 | 
			
		||||
    """
 | 
			
		||||
    A StaticText that only updates the label if it has changed, to
 | 
			
		||||
    help reduce potential flicker since these controls would be
 | 
			
		||||
    updated very frequently otherwise.
 | 
			
		||||
    """
 | 
			
		||||
    def SetLabel(self, label):
 | 
			
		||||
        if label <> self.GetLabel():
 | 
			
		||||
            wx.StaticText.SetLabel(self, label)
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class TestPanel(wx.Panel):
 | 
			
		||||
    def __init__(self, parent, log):
 | 
			
		||||
        self.log = log
 | 
			
		||||
@@ -23,57 +35,57 @@ class TestPanel(wx.Panel):
 | 
			
		||||
        fgs = wx.FlexGridSizer(cols=2, hgap=5, vgap=10)
 | 
			
		||||
        row.Add(fgs, 0, wx.ALL, 30)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "X pos:")
 | 
			
		||||
        self.x = wx.StaticText(self, -1, "00000")
 | 
			
		||||
        lbl = StaticText(self, -1, "X pos:")
 | 
			
		||||
        self.x = StaticText(self, -1, "00000")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.x)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Y pos:")
 | 
			
		||||
        self.y = wx.StaticText(self, -1, "00000")
 | 
			
		||||
        lbl = StaticText(self, -1, "Y pos:")
 | 
			
		||||
        self.y = StaticText(self, -1, "00000")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.y)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Left down:")
 | 
			
		||||
        self.lft = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Left down:")
 | 
			
		||||
        self.lft = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.lft)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Middle Down:")
 | 
			
		||||
        self.mid = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Middle Down:")
 | 
			
		||||
        self.mid = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.mid)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Right down:")
 | 
			
		||||
        self.rgt = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Right down:")
 | 
			
		||||
        self.rgt = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.rgt)
 | 
			
		||||
 | 
			
		||||
        fgs = wx.FlexGridSizer(cols=2, hgap=5, vgap=10)
 | 
			
		||||
        row.Add(fgs, 0, wx.ALL, 30)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Control down:")
 | 
			
		||||
        self.ctrl = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Control down:")
 | 
			
		||||
        self.ctrl = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.ctrl)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Shift down:")
 | 
			
		||||
        self.shft = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Shift down:")
 | 
			
		||||
        self.shft = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.shft)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Alt down:")
 | 
			
		||||
        self.alt = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Alt down:")
 | 
			
		||||
        self.alt = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.alt)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Meta down:")
 | 
			
		||||
        self.meta = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Meta down:")
 | 
			
		||||
        self.meta = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.meta)
 | 
			
		||||
 | 
			
		||||
        lbl = wx.StaticText(self, -1, "Cmd down:")
 | 
			
		||||
        self.cmd = wx.StaticText(self, -1, "False")
 | 
			
		||||
        lbl = StaticText(self, -1, "Cmd down:")
 | 
			
		||||
        self.cmd = StaticText(self, -1, "False")
 | 
			
		||||
        fgs.Add(lbl)
 | 
			
		||||
        fgs.Add(self.cmd)
 | 
			
		||||
        
 | 
			
		||||
@@ -114,7 +126,7 @@ overview = """<html><body>
 | 
			
		||||
The mouse and modifier state can be polled with the wx.GetMouseState
 | 
			
		||||
function.  It returns an instance of a wx.MouseState object that
 | 
			
		||||
contains the current position of the mouse pointer in screen
 | 
			
		||||
coordinants, as well as boolean values indicating the up/down status
 | 
			
		||||
coordinates, as well as boolean values indicating the up/down status
 | 
			
		||||
of the mouse buttons and the modifier keys.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,12 +35,19 @@ class TestPanel(wx.Panel):
 | 
			
		||||
        exe, spawn = self.GetPyExecutable()
 | 
			
		||||
        spawn(os.P_NOWAIT, exe, exe, "MDISashDemo.py")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # TODO: This hack can be removed once we fix the way the Python
 | 
			
		||||
    # app bundles are generated so that they are not bundling and 
 | 
			
		||||
    # pointing to an otherwise unused and non-GUI-friendly version of
 | 
			
		||||
    # Python on OS X.
 | 
			
		||||
    def GetPyExecutable(self):
 | 
			
		||||
        if 'wxMac' in wx.PlatformInfo:
 | 
			
		||||
            # sys.executable will be wrong if running the demo from
 | 
			
		||||
            # an app bundle.  Just find pythonw on the path instead.
 | 
			
		||||
            return 'pythonw' + sys.version[:3], os.spawnlp
 | 
			
		||||
            # an app bundle.  But the bundle is always using a system
 | 
			
		||||
            # framework so just hardcode the path to it.
 | 
			
		||||
            if sys.version[:3] == "2.4":
 | 
			
		||||
                return '/usr/local/bin/pythonw', os.spawnl
 | 
			
		||||
            else:
 | 
			
		||||
                return '/usr/bin/pythonw', os.spawnl    
 | 
			
		||||
        else:
 | 
			
		||||
            return sys.executable, os.spawnl
 | 
			
		||||
        
 | 
			
		||||
 
 | 
			
		||||
@@ -53,6 +53,7 @@ _treeList = [
 | 
			
		||||
        'MultiSplitterWindow',
 | 
			
		||||
        'Throbber',
 | 
			
		||||
        'GetMouseState',
 | 
			
		||||
        'FloatCanvas',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # managed windows == things with a (optional) caption you can close
 | 
			
		||||
@@ -161,12 +162,11 @@ _treeList = [
 | 
			
		||||
        'HtmlWindow',
 | 
			
		||||
        'HyperLinkCtrl',
 | 
			
		||||
        'IntCtrl',
 | 
			
		||||
        'MediaCtrl',
 | 
			
		||||
        'MultiSplitterWindow',
 | 
			
		||||
        'MVCTree',   
 | 
			
		||||
        'MaskedEditControls',
 | 
			
		||||
        'MaskedNumCtrl',
 | 
			
		||||
        'MimeTypesManager',
 | 
			
		||||
        'MediaCtrl',
 | 
			
		||||
        'MultiSplitterWindow',
 | 
			
		||||
        'PyCrust',
 | 
			
		||||
        'PyPlot',
 | 
			
		||||
        'PyShell',
 | 
			
		||||
@@ -233,7 +233,9 @@ _treeList = [
 | 
			
		||||
        'DrawXXXList',
 | 
			
		||||
        'FileHistory',
 | 
			
		||||
        'FontEnumerator',
 | 
			
		||||
        'GLCanvas',
 | 
			
		||||
        'Joystick',
 | 
			
		||||
        'MimeTypesManager',
 | 
			
		||||
        'MouseGestures',
 | 
			
		||||
        'OGL',
 | 
			
		||||
        'PrintFramework',
 | 
			
		||||
@@ -243,11 +245,6 @@ _treeList = [
 | 
			
		||||
        'Unicode',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
    # need libs not coming with the demo
 | 
			
		||||
    ('Samples using an external library', [
 | 
			
		||||
        'GLCanvas',
 | 
			
		||||
        ]),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ('Check out the samples dir too', [
 | 
			
		||||
        ]),
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,13 @@ import  pprint
 | 
			
		||||
import  wx
 | 
			
		||||
import  images
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# helper function to make sure we don't convert unicode objects to strings
 | 
			
		||||
# or vice versa when converting lists and None values to text.
 | 
			
		||||
convert = str
 | 
			
		||||
if 'unicode' in wx.PlatformInfo:
 | 
			
		||||
   convert = unicode
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class MimeTypesDemoPanel(wx.Panel):
 | 
			
		||||
@@ -199,8 +206,16 @@ class MimeTypesDemoPanel(wx.Panel):
 | 
			
		||||
            mtypes = wx.TheMimeTypesManager.EnumAllFileTypes()
 | 
			
		||||
        except wx.PyAssertionError:
 | 
			
		||||
            mtypes = []
 | 
			
		||||
        
 | 
			
		||||
        # TODO: On wxMac, EnumAllFileTypes produces tons of dupes, which
 | 
			
		||||
        # causes quirky behavior because the list control doesn't expect
 | 
			
		||||
        # dupes, and simply wastes space. So remove the dupes for now,
 | 
			
		||||
        # then remove this hack when we fix EnumAllFileTypes on Mac.
 | 
			
		||||
        mimes = []
 | 
			
		||||
        for mt in mtypes:
 | 
			
		||||
            if mt not in mimes:
 | 
			
		||||
                self.mimelist.Append(mt)
 | 
			
		||||
                mimes.append(mt)
 | 
			
		||||
 | 
			
		||||
        # Do a lookup of *.wav for a starting position
 | 
			
		||||
        self.OnLookup()
 | 
			
		||||
@@ -234,10 +249,10 @@ class MimeTypesDemoPanel(wx.Panel):
 | 
			
		||||
 | 
			
		||||
            # Select the entered value in the list
 | 
			
		||||
            if fileType:
 | 
			
		||||
                if self.mimelist.FindString(str(fileType.GetMimeType())) != -1:
 | 
			
		||||
                if self.mimelist.FindString(convert(fileType.GetMimeType())) != -1:
 | 
			
		||||
                    # Using CallAfter to ensure that GUI is ready before trying to
 | 
			
		||||
                    # select it (otherwise, it's selected but not visible)
 | 
			
		||||
                    wx.CallAfter(self.mimelist.SetSelection, self.mimelist.FindString(str(fileType.GetMimeType())))
 | 
			
		||||
                    wx.CallAfter(self.mimelist.SetSelection, self.mimelist.FindString(convert(fileType.GetMimeType())))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if fileType is None:
 | 
			
		||||
@@ -264,23 +279,23 @@ class MimeTypesDemoPanel(wx.Panel):
 | 
			
		||||
                bmp = images.getNoIconBitmap()
 | 
			
		||||
                self.icon.SetBitmap(bmp)                
 | 
			
		||||
            self.iconsource.SetValue(file)
 | 
			
		||||
            self.iconoffset.SetValue(str(idx))
 | 
			
		||||
            self.iconoffset.SetValue(convert(idx))
 | 
			
		||||
 | 
			
		||||
        #------- MIME type
 | 
			
		||||
        self.mimetype.SetValue(str(ft.GetMimeType()))
 | 
			
		||||
        self.mimetype.SetValue(convert(ft.GetMimeType()))
 | 
			
		||||
        #------- MIME types
 | 
			
		||||
        self.mimetypes.SetValue(str(ft.GetMimeTypes()))
 | 
			
		||||
        self.mimetypes.SetValue(convert(ft.GetMimeTypes()))
 | 
			
		||||
        #------- Associated extensions
 | 
			
		||||
        self.extensions.SetValue(str(ft.GetExtensions()))
 | 
			
		||||
        self.extensions.SetValue(convert(ft.GetExtensions()))
 | 
			
		||||
        #------- Description of file type
 | 
			
		||||
        self.description.SetValue(str(ft.GetDescription()))
 | 
			
		||||
        self.description.SetValue(convert(ft.GetDescription()))
 | 
			
		||||
 | 
			
		||||
        #------- Prep a fake command line command
 | 
			
		||||
        extList = ft.GetExtensions()
 | 
			
		||||
 | 
			
		||||
        if extList:
 | 
			
		||||
            ext = extList[0]
 | 
			
		||||
            if ext[0] == ".": ext = ext[1:]
 | 
			
		||||
            if len(ext) > 0 and ext[0] == ".": ext = ext[1:]
 | 
			
		||||
        else:
 | 
			
		||||
            ext = ""
 | 
			
		||||
 | 
			
		||||
@@ -289,11 +304,11 @@ class MimeTypesDemoPanel(wx.Panel):
 | 
			
		||||
 | 
			
		||||
        #------- OPEN command
 | 
			
		||||
        cmd = ft.GetOpenCommand(filename, mime)
 | 
			
		||||
        self.opencommand.SetValue(str(cmd))
 | 
			
		||||
        self.opencommand.SetValue(convert(cmd))
 | 
			
		||||
 | 
			
		||||
        #------- PRINT command
 | 
			
		||||
        cmd = ft.GetPrintCommand(filename, mime)
 | 
			
		||||
        self.printcommand.SetValue(str(cmd))
 | 
			
		||||
        self.printcommand.SetValue(convert(cmd))
 | 
			
		||||
 | 
			
		||||
        #------- All commands
 | 
			
		||||
        all = ft.GetAllCommands(filename, mime)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,15 +12,15 @@ page for more information about managing multiple installs:
 | 
			
		||||
 | 
			
		||||
In addition to the wxPython modules, several tools scripts (such as
 | 
			
		||||
XRCed and PyShell) and batch file launchers have been installed to
 | 
			
		||||
Python's Scripts directory.  (For example, c:\Python23\Scripts.)  IF
 | 
			
		||||
Python's Scripts directory.  (For example, c:\Python23\Scripts.)  If
 | 
			
		||||
you have multiple versions of wxPython installed these tool scripts
 | 
			
		||||
will use whichever is the default install.  If you would like to
 | 
			
		||||
control which version is used then follow the directions at the wiki
 | 
			
		||||
page for using wxversion.
 | 
			
		||||
 | 
			
		||||
This installer does *not* include the wxPython documentation, the
 | 
			
		||||
wxPython demo and other sample applications are provided as part of
 | 
			
		||||
wxPython.  Those are available in a separate installer named
 | 
			
		||||
wxPython demo and other sample applications that are provided as part
 | 
			
		||||
of wxPython.  Those are available in a separate installer named
 | 
			
		||||
wxPython2.6-win32-docs-demos-*.exe which should also be located from
 | 
			
		||||
wherever you downloaded this package from.  The Docs and Demos
 | 
			
		||||
installer will also create Start Menu shortcuts for the tool scripts
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ if [ $KIND = daily ]; then
 | 
			
		||||
	destdir=$UPLOAD_DAILY_ROOT/$DAILY
 | 
			
		||||
	echo "Copying to the starship at $destdir..."
 | 
			
		||||
	ssh $UPLOAD_HOST "mkdir -p $destdir"
 | 
			
		||||
	scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
 | 
			
		||||
	scp -p $STAGING_DIR/* $UPLOAD_HOST:/$destdir
 | 
			
		||||
	ssh $UPLOAD_HOST "cd $destdir && ls -al"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -79,7 +79,7 @@ if [ $KIND = release ]; then
 | 
			
		||||
	echo "Copying to the starship..."
 | 
			
		||||
	destdir=$UPLOAD_PREVIEW_ROOT/$VERSION
 | 
			
		||||
	ssh $UPLOAD_HOST "mkdir -p $destdir"
 | 
			
		||||
	scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
 | 
			
		||||
	scp -p $STAGING_DIR/* $UPLOAD_HOST:/$destdir
 | 
			
		||||
 | 
			
		||||
        # Send email to wxPython-dev
 | 
			
		||||
	DATE=`date`
 | 
			
		||||
 
 | 
			
		||||
@@ -110,7 +110,7 @@ is useful, for example, if you would like to remove some output
 | 
			
		||||
or errors or etc. from the buffer before doing a copy/paste.
 | 
			
		||||
The free edit mode is designated by the use of a red,
 | 
			
		||||
non-flashing caret.</li>
 | 
			
		||||
<li>Ctrl-H will fold/unfold (hide/show) the selected lines.</li>
 | 
			
		||||
<li>Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.</li>
 | 
			
		||||
<li>General code cleanup and fixes.</li>
 | 
			
		||||
<li>Use wx.StandardPaths to determine the location of the config
 | 
			
		||||
files.</li>
 | 
			
		||||
 
 | 
			
		||||
@@ -159,7 +159,7 @@ tweaked and finished up by me.  The changes include the following:
 | 
			
		||||
      The free edit mode is designated by the use of a red,
 | 
			
		||||
      non-flashing caret.
 | 
			
		||||
 | 
			
		||||
    * Ctrl-H will fold/unfold (hide/show) the selected lines.
 | 
			
		||||
    * Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.
 | 
			
		||||
 | 
			
		||||
    * General code cleanup and fixes.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -242,7 +242,7 @@ history.  Bound to Shift-Return.</li>
 | 
			
		||||
useful, for example, if you would like to remove some output or
 | 
			
		||||
errors or etc. from the buffer before doing a copy/paste.  The free
 | 
			
		||||
edit mode is designated by the use of a red, non-flashing caret.</li>
 | 
			
		||||
<li>Ctrl-H will fold/unfold (hide/show) the selected lines.</li>
 | 
			
		||||
<li>Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
<p>On top of these changes I (Robin Dunn) added the following:</p>
 | 
			
		||||
<ul class="simple">
 | 
			
		||||
 
 | 
			
		||||
@@ -1905,7 +1905,7 @@ class FloatCanvas(wx.Panel):
 | 
			
		||||
        self.ObjectUnderMouse = None
 | 
			
		||||
        
 | 
			
		||||
        # called just to make sure everything is initialized
 | 
			
		||||
        self.OnSize(None)
 | 
			
		||||
        ##self.OnSize(None)
 | 
			
		||||
 | 
			
		||||
        self.InHereNum = 0
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ Their changes include the following:
 | 
			
		||||
  errors or etc. from the buffer before doing a copy/paste.  The free
 | 
			
		||||
  edit mode is designated by the use of a red, non-flashing caret.
 | 
			
		||||
 | 
			
		||||
* Ctrl-H will fold/unfold (hide/show) the selected lines.
 | 
			
		||||
* Ctrl-Shift-F will fold/unfold (hide/show) the selected lines.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -176,26 +176,37 @@ class Frame(wx.Frame):
 | 
			
		||||
                     'Call Tip Options')
 | 
			
		||||
                
 | 
			
		||||
        if wx.Platform == "__WXMAC__":
 | 
			
		||||
            m.Append(ID_USEAA, '&Use AntiAliasing\tCtrl+Shift+A',
 | 
			
		||||
            m.Append(ID_USEAA, '&Use AntiAliasing',
 | 
			
		||||
                     'Use anti-aliased fonts', wx.ITEM_CHECK)
 | 
			
		||||
            
 | 
			
		||||
        m.AppendSeparator()
 | 
			
		||||
        m.Append(ID_SAVEHISTORY, '&Save History\tAlt+Ctrl+A', 'Automatically save history on close', wx.ITEM_CHECK)
 | 
			
		||||
        m.Append(ID_SAVEHISTORY, '&Save History',
 | 
			
		||||
                 'Automatically save history on close', wx.ITEM_CHECK)
 | 
			
		||||
        self.startupMenu = wx.Menu()
 | 
			
		||||
        self.startupMenu.Append(ID_EXECSTARTUPSCRIPT, 'E&xecute Startup Script\tAlt+Ctrl+X', 'Execute Startup Script', wx.ITEM_CHECK)
 | 
			
		||||
        self.startupMenu.Append(ID_EDITSTARTUPSCRIPT, '&Edit Startup Script\tAlt+Ctrl+E', 'Edit Startup Script')
 | 
			
		||||
        self.startupMenu.Append(ID_EXECSTARTUPSCRIPT,
 | 
			
		||||
                                'E&xecute Startup Script',
 | 
			
		||||
                                'Execute Startup Script', wx.ITEM_CHECK)
 | 
			
		||||
        self.startupMenu.Append(ID_EDITSTARTUPSCRIPT,
 | 
			
		||||
                                '&Edit Startup Script',
 | 
			
		||||
                                'Edit Startup Script')
 | 
			
		||||
        m.AppendMenu(ID_STARTUP, '&Startup', self.startupMenu, 'Startup Options')
 | 
			
		||||
 | 
			
		||||
        self.settingsMenu = wx.Menu()
 | 
			
		||||
        self.settingsMenu.Append(ID_AUTO_SAVESETTINGS, '&Auto Save Settings\tAlt+Ctrl+A', 'Automatically save settings on close', wx.ITEM_CHECK)
 | 
			
		||||
        self.settingsMenu.Append(ID_SAVESETTINGS, '&Save Settings\tAlt+Ctrl+S', 'Save settings now')
 | 
			
		||||
        self.settingsMenu.Append(ID_DELSETTINGSFILE, '&Revert to default\tAlt+Ctrl+R', 'Revert to the default settings')
 | 
			
		||||
        self.settingsMenu.Append(ID_AUTO_SAVESETTINGS,
 | 
			
		||||
                                 '&Auto Save Settings',
 | 
			
		||||
                                 'Automatically save settings on close', wx.ITEM_CHECK)
 | 
			
		||||
        self.settingsMenu.Append(ID_SAVESETTINGS,
 | 
			
		||||
                                 '&Save Settings',
 | 
			
		||||
                                 'Save settings now')
 | 
			
		||||
        self.settingsMenu.Append(ID_DELSETTINGSFILE,
 | 
			
		||||
                                 '&Revert to default',
 | 
			
		||||
                                 'Revert to the default settings')
 | 
			
		||||
        m.AppendMenu(ID_SETTINGS, '&Settings', self.settingsMenu, 'Settings Options')           
 | 
			
		||||
 | 
			
		||||
        m = self.helpMenu = wx.Menu()
 | 
			
		||||
        m.Append(ID_HELP, '&Help\tF1', 'Help!')
 | 
			
		||||
        m.AppendSeparator()
 | 
			
		||||
        m.Append(ID_ABOUT, '&About...\tAlt+A', 'About this program')
 | 
			
		||||
        m.Append(ID_ABOUT, '&About...', 'About this program')
 | 
			
		||||
 | 
			
		||||
        b = self.menuBar = wx.MenuBar()
 | 
			
		||||
        b.Append(self.fileMenu, '&File')
 | 
			
		||||
 
 | 
			
		||||
@@ -447,6 +447,7 @@ Platform: %s""" % \
 | 
			
		||||
        if self.AutoCompActive():
 | 
			
		||||
            event.Skip()
 | 
			
		||||
            return
 | 
			
		||||
        
 | 
			
		||||
        # Prevent modification of previously submitted
 | 
			
		||||
        # commands/responses.
 | 
			
		||||
        controlDown = event.ControlDown()
 | 
			
		||||
@@ -456,7 +457,7 @@ Platform: %s""" % \
 | 
			
		||||
        endpos = self.GetTextLength()
 | 
			
		||||
        selecting = self.GetSelectionStart() != self.GetSelectionEnd()
 | 
			
		||||
        
 | 
			
		||||
        if controlDown and key in (ord('H'), ord('h')): 
 | 
			
		||||
        if controlDown and shiftDown and key in (ord('F'), ord('f')): 
 | 
			
		||||
            li = self.GetCurrentLine()
 | 
			
		||||
            m = self.MarkerGet(li)
 | 
			
		||||
            if m & 1<<0:
 | 
			
		||||
@@ -510,10 +511,12 @@ Platform: %s""" % \
 | 
			
		||||
            if self.CallTipActive():
 | 
			
		||||
                self.CallTipCancel()
 | 
			
		||||
            self.processLine()
 | 
			
		||||
        #Complete Text (from already typed words)    
 | 
			
		||||
            
 | 
			
		||||
        # Complete Text (from already typed words)    
 | 
			
		||||
        elif shiftDown and key == wx.WXK_RETURN:
 | 
			
		||||
            self.OnShowCompHistory()
 | 
			
		||||
        # Ctrl+Return (Cntrl+Enter) is used to insert a line break.
 | 
			
		||||
            
 | 
			
		||||
        # Ctrl+Return (Ctrl+Enter) is used to insert a line break.
 | 
			
		||||
        elif controlDown and key == wx.WXK_RETURN:
 | 
			
		||||
            if self.CallTipActive():
 | 
			
		||||
                self.CallTipCancel()
 | 
			
		||||
@@ -521,40 +524,50 @@ Platform: %s""" % \
 | 
			
		||||
                self.processLine()
 | 
			
		||||
            else:
 | 
			
		||||
                self.insertLineBreak()
 | 
			
		||||
                
 | 
			
		||||
        # Let Ctrl-Alt-* get handled normally.
 | 
			
		||||
        elif controlDown and altDown:
 | 
			
		||||
            event.Skip()
 | 
			
		||||
            
 | 
			
		||||
        # Clear the current, unexecuted command.
 | 
			
		||||
        elif key == wx.WXK_ESCAPE:
 | 
			
		||||
            if self.CallTipActive():
 | 
			
		||||
                event.Skip()
 | 
			
		||||
            else:
 | 
			
		||||
                self.clearCommand()
 | 
			
		||||
 | 
			
		||||
        # Increase font size.
 | 
			
		||||
        elif controlDown and key in (ord(']'),):
 | 
			
		||||
        elif controlDown and key in (ord(']'), wx.WXK_NUMPAD_ADD):
 | 
			
		||||
            dispatcher.send(signal='FontIncrease')
 | 
			
		||||
 | 
			
		||||
        # Decrease font size.
 | 
			
		||||
        elif controlDown and key in (ord('['),):
 | 
			
		||||
        elif controlDown and key in (ord('['), wx.WXK_NUMPAD_SUBTRACT):
 | 
			
		||||
            dispatcher.send(signal='FontDecrease')
 | 
			
		||||
 | 
			
		||||
        # Default font size.
 | 
			
		||||
        elif controlDown and key in (ord('='),):
 | 
			
		||||
        elif controlDown and key in (ord('='), wx.WXK_NUMPAD_DIVIDE):
 | 
			
		||||
            dispatcher.send(signal='FontDefault')
 | 
			
		||||
 | 
			
		||||
        # Cut to the clipboard.
 | 
			
		||||
        elif (controlDown and key in (ord('X'), ord('x'))) \
 | 
			
		||||
                 or (shiftDown and key == wx.WXK_DELETE):
 | 
			
		||||
            self.Cut()
 | 
			
		||||
 | 
			
		||||
        # Copy to the clipboard.
 | 
			
		||||
        elif controlDown and not shiftDown \
 | 
			
		||||
                 and key in (ord('C'), ord('c'), wx.WXK_INSERT):
 | 
			
		||||
            self.Copy()
 | 
			
		||||
 | 
			
		||||
        # Copy to the clipboard, including prompts.
 | 
			
		||||
        elif controlDown and shiftDown \
 | 
			
		||||
                 and key in (ord('C'), ord('c'), wx.WXK_INSERT):
 | 
			
		||||
            self.CopyWithPrompts()
 | 
			
		||||
 | 
			
		||||
        # Copy to the clipboard, including prefixed prompts.
 | 
			
		||||
        elif altDown and not controlDown \
 | 
			
		||||
                 and key in (ord('C'), ord('c'), wx.WXK_INSERT):
 | 
			
		||||
            self.CopyWithPromptsPrefixed()
 | 
			
		||||
 | 
			
		||||
        # Home needs to be aware of the prompt.
 | 
			
		||||
        elif key == wx.WXK_HOME:
 | 
			
		||||
            home = self.promptPosEnd
 | 
			
		||||
@@ -565,6 +578,7 @@ Platform: %s""" % \
 | 
			
		||||
                    self.EnsureCaretVisible()
 | 
			
		||||
            else:
 | 
			
		||||
                event.Skip()
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # The following handlers modify text, so we need to see if
 | 
			
		||||
        # there is a selection that includes text prior to the prompt.
 | 
			
		||||
@@ -572,61 +586,78 @@ Platform: %s""" % \
 | 
			
		||||
        # Don't modify a selection with text prior to the prompt.
 | 
			
		||||
        elif selecting and key not in NAVKEYS and not self.CanEdit():
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        # Paste from the clipboard.
 | 
			
		||||
        elif (controlDown and not shiftDown and key in (ord('V'), ord('v'))) \
 | 
			
		||||
                 or (shiftDown and not controlDown and key == wx.WXK_INSERT):
 | 
			
		||||
            self.Paste()
 | 
			
		||||
 | 
			
		||||
        # manually invoke AutoComplete and Calltips
 | 
			
		||||
        elif controlDown and key == wx.WXK_SPACE:
 | 
			
		||||
            """AutoComplete and Calltips manually."""
 | 
			
		||||
            self.OnCallTipAutoCompleteManually (shiftDown)
 | 
			
		||||
            self.OnCallTipAutoCompleteManually(shiftDown)
 | 
			
		||||
 | 
			
		||||
        # Paste from the clipboard, run commands.
 | 
			
		||||
        elif controlDown and shiftDown and key in (ord('V'), ord('v')):
 | 
			
		||||
            self.PasteAndRun()
 | 
			
		||||
            
 | 
			
		||||
        # Replace with the previous command from the history buffer.
 | 
			
		||||
        elif (controlDown and key == wx.WXK_UP) \
 | 
			
		||||
                 or (altDown and key in (ord('P'), ord('p'))):
 | 
			
		||||
            self.OnHistoryReplace(step=+1)
 | 
			
		||||
            
 | 
			
		||||
        # Replace with the next command from the history buffer.
 | 
			
		||||
        elif (controlDown and key == wx.WXK_DOWN) \
 | 
			
		||||
                 or (altDown and key in (ord('N'), ord('n'))):
 | 
			
		||||
            self.OnHistoryReplace(step=-1)
 | 
			
		||||
            
 | 
			
		||||
        # Insert the previous command from the history buffer.
 | 
			
		||||
        elif (shiftDown and key == wx.WXK_UP) and self.CanEdit():
 | 
			
		||||
            self.OnHistoryInsert(step=+1)
 | 
			
		||||
            
 | 
			
		||||
        # Insert the next command from the history buffer.
 | 
			
		||||
        elif (shiftDown and key == wx.WXK_DOWN) and self.CanEdit():
 | 
			
		||||
            self.OnHistoryInsert(step=-1)
 | 
			
		||||
            
 | 
			
		||||
        # Search up the history for the text in front of the cursor.
 | 
			
		||||
        elif key == wx.WXK_F8:
 | 
			
		||||
            self.OnHistorySearch()
 | 
			
		||||
            
 | 
			
		||||
        # Don't backspace over the latest non-continuation prompt.
 | 
			
		||||
        elif key == wx.WXK_BACK:
 | 
			
		||||
            if selecting and self.CanEdit():
 | 
			
		||||
                event.Skip()
 | 
			
		||||
            elif currpos > self.promptPosEnd:
 | 
			
		||||
                event.Skip()
 | 
			
		||||
                
 | 
			
		||||
        # Only allow these keys after the latest prompt.
 | 
			
		||||
        elif key in (wx.WXK_TAB, wx.WXK_DELETE):
 | 
			
		||||
            if self.CanEdit():
 | 
			
		||||
                event.Skip()
 | 
			
		||||
                
 | 
			
		||||
        # Don't toggle between insert mode and overwrite mode.
 | 
			
		||||
        elif key == wx.WXK_INSERT:
 | 
			
		||||
            pass
 | 
			
		||||
        
 | 
			
		||||
        # Don't allow line deletion.
 | 
			
		||||
        elif controlDown and key in (ord('L'), ord('l')):
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        # Don't allow line transposition.
 | 
			
		||||
        elif controlDown and key in (ord('T'), ord('t')):
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        # Basic navigation keys should work anywhere.
 | 
			
		||||
        elif key in NAVKEYS:
 | 
			
		||||
            event.Skip()
 | 
			
		||||
 | 
			
		||||
        # Protect the readonly portion of the shell.
 | 
			
		||||
        elif not self.CanEdit():
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            event.Skip()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnShowCompHistory(self):
 | 
			
		||||
        """Show possible autocompletion Words from already typed words."""
 | 
			
		||||
        
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user