From 901ab57aa598f4d66a7b62ab40702c5b9aa8fc6d Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Fri, 3 Mar 2023 12:01:53 +0000 Subject: [PATCH] Enhancement #2009115: User Category Editor: Hide items already in category --- src/calibre/gui2/dialogs/tag_categories.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/dialogs/tag_categories.py b/src/calibre/gui2/dialogs/tag_categories.py index 9df414d4c8..f498b47005 100644 --- a/src/calibre/gui2/dialogs/tag_categories.py +++ b/src/calibre/gui2/dialogs/tag_categories.py @@ -1,7 +1,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' -from collections import namedtuple +from collections import namedtuple, defaultdict from qt.core import QApplication, QDialog, QIcon, QListWidgetItem, Qt from calibre.constants import islinux @@ -213,9 +213,14 @@ class TagCategories(QDialog, Ui_TagCategories): idx = self.category_filter_box.currentIndex() filter_key = self.category_filter_box.itemData(idx) self.available_items_box.clear() + applied = defaultdict(set) + for it in self.applied_items: + applied[it.k].add(it.v) for it in self.sorted_items: if idx != 0 and it.k != filter_key: continue + if it.v in applied[it.k]: + continue self.available_items_box.addItem(self.make_available_list_item(it.k, it.v)) def fill_applied_items(self): @@ -228,6 +233,7 @@ class TagCategories(QDialog, Ui_TagCategories): self.applied_items_box.clear() for tup in self.applied_items: self.applied_items_box.addItem(self.make_applied_list_item(tup)) + self.display_filtered_categories() def apply_button_clicked(self): self.apply_tags(node=None)