From a5e071d0917dcde5d220e9c6df656cebadb47278 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 29 Nov 2013 15:03:06 +0530 Subject: [PATCH] Wire up the preferences dialog --- src/calibre/gui2/tweak_book/boss.py | 4 +++- src/calibre/gui2/tweak_book/preferences.py | 23 +++++++++++++++++++++- src/calibre/gui2/tweak_book/ui.py | 4 ++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/tweak_book/boss.py b/src/calibre/gui2/tweak_book/boss.py index 6147bd0d43..8c483ca134 100644 --- a/src/calibre/gui2/tweak_book/boss.py +++ b/src/calibre/gui2/tweak_book/boss.py @@ -31,6 +31,7 @@ from calibre.gui2.tweak_book.save import SaveManager from calibre.gui2.tweak_book.preview import parse_worker, font_cache from calibre.gui2.tweak_book.toc import TOCEditor from calibre.gui2.tweak_book.editor import editor_from_syntax, syntax_from_mime +from calibre.gui2.tweak_book.preferences import Preferences def get_container(*args, **kwargs): kwargs['tweak_mode'] = True @@ -64,7 +65,8 @@ class Boss(QObject): self.gui.preview.split_requested.connect(self.split_requested) def preferences(self): - pass + p = Preferences(self.gui) + p.exec_() def mkdtemp(self, prefix=''): self.container_count += 1 diff --git a/src/calibre/gui2/tweak_book/preferences.py b/src/calibre/gui2/tweak_book/preferences.py index 94fa51f230..def01c51a3 100644 --- a/src/calibre/gui2/tweak_book/preferences.py +++ b/src/calibre/gui2/tweak_book/preferences.py @@ -19,17 +19,28 @@ class Preferences(QDialog): QDialog.__init__(self, gui) self.l = l = QGridLayout(self) self.setLayout(l) + self.setWindowTitle(_('Preferences for Tweak Book')) + self.setWindowIcon(QIcon(I('config.png'))) self.stacks = QStackedWidget(self) l.addWidget(self.stacks, 0, 1, 1, 1) self.categories_list = cl = QListWidget(self) cl.currentRowChanged.connect(self.stacks.setCurrentIndex) + cl.clearPropertyFlags() + cl.setViewMode(cl.IconMode) + cl.setFlow(cl.TopToBottom) + cl.setMovement(cl.Static) + cl.setWrapping(False) + cl.setSpacing(10) + cl.setWordWrap(True) l.addWidget(cl, 0, 0, 1, 1) self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) bb.accepted.connect(self.accept) bb.rejected.connect(self.reject) + self.rdb = b = bb.addButton(_('Restore all defaults'), bb.ResetRole) + b.clicked.connect(self.restore_all_defaults) l.addWidget(bb, 1, 0, 1, 2) self.resize(800, 600) @@ -40,16 +51,26 @@ class Preferences(QDialog): self.keyboard_panel = ShortcutConfig(self) self.keyboard_panel.initialize(gui.keyboard) - for name, icon, panel in [(_('Keyboard'), 'keyboard.png', 'keyboard')]: + for name, icon, panel in [(_('Keyboard Shortcuts'), 'keyboard-prefs.png', 'keyboard')]: i = QListWidgetItem(QIcon(I(icon)), name, cl) cl.addItem(i) self.stacks.addWidget(getattr(self, panel + '_panel')) cl.setCurrentRow(0) cl.item(0).setSelected(True) + cl.setMaximumWidth(cl.sizeHintForColumn(0) + 30) + l.setColumnStretch(1, 10) + + def restore_all_defaults(self): + for i in xrange(self.stacks.count()): + w = self.stacks.widget(i) + w.restore_defaults() def accept(self): tprefs.set('preferences_geom', bytearray(self.saveGeometry())) + for i in xrange(self.stacks.count()): + w = self.stacks.widget(i) + w.commit() QDialog.accept(self) def reject(self): diff --git a/src/calibre/gui2/tweak_book/ui.py b/src/calibre/gui2/tweak_book/ui.py index fb117a740d..1e21e142c9 100644 --- a/src/calibre/gui2/tweak_book/ui.py +++ b/src/calibre/gui2/tweak_book/ui.py @@ -131,7 +131,7 @@ class Main(MainWindow): self.container = None self.current_metadata = None self.blocking_job = BlockingJob(self) - self.keyboard = KeyboardManager() + self.keyboard = KeyboardManager(self, config_name='shortcuts/tweak_book') self.central = Central(self) self.setCentralWidget(self.central) @@ -173,7 +173,7 @@ class Main(MainWindow): if isinstance(keys, type('')): keys = (keys,) self.keyboard.register_shortcut( - sid, unicode(ac.text()), default_keys=keys, description=description, action=ac, group=group) + sid, unicode(ac.text()).replace('&', ''), default_keys=keys, description=description, action=ac, group=group) self.addAction(ac) return ac