[Bf-blender-cvs] [a44a0cf] master: Copy strip modifier operator for sequencer

Antony Riakiotakis noreply at git.blender.org
Mon Jun 15 21:23:33 CEST 2015


Commit: a44a0cf443b14e256c127887fff684daa680a374
Author: Antony Riakiotakis
Date:   Mon Jun 15 21:23:09 2015 +0200
Branches: master
https://developer.blender.org/rBa44a0cf443b14e256c127887fff684daa680a374

Copy strip modifier operator for sequencer

Copies from active strip to selected strips, found in modifier panel

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

M	release/scripts/startup/bl_ui/space_sequencer.py
M	source/blender/editors/space_sequencer/sequencer_intern.h
M	source/blender/editors/space_sequencer/sequencer_modifier.c
M	source/blender/editors/space_sequencer/sequencer_ops.c

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

diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 06611db..4322441 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -1051,6 +1051,7 @@ class SEQUENCER_PT_modifiers(SequencerButtonsPanel, Panel):
         layout.prop(strip, "use_linear_modifiers")
 
         layout.operator_menu_enum("sequencer.strip_modifier_add", "type")
+        layout.operator("sequencer.strip_modifier_copy")
 
         for mod in strip.modifiers:
             box = layout.box()
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 0c6475c..eaac430 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -197,6 +197,7 @@ void SEQUENCER_OT_properties(struct wmOperatorType *ot);
 void SEQUENCER_OT_strip_modifier_add(struct wmOperatorType *ot);
 void SEQUENCER_OT_strip_modifier_remove(struct wmOperatorType *ot);
 void SEQUENCER_OT_strip_modifier_move(struct wmOperatorType *ot);
+void SEQUENCER_OT_strip_modifier_copy(struct wmOperatorType *ot);
 
 /* sequencer_view.c */
 void SEQUENCER_OT_sample(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_sequencer/sequencer_modifier.c b/source/blender/editors/space_sequencer/sequencer_modifier.c
index 83f3f9b..76ce73b 100644
--- a/source/blender/editors/space_sequencer/sequencer_modifier.c
+++ b/source/blender/editors/space_sequencer/sequencer_modifier.c
@@ -207,3 +207,56 @@ void SEQUENCER_OT_strip_modifier_move(wmOperatorType *ot)
 	RNA_def_string(ot->srna, "name", "Name", MAX_NAME, "Name", "Name of modifier to remove");
 	RNA_def_enum(ot->srna, "direction", direction_items, SEQ_MODIFIER_MOVE_UP, "Type", "");
 }
+
+static int strip_modifier_copy_exec(bContext *C, wmOperator *UNUSED(op))
+{
+	Scene *scene = CTX_data_scene(C);
+	Editing *ed = scene->ed;
+	Sequence *seq = BKE_sequencer_active_get(scene);
+	Sequence *seq_iter;
+
+	if (!seq || !seq->modifiers.first)
+		return OPERATOR_CANCELLED;
+
+	SEQP_BEGIN(ed, seq_iter)
+	{
+		if (seq_iter == seq)
+			continue;
+
+		if (seq_iter->modifiers.first) {
+			SequenceModifierData *smd_tmp, *smd = seq_iter->modifiers.first;
+
+			while(smd) {
+				smd_tmp = smd->next;
+				BLI_remlink(&seq_iter->modifiers, smd);
+				BKE_sequence_modifier_free(smd);
+				smd = smd_tmp;
+			}
+			BLI_listbase_clear(&seq_iter->modifiers);
+		}
+
+		BKE_sequence_modifier_list_copy(seq_iter, seq);
+	}
+	SEQ_END
+
+	BKE_sequence_invalidate_cache(scene, seq);
+	WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
+
+	return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_strip_modifier_copy(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Copy to Selected Strips";
+	ot->idname = "SEQUENCER_OT_strip_modifier_copy";
+	ot->description = "Copy modifiers of the active strip to all selected strips";
+
+	/* api callbacks */
+	ot->exec = strip_modifier_copy_exec;
+	ot->poll = strip_modifier_active_poll;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+}
+
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 5bc7fea..dadd187 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -121,6 +121,7 @@ void sequencer_operatortypes(void)
 	WM_operatortype_append(SEQUENCER_OT_strip_modifier_add);
 	WM_operatortype_append(SEQUENCER_OT_strip_modifier_remove);
 	WM_operatortype_append(SEQUENCER_OT_strip_modifier_move);
+	WM_operatortype_append(SEQUENCER_OT_strip_modifier_copy);
 
 	/* sequencer_view.h */
 	WM_operatortype_append(SEQUENCER_OT_sample);




More information about the Bf-blender-cvs mailing list