From 82ecffb07b620369bcb3a79cd4df119bdb4d050d Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 22 Apr 2023 15:12:51 +0100 Subject: [PATCH] Enhancement #2017318: Open book details window from Quickview. Opens a locked window. --- src/calibre/gui2/dialogs/book_info.py | 20 ++++++++++++++++---- src/calibre/gui2/dialogs/quickview.py | 9 +++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py index eea83a7d26..b8401535ae 100644 --- a/src/calibre/gui2/dialogs/book_info.py +++ b/src/calibre/gui2/dialogs/book_info.py @@ -211,10 +211,11 @@ class BookInfo(QDialog): if library_path is not None: self.view = None db = get_gui().library_broker.get_library(library_path) - if not db.new_api.has_id(book_id): + dbn = db.new_api + if not dbn.has_id(book_id): raise ValueError(_("Book {} doesn't exist").format(book_id)) - mi = db.new_api.get_metadata(book_id, get_cover=False) - mi.cover_data = [None, db.new_api.cover(book_id, as_image=True)] + mi = dbn.get_metadata(book_id, get_cover=False) + mi.cover_data = [None, dbn.cover(book_id, as_image=True)] mi.path = None mi.format_files = dict() mi.formats = list() @@ -227,7 +228,18 @@ class BookInfo(QDialog): if dialog_number == DialogNumbers.Slaved: self.slave_connected = True self.view.model().new_bookdisplay_data.connect(self.slave) - self.refresh(row) + if book_id: + db = get_gui().current_db + dbn = db.new_api + mi = dbn.get_metadata(book_id, get_cover=False) + mi.cover_data = [None, dbn.cover(book_id, as_image=True)] + mi.path = dbn._field_for('path', book_id) + mi.format_files = dbn.format_files(book_id) + mi.marked = db.data.get_marked(book_id) + mi.field_metadata = db.field_metadata + self.refresh(row, mi) + else: + self.refresh(row) ema = get_gui().iactions['Edit Metadata'].menuless_qaction a = self.ema = QAction('edit metadata', self) diff --git a/src/calibre/gui2/dialogs/quickview.py b/src/calibre/gui2/dialogs/quickview.py index 207fae23a2..419d9755a2 100644 --- a/src/calibre/gui2/dialogs/quickview.py +++ b/src/calibre/gui2/dialogs/quickview.py @@ -286,6 +286,7 @@ class Quickview(QDialog, Ui_Quickview): self.view_icon = QIcon.ic('view.png') self.view_plugin = self.gui.iactions['View'] + self.show_details_plugin = self.gui.iactions['Show Book Details'] self.edit_metadata_icon = QIcon.ic('edit_input.png') self.quickview_icon = QIcon.ic('quickview.png') self.select_book_icon = QIcon.ic('library.png') @@ -341,6 +342,8 @@ class Quickview(QDialog, Ui_Quickview): a = m.addAction(self.select_book_icon, _('Select this book in the library'), partial(self.select_book, book_id)) a.setEnabled(book_displayed) + m.addAction(_('Open a locked book details window for this book'), + partial(self.show_book_details, book_id)) m.addAction(self.search_icon, _('Find item in the library'), partial(self.do_search, follow_library_view=False)) a = m.addAction(self.edit_metadata_icon, _('Edit metadata'), @@ -761,6 +764,12 @@ class Quickview(QDialog, Ui_Quickview): finally: self.follow_library_view = True + def show_book_details(self, book_id): + try: + self.show_details_plugin.show_book_info(book_id=book_id, locked=True) + finally: + pass + def select_book(self, book_id): ''' Select a book in the library view without changing the QV lists