From 43715fb6991881f1b57bc5470d4f1a1de738a81e Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 13 May 2020 17:54:58 +0100 Subject: [PATCH] Enhancement: allow simultaneous editing in the category editor. Select multiple items (tags, whatever), then edit. When you finish editing, all the items will change to the edited value. --- src/calibre/gui2/dialogs/tag_list_editor.py | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index 80cb9d43b7..7bb69ec9e8 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -290,19 +290,24 @@ class TagListEditor(QDialog, Ui_TagListEditor): gprefs['tag_list_editor_table_widths'] = self.table_column_widths gprefs['tag_list_editor_dialog_geometry'] = bytearray(self.saveGeometry()) - def finish_editing(self, item): - if not item.text(): + def finish_editing(self, edited_item): + if not edited_item.text(): error_dialog(self, _('Item is blank'), _( 'An item cannot be set to nothing. Delete it instead.'), show=True) - item.setText(item.initial_text()) - return - if item.text() != item.initial_text(): - id_ = int(item.data(Qt.UserRole)) - self.to_rename[id_] = unicode_type(item.text()) - orig = self.table.item(item.row(), 2) self.table.blockSignals(True) - orig.setData(Qt.DisplayRole, item.initial_text()) + edited_item.setText(edited_item.initial_text()) self.table.blockSignals(False) + return + items = self.table.selectedItems() + for item in items: + if edited_item.text() != item.initial_text(): + id_ = int(item.data(Qt.UserRole)) + self.to_rename[id_] = unicode_type(item.text()) + orig = self.table.item(item.row(), 2) + self.table.blockSignals(True) + item.setText(edited_item.text()) + orig.setData(Qt.DisplayRole, item.initial_text()) + self.table.blockSignals(False) def undo_edit(self): indexes = self.table.selectionModel().selectedRows()