This commit is contained in:
Kovid Goyal 2022-12-13 17:52:43 +05:30
parent 141834858a
commit 0d3dc639ad
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 15 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import copy
import os import os
import shutil import shutil
from functools import partial from functools import partial
from contextlib import contextmanager
from io import BytesIO from io import BytesIO
from qt.core import ( from qt.core import (
QAction, QApplication, QDialog, QIcon, QMenu, QMimeData, QModelIndex, QTimer, QAction, QApplication, QDialog, QIcon, QMenu, QMimeData, QModelIndex, QTimer,
@ -486,12 +487,22 @@ class EditMetadataAction(InterfaceAction):
def do_edit_metadata(self, row_list, current_row, editing_multiple): def do_edit_metadata(self, row_list, current_row, editing_multiple):
from calibre.gui2.metadata.single import edit_metadata from calibre.gui2.metadata.single import edit_metadata
db = self.gui.library_view.model().db db = self.gui.library_view.model().db
parent = getattr(self, 'override_parent', None) or self.gui
changed, rows_to_refresh = edit_metadata(db, row_list, current_row, changed, rows_to_refresh = edit_metadata(db, row_list, current_row,
parent=self.gui, view_slot=self.view_format_callback, parent=parent, view_slot=self.view_format_callback,
edit_slot=self.edit_format_callback, edit_slot=self.edit_format_callback,
set_current_callback=self.set_current_callback, editing_multiple=editing_multiple) set_current_callback=self.set_current_callback, editing_multiple=editing_multiple)
return changed, rows_to_refresh return changed, rows_to_refresh
@contextmanager
def different_parent(self, parent):
orig = getattr(self, 'override_parent', None)
self.override_parent = parent
try:
yield
finally:
self.override_parent = orig
def set_current_callback(self, id_): def set_current_callback(self, id_):
db = self.gui.library_view.model().db db = self.gui.library_view.model().db
current_row = db.row(id_) current_row = db.row(id_)

View File

@ -231,7 +231,9 @@ class BookInfo(QDialog):
def edit_metadata(self): def edit_metadata(self):
if self.current_row is not None: if self.current_row is not None:
book_id = self.view.model().id(self.current_row) book_id = self.view.model().id(self.current_row)
get_gui().iactions['Edit Metadata'].edit_metadata_for([self.current_row], [book_id], bulk=False) em = get_gui().iactions['Edit Metadata']
with em.different_parent(self):
em.edit_metadata_for([self.current_row], [book_id], bulk=False)
def configure(self): def configure(self):
d = Configure(get_gui().current_db, self) d = Configure(get_gui().current_db, self)