Collection Manager: Fix name update. Task: T69577
Fix expanded and QCD slots/overrides not getting updated properly when renaming a collection. This was especially problematic when the name change triggered other name changes.
This commit is contained in:
parent
045f3d2554
commit
abec0094b5
|
@ -22,7 +22,7 @@ bl_info = {
|
|||
"name": "Collection Manager",
|
||||
"description": "Manage collections and their objects",
|
||||
"author": "Ryan Inch",
|
||||
"version": (2,5,4),
|
||||
"version": (2,5,5),
|
||||
"blender": (2, 80, 0),
|
||||
"location": "View3D - Object Mode (Shortcut - M)",
|
||||
"warning": '', # used for warning icon and text in addons panel
|
||||
|
|
|
@ -39,7 +39,7 @@ move_active = None
|
|||
layer_collections = {}
|
||||
collection_tree = []
|
||||
collection_state = {}
|
||||
expanded = []
|
||||
expanded = set()
|
||||
row_index = 0
|
||||
|
||||
max_lvl = 0
|
||||
|
@ -49,7 +49,7 @@ def get_max_lvl():
|
|||
|
||||
class QCDSlots():
|
||||
_slots = {}
|
||||
overrides = {}
|
||||
overrides = set()
|
||||
allow_update = True
|
||||
|
||||
def __init__(self):
|
||||
|
@ -85,8 +85,8 @@ class QCDSlots():
|
|||
for key, value in blend_slots.items():
|
||||
self._slots[key] = value
|
||||
|
||||
for key, value in blend_overrides.items():
|
||||
self.overrides[key] = value
|
||||
for key in blend_overrides:
|
||||
self.overrides.add(key)
|
||||
|
||||
def length(self):
|
||||
return len(self._slots)
|
||||
|
@ -108,7 +108,7 @@ class QCDSlots():
|
|||
self._slots[idx] = name
|
||||
|
||||
if name in self.overrides:
|
||||
del self.overrides[name]
|
||||
self.overrides.remove(name)
|
||||
|
||||
def update_slot(self, idx, name):
|
||||
self.add_slot(idx, name)
|
||||
|
@ -127,7 +127,7 @@ class QCDSlots():
|
|||
|
||||
def add_override(self, name):
|
||||
qcd_slots.del_slot(name=name)
|
||||
qcd_slots.overrides[name] = True
|
||||
qcd_slots.overrides.add(name)
|
||||
|
||||
def clear_slots(self):
|
||||
self._slots.clear()
|
||||
|
@ -177,17 +177,68 @@ def update_col_name(self, context):
|
|||
self.name = self.last_name
|
||||
return
|
||||
|
||||
# if statement prevents update on list creation
|
||||
if self.last_name != '':
|
||||
# update collection name
|
||||
layer_collections[self.last_name]["ptr"].collection.name = self.name
|
||||
|
||||
# update expanded
|
||||
if self.last_name in expanded:
|
||||
expanded.remove(self.last_name)
|
||||
expanded.add(self.name)
|
||||
|
||||
# update qcd_slot
|
||||
idx = qcd_slots.get_idx(self.last_name)
|
||||
if idx:
|
||||
qcd_slots.update_slot(idx, self.name)
|
||||
|
||||
# update qcd_overrides
|
||||
if self.last_name in qcd_slots.overrides:
|
||||
qcd_slots.overrides.remove(self.last_name)
|
||||
qcd_slots.overrides.add(self.name)
|
||||
|
||||
cm_list_collection = context.scene.collection_manager.cm_list_collection
|
||||
|
||||
# update names in expanded and qcd slots for any other collection names
|
||||
# that changed as a result of this name change
|
||||
count = 0
|
||||
laycol_iter_list = list(context.view_layer.layer_collection.children)
|
||||
|
||||
while laycol_iter_list:
|
||||
layer_collection = laycol_iter_list[0]
|
||||
cm_list_item = cm_list_collection[count]
|
||||
|
||||
if cm_list_item.name != layer_collection.name:
|
||||
# update expanded
|
||||
if cm_list_item.name in expanded:
|
||||
if not cm_list_item.name in layer_collections:
|
||||
expanded.remove(cm_list_item.name)
|
||||
|
||||
expanded.add(layer_collection.name)
|
||||
|
||||
# update qcd_slot
|
||||
idx = cm_list_item.qcd_slot_idx
|
||||
if idx:
|
||||
qcd_slots.update_slot(idx, layer_collection.name)
|
||||
|
||||
# update qcd_overrides
|
||||
if cm_list_item.name in qcd_slots.overrides:
|
||||
if not cm_list_item.name in layer_collections:
|
||||
qcd_slots.overrides.remove(cm_list_item.name)
|
||||
|
||||
qcd_slots.overrides.add(layer_collection.name)
|
||||
|
||||
if layer_collection.children:
|
||||
laycol_iter_list[0:0] = list(layer_collection.children)
|
||||
|
||||
|
||||
laycol_iter_list.remove(layer_collection)
|
||||
count += 1
|
||||
|
||||
|
||||
update_property_group(context)
|
||||
|
||||
|
||||
self.last_name = self.name
|
||||
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ class ExpandAllOperator(Operator):
|
|||
else:
|
||||
for laycol in layer_collections.values():
|
||||
if laycol["ptr"].children:
|
||||
expanded.append(laycol["name"])
|
||||
expanded.add(laycol["name"])
|
||||
|
||||
# update tree view
|
||||
update_property_group(context)
|
||||
|
@ -121,7 +121,7 @@ class ExpandSublevelOperator(Operator):
|
|||
expanded.remove(self.name)
|
||||
expand = False
|
||||
else:
|
||||
expanded.append(self.name)
|
||||
expanded.add(self.name)
|
||||
expand = True
|
||||
|
||||
# do expanding/collapsing
|
||||
|
@ -129,7 +129,7 @@ class ExpandSublevelOperator(Operator):
|
|||
for item in laycol.children:
|
||||
if expand:
|
||||
if not item.name in expanded:
|
||||
expanded.append(item.name)
|
||||
expanded.add(item.name)
|
||||
else:
|
||||
if item.name in expanded:
|
||||
expanded.remove(item.name)
|
||||
|
@ -157,7 +157,7 @@ class ExpandSublevelOperator(Operator):
|
|||
|
||||
if cls.isolated:
|
||||
for item in expand_history["history"]:
|
||||
expanded.append(item)
|
||||
expanded.add(item)
|
||||
|
||||
expand_history["target"] = ""
|
||||
expand_history["history"].clear()
|
||||
|
@ -171,7 +171,7 @@ class ExpandSublevelOperator(Operator):
|
|||
else:
|
||||
# expand/collapse collection
|
||||
if self.expand:
|
||||
expanded.append(self.name)
|
||||
expanded.add(self.name)
|
||||
else:
|
||||
expanded.remove(self.name)
|
||||
|
||||
|
@ -1988,7 +1988,7 @@ class CMRemoveCollectionOperator(Operator):
|
|||
qcd_slots.del_slot(name=self.collection_name)
|
||||
|
||||
if self.collection_name in qcd_slots.overrides:
|
||||
del qcd_slots.overrides[self.collection_name]
|
||||
qcd_slots.overrides.remove(self.collection_name)
|
||||
|
||||
# reset history
|
||||
for rto in rto_history.values():
|
||||
|
@ -2020,7 +2020,7 @@ class CMNewCollectionOperator(Operator):
|
|||
# add new collection
|
||||
if self.child:
|
||||
laycol["ptr"].collection.children.link(new_collection)
|
||||
expanded.append(laycol["name"])
|
||||
expanded.add(laycol["name"])
|
||||
|
||||
# update tree view property
|
||||
update_property_group(context)
|
||||
|
|
|
@ -20,4 +20,4 @@
|
|||
|
||||
# QCD
|
||||
slots = {}
|
||||
overrides = {}
|
||||
overrides = set()
|
||||
|
|
Loading…
Reference in New Issue