Skip to content
Snippets Groups Projects
Commit c6e30fee authored by Ryan Inch's avatar Ryan Inch
Browse files

Collection Manager: Small refactor. Task: T69577

Refactor some operators and QCD operators to use new
operator_utils functions.
parent 8d4ee1fb
No related branches found
Tags
No related merge requests found
......@@ -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
......
......@@ -128,19 +128,13 @@ class ExpandSublevelOperator(Operator):
expand = True
# do expanding/collapsing
def loop(laycol):
for item in laycol.children:
def set_expanded(layer_collection):
if expand:
if not item.name in expanded:
expanded.add(item.name)
expanded.add(layer_collection.name)
else:
if item.name in expanded:
expanded.remove(item.name)
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,11 +924,7 @@ 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:
def save_visibility_state(layer_collection):
phantom_history["initial_state"][layer_collection.name] = {
"exclude": layer_collection.exclude,
"select": layer_collection.collection.hide_select,
......@@ -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
......
......@@ -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:
def get_child_exclusion(layer_collection):
child_exclusion.append([layer_collection, layer_collection.exclude])
if len(layer_collection.children) > 0:
new_laycol_iter_list.append(layer_collection.children)
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:
def exclude_all_children(layer_collection):
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
apply_to_children(qcd_laycol, exclude_all_children)
# set layer as active layer collection
context.view_layer.active_layer_collection = qcd_laycol
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment