diff options
author | Ryan Inch <mythologylover75@gmail.com> | 2020-04-14 08:56:12 +0300 |
---|---|---|
committer | Ryan Inch <mythologylover75@gmail.com> | 2020-04-14 08:56:12 +0300 |
commit | c6e30fee4c5d67d94ba61c92b4b36df7015a9ea3 (patch) | |
tree | 13b11e4a88ae3c03a7f6ce415dde474da97bfed3 /object_collection_manager | |
parent | 8d4ee1fb6b02f838352f74ad726e73b34b15ac94 (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__.py | 2 | ||||
-rw-r--r-- | object_collection_manager/operators.py | 67 | ||||
-rw-r--r-- | object_collection_manager/qcd_operators.py | 30 |
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 |