[Bf-extensions-cvs] [ebe76f3a] master: Collection Manager: Improve indicators. Task: T69577

Ryan Inch noreply at git.blender.org
Wed Mar 24 09:46:11 CET 2021


Commit: ebe76f3a7ba96b3881567def29b7e2527e018e9a
Author: Ryan Inch
Date:   Wed Mar 24 04:40:37 2021 -0400
Branches: master
https://developer.blender.org/rBAebe76f3a7ba96b3881567def29b7e2527e018e9a

Collection Manager: Improve indicators. Task: T69577

Change selection indication in CM popup to more easily
identify selection state and whether objects in collection
can be selected.
Change icons from circles to diamonds to differentiate from
QCD icons, as what they indicate is slightly different.

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

M	object_collection_manager/__init__.py
M	object_collection_manager/ui.py

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

diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index bbfdd0b1..d8e50022 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, 21, 0),
+    "version": (2, 21, 1),
     "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/ui.py b/object_collection_manager/ui.py
index a81c18ae..09899581 100644
--- a/object_collection_manager/ui.py
+++ b/object_collection_manager/ui.py
@@ -173,30 +173,52 @@ class CollectionManager(Operator):
         # set selection
         setsel = name_row.row(align=True)
         icon = 'DOT'
+        some_selected = False
 
-        if any((laycol["ptr"].exclude,
-               collection.hide_select,
-               collection.hide_viewport,
-               laycol["ptr"].hide_viewport,
-               not collection.objects,)):
-            # objects cannot be selected
+        if not collection.objects:
+            icon = 'BLANK1'
             setsel.active = False
 
         else:
+            all_selected = None
+            all_unreachable = None
+
             for obj in collection.objects:
+                if not obj.visible_get() or obj.hide_select:
+                    if all_unreachable != False:
+                        all_unreachable = True
+
+                else:
+                    all_unreachable = False
+
                 if obj.select_get() == False:
                     # some objects remain unselected
-                    icon = 'LAYER_USED'
-                    break
+                    icon = 'KEYFRAME'
+                    all_selected = False
 
-            if icon != 'LAYER_USED':
+                else:
+                    some_selected = True
+
+                    if all_selected == False:
+                        break
+
+                    all_selected = True
+
+
+            if all_selected:
                 # all objects are selected
-                icon = 'LAYER_ACTIVE'
+                icon = 'KEYFRAME_HLT'
+
+            if all_unreachable:
+                if collection.objects:
+                    icon = 'DOT'
+
+                setsel.active = False
 
         prop = setsel.operator("view3d.select_collection_objects",
                                    text="",
                                    icon=icon,
-                                   depress=bool(icon == 'LAYER_ACTIVE')
+                                   depress=some_selected,
                                    )
         prop.is_master_collection = True
         prop.collection_name = 'Master Collection'
@@ -607,30 +629,60 @@ class CM_UL_items(UIList):
         # set selection
         setsel = c_name.row(align=True)
         icon = 'DOT'
+        some_selected = False
+
+        if not collection.objects:
+            icon = 'BLANK1'
+            setsel.active = False
 
         if any((laycol["ptr"].exclude,
                collection.hide_select,
                collection.hide_viewport,
-               laycol["ptr"].hide_viewport,
-               not collection.objects,)):
+               laycol["ptr"].hide_viewport,)):
             # objects cannot be selected
             setsel.active = False
 
         else:
+            all_selected = None
+            all_unreachable = None
+
             for obj in collection.objects:
+                if not obj.visible_get() or obj.hide_select:
+                    if all_unreachable != False:
+                        all_unreachable = True
+
+                else:
+                    all_unreachable = False
+
                 if obj.select_get() == False:
                     # some objects remain unselected
-                    icon = 'LAYER_USED'
-                    break
+                    icon = 'KEYFRAME'
+                    all_selected = False
+
+                else:
+                    some_selected = True
+
+                    if all_selected == False:
+                        break
 
-            if icon != 'LAYER_USED':
+                    all_selected = True
+
+
+            if all_selected:
                 # all objects are selected
-                icon = 'LAYER_ACTIVE'
+                icon = 'KEYFRAME_HLT'
+
+            if all_unreachable:
+                if collection.objects:
+                    icon = 'DOT'
+
+                setsel.active = False
+
 
         prop = setsel.operator("view3d.select_collection_objects",
                                    text="",
                                    icon=icon,
-                                   depress=bool(icon == 'LAYER_ACTIVE')
+                                   depress=some_selected
                                    )
         prop.is_master_collection = False
         prop.collection_name = item.name



More information about the Bf-extensions-cvs mailing list