From a0d9b093da93bd29dd3036290d0e600b0583cd22 Mon Sep 17 00:00:00 2001 From: John Schember Date: Sat, 2 May 2009 14:27:00 -0400 Subject: [PATCH 1/2] Move toggle check into toggle if. --- src/calibre/gui2/dialogs/config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/dialogs/config.py b/src/calibre/gui2/dialogs/config.py index 1b2a2b8702..b3b36db880 100644 --- a/src/calibre/gui2/dialogs/config.py +++ b/src/calibre/gui2/dialogs/config.py @@ -525,11 +525,11 @@ class ConfigDialog(QDialog, Ui_Dialog): index = self.plugin_view.currentIndex() if index.isValid(): plugin = self._plugin_model.index_to_plugin(index) - if not plugin.can_be_disabled: - error_dialog(self,_('Plugin cannot be disabled'), - _('The plugin: %s cannot be disabled')%plugin.name).exec_() - return if op == 'toggle': + if not plugin.can_be_disabled: + error_dialog(self,_('Plugin cannot be disabled'), + _('The plugin: %s cannot be disabled')%plugin.name).exec_() + return if is_disabled(plugin): enable_plugin(plugin) else: From bf6ed98e35f871e3d5ee8ac1b2afed228a91732a Mon Sep 17 00:00:00 2001 From: John Schember Date: Sat, 2 May 2009 14:57:19 -0400 Subject: [PATCH 2/2] Device interfaces can be configured in GUI. --- src/calibre/devices/usbms/deviceconfig.py | 5 ++-- src/calibre/gui2/device_drivers/__init__.py | 0 src/calibre/gui2/dialogs/config.py | 30 ++++++++++++++++----- 3 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 src/calibre/gui2/device_drivers/__init__.py diff --git a/src/calibre/devices/usbms/deviceconfig.py b/src/calibre/devices/usbms/deviceconfig.py index 999f2ea1b7..50d548b823 100644 --- a/src/calibre/devices/usbms/deviceconfig.py +++ b/src/calibre/devices/usbms/deviceconfig.py @@ -16,18 +16,19 @@ class DeviceConfig(object): c.add_opt('format_map', default=cls.FORMATS, help=cls.HELP_MESSAGE) return c + @classmethod def _configProxy(cls): return ConfigProxy(cls._config()) @classmethod def config_widget(cls): from calibre.gui2.device_drivers.configwidget import ConfigWidget - cw = ConfigWidget(cls.configProxy(cls._config()), cls.FORMATS) + cw = ConfigWidget(cls._configProxy(), cls.FORMATS) return cw @classmethod def save_settings(cls, config_widget): - cls.configProxy(cls._config())['format_map'] = config_widget.format_map() + cls._configProxy()['format_map'] = config_widget.format_map() @classmethod def settings(cls): diff --git a/src/calibre/gui2/device_drivers/__init__.py b/src/calibre/gui2/device_drivers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/calibre/gui2/dialogs/config.py b/src/calibre/gui2/dialogs/config.py index b3b36db880..0de7826212 100644 --- a/src/calibre/gui2/dialogs/config.py +++ b/src/calibre/gui2/dialogs/config.py @@ -7,7 +7,8 @@ from PyQt4.Qt import QDialog, QMessageBox, QListWidgetItem, QIcon, \ QDesktopServices, QVBoxLayout, QLabel, QPlainTextEdit, \ QStringListModel, QAbstractItemModel, QFont, \ SIGNAL, QTimer, Qt, QSize, QVariant, QUrl, \ - QModelIndex, QInputDialog, QAbstractTableModel + QModelIndex, QInputDialog, QAbstractTableModel, \ + QDialogButtonBox from calibre.constants import islinux, iswindows from calibre.gui2.dialogs.config_ui import Ui_Dialog @@ -540,11 +541,28 @@ class ConfigDialog(QDialog, Ui_Dialog): info_dialog(self, _('Plugin not customizable'), _('Plugin: %s does not need customization')%plugin.name).exec_() return - help = plugin.customization_help() - text, ok = QInputDialog.getText(self, _('Customize %s')%plugin.name, - help) - if ok: - customize_plugin(plugin, unicode(text)) + if hasattr(plugin, 'config_widget'): + config_dialog = QDialog(self) + button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + + config_dialog.connect(button_box, SIGNAL('accepted()'), config_dialog.accept) + config_dialog.connect(button_box, SIGNAL('rejected()'), config_dialog.reject) + + config_widget = plugin.config_widget() + v = QVBoxLayout(config_dialog) + v.addWidget(config_widget) + v.addWidget(button_box) + config_dialog.exec_() + + if config_dialog.result() == QDialog.Accepted: + plugin.save_settings(config_widget) + self._plugin_model.refresh_plugin(plugin) + else: + help = plugin.customization_help() + text, ok = QInputDialog.getText(self, _('Customize %s')%plugin.name, + help) + if ok: + customize_plugin(plugin, unicode(text)) self._plugin_model.refresh_plugin(plugin) if op == 'remove': if remove_plugin(plugin):