From 6be22faa780db8b16f7af0fe14aafebbc311629e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 14 Dec 2022 08:13:39 +0530 Subject: [PATCH] Fix #1999307 [Enhancement Request: MDE editor: Quick toggle for metadata fields to download](https://bugs.launchpad.net/calibre/+bug/1999307) --- src/calibre/gui2/preferences/metadata_sources.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/preferences/metadata_sources.py b/src/calibre/gui2/preferences/metadata_sources.py index d37de269b5..4bba974884 100644 --- a/src/calibre/gui2/preferences/metadata_sources.py +++ b/src/calibre/gui2/preferences/metadata_sources.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' from operator import attrgetter from qt.core import ( QAbstractListModel, QAbstractTableModel, QDialogButtonBox, QFrame, QIcon, QLabel, - QScrollArea, Qt, QVBoxLayout, QWidget, pyqtSignal, QDialog + QScrollArea, Qt, QVBoxLayout, QWidget, pyqtSignal, QDialog, QMenu, QCursor ) from calibre.customize.ui import ( @@ -320,6 +320,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.fields_model = FieldsModel(self) self.fields_view.setModel(self.fields_model) + self.fields_view.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) + self.fields_view.customContextMenuRequested.connect(self.context_menu) self.fields_model.dataChanged.connect(self.changed_signal) self.select_all_button.clicked.connect(self.fields_model.select_all) @@ -336,6 +338,14 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): l.setStretch(0, 1) l.setStretch(1, 1) + def context_menu(self, pos): + m = QMenu(self) + m.addAction(_('Select all'), self.fields_model.select_all) + m.addAction(_('Select none'), self.fields_model.clear_all) + m.addAction(_('Set as default'), self.fields_model.commit_user_defaults) + m.addAction(_('Select default'), self.fields_model.select_user_defaults) + m.exec(QCursor.pos()) + def configure_plugin(self): for index in self.sources_view.selectionModel().selectedRows(): plugin = self.sources_model.data(index, Qt.ItemDataRole.UserRole)