From a3efcce704698d240de3cea1835db76a16bd0342 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 24 Nov 2020 14:28:16 +0530 Subject: [PATCH] Book details window: Allow opening the edit metadata window using either the keyboard shortcut or the context menu. Fixes #1903403 [[Enhancement] Allow to open Edit metadata screen from the Book details window](https://bugs.launchpad.net/calibre/+bug/1903403) --- src/calibre/gui2/book_details.py | 7 ++++++- src/calibre/gui2/dialogs/book_info.py | 19 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index 951e8949dd..ac63011b36 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -367,10 +367,15 @@ def details_context_menu_event(view, ev, book_info, add_popup_action=False): for ac in tuple(menu.actions()): if not ac.isEnabled(): menu.removeAction(ac) + menu.addSeparator() if add_popup_action: - menu.addSeparator() ac = menu.addAction(_('Open the Book details window')) ac.triggered.connect(book_info.show_book_info) + else: + def open_edit_metadata(): + from calibre.gui2.ui import get_gui + get_gui().iactions['Edit Metadata'].qaction.trigger() + menu.addAction(_('Open the Edit metadata window'), open_edit_metadata) if len(menu.actions()) > 0: menu.exec_(ev.globalPos()) # }}} diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index 1078891119..5ab110f8b1 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -3,12 +3,11 @@ import textwrap - from PyQt5.Qt import ( - QBrush, QCheckBox, QCoreApplication, QDialog, QGridLayout, QHBoxLayout, QIcon, - QKeySequence, QLabel, QListView, QModelIndex, QPalette, QPixmap, QPushButton, - QShortcut, QSize, QSplitter, Qt, QTimer, QToolButton, QVBoxLayout, QWidget, - pyqtSignal, QApplication + QAction, QApplication, QBrush, QCheckBox, QCoreApplication, QDialog, QGridLayout, + QHBoxLayout, QIcon, QKeySequence, QLabel, QListView, QModelIndex, QPalette, + QPixmap, QPushButton, QShortcut, QSize, QSplitter, Qt, QTimer, QToolButton, + QVBoxLayout, QWidget, pyqtSignal ) from calibre import fit_image @@ -51,7 +50,9 @@ class Configure(Dialog): Dialog.__init__(self, _('Configure the Book details window'), 'book-details-popup-conf', parent) def setup_ui(self): - from calibre.gui2.preferences.look_feel import DisplayedFields, move_field_up, move_field_down + from calibre.gui2.preferences.look_feel import ( + DisplayedFields, move_field_down, move_field_up + ) self.l = QVBoxLayout(self) self.field_display_order = fdo = QListView(self) self.model = DisplayedFields(self.db, fdo, pref_name='popup_book_display_fields') @@ -200,6 +201,12 @@ class BookInfo(QDialog): self.splitter.restoreState(saved_layout[1]) except Exception: pass + from calibre.gui2.ui import get_gui + ema = get_gui().iactions['Edit Metadata'].menuless_qaction + a = self.ema = QAction('edit metadata', self) + a.setShortcut(ema.shortcut()) + self.addAction(a) + a.triggered.connect(ema.trigger) def configure(self): d = Configure(get_gui().current_db, self)