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:
parent
f533e26f39
commit
486afba9a4
@ -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:
|
||||
self.mimelist.Append(mt)
|
||||
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):
|
||||
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):
|
||||
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):
|
||||
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):
|
||||
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."""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user