[Bf-extensions-cvs] [ffbaca55] master: Collection Manager: Add toggle children to RTs. Task: T69577

Ryan Inch noreply at git.blender.org
Sat Dec 7 10:38:21 CET 2019


Commit: ffbaca558a27bab4716bcd51ca7ea1df8e4f4b14
Author: Ryan Inch
Date:   Thu Dec 5 02:36:29 2019 -0500
Branches: master
https://developer.blender.org/rBACffbaca558a27bab4716bcd51ca7ea1df8e4f4b14

Collection Manager: Add toggle children to RTs. Task: T69577

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

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

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

diff --git a/collection_manager/__init__.py b/collection_manager/__init__.py
index c33e5cf8..af4c7f0d 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,5,1),
+    "version": (1,6,0),
     "blender": (2, 80, 0),
     "location": "View3D - Object Mode (Shortcut - M)",
     "warning": '',  # used for warning icon and text in addons panel
diff --git a/collection_manager/operators.py b/collection_manager/operators.py
index 8fef0053..d0ca98ed 100644
--- a/collection_manager/operators.py
+++ b/collection_manager/operators.py
@@ -138,7 +138,7 @@ class CMSetCollectionOperator(bpy.types.Operator):
 
 
 class CMExcludeOperator(bpy.types.Operator):
-    '''  * Shift-Click to isolate/restore previous state'''
+    '''  * Shift-Click to isolate/restore previous state\n  * Ctrl-Click to toggle children'''
     bl_label = "Exclude Collection from View Layer"
     bl_idname = "view3d.exclude_collection"
     bl_options = {'REGISTER', 'UNDO'}
@@ -213,6 +213,15 @@ class CMExcludeOperator(bpy.types.Operator):
                     laycol_iter_list = new_laycol_iter_list
                             
         
+        elif event.ctrl:
+            # toggle children
+            
+            # reset exclude history
+            del rto_history["exclude"][view_layer]
+            
+            # toggle exclusion of collection (this propagates to children)
+            laycol_ptr.exclude = not laycol_ptr.exclude
+        
         else:
             # toggle exclusion
             
@@ -305,7 +314,7 @@ class CMUnExcludeAllOperator(bpy.types.Operator):
 
 
 class CMRestrictSelectOperator(bpy.types.Operator):
-    '''  * Shift-Click to isolate/restore previous state'''
+    '''  * Shift-Click to isolate/restore previous state\n  * Ctrl-Click to toggle children'''
     bl_label = "Disable Selection of Collection"
     bl_idname = "view3d.restrict_select_collection"
     bl_options = {'REGISTER', 'UNDO'}
@@ -325,6 +334,8 @@ class CMRestrictSelectOperator(bpy.types.Operator):
         
         if event.shift:
             # isolate/de-isolate selectability of collections
+            
+            # get active collections
             active_layer_collections = [x for x in layer_collections.values() \
                                           if x["ptr"].collection.hide_select == False]
             
@@ -363,6 +374,28 @@ class CMRestrictSelectOperator(bpy.types.Operator):
                 laycol_ptr.collection.hide_select = False
                             
         
+        elif event.ctrl:
+            # toggle children
+            
+            # reset selectable history
+            del rto_history["select"][view_layer]
+            
+            # toggle selectability of collection
+            state = not laycol_ptr.collection.hide_select
+            laycol_ptr.collection.hide_select = state
+            
+            # pass state to children
+            laycol_iter_list = [laycol_ptr.children]
+            while len(laycol_iter_list) > 0:
+                new_laycol_iter_list = []
+                for laycol_iter in laycol_iter_list:
+                    for layer_collection in laycol_iter:
+                        layer_collection.collection.hide_select = state
+                        if len(layer_collection.children) > 0:
+                            new_laycol_iter_list.append(layer_collection.children)
+                
+                laycol_iter_list = new_laycol_iter_list
+        
         else:
             # reset selectable history
             del rto_history["select"][view_layer]
@@ -424,7 +457,7 @@ class CMUnRestrictSelectAllOperator(bpy.types.Operator):
 
 
 class CMHideOperator(bpy.types.Operator):
-    '''  * Shift-Click to isolate/restore previous state'''
+    '''  * Shift-Click to isolate/restore previous state\n  * Ctrl-Click to toggle children'''
     bl_label = "Hide Collection"
     bl_idname = "view3d.hide_collection"
     bl_options = {'REGISTER', 'UNDO'}
@@ -444,6 +477,8 @@ class CMHideOperator(bpy.types.Operator):
         
         if event.shift:
             # isolate/de-isolate view of collections
+            
+            # get active collections
             active_layer_collections = [x for x in layer_collections.values() \
                                           if x["ptr"].hide_viewport == False]
             
