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:
committed by
Richard Antalik
parent
cccc1ea0eb
commit
8c53a18c48
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
]
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user