From 388f2a01315d2617423e8d52524508b4cb8c7f6a Mon Sep 17 00:00:00 2001 From: kiwidude Date: Fri, 17 Jun 2011 17:25:24 +0100 Subject: [PATCH] Add Select default and Set as default buttons to Configure metadata download screen to allow a user defined subset of fields to quickly restore to --- src/calibre/ebooks/metadata/sources/base.py | 1 + .../gui2/preferences/metadata_sources.py | 17 +++++++++++++++++ .../gui2/preferences/metadata_sources.ui | 14 ++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/src/calibre/ebooks/metadata/sources/base.py b/src/calibre/ebooks/metadata/sources/base.py index 0c318727e0..2d7bb73e9c 100644 --- a/src/calibre/ebooks/metadata/sources/base.py +++ b/src/calibre/ebooks/metadata/sources/base.py @@ -21,6 +21,7 @@ from calibre.ebooks.metadata import check_isbn msprefs = JSONConfig('metadata_sources/global.json') msprefs.defaults['txt_comments'] = False msprefs.defaults['ignore_fields'] = [] +msprefs.defaults['user_default_ignore_fields'] = [] msprefs.defaults['max_tags'] = 20 msprefs.defaults['wait_after_first_identify_result'] = 30 # seconds msprefs.defaults['wait_after_first_cover_result'] = 60 # seconds diff --git a/src/calibre/gui2/preferences/metadata_sources.py b/src/calibre/gui2/preferences/metadata_sources.py index 961d0dd0a4..ae882ce255 100644 --- a/src/calibre/gui2/preferences/metadata_sources.py +++ b/src/calibre/gui2/preferences/metadata_sources.py @@ -224,6 +224,20 @@ class FieldsModel(QAbstractListModel): # {{{ Qt.Unchecked]) msprefs['ignore_fields'] = list(ignored_fields.union(changed)) + def user_default_state(self, field): + return (Qt.Unchecked if field in msprefs.get('user_default_ignore_fields',[]) + else Qt.Checked) + + def select_user_defaults(self): + self.overrides = dict([(f, self.user_default_state(f)) for f in self.fields]) + self.reset() + + def commit_user_defaults(self): + default_ignored_fields = set([x for x in msprefs['user_default_ignore_fields'] if x not in + self.overrides]) + changed = set([k for k, v in self.overrides.iteritems() if v == + Qt.Unchecked]) + msprefs['user_default_ignore_fields'] = list(default_ignored_fields.union(changed)) # }}} @@ -286,6 +300,9 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.select_all_button.clicked.connect(self.changed_signal) self.clear_all_button.clicked.connect(self.fields_model.clear_all) self.clear_all_button.clicked.connect(self.changed_signal) + self.select_default_button.clicked.connect(self.fields_model.select_user_defaults) + self.select_default_button.clicked.connect(self.changed_signal) + self.set_as_default_button.clicked.connect(self.fields_model.commit_user_defaults) def configure_plugin(self): for index in self.sources_view.selectionModel().selectedRows(): diff --git a/src/calibre/gui2/preferences/metadata_sources.ui b/src/calibre/gui2/preferences/metadata_sources.ui index ff161654dd..38f67167cb 100644 --- a/src/calibre/gui2/preferences/metadata_sources.ui +++ b/src/calibre/gui2/preferences/metadata_sources.ui @@ -102,6 +102,20 @@ + + + + &Select default + + + + + + + &Set as default + + +