diff --git a/src/calibre/gui2/dialogs/multisort.py b/src/calibre/gui2/dialogs/multisort.py index 83f4936a9e..a41f7bd049 100644 --- a/src/calibre/gui2/dialogs/multisort.py +++ b/src/calibre/gui2/dialogs/multisort.py @@ -67,6 +67,11 @@ class ChooseMultiSort(Dialog): cl.itemChanged.connect(self.update_order_label) cl.model().rowsMoved.connect(self.update_order_label) + self.clear_button = b = self.bb.addButton(_('&Clear'), QDialogButtonBox.ButtonRole.ActionRole) + b.setToolTip(_('Clear all selected columns')) + b.setAutoDefault(False) + b.clicked.connect(self.clear) + self.save_button = b = self.bb.addButton(_('&Save'), QDialogButtonBox.ButtonRole.ActionRole) b.setToolTip(_('Save this sort order for easy re-use')) b.clicked.connect(self.save) @@ -79,6 +84,11 @@ class ChooseMultiSort(Dialog): b.setMenu(self.load_menu) self.load_menu.aboutToShow.connect(self.populate_load_menu) + def clear(self): + for item in self.iteritems(): + item.setCheckState(Qt.CheckState.Unchecked) + self.column_list.sortItems() + def item_double_clicked(self, item): cs = item.checkState() item.setCheckState(Qt.CheckState.Checked if cs == Qt.CheckState.Unchecked else Qt.CheckState.Unchecked) @@ -163,9 +173,8 @@ class ChooseMultiSort(Dialog): return (cl.item(i) for i in range(cl.count())) def apply_spec(self, spec): + self.clear() cl = self.column_list - for item in self.iteritems(): - item.setCheckState(Qt.CheckState.Unchecked) imap = {item.data(Qt.ItemDataRole.UserRole): item for item in self.iteritems()} for key, ascending in reversed(spec): item = imap.get(key)