[Bf-extensions-cvs] [45428803] master: Collection Manager: sync list selection to active collection. Task: T69577

Ryan Inch noreply at git.blender.org
Mon Nov 4 09:46:18 CET 2019


Commit: 454288034df37c23f43f1c05e7a9eac0da0446fb
Author: Ryan Inch
Date:   Mon Nov 4 03:46:03 2019 -0500
Branches: master
https://developer.blender.org/rBAC454288034df37c23f43f1c05e7a9eac0da0446fb

Collection Manager: sync list selection to active collection. Task: T69577

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

M	collection_manager/__init__.py
M	collection_manager/operators.py
M	collection_manager/ui.py

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

diff --git a/collection_manager/__init__.py b/collection_manager/__init__.py
index 019f4d34..bf7d2bbb 100644
--- a/collection_manager/__init__.py
+++ b/collection_manager/__init__.py
@@ -23,7 +23,7 @@ bl_info = {
     "name": "Collection Manager",
     "description": "Manage collections and their objects",
     "author": "Ryan Inch",
-    "version": (1,1,2),
+    "version": (1,2,0),
     "blender": (2, 80, 0),
     "location": "View3D - Object Mode (Shortcut - M)",
     "warning": '',  # used for warning icon and text in addons panel
@@ -79,7 +79,7 @@ def register():
         bpy.utils.register_class(cls)
     
     bpy.types.Scene.CMListCollection = CollectionProperty(type=internals.CMListCollection)
-    bpy.types.Scene.CMListIndex = IntProperty()
+    bpy.types.Scene.CMListIndex = IntProperty(update=ui.update_selection)
     
     bpy.types.Scene.show_exclude = BoolProperty(default=True, name="Exclude from View Layer")
     bpy.types.Scene.show_selectable = BoolProperty(default=True, name="Selectable")
diff --git a/collection_manager/operators.py b/collection_manager/operators.py
index 6f8ba5ae..3c11c70a 100644
--- a/collection_manager/operators.py
+++ b/collection_manager/operators.py
@@ -21,8 +21,7 @@ class ExpandAllOperator(bpy.types.Operator):
                 if laycol["ptr"].children:
                     expanded.append(laycol["name"])
         
-        # set selected row to the first row and update tree view
-        context.scene.CMListIndex = 0
+        # update tree view
         update_property_group(context)
         
         return {'FINISHED'}
diff --git a/collection_manager/ui.py b/collection_manager/ui.py
index 234f47e1..b71d7fe3 100644
--- a/collection_manager/ui.py
+++ b/collection_manager/ui.py
@@ -129,9 +129,21 @@ class CollectionManager(Operator):
 
         self.view_layer = context.view_layer.name
         
+        # sync selection in ui list with active layer collection
+        active_laycol_name = context.view_layer.active_layer_collection.name
+        active_laycol_row_index = layer_collections[active_laycol_name]["row_index"]
+        context.scene.CMListIndex = active_laycol_row_index
+        
         return wm.invoke_popup(self, width=(400+(lvl*20)))
 
 
+def update_selection(self, context):
+    selected_item = context.scene.CMListCollection[context.scene.CMListIndex]
+    layer_collection = layer_collections[selected_item.name]["ptr"]
+    
+    context.view_layer.active_layer_collection = layer_collection
+
+
 class CM_UL_items(UIList):
     last_filter_value = ""



More information about the Bf-extensions-cvs mailing list