Wire up the preferences dialog

This commit is contained in:
Kovid Goyal 2013-11-29 15:03:06 +05:30
parent f8c496a924
commit a5e071d091
3 changed files with 27 additions and 4 deletions

View File

@ -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.preview import parse_worker, font_cache
from calibre.gui2.tweak_book.toc import TOCEditor 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.editor import editor_from_syntax, syntax_from_mime
from calibre.gui2.tweak_book.preferences import Preferences
def get_container(*args, **kwargs): def get_container(*args, **kwargs):
kwargs['tweak_mode'] = True kwargs['tweak_mode'] = True
@ -64,7 +65,8 @@ class Boss(QObject):
self.gui.preview.split_requested.connect(self.split_requested) self.gui.preview.split_requested.connect(self.split_requested)
def preferences(self): def preferences(self):
pass p = Preferences(self.gui)
p.exec_()
def mkdtemp(self, prefix=''): def mkdtemp(self, prefix=''):
self.container_count += 1 self.container_count += 1

View File

@ -19,17 +19,28 @@ class Preferences(QDialog):
QDialog.__init__(self, gui) QDialog.__init__(self, gui)
self.l = l = QGridLayout(self) self.l = l = QGridLayout(self)
self.setLayout(l) self.setLayout(l)
self.setWindowTitle(_('Preferences for Tweak Book'))
self.setWindowIcon(QIcon(I('config.png')))
self.stacks = QStackedWidget(self) self.stacks = QStackedWidget(self)
l.addWidget(self.stacks, 0, 1, 1, 1) l.addWidget(self.stacks, 0, 1, 1, 1)
self.categories_list = cl = QListWidget(self) self.categories_list = cl = QListWidget(self)
cl.currentRowChanged.connect(self.stacks.setCurrentIndex) 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) l.addWidget(cl, 0, 0, 1, 1)
self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
bb.accepted.connect(self.accept) bb.accepted.connect(self.accept)
bb.rejected.connect(self.reject) 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) l.addWidget(bb, 1, 0, 1, 2)
self.resize(800, 600) self.resize(800, 600)
@ -40,16 +51,26 @@ class Preferences(QDialog):
self.keyboard_panel = ShortcutConfig(self) self.keyboard_panel = ShortcutConfig(self)
self.keyboard_panel.initialize(gui.keyboard) 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) i = QListWidgetItem(QIcon(I(icon)), name, cl)
cl.addItem(i) cl.addItem(i)
self.stacks.addWidget(getattr(self, panel + '_panel')) self.stacks.addWidget(getattr(self, panel + '_panel'))
cl.setCurrentRow(0) cl.setCurrentRow(0)
cl.item(0).setSelected(True) 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): def accept(self):
tprefs.set('preferences_geom', bytearray(self.saveGeometry())) tprefs.set('preferences_geom', bytearray(self.saveGeometry()))
for i in xrange(self.stacks.count()):
w = self.stacks.widget(i)
w.commit()
QDialog.accept(self) QDialog.accept(self)
def reject(self): def reject(self):

View File

@ -131,7 +131,7 @@ class Main(MainWindow):
self.container = None self.container = None
self.current_metadata = None self.current_metadata = None
self.blocking_job = BlockingJob(self) self.blocking_job = BlockingJob(self)
self.keyboard = KeyboardManager() self.keyboard = KeyboardManager(self, config_name='shortcuts/tweak_book')
self.central = Central(self) self.central = Central(self)
self.setCentralWidget(self.central) self.setCentralWidget(self.central)
@ -173,7 +173,7 @@ class Main(MainWindow):
if isinstance(keys, type('')): if isinstance(keys, type('')):
keys = (keys,) keys = (keys,)
self.keyboard.register_shortcut( 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) self.addAction(ac)
return ac return ac