From cb44b9adcd3972b204968a674d1910ab40641f1f Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 4 Oct 2017 09:13:18 +0200 Subject: [PATCH] Add a context menu with a "View" action to the book table. --- src/calibre/gui2/dialogs/quickview.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py index 5c27930222..d59daff80e 100644 --- a/src/calibre/gui2/dialogs/quickview.py +++ b/src/calibre/gui2/dialogs/quickview.py @@ -5,10 +5,11 @@ __docformat__ = 'restructuredtext en' import traceback +from functools import partial from PyQt5.Qt import ( Qt, QDialog, QAbstractItemView, QTableWidgetItem, QIcon, QListWidgetItem, - QCoreApplication, QEvent, QObject, QApplication, pyqtSignal, QByteArray) + QCoreApplication, QEvent, QObject, QApplication, pyqtSignal, QByteArray, QMenu) from calibre.customize.ui import find_plugin from calibre.gui2 import gprefs @@ -260,6 +261,21 @@ class Quickview(QDialog, Ui_Quickview): self.refresh_button.setEnabled(False) self.lock_qv.stateChanged.connect(self.lock_qv_changed) + self.view_icon = QIcon(I('view.png')) + self.view_plugin = self.gui.iactions['View'] + self.books_table.setContextMenuPolicy(Qt.CustomContextMenu) + self.books_table.customContextMenuRequested.connect(self.show_context_menu) + + def show_context_menu(self, point): + index = self.books_table.indexAt(point) + item = self.books_table.item(index.row(), 0) + book_id = int(item.data(Qt.UserRole)) + self.context_menu = QMenu(self) + self.context_menu.addAction(self.view_icon, _('View'), + partial(self.view_plugin._view_calibre_books, [book_id])) + self.context_menu.popup(self.books_table.mapToGlobal(point)) + return True + def lock_qv_changed(self, state): self.refresh_button.setEnabled(state)