Add iterative filter action for single selection in build settings

This commit is contained in:
Veronica Berglyd Olsen
2023-08-06 17:49:11 +02:00
parent 2780e722d0
commit 72de32b126
2 changed files with 41 additions and 10 deletions
+15 -1
View File
@@ -530,7 +530,11 @@ class _FilterTab(QWidget):
def _setSelectedMode(self, mode: int) -> None:
"""Set the mode for the selected items."""
for item in self.optTree.selectedItems():
items = self.optTree.selectedItems()
if len(items) == 1 and isinstance(items[0], QTreeWidgetItem):
items = self._scanChildren(items[0], [])
for item in items:
if isinstance(item, QTreeWidgetItem):
tHandle = item.data(self.C_DATA, self.D_HANDLE)
isFile = item.data(self.C_DATA, self.D_FILE)
@@ -564,6 +568,16 @@ class _FilterTab(QWidget):
item.setIcon(self.C_STATUS, self._statusFlags[self.F_NONE])
return
def _scanChildren(self, item: QTreeWidgetItem | None, items: list) -> list[QTreeWidgetItem]:
"""This is a recursive function returning all items in a tree
starting at a given QTreeWidgetItem.
"""
if isinstance(item, QTreeWidgetItem):
items.append(item)
for i in range(item.childCount()):
self._scanChildren(item.child(i), items)
return items
# END Class _FilterTab