From 848f83e2100288cd0547787ead594f4ca5bf6bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 26 Jan 2024 11:09:06 +0100 Subject: [PATCH] Anim: bone collections, add 'un-solo all' operator Add an operator that clears the 'solo' flag from all bone collections. --- scripts/startup/bl_operators/anim.py | 23 +++++++++++++++++++ .../startup/bl_ui/properties_data_armature.py | 2 ++ 2 files changed, 25 insertions(+) diff --git a/scripts/startup/bl_operators/anim.py b/scripts/startup/bl_operators/anim.py index b2ac59c0ad1..5f192338645 100644 --- a/scripts/startup/bl_operators/anim.py +++ b/scripts/startup/bl_operators/anim.py @@ -541,6 +541,28 @@ class ARMATURE_OT_collection_show_all(Operator): return {'FINISHED'} +class ARMATURE_OT_collection_unsolo_all(Operator): + """Clear the 'solo' setting on all bone collections""" + bl_idname = "armature.collection_unsolo_all" + bl_label = "Un-solo All" + bl_options = {'REGISTER', 'UNDO'} + + @classmethod + def poll(cls, context): + if not (context.object and context.object.type == 'ARMATURE' and context.object.data): + return False + if not context.object.data.collections.is_solo_active: + cls.poll_message_set("None of the bone collections is marked 'solo'") + return False + return True + + def execute(self, context): + arm = context.object.data + for bcoll in arm.collections_all: + bcoll.is_solo = False + return {'FINISHED'} + + class ARMATURE_OT_collection_remove_unused(Operator): """Remove all bone collections that have neither bones nor children. """ \ """This is done recursively, so bone collections that only have unused children are also removed""" @@ -632,5 +654,6 @@ classes = ( UpdateAnimatedTransformConstraint, ARMATURE_OT_copy_bone_color_to_selected, ARMATURE_OT_collection_show_all, + ARMATURE_OT_collection_unsolo_all, ARMATURE_OT_collection_remove_unused, ) diff --git a/scripts/startup/bl_ui/properties_data_armature.py b/scripts/startup/bl_ui/properties_data_armature.py index d0ee133fb29..0a315dd04e5 100644 --- a/scripts/startup/bl_ui/properties_data_armature.py +++ b/scripts/startup/bl_ui/properties_data_armature.py @@ -144,6 +144,7 @@ class ARMATURE_MT_collection_context_menu(Menu): layout = self.layout layout.operator("armature.collection_show_all") + layout.operator("armature.collection_unsolo_all") layout.separator() layout.operator("armature.collection_remove_unused", text="Remove Unused") @@ -169,6 +170,7 @@ class ARMATURE_MT_collection_tree_context_menu(Menu): layout.separator() layout.operator("armature.collection_show_all") + layout.operator("armature.collection_unsolo_all") layout.separator()