From e7adf45c01b21a584158728de903837d79f82298 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 21 Sep 2010 22:21:36 -0600 Subject: [PATCH] Restart and context menu added to console --- src/calibre/utils/pyconsole/__init__.py | 2 +- src/calibre/utils/pyconsole/console.py | 5 +++-- src/calibre/utils/pyconsole/main.py | 23 ++++++++++++++++++----- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/calibre/utils/pyconsole/__init__.py b/src/calibre/utils/pyconsole/__init__.py index 06a7011132..32eb926143 100644 --- a/src/calibre/utils/pyconsole/__init__.py +++ b/src/calibre/utils/pyconsole/__init__.py @@ -15,7 +15,7 @@ def console_config(): desc='Settings to control the calibre console' c = Config('console', desc) - c.add_opt('theme', default='default', help='The color theme') + c.add_opt('theme', default='native', help='The color theme') return c diff --git a/src/calibre/utils/pyconsole/console.py b/src/calibre/utils/pyconsole/console.py index b0ecce0cb3..164cf4e2ca 100644 --- a/src/calibre/utils/pyconsole/console.py +++ b/src/calibre/utils/pyconsole/console.py @@ -49,7 +49,7 @@ class Prepender(object): # {{{ self.console.cursor_pos = self.opos # }}} -class ThemeMenu(QMenu): +class ThemeMenu(QMenu): # {{{ def __init__(self, parent): QMenu.__init__(self, _('Choose theme (needs restart)')) @@ -62,6 +62,7 @@ class ThemeMenu(QMenu): self.actions = [] for style in alls: ac = self.group.addAction(style) + ac.setCheckable(True) if current == style: ac.setChecked(True) self.actions.append(ac) @@ -71,6 +72,7 @@ class ThemeMenu(QMenu): def set_theme(self, style, *args): prefs['theme'] = style +# }}} class Console(QTextEdit): @@ -163,7 +165,6 @@ class Console(QTextEdit): self.context_menu.popup(event.globalPos()) event.accept() - # Prompt management {{{ @dynamic_property diff --git a/src/calibre/utils/pyconsole/main.py b/src/calibre/utils/pyconsole/main.py index f098ce2ee2..a5a4b42266 100644 --- a/src/calibre/utils/pyconsole/main.py +++ b/src/calibre/utils/pyconsole/main.py @@ -9,7 +9,7 @@ __version__ = '0.1.0' from functools import partial from PyQt4.Qt import QDialog, QToolBar, QStatusBar, QLabel, QFont, Qt, \ - QApplication, QIcon, QVBoxLayout + QApplication, QIcon, QVBoxLayout, QAction from calibre.constants import __appname__, __version__ from calibre.utils.pyconsole.console import Console @@ -19,8 +19,9 @@ class MainWindow(QDialog): def __init__(self, default_status_msg=_('Welcome to') + ' ' + __appname__+' console', parent=None): - QDialog.__init__(self, parent) + + self.restart_requested = False self.l = QVBoxLayout() self.setLayout(self.l) @@ -51,14 +52,26 @@ class MainWindow(QDialog): self.setWindowTitle(__appname__ + ' console') self.setWindowIcon(QIcon(I('console.png'))) + self.restart_action = QAction(_('Restart'), self) + self.restart_action.setShortcut(_('Ctrl+R')) + self.addAction(self.restart_action) + self.restart_action.triggered.connect(self.restart) + self.console.context_menu.addAction(self.restart_action) + + def restart(self): + self.restart_requested = True + self.reject() def main(): QApplication.setApplicationName(__appname__+' console') QApplication.setOrganizationName('Kovid Goyal') app = QApplication([]) - m = MainWindow() - m.show() - app.exec_() + app + while True: + m = MainWindow() + m.exec_() + if not m.restart_requested: + break if __name__ == '__main__':