@@ -494,6 +529,28 @@ class CMHideOperator(bpy.types.Operator):
                     laycol["ptr"].hide_viewport = False
                     laycol = laycol["parent"]
         
+        elif event.ctrl:
+            # toggle children
+            
+            # reset hide history
+            del rto_history["hide"][view_layer]
+            
+            # toggle view of collection
+            state = not laycol_ptr.hide_viewport
+            laycol_ptr.hide_viewport = state
+            
+            # pass state to children
+            laycol_iter_list = [laycol_ptr.children]
+            while len(laycol_iter_list) > 0:
+                new_laycol_iter_list = []
+                for laycol_iter in laycol_iter_list:
+                    for layer_collection in laycol_iter:
+                        layer_collection.hide_viewport = state
+                        if len(layer_collection.children) > 0:
+                            new_laycol_iter_list.append(layer_collection.children)
+                
+                laycol_iter_list = new_laycol_iter_list
+        
         else:
             # reset hide history
             del rto_history["hide"][view_layer]
@@ -555,7 +612,7 @@ class CMUnHideAllOperator(bpy.types.Operator):
 
 
 class CMDisableViewportOperator(bpy.types.Operator):
-    '''  * Shift-Click to isolate/restore previous state'''
+    '''  * Shift-Click to isolate/restore previous state\n  * Ctrl-Click to toggle children'''
     bl_label = "Disable Collection in Viewport"
     bl_idname = "view3d.disable_viewport_collection"
     bl_options = {'REGISTER', 'UNDO'}
@@ -575,6 +632,8 @@ class CMDisableViewportOperator(bpy.types.Operator):
         
         if event.shift:
             # isolate/de-isolate disablement of collections in viewport
+            
+            # get active collections
             active_layer_collections = [x for x in layer_collections.values() \
                                           if x["ptr"].collection.hide_viewport == False]
             
@@ -625,6 +684,28 @@ class CMDisableViewportOperator(bpy.types.Operator):
                     laycol["ptr"].collection.hide_viewport = False
                     laycol = laycol["parent"]
         
+        elif event.ctrl:
+            # toggle children
+            
+            # reset viewport history
+            del rto_history["disable"][view_layer]
+            
+            # toggle view of collection
+            state = not laycol_ptr.collection.hide_viewport
+            laycol_ptr.collection.hide_viewport = state
+            
+            # pass state to children
+            laycol_iter_list = [laycol_ptr.children]
+            while len(laycol_iter_list) > 0:
+                new_laycol_iter_list = []
+                for laycol_iter in laycol_iter_list:
+                    for layer_collection in laycol_iter:
+                        layer_collection.collection.hide_viewport = state
+                        if len(layer_collection.children) > 0:
+                            new_laycol_iter_list.append(layer_collection.children)
+                
+                laycol_iter_list = new_laycol_iter_list
+        
         else:
             # reset viewport history
             del rto_history["disable"][view_layer]
@@ -687,7 +768,7 @@ class CMUnDisableViewportAllOperator(bpy.types.Operator):
 
 
 class CMDisableRenderOperator(bpy.types.Operator):
-    '''  * Shift-Click to isolate/restore previous state'''
+    '''  * Shift-Click to isolate/restore previous state\n  * Shift-Click to invert viewport display of all collections'''
     bl_label = "Disable Collection in Render"
     bl_idname = "view3d.disable_render_collection"
     bl_options = {'REGISTER', 'UNDO'}
@@ -707,6 +788,8 @@ class CMDisableRenderOperator(bpy.types.Operator):
         
         if event.shift:
             # isolate/de-isolate render of collections
+            
+            # get active collections
             active_layer_collections = [x for x in layer_collections.values() \
                                           if x["ptr"].collection.hide_render == False]
             
@@ -757,6 +840,28 @@ class CMDisableRenderOperator(bpy.types.Operator):
                     laycol["ptr"].collection.hide_render = False
                     laycol = laycol["parent"]
         
+        elif event.ctrl:
+            # toggle children
+            
+            # reset render history
+            del rto_history["render"][view_layer]
+            
+            # toggle view of collection
+            state = not laycol_ptr.collection.hide_render
+            laycol_ptr.collection.hide_render = state
+            
+            # pass state to children
+            laycol_iter_list = [laycol_ptr.children]
+            while len(laycol_iter_list) > 0:
+                new_laycol_iter_list = []
+                for laycol_iter in laycol_iter_list:
+                    for layer_collection in laycol_iter:
+                        layer_collection.collection.hide_render = state
+                        if len(layer_collection.children) > 0:
+                            new_laycol_iter_list.append(layer_collection.children)
+                
+                laycol_iter_list = new_laycol_iter_list
+        
         else:
             # reset render history
             del rto_history["render"][view_layer]



More information about the Bf-extensions-cvs mailing list