VSE: UI: New strip modifier "Add" menu
This replaces the "Add modifier" type enum UI with a menu, similar to the object modifiers "Add modifier" menu. The "Copy to Selected Strips" operator was a bit out of place and already exists in the "Strip" menu. Togther with the "Add" menu, these are now moved into a "Modifiers" submenu, similar to the "Objects" > "Modifiers" menu. Also updated for the strip context menu (right-click). Pull Request: https://projects.blender.org/blender/blender/pulls/145981
This commit is contained in:
@@ -1069,6 +1069,17 @@ class SEQUENCER_MT_strip_lock_mute(Menu):
|
|||||||
layout.operator("sequencer.unmute", text="Unmute Deselected Strips").unselected = True
|
layout.operator("sequencer.unmute", text="Unmute Deselected Strips").unselected = True
|
||||||
|
|
||||||
|
|
||||||
|
class SEQUENCER_MT_strip_modifiers(Menu):
|
||||||
|
bl_label = "Modifiers"
|
||||||
|
|
||||||
|
def draw(self, _context):
|
||||||
|
layout = self.layout
|
||||||
|
|
||||||
|
layout.menu("SEQUENCER_MT_modifier_add", text="Add Modifier")
|
||||||
|
|
||||||
|
layout.operator("sequencer.strip_modifier_copy", text="Copy to Selected Strips...")
|
||||||
|
|
||||||
|
|
||||||
class SEQUENCER_MT_strip_effect(Menu):
|
class SEQUENCER_MT_strip_effect(Menu):
|
||||||
bl_label = "Effect Strip"
|
bl_label = "Effect Strip"
|
||||||
|
|
||||||
@@ -1225,8 +1236,7 @@ class SEQUENCER_MT_strip(Menu):
|
|||||||
if strip:
|
if strip:
|
||||||
strip_type = strip.type
|
strip_type = strip.type
|
||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator_menu_enum("sequencer.strip_modifier_add", "type", text="Add Modifier")
|
layout.menu("SEQUENCER_MT_strip_modifiers", icon='MODIFIER')
|
||||||
layout.operator("sequencer.strip_modifier_copy", text="Copy Modifiers to Selection")
|
|
||||||
|
|
||||||
if strip_type in {
|
if strip_type in {
|
||||||
'CROSS', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
'CROSS', 'ADD', 'SUBTRACT', 'ALPHA_OVER', 'ALPHA_UNDER',
|
||||||
@@ -1396,8 +1406,7 @@ class SEQUENCER_MT_context_menu(Menu):
|
|||||||
total, nonsound = selected_strips_count(context)
|
total, nonsound = selected_strips_count(context)
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator_menu_enum("sequencer.strip_modifier_add", "type", text="Add Modifier")
|
layout.menu("SEQUENCER_MT_strip_modifiers", icon='MODIFIER')
|
||||||
layout.operator("sequencer.strip_modifier_copy", text="Copy Modifiers to Selection")
|
|
||||||
|
|
||||||
if total == 2:
|
if total == 2:
|
||||||
if nonsound == 2:
|
if nonsound == 2:
|
||||||
@@ -1533,6 +1542,55 @@ class SEQUENCER_MT_preview_view_pie(Menu):
|
|||||||
pie.operator("sequencer.view_zoom_ratio", text="Zoom 1:1").ratio = 1
|
pie.operator("sequencer.view_zoom_ratio", text="Zoom 1:1").ratio = 1
|
||||||
|
|
||||||
|
|
||||||
|
class SEQUENCER_MT_modifier_add(Menu):
|
||||||
|
bl_label = "Add Modifier"
|
||||||
|
bl_options = {'SEARCH_ON_KEY_PRESS'}
|
||||||
|
|
||||||
|
MODIFIER_TYPES_TO_LABELS = {
|
||||||
|
enum_it.identifier: enum_it.name
|
||||||
|
for enum_it in bpy.types.StripModifier.bl_rna.properties["type"].enum_items_static
|
||||||
|
}
|
||||||
|
MODIFIER_TYPES_I18N_CONTEXT = bpy.types.StripModifier.bl_rna.properties["type"].translation_context
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def operator_modifier_add(cls, layout, mod_type):
|
||||||
|
layout.operator(
|
||||||
|
"sequencer.strip_modifier_add",
|
||||||
|
text=cls.MODIFIER_TYPES_TO_LABELS[mod_type],
|
||||||
|
# Although these are operators, the label actually comes from an (enum) property,
|
||||||
|
# so the property's translation context must be used here.
|
||||||
|
text_ctxt=cls.MODIFIER_TYPES_I18N_CONTEXT,
|
||||||
|
icon='NONE',
|
||||||
|
).type = mod_type
|
||||||
|
|
||||||
|
def draw(self, context):
|
||||||
|
layout = self.layout
|
||||||
|
strip = context.active_strip
|
||||||
|
if not strip:
|
||||||
|
return
|
||||||
|
|
||||||
|
if layout.operator_context == 'EXEC_REGION_WIN':
|
||||||
|
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||||
|
layout.operator(
|
||||||
|
"WM_OT_search_single_menu",
|
||||||
|
text="Search...",
|
||||||
|
icon='VIEWZOOM',
|
||||||
|
).menu_idname = "SEQUENCER_MT_modifier_add"
|
||||||
|
layout.separator()
|
||||||
|
|
||||||
|
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||||
|
|
||||||
|
self.operator_modifier_add(layout, 'BRIGHT_CONTRAST')
|
||||||
|
self.operator_modifier_add(layout, 'COLOR_BALANCE')
|
||||||
|
self.operator_modifier_add(layout, 'CURVES')
|
||||||
|
self.operator_modifier_add(layout, 'HUE_CORRECT')
|
||||||
|
self.operator_modifier_add(layout, 'MASK')
|
||||||
|
self.operator_modifier_add(layout, 'TONEMAP')
|
||||||
|
self.operator_modifier_add(layout, 'WHITE_BALANCE')
|
||||||
|
if strip.type == 'SOUND':
|
||||||
|
self.operator_modifier_add(layout, 'SOUND_EQUALIZER')
|
||||||
|
|
||||||
|
|
||||||
class SequencerButtonsPanel:
|
class SequencerButtonsPanel:
|
||||||
bl_space_type = 'SEQUENCE_EDITOR'
|
bl_space_type = 'SEQUENCE_EDITOR'
|
||||||
bl_region_type = 'UI'
|
bl_region_type = 'UI'
|
||||||
@@ -2976,7 +3034,7 @@ class SEQUENCER_PT_view_safe_areas_center_cut(SequencerButtonsPanel_Output, Pane
|
|||||||
|
|
||||||
|
|
||||||
class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
|
class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
|
||||||
bl_label = "Modifiers"
|
bl_label = ""
|
||||||
bl_options = {'HIDE_HEADER'}
|
bl_options = {'HIDE_HEADER'}
|
||||||
bl_category = "Modifiers"
|
bl_category = "Modifiers"
|
||||||
|
|
||||||
@@ -2985,7 +3043,6 @@ class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
|
|||||||
layout.use_property_split = True
|
layout.use_property_split = True
|
||||||
|
|
||||||
strip = context.active_strip
|
strip = context.active_strip
|
||||||
ed = context.sequencer_scene.sequence_editor
|
|
||||||
if strip.type == 'SOUND':
|
if strip.type == 'SOUND':
|
||||||
sound = strip.sound
|
sound = strip.sound
|
||||||
else:
|
else:
|
||||||
@@ -2994,8 +3051,7 @@ class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
|
|||||||
if sound is None:
|
if sound is None:
|
||||||
layout.prop(strip, "use_linear_modifiers", text="Linear Modifiers")
|
layout.prop(strip, "use_linear_modifiers", text="Linear Modifiers")
|
||||||
|
|
||||||
layout.operator_menu_enum("sequencer.strip_modifier_add", "type")
|
layout.operator("wm.call_menu", text="Add Modifier", icon='ADD').name = "SEQUENCER_MT_modifier_add"
|
||||||
layout.operator("sequencer.strip_modifier_copy")
|
|
||||||
|
|
||||||
layout.template_strip_modifiers()
|
layout.template_strip_modifiers()
|
||||||
|
|
||||||
@@ -3155,6 +3211,7 @@ classes = (
|
|||||||
SEQUENCER_MT_strip_mirror,
|
SEQUENCER_MT_strip_mirror,
|
||||||
SEQUENCER_MT_strip_input,
|
SEQUENCER_MT_strip_input,
|
||||||
SEQUENCER_MT_strip_lock_mute,
|
SEQUENCER_MT_strip_lock_mute,
|
||||||
|
SEQUENCER_MT_strip_modifiers,
|
||||||
SEQUENCER_MT_image,
|
SEQUENCER_MT_image,
|
||||||
SEQUENCER_MT_image_transform,
|
SEQUENCER_MT_image_transform,
|
||||||
SEQUENCER_MT_image_clear,
|
SEQUENCER_MT_image_clear,
|
||||||
@@ -3166,6 +3223,7 @@ classes = (
|
|||||||
SEQUENCER_MT_retiming,
|
SEQUENCER_MT_retiming,
|
||||||
SEQUENCER_MT_view_pie,
|
SEQUENCER_MT_view_pie,
|
||||||
SEQUENCER_MT_preview_view_pie,
|
SEQUENCER_MT_preview_view_pie,
|
||||||
|
SEQUENCER_MT_modifier_add,
|
||||||
|
|
||||||
SEQUENCER_PT_color_tag_picker,
|
SEQUENCER_PT_color_tag_picker,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user