From 83b19949f960112fcbb4f676a7d2c2e635a8dfe6 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Tue, 15 Feb 2022 18:14:19 +0100 Subject: [PATCH] added ability to get selected items under group item --- openpype/tools/loader/lib.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/openpype/tools/loader/lib.py b/openpype/tools/loader/lib.py index 8f18c01913..857b40faf7 100644 --- a/openpype/tools/loader/lib.py +++ b/openpype/tools/loader/lib.py @@ -1,4 +1,5 @@ import inspect +import collections from Qt import QtGui from avalon.vendor import qtawesome @@ -19,23 +20,21 @@ def change_visibility(model, view, column_name, visible): def get_selected_items(rows, item_role): - items = [] + output = [] + items = collections.deque() for row_index in rows: item = row_index.data(item_role) - if item.get("isGroup"): - continue - - elif item.get("isMerged"): - for idx in range(row_index.model().rowCount(row_index)): - child_index = row_index.child(idx, 0) - item = child_index.data(item_role) - if item not in items: - items.append(item) + items.append(item) + while items: + item = items.popleft() + if item.get("isGroup") or item.get("isMerged"): + for child in item.children(): + items.append(child) else: - if item not in items: - items.append(item) - return items + if item not in output: + output.append(item) + return output def get_options(action, loader, parent, repre_contexts):