diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py index b9e225caa5..3be6661ad2 100644 --- a/src/calibre/customize/builtins.py +++ b/src/calibre/customize/builtins.py @@ -793,9 +793,18 @@ class Plugins(PreferencesPlugin): name_order = 1 config_widget = 'calibre.gui2.preferences.plugins' +class Tweaks(PreferencesPlugin): + name = 'Tweaks' + gui_name = _('Tweaks') + category = 'Advanced' + gui_category = _('Advanced') + category_order = 5 + name_order = 2 + config_widget = 'calibre.gui2.preferences.tweaks' + plugins += [LookAndFeel, Behavior, Columns, Toolbar, InputOptions, CommonOptions, OutputOptions, Adding, Saving, Sending, Email, Server, - Plugins] + Plugins, Tweaks] #}}} diff --git a/src/calibre/gui2/preferences/tweaks.py b/src/calibre/gui2/preferences/tweaks.py new file mode 100644 index 0000000000..62bc87c490 --- /dev/null +++ b/src/calibre/gui2/preferences/tweaks.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai + +__license__ = 'GPL v3' +__copyright__ = '2010, Kovid Goyal ' +__docformat__ = 'restructuredtext en' + +from calibre.gui2.preferences import ConfigWidgetBase, test_widget, AbortCommit +from calibre.gui2.preferences.tweaks_ui import Ui_Form +from calibre.gui2 import error_dialog +from calibre.utils.config import read_raw_tweaks, write_tweaks + + +class ConfigWidget(ConfigWidgetBase, Ui_Form): + + def genesis(self, gui): + self.gui = gui + self.current_tweaks.textChanged.connect(self.changed) + + def changed(self, *args): + self.changed_signal.emit() + + def initialize(self): + deft, curt = read_raw_tweaks() + self.current_tweaks.blockSignals(True) + self.current_tweaks.setPlainText(curt.decode('utf-8')) + self.current_tweaks.blockSignals(False) + + self.default_tweaks.setPlainText(deft.decode('utf-8')) + + def restore_defaults(self): + ConfigWidgetBase.restore_defaults(self) + deft, curt = read_raw_tweaks() + self.current_tweaks.setPlainText(deft.decode('utf-8')) + + + def commit(self): + raw = unicode(self.current_tweaks.toPlainText()).encode('utf-8') + try: + exec raw + except: + import traceback + error_dialog(self, _('Invalid tweaks'), + _('The tweaks you entered are invalid, try resetting the' + ' tweaks to default and changing them one by one until' + ' you find the invalid setting.'), + det_msg=traceback.format_exc(), show=True) + raise AbortCommit('abort') + write_tweaks(raw) + return ConfigWidgetBase.commit(self) + + +if __name__ == '__main__': + from PyQt4.Qt import QApplication + app = QApplication([]) + test_widget('Advanced', 'Tweaks') + diff --git a/src/calibre/gui2/preferences/tweaks.ui b/src/calibre/gui2/preferences/tweaks.ui new file mode 100644 index 0000000000..3234f4be9b --- /dev/null +++ b/src/calibre/gui2/preferences/tweaks.ui @@ -0,0 +1,59 @@ + + + Form + + + + 0 + 0 + 660 + 351 + + + + Form + + + + + + Values for the tweaks are shown below. Edit them to change the behavior of calibre + + + true + + + + + + + All available tweaks + + + + + + true + + + + + + + + + + &Current tweaks + + + + + + + + + + + + +