diff --git a/src/calibre/gui2/preferences/metadata_sources.py b/src/calibre/gui2/preferences/metadata_sources.py
index f487051d07..05ff23987d 100644
--- a/src/calibre/gui2/preferences/metadata_sources.py
+++ b/src/calibre/gui2/preferences/metadata_sources.py
@@ -190,7 +190,15 @@ class FieldsModel(QAbstractListModel): # {{{
return ans | Qt.ItemIsUserCheckable
def restore_defaults(self):
- self.overrides = dict([(f, self.state(f, True)) for f in self.fields])
+ self.overrides = dict([(f, self.state(f, Qt.Checked)) for f in self.fields])
+ self.reset()
+
+ def select_all(self):
+ self.overrides = dict([(f, Qt.Checked) for f in self.fields])
+ self.reset()
+
+ def clear_all(self):
+ self.overrides = dict([(f, Qt.Unchecked) for f in self.fields])
self.reset()
def setData(self, index, val, role):
@@ -273,6 +281,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.fields_view.setModel(self.fields_model)
self.fields_model.dataChanged.connect(self.changed_signal)
+ self.select_all_button.clicked.connect(self.fields_model.select_all)
+ self.clear_all_button.clicked.connect(self.fields_model.clear_all)
+
def configure_plugin(self):
for index in self.sources_view.selectionModel().selectedRows():
plugin = self.sources_model.data(index, Qt.UserRole)
diff --git a/src/calibre/gui2/preferences/metadata_sources.ui b/src/calibre/gui2/preferences/metadata_sources.ui
index e46069b036..ff161654dd 100644
--- a/src/calibre/gui2/preferences/metadata_sources.ui
+++ b/src/calibre/gui2/preferences/metadata_sources.ui
@@ -77,8 +77,8 @@
Downloaded metadata fields
-
- -
+
+
-
If you uncheck any fields, metadata for those fields will not be downloaded
@@ -88,6 +88,20 @@
+ -
+
+
+ &Select all
+
+
+
+ -
+
+
+ &Clear all
+
+
+