Page MenuHome
Paste P2710

VSE: Ripple Trim to Current Frame: Left/Right
ActivePublic

Authored by Peter Fog (tintwotin) on Jan 10 2022, 2:42 PM.
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 543742709ef..25eb4a5e9bd 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -2810,6 +2810,8 @@ def km_sequencer(params):
{"properties": [("all", True)]}),
("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
("sequencer.snap", {"type": 'S', "value": 'PRESS', "shift": True}, None),
+ ("sequencer.ripple_trim_left", {"type": 'Q', "value": 'PRESS', "shift": True}, None),
+ ("sequencer.ripple_trim_right", {"type": 'W', "value": 'PRESS', "shift": True}, None),
("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
*(
(("sequencer.split_multicam",
diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
index 3019322d340..294285fa5dd 100644
--- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
+++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py
@@ -1813,6 +1813,8 @@ def km_sequencer(params):
{"properties": [("all", True)]}),
("sequencer.gap_insert", {"type": 'EQUAL', "value": 'PRESS', "shift": True}, None),
("sequencer.snap", {"type": 'X', "value": 'PRESS'}, None),
+ ("sequencer.ripple_trim_left", {"type": 'Q', "value": 'PRESS', "shift": True}, None),
+ ("sequencer.ripple_trim_right", {"type": 'W', "value": 'PRESS', "shift": True}, None),
("sequencer.swap_inputs", {"type": 'S', "value": 'PRESS', "alt": True}, None),
*(
(("sequencer.split_multicam",
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 6035170f9df..4a81b438d65 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -801,6 +801,15 @@ class SEQUENCER_MT_add_effect(Menu):
col.enabled = selected_sequences_len(context) != 0
+class SEQUENCER_MT_ripple_trim(Menu):
+ bl_label = "Ripple Trim to Current Frame"
+
+ def draw(self, _context):
+ layout = self.layout
+ layout.operator("SEQUENCER_OT_ripple_trim_left", text="Left")
+ layout.operator("SEQUENCER_OT_ripple_trim_right", text="Right")
+
+
class SEQUENCER_MT_strip_transform(Menu):
bl_label = "Transform"
@@ -838,6 +847,10 @@ class SEQUENCER_MT_strip_transform(Menu):
layout.operator("sequencer.gap_remove").all = False
layout.operator("sequencer.gap_insert")
+ layout.separator()
+
+ layout.menu("SEQUENCER_MT_ripple_trim")
+
class SEQUENCER_MT_strip_input(Menu):
bl_label = "Inputs"
@@ -2614,6 +2627,7 @@ classes = (
SEQUENCER_MT_add_empty,
SEQUENCER_MT_strip_effect,
SEQUENCER_MT_strip_movie,
+ SEQUENCER_MT_ripple_trim,
SEQUENCER_MT_strip,
SEQUENCER_MT_strip_transform,
SEQUENCER_MT_strip_input,
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 2c5f211b0e4..460b7c09c87 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -135,6 +135,7 @@ void sequencer_keymap(wmKeyConfig *keyconf)
void ED_operatormacros_sequencer(void)
{
wmOperatorType *ot;
+ wmOperatorTypeMacro *otmacro;
ot = WM_operatortype_append_macro("SEQUENCER_OT_duplicate_move",
"Duplicate Strips",
@@ -143,4 +144,30 @@ void ED_operatormacros_sequencer(void)
WM_operatortype_macro_define(ot, "SEQUENCER_OT_duplicate");
WM_operatortype_macro_define(ot, "TRANSFORM_OT_seq_slide");
+
+ ot = WM_operatortype_append_macro("SEQUENCER_OT_ripple_trim_left",
+ "Ripple Trim Left",
+ "Split Strips and ripple delete the left part",
+ OPTYPE_UNDO | OPTYPE_REGISTER);
+ otmacro = WM_operatortype_macro_define(ot, "SEQUENCER_OT_split");
+ RNA_enum_set(otmacro->ptr, "side", 1);
+ WM_operatortype_macro_define(ot, "SEQUENCER_OT_delete");
+ otmacro = WM_operatortype_macro_define(ot, "SCREEN_OT_frame_offset");
+ RNA_enum_set(otmacro->ptr, "delta", -1);
+ otmacro = WM_operatortype_macro_define(ot, "SEQUENCER_OT_gap_remove");
+ otmacro = WM_operatortype_macro_define(ot, "SCREEN_OT_frame_offset");
+ RNA_enum_set(otmacro->ptr, "delta", 1);
+
+ ot = WM_operatortype_append_macro("SEQUENCER_OT_ripple_trim_right",
+ "Ripple Trim Right",
+ "Split Strips and ripple delete the right part",
+ OPTYPE_UNDO | OPTYPE_REGISTER);
+ otmacro = WM_operatortype_macro_define(ot, "SEQUENCER_OT_split");
+ RNA_enum_set(otmacro->ptr, "side", 2);
+ WM_operatortype_macro_define(ot, "SEQUENCER_OT_delete");
+ otmacro = WM_operatortype_macro_define(ot, "SCREEN_OT_frame_offset");
+ RNA_enum_set(otmacro->ptr, "delta", 1);
+ otmacro = WM_operatortype_macro_define(ot, "SEQUENCER_OT_gap_remove");
+ otmacro = WM_operatortype_macro_define(ot, "SCREEN_OT_frame_offset");
+ RNA_enum_set(otmacro->ptr, "delta", -1);
}