Device interfaces can be configured in GUI.

This commit is contained in:
John Schember 2009-05-02 14:57:19 -04:00
parent a0d9b093da
commit bf6ed98e35
3 changed files with 27 additions and 8 deletions

View File

@ -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):

View File

@ -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,6 +541,23 @@ class ConfigDialog(QDialog, Ui_Dialog):
info_dialog(self, _('Plugin not customizable'),
_('Plugin: %s does not need customization')%plugin.name).exec_()
return
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)