Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Inch <mythologylover75@gmail.com>2020-04-14 08:56:12 +0300
committerRyan Inch <mythologylover75@gmail.com>2020-04-14 08:56:12 +0300
commitc6e30fee4c5d67d94ba61c92b4b36df7015a9ea3 (patch)
tree13b11e4a88ae3c03a7f6ce415dde474da97bfed3 /object_collection_manager
parent8d4ee1fb6b02f838352f74ad726e73b34b15ac94 (diff)
Collection Manager: Small refactor. Task: T69577
Refactor some operators and QCD operators to use new operator_utils functions.
Diffstat (limited to 'object_collection_manager')
-rw-r--r--object_collection_manager/__init__.py2
-rw-r--r--object_collection_manager/operators.py67
-rw-r--r--object_collection_manager/qcd_operators.py30
3 files changed, 30 insertions, 69 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index a10bab4c..ef46feed 100644
--- a/object_collection_manager/__init__.py
+++ b/object_collection_manager/__init__.py
@@ -22,7 +22,7 @@ bl_info = {
"name": "Collection Manager",
"description": "Manage collections and their objects",
"author": "Ryan Inch",
- "version": (2,6,0),
+ "version": (2,6,1),
"blender": (2, 80, 0),
"location": "View3D - Object Mode (Shortcut - M)",
"warning": '', # used for warning icon and text in addons panel
diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py
index 0bf2bafa..45993f1f 100644
--- a/object_collection_manager/operators.py
+++ b/object_collection_manager/operators.py
@@ -128,19 +128,13 @@ class ExpandSublevelOperator(Operator):
expand = True
# do expanding/collapsing
- def loop(laycol):
- for item in laycol.children:
- if expand:
- if not item.name in expanded:
- expanded.add(item.name)
- else:
- if item.name in expanded:
- expanded.remove(item.name)
+ def set_expanded(layer_collection):
+ if expand:
+ expanded.add(layer_collection.name)
+ else:
+ expanded.discard(layer_collection.name)
- if len(item.children) > 0:
- loop(item)
-
- loop(layer_collections[self.name]["ptr"])
+ apply_to_children(layer_collections[self.name]["ptr"], set_expanded)
expand_history["target"] = ""
expand_history["history"].clear()
@@ -930,12 +924,8 @@ class CMPhantomModeOperator(Operator):
# save current visibility state
phantom_history["view_layer"] = view_layer.name
- laycol_iter_list = [view_layer.layer_collection.children]
- while len(laycol_iter_list) > 0:
- new_laycol_iter_list = []
- for laycol_iter in laycol_iter_list:
- for layer_collection in laycol_iter:
- phantom_history["initial_state"][layer_collection.name] = {
+ def save_visibility_state(layer_collection):
+ phantom_history["initial_state"][layer_collection.name] = {
"exclude": layer_collection.exclude,
"select": layer_collection.collection.hide_select,
"hide": layer_collection.hide_viewport,
@@ -943,11 +933,7 @@ class CMPhantomModeOperator(Operator):
"render": layer_collection.collection.hide_render,
}
- if len(layer_collection.children) > 0:
- new_laycol_iter_list.append(layer_collection.children)
-
- laycol_iter_list = new_laycol_iter_list
-
+ apply_to_children(view_layer.layer_collection, save_visibility_state)
# save current rto history
for rto, history, in rto_history.items():
@@ -955,35 +941,18 @@ class CMPhantomModeOperator(Operator):
phantom_history[rto+"_history"] = deepcopy(history[view_layer.name])
- # return to normal mode
- else:
- laycol_iter_list = [view_layer.layer_collection.children]
- while len(laycol_iter_list) > 0:
- new_laycol_iter_list = []
- for laycol_iter in laycol_iter_list:
- for layer_collection in laycol_iter:
- phantom_laycol = phantom_history["initial_state"][layer_collection.name]
-
- layer_collection.exclude = \
- phantom_laycol["exclude"]
-
- layer_collection.collection.hide_select = \
- phantom_laycol["select"]
-
- layer_collection.hide_viewport = \
- phantom_laycol["hide"]
-
- layer_collection.collection.hide_viewport = \
- phantom_laycol["disable"]
-
- layer_collection.collection.hide_render = \
- phantom_laycol["render"]
+ else: # return to normal mode
+ def restore_visibility_state(layer_collection):
+ phantom_laycol = phantom_history["initial_state"][layer_collection.name]
- if len(layer_collection.children) > 0:
- new_laycol_iter_list.append(layer_collection.children)
+ layer_collection.exclude = phantom_laycol["exclude"]
+ layer_collection.collection.hide_select = phantom_laycol["select"]
+ layer_collection.hide_viewport = phantom_laycol["hide"]
+ layer_collection.collection.hide_viewport = phantom_laycol["disable"]
+ layer_collection.collection.hide_render = phantom_laycol["render"]
- laycol_iter_list = new_laycol_iter_list
+ apply_to_children(view_layer.layer_collection, restore_visibility_state)
# restore previous rto history
diff --git a/object_collection_manager/qcd_operators.py b/object_collection_manager/qcd_operators.py
index 56272171..5c5300c1 100644
--- a/object_collection_manager/qcd_operators.py
+++ b/object_collection_manager/qcd_operators.py
@@ -44,6 +44,10 @@ from .internals import (
update_qcd_header,
)
+from .operator_utils import (
+ apply_to_children,
+)
+
class MoveToQCDSlot(Operator):
'''Move object(s) to QCD slot'''
@@ -198,16 +202,10 @@ class ViewQCDSlot(Operator):
# get current child exclusion state
child_exclusion = []
- laycol_iter_list = [qcd_laycol.children]
- while len(laycol_iter_list) > 0:
- new_laycol_iter_list = []
- for laycol_iter in laycol_iter_list:
- for layer_collection in laycol_iter:
- child_exclusion.append([layer_collection, layer_collection.exclude])
- if len(layer_collection.children) > 0:
- new_laycol_iter_list.append(layer_collection.children)
+ def get_child_exclusion(layer_collection):
+ child_exclusion.append([layer_collection, layer_collection.exclude])
- laycol_iter_list = new_laycol_iter_list
+ apply_to_children(qcd_laycol, get_child_exclusion)
# toggle exclusion of qcd_laycol
qcd_laycol.exclude = not qcd_laycol.exclude
@@ -227,16 +225,10 @@ class ViewQCDSlot(Operator):
qcd_laycol.exclude = False
# exclude all children
- laycol_iter_list = [qcd_laycol.children]
- while len(laycol_iter_list) > 0:
- new_laycol_iter_list = []
- for laycol_iter in laycol_iter_list:
- for layer_collection in laycol_iter:
- layer_collection.exclude = True
- if len(layer_collection.children) > 0:
- new_laycol_iter_list.append(layer_collection.children)
-
- laycol_iter_list = new_laycol_iter_list
+ def exclude_all_children(layer_collection):
+ layer_collection.exclude = True
+
+ apply_to_children(qcd_laycol, exclude_all_children)
# set layer as active layer collection
context.view_layer.active_layer_collection = qcd_laycol