[Bf-blender-cvs] [099ce95ef36] master: UI: Add auto keyframing popover

Hans Goudey noreply at git.blender.org
Tue Oct 6 22:19:04 CEST 2020


Commit: 099ce95ef36d8d1bb4fd49d5be94ad60d4831978
Author: Hans Goudey
Date:   Tue Oct 6 15:17:36 2020 -0500
Branches: master
https://developer.blender.org/rB099ce95ef36d8d1bb4fd49d5be94ad60d4831978

UI: Add auto keyframing popover

For other areas in Blender that have a toggle and related settings,
we put a popover with the settings right next to the toggle. This
combination is nice because it organizes the settings without making
interaction slower. It also makes the settings more discoverable since
they're right next to the toggle.

Differential Revision: https://developer.blender.org/D8537

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

M	release/scripts/startup/bl_ui/space_time.py

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

diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 62b765c7d32..290bbdb1ab6 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -32,7 +32,14 @@ class TIME_HT_editor_buttons:
 
         layout.separator_spacer()
 
-        layout.prop(tool_settings, "use_keyframe_insert_auto", text="", toggle=True)
+        row = layout.row(align=True)
+        row.prop(tool_settings, "use_keyframe_insert_auto", text="", toggle=True)
+        sub = row.row(align=True)
+        sub.active = tool_settings.use_keyframe_insert_auto
+        sub.popover(
+            panel="TIME_PT_auto_keyframing",
+            text="",
+        )
 
         row = layout.row(align=True)
         row.operator("screen.frame_jump", text="", icon='REW').end = False
@@ -278,28 +285,45 @@ class TIME_PT_keyframing_settings(TimelinePanelButtons, Panel):
 
         scene = context.scene
         tool_settings = context.tool_settings
-        prefs = context.preferences
 
         col = layout.column(align=True)
-        col.label(text="Active Keying Set:")
+        col.label(text="Active Keying Set")
         row = col.row(align=True)
         row.prop_search(scene.keying_sets_all, "active", scene, "keying_sets_all", text="")
         row.operator("anim.keyframe_insert", text="", icon='KEY_HLT')
         row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT')
 
         col = layout.column(align=True)
-        col.label(text="New Keyframe Type:")
+        col.label(text="New Keyframe Type")
         col.prop(tool_settings, "keyframe_type", text="")
 
+class TIME_PT_auto_keyframing(TimelinePanelButtons, Panel):
+    bl_label = "Auto Keyframing"
+    bl_options = {'HIDE_HEADER'}
+    bl_region_type = 'HEADER'
+    bl_ui_units_x = 9
+
+    @classmethod
+    def poll(cls, context):
+        # Only for timeline editor.
+        return cls.has_timeline(context)
+
+    def draw(self, context):
+        layout = self.layout
+
+        tool_settings = context.tool_settings
+        prefs = context.preferences
+
+        layout.active = tool_settings.use_keyframe_insert_auto
+
+        layout.prop(tool_settings, "auto_keying_mode", expand=True)
+
         col = layout.column(align=True)
-        col.label(text="Auto Keyframing:")
-        row = col.row()
-        row.prop(tool_settings, "auto_keying_mode", text="")
-        row.prop(tool_settings, "use_keyframe_insert_keyingset", text="")
+        col.prop(tool_settings, "use_keyframe_insert_keyingset", text="Only Active Keying Set", toggle=False)
         if not prefs.edit.use_keyframe_insert_available:
             col.prop(tool_settings, "use_record_with_nla", text="Layered Recording")
 
-        layout.prop(tool_settings, "use_keyframe_cycle_aware")
+        col.prop(tool_settings, "use_keyframe_cycle_aware")
 
 
 ###################################
@@ -311,6 +335,7 @@ classes = (
     TIME_MT_cache,
     TIME_PT_playback,
     TIME_PT_keyframing_settings,
+    TIME_PT_auto_keyframing,
 )
 
 if __name__ == "__main__":  # only for live edit.



More information about the Bf-blender-cvs mailing list