[Bf-extensions-cvs] [abec0094] master: Collection Manager: Fix name update. Task: T69577

Ryan Inch noreply at git.blender.org
Sun Apr 12 08:37:21 CEST 2020


Commit: abec0094b526778bb106f922d3a5c583c13c3a92
Author: Ryan Inch
Date:   Sat Apr 11 22:19:23 2020 -0400
Branches: master
https://developer.blender.org/rBAabec0094b526778bb106f922d3a5c583c13c3a92

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.

===================================================================

M	object_collection_manager/__init__.py
M	object_collection_manager/internals.py
M	object_collection_manager/operators.py
M	object_collection_manager/persistent_data.py

===================================================================

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()



More information about the Bf-extensions-cvs mailing list