]> git.saurik.com Git - wxWidgets.git/commitdiff
Merge #3 from the 2.6 branch, containing last set of changes before
authorRobin Dunn <robin@alldunn.com>
Mon, 9 Jan 2006 21:09:57 +0000 (21:09 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 9 Jan 2006 21:09:57 +0000 (21:09 +0000)
the 2.6.2 release.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

13 files changed:
wxPython/demo/GetMouseState.py
wxPython/demo/MDIWindows.py
wxPython/demo/Main.py
wxPython/demo/MimeTypesManager.py
wxPython/distrib/README.win32.txt
wxPython/distrib/all/build-finalize
wxPython/docs/CHANGES.html
wxPython/docs/CHANGES.txt
wxPython/docs/PyManual.html
wxPython/wx/lib/floatcanvas/FloatCanvas.py
wxPython/wx/py/CHANGES.txt
wxPython/wx/py/frame.py
wxPython/wx/py/shell.py

index 0408e6f96b4983182e3d64e958dc50c64de780a7..c010c073dc5c5346d42a0cd8020cead2b85e3cd9 100644 (file)
@@ -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.
 
 
index 2f75d8e3ddf9329b6cbcdc8bd161ad144ccfdc2a..4fa3ad01df24b6874913f35791ed3336c2733891 100644 (file)
@@ -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
         
index 0318a73e406ab0b7c9590f20bbe8c3bc76cd5ac5..d0711e384f9a3206bd3a37cd5cead146872f94a3 100644 (file)
@@ -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', [
         ]),
index 30e852d5aa025668f5598a5d6ffc44c6a89c99b2..7d3f1e95205e2943e429c26a80df0d747dc9f7d5 100644 (file)
@@ -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)
index db7e8a33efebb765c5c10f07d93ea14068f870f0..69f7b239c501b3da733dd87d8e3a8bd0957e0281 100644 (file)
@@ -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
index 601a221725ef5522e8c81d2243ee1b279939dafa..84d705527ca2a1bcc416005147705d7a47ac7745 100755 (executable)
@@ -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`
index 42b7ab270faae55947c4a3e49ddc5db29fecac63..b2c91c1a7b828424adfbf791c85a6948882ef939 100644 (file)
@@ -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>
index b02a2de17f0d5e095ee79d40dd6b933226dc7bd7..8ccafeeb9bc5a34a05e420cda312496d836cbd8f 100644 (file)
@@ -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.
 
index 7999362abce628e38f55b104f3d6238a05d7c878..ef13f7941382f3425974e52790bb06f32a335b73 100644 (file)
@@ -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">
index 85b7c6794ac134ec0b48fa2b9fa6270e1fb21b23..ce5c06179ea7bc337b2ca0a228d0be4faffcab89 100644 (file)
@@ -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
 
index e6929aa727180b0d6b115eda9508ab24c3c26977..8caf5836636882e3400bcad09b65c2db0c95f527 100644 (file)
@@ -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.
 
 
 
index b74d6521234918e4c43c13e154aa30b106d714f8..fcdb14c85ebec1e0180d1ad53f77929f3ff9f465 100644 (file)
@@ -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')
index 4580ef8a70a328237c6094a711a908b394d4a8a3..4fd61f963e07e7e058900ba7e647c78fd3e20754 100644 (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."""