This commit is contained in:
Kovid Goyal 2011-04-12 23:24:55 -06:00
parent ec583f232d
commit 9bd44ed078
5 changed files with 35 additions and 3 deletions

View File

@ -181,6 +181,10 @@ class Source(Plugin):
#: construct the configuration widget for this plugin #: construct the configuration widget for this plugin
options = () options = ()
#: A string that is displayed at the top of the config widget for this
#: plugin
config_help_message = None
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Plugin.__init__(self, *args, **kwargs) Plugin.__init__(self, *args, **kwargs)

View File

@ -39,6 +39,12 @@ class ISBNDB(Source):
'at isbndb.com and get an access key.')), 'at isbndb.com and get an access key.')),
) )
config_help_message = '<p>'+_('To use metadata from isbndb.com you must sign'
' up for a free account and get an isbndb key and enter it below.'
' Instructions to get the key are '
'<a href="http://isbndb.com/docs/api/30-keys.html">here</a>.')
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
Source.__init__(self, *args, **kwargs) Source.__init__(self, *args, **kwargs)

View File

@ -56,7 +56,12 @@ class ConfigWidget(QWidget):
self.setLayout(l) self.setLayout(l)
self.gb = QGroupBox(_('Downloaded metadata fields'), self) self.gb = QGroupBox(_('Downloaded metadata fields'), self)
l.addWidget(self.gb, 0, 0, 1, 2) if plugin.config_help_message:
self.pchm = QLabel(plugin.config_help_message)
self.pchm.setWordWrap(True)
self.pchm.setOpenExternalLinks(True)
l.addWidget(self.pchm, 0, 0, 1, 2)
l.addWidget(self.gb, l.rowCount(), 0, 1, 2)
self.gb.l = QGridLayout() self.gb.l = QGridLayout()
self.gb.setLayout(self.gb.l) self.gb.setLayout(self.gb.l)
self.fields_view = v = QListView(self) self.fields_view = v = QListView(self)
@ -81,7 +86,7 @@ class ConfigWidget(QWidget):
widget.setValue(val) widget.setValue(val)
elif opt.type == 'string': elif opt.type == 'string':
widget = QLineEdit(self) widget = QLineEdit(self)
widget.setText(val) widget.setText(val if val else '')
elif opt.type == 'bool': elif opt.type == 'bool':
widget = QCheckBox(opt.label, self) widget = QCheckBox(opt.label, self)
widget.setChecked(bool(val)) widget.setChecked(bool(val))

View File

@ -10,7 +10,7 @@ __docformat__ = 'restructuredtext en'
from operator import attrgetter from operator import attrgetter
from PyQt4.Qt import (QAbstractTableModel, Qt, QAbstractListModel, QWidget, from PyQt4.Qt import (QAbstractTableModel, Qt, QAbstractListModel, QWidget,
pyqtSignal, QVBoxLayout, QDialogButtonBox, QFrame, QLabel) pyqtSignal, QVBoxLayout, QDialogButtonBox, QFrame, QLabel, QIcon)
from calibre.gui2.preferences import ConfigWidgetBase, test_widget from calibre.gui2.preferences import ConfigWidgetBase, test_widget
from calibre.gui2.preferences.metadata_sources_ui import Ui_Form from calibre.gui2.preferences.metadata_sources_ui import Ui_Form
@ -67,6 +67,13 @@ class SourcesModel(QAbstractTableModel): # {{{
return self.enabled_overrides.get(plugin, orig) return self.enabled_overrides.get(plugin, orig)
elif role == Qt.UserRole: elif role == Qt.UserRole:
return plugin return plugin
elif (role == Qt.DecorationRole and col == 0 and not
plugin.is_configured()):
return QIcon(I('list_remove.png'))
elif role == Qt.ToolTipRole:
if plugin.is_configured():
return _('This source is configured and ready to go')
return _('This source needs configuration')
return NONE return NONE
def setData(self, index, val, role): def setData(self, index, val, role):

View File

@ -48,6 +48,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Sources with a red X next to their names must be configured before they will be used. </string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="configure_plugin_button"> <widget class="QPushButton" name="configure_plugin_button">
<property name="text"> <property name="text">