From 72e8a2b45394a36908490e7df8e27880632882bb Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Tue, 17 Jul 2012 14:43:57 +0200 Subject: [PATCH] Enhancement request: prepopulate name in bulk metadata edit search/replace save dialog --- src/calibre/gui2/dialogs/metadata_bulk.py | 22 +++++++++++++++------- src/calibre/gui2/dialogs/metadata_bulk.ui | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_bulk.py b/src/calibre/gui2/dialogs/metadata_bulk.py index b8f30f3541..b48b7f7201 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.py +++ b/src/calibre/gui2/dialogs/metadata_bulk.py @@ -527,7 +527,8 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): self.queries = JSONConfig("search_replace_queries") self.query_field.addItem("") - self.query_field.addItems(sorted([q for q in self.queries], key=sort_key)) + self.query_field_values = sorted([q for q in self.queries], key=sort_key) + self.query_field.addItems(self.query_field_values) self.query_field.currentIndexChanged[str].connect(self.s_r_query_change) self.query_field.setCurrentIndex(0) self.search_field.setCurrentIndex(0) @@ -1030,11 +1031,16 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): self.queries.commit() def s_r_save_query(self, *args): - name, ok = QInputDialog.getText(self, _('Save search/replace'), - _('Search/replace name:')) - if not ok: - return - + dex = self.query_field_values.index(self.saved_search_name) + name = '' + while not name: + name, ok = QInputDialog.getItem(self, _('Save search/replace'), + _('Search/replace name:'), self.query_field_values, dex, True) + if not ok: + return + if not name: + error_dialog(self, _("Save search/replace"), + _("You must provide a name."), show=True) new = True name = unicode(name) if name in self.queries.keys(): @@ -1069,7 +1075,8 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): self.query_field.blockSignals(True) self.query_field.clear() self.query_field.addItem('') - self.query_field.addItems(sorted([q for q in self.queries], key=sort_key)) + self.query_field_values = sorted([q for q in self.queries], key=sort_key) + self.query_field.addItems(self.query_field_values) self.query_field.blockSignals(False) self.query_field.setCurrentIndex(self.query_field.findText(name)) @@ -1081,6 +1088,7 @@ class MetadataBulkDialog(ResizableDialog, Ui_MetadataBulkDialog): if item is None: self.s_r_reset_query_fields() return + self.saved_search_name = item_name def set_text(attr, key): try: diff --git a/src/calibre/gui2/dialogs/metadata_bulk.ui b/src/calibre/gui2/dialogs/metadata_bulk.ui index 82c114df0c..2387b7863d 100644 --- a/src/calibre/gui2/dialogs/metadata_bulk.ui +++ b/src/calibre/gui2/dialogs/metadata_bulk.ui @@ -667,7 +667,7 @@ Future conversion of these books will use the default settings. Load searc&h/replace: - search_field + query_field