sequencer re-assign inputs back

This commit is contained in:
Campbell Barton
2010-07-03 22:25:22 +00:00
parent 6e5a436f56
commit 281902d6ee
4 changed files with 65 additions and 30 deletions

View File

@@ -279,6 +279,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.separator() layout.separator()
layout.operator("sequencer.reload") layout.operator("sequencer.reload")
layout.operator("sequencer.reassign_inputs")
layout.separator() layout.separator()
layout.operator("sequencer.lock") layout.operator("sequencer.lock")
layout.operator("sequencer.unlock") layout.operator("sequencer.unlock")

View File

@@ -677,36 +677,6 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen
return 1; return 1;
} }
void reassign_inputs_seq_effect(Scene *scene)
{
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene);
char *error_msg;
if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return;
if(ed==NULL) return;
if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) {
//BKE_report(op->reports, RPT_ERROR, error_msg); // XXX operatorify
return;
}
/* see reassigning would create a cycle */
if( seq_is_predecessor(seq1, last_seq) ||
seq_is_predecessor(seq2, last_seq) ||
seq_is_predecessor(seq3, last_seq)
) {
//BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed"); // XXX operatorify
return;
}
last_seq->seq1 = seq1;
last_seq->seq2 = seq2;
last_seq->seq3 = seq3;
update_changed_seq_and_deps(scene, last_seq, 1, 1);
}
static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq) static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq)
{ {
Sequence *seq1, *seq2, *seq3; Sequence *seq1, *seq2, *seq3;
@@ -1458,6 +1428,67 @@ void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
} }
static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene);
char *error_msg;
if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) {
BKE_report(op->reports, RPT_ERROR, error_msg);
return OPERATOR_CANCELLED;
}
/* see reassigning would create a cycle */
if( seq_is_predecessor(seq1, last_seq) ||
seq_is_predecessor(seq2, last_seq) ||
seq_is_predecessor(seq3, last_seq)
) {
BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed");
return OPERATOR_CANCELLED;
}
last_seq->seq1 = seq1;
last_seq->seq2 = seq2;
last_seq->seq3 = seq3;
update_changed_seq_and_deps(scene, last_seq, 1, 1);
WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
}
int sequencer_effect_poll(bContext *C)
{
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
if(ed) {
Sequence *last_seq= seq_active_get(scene);
if(last_seq && (last_seq->type & SEQ_EFFECT)) {
return 1;
}
}
return 0;
}
void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot)
{
/* identifiers */
ot->name= "Reassign Inputs";
ot->idname= "SEQUENCER_OT_reassign_inputs";
ot->description="Reassign the inputs for the effects strip";
/* api callbacks */
ot->exec= sequencer_reassign_inputs_exec;
ot->poll= sequencer_effect_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/* cut operator */ /* cut operator */
static EnumPropertyItem prop_cut_types[] = { static EnumPropertyItem prop_cut_types[] = {
{SEQ_CUT_SOFT, "SOFT", 0, "Soft", ""}, {SEQ_CUT_SOFT, "SOFT", 0, "Soft", ""},

View File

@@ -85,6 +85,7 @@ void SEQUENCER_OT_lock(struct wmOperatorType *ot);
void SEQUENCER_OT_unlock(struct wmOperatorType *ot); void SEQUENCER_OT_unlock(struct wmOperatorType *ot);
void SEQUENCER_OT_reload(struct wmOperatorType *ot); void SEQUENCER_OT_reload(struct wmOperatorType *ot);
void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot); void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot);
void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot);
void SEQUENCER_OT_duplicate(struct wmOperatorType *ot); void SEQUENCER_OT_duplicate(struct wmOperatorType *ot);
void SEQUENCER_OT_delete(struct wmOperatorType *ot); void SEQUENCER_OT_delete(struct wmOperatorType *ot);
void SEQUENCER_OT_images_separate(struct wmOperatorType *ot); void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);

View File

@@ -63,6 +63,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_unlock); WM_operatortype_append(SEQUENCER_OT_unlock);
WM_operatortype_append(SEQUENCER_OT_reload); WM_operatortype_append(SEQUENCER_OT_reload);
WM_operatortype_append(SEQUENCER_OT_refresh_all); WM_operatortype_append(SEQUENCER_OT_refresh_all);
WM_operatortype_append(SEQUENCER_OT_reassign_inputs);
WM_operatortype_append(SEQUENCER_OT_duplicate); WM_operatortype_append(SEQUENCER_OT_duplicate);
WM_operatortype_append(SEQUENCER_OT_delete); WM_operatortype_append(SEQUENCER_OT_delete);
WM_operatortype_append(SEQUENCER_OT_images_separate); WM_operatortype_append(SEQUENCER_OT_images_separate);
@@ -134,6 +135,7 @@ void sequencer_keymap(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "SEQUENCER_OT_lock", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_lock", LKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_unlock", LKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_unlock", LKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);