Cleanup: Refactor VSE selection tools keymap

Split single keymap definition into timeline and preview as well as LCS
and RCS definitions.

This improves readability of keymap code.

Tweak and Box Select tools will now use "Sequencer Timeline Tool",
or "Sequencer Preview Tool" entries instead of "Sequencer Tool", so
custom keymaps or scripts have to be updated.

Pull Request: https://projects.blender.org/blender/blender/pulls/121846
This commit is contained in:
Richard Antalik
2024-05-22 18:46:53 +02:00
committed by Richard Antalik
parent cccc1ea0eb
commit 8c53a18c48
3 changed files with 107 additions and 34 deletions

View File

@@ -611,7 +611,7 @@ def _template_items_tool_select(
else:
# For right mouse, set the cursor.
return [
(cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
(cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None) if cursor_operator is not None else (),
("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'},
{"properties": [("release_confirm", True), ("cursor_transform", True)]}),
]
@@ -8781,26 +8781,37 @@ def km_3d_view_tool_sculpt_gpencil_select_lasso(params):
# ------------------------------------------------------------------------------
# Tool System (Sequencer, Generic)
def km_sequencer_editor_tool_generic_select(params, *, fallback):
def km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback):
return [
*_template_items_change_frame(params),
# Frame change can be cancelled if click happens on strip handle. In such case move the handle.
("transform.seq_slide", {"type": 'LEFTMOUSE', "value": 'PRESS'},
{"properties": [("view2d_edge_pan", True)]}),
]
def km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback):
return [
*_template_items_tool_select(
params, "sequencer.select", None, cursor_prioritize=True, fallback=fallback),
*_template_items_change_frame(params),
]
def km_sequencer_editor_tool_generic_select_timeline(params, *, fallback):
return (
_fallback_id("Sequencer Tool: Tweak", fallback),
_fallback_id("Sequencer Timeline Tool: Tweak", fallback),
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": [
*([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select(
params, "sequencer.select", "sequencer.cursor_set", cursor_prioritize=True, fallback=fallback)),
*([] if params.use_fallback_tool_select_handled else
_template_sequencer_preview_select(
type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)),
# Ignored for preview.
*_template_items_change_frame(params),
*(km_sequencer_editor_tool_generic_select_timeline_rcs(params, fallback) if (params.select_mouse == 'RIGHTMOUSE')
else km_sequencer_editor_tool_generic_select_timeline_lcs(params, fallback)),
]},
)
def km_sequencer_editor_tool_generic_select_box(params, *, fallback):
def km_sequencer_editor_tool_generic_select_box_timeline(params, *, fallback):
return (
_fallback_id("Sequencer Tool: Select Box", fallback),
_fallback_id("Sequencer Timeline Tool: Select Box", fallback),
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": [
# Don't use `tool_maybe_tweak_event`, see comment for this slot.
@@ -8809,7 +8820,6 @@ def km_sequencer_editor_tool_generic_select_box(params, *, fallback):
**(params.select_tweak_event if (fallback and params.use_fallback_tool_select_mouse) else
params.tool_tweak_event),
properties=[("tweak", params.select_mouse == 'LEFTMOUSE')])),
# RMB select can already set the frame, match the tweak tool.
# Ignored for preview.
*(_template_items_change_frame(params)
@@ -8818,6 +8828,36 @@ def km_sequencer_editor_tool_generic_select_box(params, *, fallback):
)
def km_sequencer_editor_tool_generic_select_preview(params, *, fallback):
return (
_fallback_id("Sequencer Preview Tool: Tweak", fallback),
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": [
*([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select(
params, "sequencer.select", "sequencer.cursor_set", cursor_prioritize=True, fallback=fallback)),
*([] if params.use_fallback_tool_select_handled else
_template_sequencer_preview_select(
type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)),
]},
)
def km_sequencer_editor_tool_generic_select_box_preview(params, *, fallback):
return (
_fallback_id("Sequencer Preview Tool: Select Box", fallback),
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": [
# Don't use `tool_maybe_tweak_event`, see comment for this slot.
*([] if (fallback and not params.use_fallback_tool) else _template_items_tool_select_actions_simple(
"sequencer.select_box",
**(params.select_tweak_event if (fallback and params.use_fallback_tool_select_mouse) else
params.tool_tweak_event),
properties=[("tweak", params.select_mouse == 'LEFTMOUSE')])),
]},
)
def km_sequencer_editor_tool_generic_cursor(params):
return (
"Sequencer Tool: Cursor",
@@ -9179,9 +9219,11 @@ def generate_keymaps(params=None):
km_3d_view_tool_sculpt_gpencil_select_box(params),
km_3d_view_tool_sculpt_gpencil_select_circle(params),
km_3d_view_tool_sculpt_gpencil_select_lasso(params),
*(km_sequencer_editor_tool_generic_select_timeline(params, fallback=fallback) for fallback in (False, True)),
*(km_sequencer_editor_tool_generic_select_box_timeline(params, fallback=fallback) for fallback in (False, True)),
*(km_sequencer_editor_tool_generic_select_preview(params, fallback=fallback) for fallback in (False, True)),
*(km_sequencer_editor_tool_generic_select_box_preview(params, fallback=fallback) for fallback in (False, True)),
km_3d_view_tool_paint_grease_pencil_cutter(params),
*(km_sequencer_editor_tool_generic_select(params, fallback=fallback) for fallback in (False, True)),
*(km_sequencer_editor_tool_generic_select_box(params, fallback=fallback) for fallback in (False, True)),
km_sequencer_editor_tool_generic_cursor(params),
km_sequencer_editor_tool_blade(params),
km_sequencer_editor_tool_sample(params),

View File

@@ -4386,9 +4386,16 @@ def km_3d_view_tool_edit_gpencil_select(params):
)
def km_sequencer_editor_tool_generic_select(params):
def km_sequencer_editor_tool_select_preview(params):
return (
"Sequencer Tool: Tweak",
"Sequencer Preview Tool: Tweak",
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": []}
)
def km_sequencer_editor_tool_select_timeline(params):
return (
"Sequencer Timeline Tool: Tweak",
{"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'},
{"items": []}
)
@@ -4582,7 +4589,8 @@ def generate_keymaps_impl(params=None):
km_3d_view_tool_select(params),
km_image_editor_tool_uv_select(params),
km_3d_view_tool_edit_gpencil_select(params),
km_sequencer_editor_tool_generic_select(params),
km_sequencer_editor_tool_select_preview(params),
km_sequencer_editor_tool_select_timeline(params),
km_3d_view_tool_interactive_add(params),
]

