mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Bulk metadata S&R
This commit is contained in:
parent
5b4e96e6b1
commit
5727ff9fa4
@ -17,7 +17,7 @@ from calibre.ebooks.metadata import string_to_authors, authors_to_string, title_
|
||||
from calibre.ebooks.metadata.book.formatter import SafeFormat
|
||||
from calibre.gui2.custom_column_widgets import populate_metadata_page
|
||||
from calibre.gui2 import error_dialog, ResizableDialog, UNDEFINED_QDATETIME, \
|
||||
gprefs, question_dialog
|
||||
gprefs, question_dialog, FunctionDispatcher
|
||||
from calibre.gui2.progress_indicator import ProgressIndicator
|
||||
from calibre.gui2.metadata.basic_widgets import CalendarWidget
|
||||
from calibre.utils.config import dynamic, JSONConfig
|
||||
@ -63,8 +63,7 @@ class MyBlockingBusyNew(QDialog):
|
||||
|
||||
all_done = pyqtSignal()
|
||||
|
||||
def __init__(self, args, ids, db, cc_widgets, s_r_func,
|
||||
parent=None, window_title=_('Working')):
|
||||
def __init__(self, args, ids, db, cc_widgets, s_r_func, do_sr, parent=None, window_title=_('Working')):
|
||||
QDialog.__init__(self, parent)
|
||||
|
||||
self._layout = l = QVBoxLayout()
|
||||
@ -84,8 +83,10 @@ class MyBlockingBusyNew(QDialog):
|
||||
self.resize(self.sizeHint())
|
||||
self.error = None
|
||||
self.all_done.connect(self.on_all_done, type=Qt.QueuedConnection)
|
||||
self.args, self.ids, self.s_r_func = args, ids, s_r_func
|
||||
self.args, self.ids = args, ids
|
||||
self.db, self.cc_widgets = db, cc_widgets
|
||||
self.s_r_func = FunctionDispatcher(s_r_func)
|
||||
self.do_sr = do_sr
|
||||
|
||||
def accept(self):
|
||||
pass
|
||||
@ -254,6 +255,10 @@ class MyBlockingBusyNew(QDialog):
|
||||
if args.add or args.remove:
|
||||
self.db.bulk_modify_tags(self.ids, add=args.add, remove=args.remove)
|
||||
|
||||
if self.do_sr:
|
||||
for book_id in self.ids:
|
||||
self.s_r_func(book_id)
|
||||
|
||||
|
||||
class MyBlockingBusy(QDialog): # {{{
|
||||
|
||||
@ -1016,7 +1021,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
|
||||
if not dest:
|
||||
dest = source
|
||||
dfm = self.db.field_metadata[dest]
|
||||
mi = self.db.get_metadata(id, index_is_id=True,)
|
||||
mi = self.db.get_metadata(id, index_is_id=True)
|
||||
val = self.s_r_do_regexp(mi)
|
||||
val = self.s_r_do_destination(mi, val)
|
||||
if dfm['is_multiple']:
|
||||
@ -1208,9 +1213,11 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog):
|
||||
restore_original)
|
||||
|
||||
if hasattr(self.db, 'new_api'):
|
||||
source = self.s_r_sf_itemdata(None)
|
||||
do_sr = source and self.s_r_obj
|
||||
bb = MyBlockingBusyNew(args, self.ids, self.db,
|
||||
getattr(self, 'custom_column_widgets', []),
|
||||
self.do_search_replace, parent=self)
|
||||
self.do_search_replace, do_sr, parent=self)
|
||||
else:
|
||||
bb = MyBlockingBusy(_('Applying changes to %d books.\nPhase {0} {1}%%.')
|
||||
%len(self.ids), args, self.db, self.ids,
|
||||
|
Loading…
x
Reference in New Issue
Block a user