From fdd839af7cafa964b26cc9481cc55a7d5b65b16a Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 21 Sep 2010 22:46:54 -0600 Subject: [PATCH] Ctrl+Home and Ctrl+End now work --- src/calibre/utils/pyconsole/console.py | 23 ++++++++++++++++------- src/calibre/utils/pyconsole/main.py | 2 +- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/calibre/utils/pyconsole/console.py b/src/calibre/utils/pyconsole/console.py index aa0ff84d77..81169140cd 100644 --- a/src/calibre/utils/pyconsole/console.py +++ b/src/calibre/utils/pyconsole/console.py @@ -9,7 +9,7 @@ import sys, textwrap, traceback, StringIO from functools import partial from PyQt4.Qt import QTextEdit, Qt, QTextFrameFormat, pyqtSignal, \ - QCoreApplication, QColor, QPalette, QMenu, QActionGroup + QApplication, QColor, QPalette, QMenu, QActionGroup from pygments.lexers import PythonLexer, PythonTracebackLexer from pygments.styles import get_all_styles @@ -278,7 +278,7 @@ class Console(QTextEdit): except: prints(tb, end='') self.ensureCursorVisible() - QCoreApplication.processEvents() + QApplication.processEvents() def show_output(self, raw): def do_show(): @@ -296,7 +296,7 @@ class Console(QTextEdit): else: do_show() self.ensureCursorVisible() - QCoreApplication.processEvents() + QApplication.processEvents() # }}} @@ -360,14 +360,23 @@ class Console(QTextEdit): def home_pressed(self): if self.prompt_frame is not None: - c = self.cursor - c.movePosition(c.StartOfLine) - c.movePosition(c.NextCharacter, n=self.prompt_len) - self.setTextCursor(c) + mods = QApplication.keyboardModifiers() + ctrl = bool(int(mods & Qt.CTRL)) + if ctrl: + self.cursor_pos = (0, self.prompt_len) + else: + c = self.cursor + c.movePosition(c.StartOfLine) + c.movePosition(c.NextCharacter, n=self.prompt_len) + self.setTextCursor(c) self.ensureCursorVisible() def end_pressed(self): if self.prompt_frame is not None: + mods = QApplication.keyboardModifiers() + ctrl = bool(int(mods & Qt.CTRL)) + if ctrl: + self.cursor_pos = (len(list(self.prompt()))-1, self.prompt_len) c = self.cursor c.movePosition(c.EndOfLine) self.setTextCursor(c) diff --git a/src/calibre/utils/pyconsole/main.py b/src/calibre/utils/pyconsole/main.py index a5a4b42266..a708ca1652 100644 --- a/src/calibre/utils/pyconsole/main.py +++ b/src/calibre/utils/pyconsole/main.py @@ -52,7 +52,7 @@ class MainWindow(QDialog): self.setWindowTitle(__appname__ + ' console') self.setWindowIcon(QIcon(I('console.png'))) - self.restart_action = QAction(_('Restart'), self) + self.restart_action = QAction(_('Restart console'), self) self.restart_action.setShortcut(_('Ctrl+R')) self.addAction(self.restart_action) self.restart_action.triggered.connect(self.restart)