View File

@@ -2997,17 +2997,17 @@ class _defs_sequencer_generic:
class _defs_sequencer_select:
@ToolDef.from_fn
def select():
def select_timeline():
return dict(
idname="builtin.select",
label="Tweak",
icon="ops.generic.select",
widget=None,
keymap="Sequencer Tool: Tweak",
keymap="Sequencer Timeline Tool: Tweak",
)
@ToolDef.from_fn
def box():
def box_timeline():
def draw_settings(_context, layout, tool):
props = tool.operator_properties("sequencer.select_box")
row = layout.row()
@@ -3018,7 +3018,33 @@ class _defs_sequencer_select:
label="Select Box",
icon="ops.generic.select_box",
widget=None,
keymap="Sequencer Tool: Select Box",
keymap="Sequencer Timeline Tool: Select Box",
draw_settings=draw_settings,
)
@ToolDef.from_fn
def select_preview():
return dict(
idname="builtin.select",
label="Tweak",
icon="ops.generic.select",
widget=None,
keymap="Sequencer Preview Tool: Tweak",
)
@ToolDef.from_fn
def box_preview():
def draw_settings(_context, layout, tool):
props = tool.operator_properties("sequencer.select_box")
row = layout.row()
row.use_property_split = False
row.prop(props, "mode", text="", expand=True, icon_only=True)
return dict(
idname="builtin.select_box",
label="Select Box",
icon="ops.generic.select_box",
widget=None,
keymap="Sequencer Preview Tool: Select Box",
draw_settings=draw_settings,
)
@@ -3628,13 +3654,6 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
yield from cls._tools.items()
# Private tool lists for convenient reuse in `_tools`.
_tools_select = (
(
_defs_sequencer_select.select,
_defs_sequencer_select.box,
),
)
_tools_annotate = (
(
_defs_annotate.scribble,
@@ -3651,7 +3670,10 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
None: [
],
'PREVIEW': [
*_tools_select,
(
_defs_sequencer_select.select_preview,
_defs_sequencer_select.box_preview,
),
_defs_sequencer_generic.cursor,
None,
_defs_sequencer_generic.translate,
@@ -3663,12 +3685,13 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel):
*_tools_annotate,
],
'SEQUENCER': [
*_tools_select,
(
_defs_sequencer_select.select_timeline,
_defs_sequencer_select.box_timeline,
),
_defs_sequencer_generic.blade,
],
'SEQUENCER_PREVIEW': [
*_tools_select,
None,
*_tools_annotate,
None,
_defs_sequencer_generic.blade,