From b50168bbe9068f0a2451079b742d7fc08af2022c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 30 Oct 2013 10:26:24 +0530 Subject: [PATCH] Bulk metadata edit: Fix clearing of series and publishers Bulk metadata edit: Only clear series if the clear series checkbox is checked. Also add a clear checkbox for publishers, so that publishers can be removed. Fixes #1245058 [Calibre is deleting Series field even when it's not being modified](https://bugs.launchpad.net/calibre/+bug/1245058) --- src/calibre/gui2/dialogs/metadata_bulk.py | 10 +++++++--- src/calibre/gui2/dialogs/metadata_bulk.ui | 10 ++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index 1bdaacf7ab..37e71a6340 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -56,7 +56,7 @@ def get_cover_data(stream, ext): # {{{ Settings = namedtuple('Settings', 'remove_all remove add au aus do_aus rating pub do_series do_autonumber do_remove_format ' 'remove_format do_swap_ta do_remove_conv do_auto_author series do_series_restart series_start_value ' - 'do_title_case cover_action clear_series pubdate adddate do_title_sort languages clear_languages restore_original comments') + 'do_title_case cover_action clear_series clear_pub pubdate adddate do_title_sort languages clear_languages restore_original comments') null = object() class MyBlockingBusy(QDialog): # {{{ @@ -240,6 +240,9 @@ class MyBlockingBusy(QDialog): # {{{ if args.rating != -1: cache.set_field('rating', {bid:args.rating*2 for bid in self.ids}) + if args.clear_pub: + cache.set_field('publisher', {bid:'' for bid in self.ids}) + if args.pub: cache.set_field('publisher', {bid:args.pub for bid in self.ids}) @@ -957,6 +960,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): pub = unicode(self.publisher.text()) do_series = self.write_series clear_series = self.clear_series.isChecked() + clear_pub = self.clear_pub.isChecked() series = unicode(self.series.currentText()).strip() do_autonumber = self.autonumber_series.isChecked() do_series_restart = self.series_numbering_restarts.isChecked() @@ -992,7 +996,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): args = Settings(remove_all, remove, add, au, aus, do_aus, rating, pub, do_series, do_autonumber, do_remove_format, remove_format, do_swap_ta, do_remove_conv, do_auto_author, series, do_series_restart, - series_start_value, do_title_case, cover_action, clear_series, + series_start_value, do_title_case, cover_action, clear_series, clear_pub, pubdate, adddate, do_title_sort, languages, clear_languages, restore_original, self.comments) @@ -1023,7 +1027,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): return QDialog.accept(self) def series_changed(self, *args): - self.write_series = True + self.write_series = bool(unicode(self.series.currentText()).strip()) self.autonumber_series.setEnabled(True) def s_r_remove_query(self, *args): diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui index b6e86652e8..33cdf438d6 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.ui +++ b/src/calibre/gui2/dialogs/metadata_bulk.ui @@ -662,6 +662,16 @@ as that of the first selected book. + + + + If checked, the publisher will be cleared + + + &Clear pub + + +