X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/486afba9a43f8389a6d5715c1f98739b998a3d0a..3ad84671d3668996da1e351e83c7d859fc094603:/wxPython/wx/py/shell.py diff --git a/wxPython/wx/py/shell.py b/wxPython/wx/py/shell.py index 4fd61f963e..c86ced152d 100644 --- a/wxPython/wx/py/shell.py +++ b/wxPython/wx/py/shell.py @@ -95,22 +95,27 @@ class ShellFrame(frame.Frame, frame.ShellFrameMixin): dialog.Destroy() + def OnHelp(self, event): + """Show a help dialog.""" + frame.ShellFrameMixin.OnHelp(self, event) + + def LoadSettings(self): if self.config is not None: frame.ShellFrameMixin.LoadSettings(self) frame.Frame.LoadSettings(self, self.config) self.shell.LoadSettings(self.config) - def SaveSettings(self): + def SaveSettings(self, force=False): if self.config is not None: frame.ShellFrameMixin.SaveSettings(self) - if self.autoSaveSettings: + if self.autoSaveSettings or force: frame.Frame.SaveSettings(self, self.config) self.shell.SaveSettings(self.config) def DoSaveSettings(self): if self.config is not None: - self.SaveSettings() + self.SaveSettings(force=True) self.config.Flush() @@ -142,10 +147,9 @@ Ctrl+[ Decrease font size. Ctrl+= Default font size. Ctrl-Space Show Auto Completion. Ctrl-Alt-Space Show Call Tip. -Alt+Shift+C Clear Screen. Shift+Enter Complete Text from History. -Ctrl+F Search (backwards) TODO: regexp-wholeWords-... -Ctrl+G Search next +Ctrl+F Search +F3 Search next Ctrl+H "hide" lines containing selection / "unhide" F12 on/off "free-edit" mode """ @@ -164,6 +168,7 @@ class ShellFacade: d = self.__dict__ d['other'] = other d['helpText'] = HELP_TEXT + d['this'] = other.this def help(self): """Display some useful information about how to use the shell.""" @@ -316,6 +321,11 @@ class Shell(editwindow.EditWindow): wx.CallAfter(self.ScrollToLine, 0) + def clearHistory(self): + self.history = [] + self.historyIndex = -1 + dispatcher.send(signal="Shell.clearHistory") + def destroy(self): del self.interp @@ -344,7 +354,7 @@ class Shell(editwindow.EditWindow): def setBuiltinKeywords(self): """Create pseudo keywords as part of builtins. - This sets `close`, `exit` and `quit` to a helpful string. + This sets "close", "exit" and "quit" to a helpful string. """ import __builtin__ __builtin__.close = __builtin__.exit = __builtin__.quit = \ @@ -411,7 +421,7 @@ Platform: %s""" % \ currpos = self.GetCurrentPos() stoppos = self.promptPosEnd # Return (Enter) needs to be ignored in this handler. - if key == wx.WXK_RETURN: + if key in [wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER]: pass elif key in self.autoCompleteKeys: # Usually the dot (period) key activates auto completion. @@ -507,17 +517,17 @@ Platform: %s""" % \ # Return (Enter) is used to submit a command to the # interpreter. - if (not controlDown and not shiftDown and not altDown) and key == wx.WXK_RETURN: + if (not controlDown and not shiftDown and not altDown) and key in [wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER]: if self.CallTipActive(): self.CallTipCancel() self.processLine() # Complete Text (from already typed words) - elif shiftDown and key == wx.WXK_RETURN: + elif shiftDown and key in [wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER]: self.OnShowCompHistory() # Ctrl+Return (Ctrl+Enter) is used to insert a line break. - elif controlDown and key == wx.WXK_RETURN: + elif controlDown and key in [wx.WXK_RETURN, wx.WXK_NUMPAD_ENTER]: if self.CallTipActive(): self.CallTipCancel() if currpos == endpos: @@ -536,6 +546,10 @@ Platform: %s""" % \ else: self.clearCommand() + # Clear the current command + elif key == wx.WXK_BACK and controlDown and shiftDown: + self.clearCommand() + # Increase font size. elif controlDown and key in (ord(']'), wx.WXK_NUMPAD_ADD): dispatcher.send(signal='FontIncrease') @@ -909,6 +923,7 @@ Platform: %s""" % \ if command != '' \ and (len(self.history) == 0 or command != self.history[0]): self.history.insert(0, command) + dispatcher.send(signal="Shell.addHistory", command=command) def write(self, text): """Display text in the shell.