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-12 05:19:23 +0300
committerRyan Inch <mythologylover75@gmail.com>2020-04-12 08:55:54 +0300
commitabec0094b526778bb106f922d3a5c583c13c3a92 (patch)
tree1a86b6d0cb209cc9c27689f5b24cf984531e1c7e
parent045f3d25541b96d6cb986df5a918621d4893c660 (diff)
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.
-rw-r--r--object_collection_manager/__init__.py2
-rw-r--r--object_collection_manager/internals.py63
-rw-r--r--object_collection_manager/operators.py14
-rw-r--r--object_collection_manager/persistent_data.py2
4 files changed, 66 insertions, 15 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index 52267e0e..1f94d77d 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,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
diff --git a/object_collection_manager/internals.py b/object_collection_manager/internals.py
index 6b962119..d905aeb2 100644
--- a/object_collection_manager/internals.py
+++ b/object_collection_manager/internals.py
@@ -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
diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py
index 1590e42f..41052e42 100644
--- a/object_collection_manager/operators.py
+++ b/object_collection_manager/operators.py
@@ -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)
diff --git a/object_collection_manager/persistent_data.py b/object_collection_manager/persistent_data.py
index a3432b7d..80399db5 100644
--- a/object_collection_manager/persistent_data.py
+++ b/object_collection_manager/persistent_data.py
@@ -20,4 +20,4 @@
# QCD
slots = {}
-overrides = {}
+overrides = set()