diff options
author | Janne Karhu <jhkarh@gmail.com> | 2010-10-30 16:04:00 +0400 |
---|---|---|
committer | Janne Karhu <jhkarh@gmail.com> | 2010-10-30 16:04:00 +0400 |
commit | ef3e5a3d71d1816d31666fa8dc6ad3e81195d7e8 (patch) | |
tree | 938195972bf0bf4c7bbdeffb216df91905faa931 /source/blender | |
parent | a12d0fc8366d459d386f005e8b97bfdb72ea2f26 (diff) |
Fix for [#24374] VSE: Reassign Inputs ignores selection order.
* No way currently to know the order of effect inputs, so I added a swap operator for the inputs.
* Also added the effect inputs to the strip property panel (weren't even in rna before). These are not yet editable, but can be very helpful in determining what the inputs are if the strip is too short to see the name in the timeline.
Diffstat (limited to 'source/blender')
4 files changed, 64 insertions, 0 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 1989502fc35..b9a593b520c 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -1498,6 +1498,43 @@ void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot) } +static int sequencer_swap_inputs_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq, *last_seq = seq_active_get(scene); + char *error_msg; + + if(last_seq->seq1==NULL || last_seq->seq2 == NULL) { + BKE_report(op->reports, RPT_ERROR, "No valid inputs to swap"); + return OPERATOR_CANCELLED; + } + + seq = last_seq->seq1; + last_seq->seq1 = last_seq->seq2; + last_seq->seq2 = seq; + + update_changed_seq_and_deps(scene, last_seq, 1, 1); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} +void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Swap Inputs"; + ot->idname= "SEQUENCER_OT_swap_inputs"; + ot->description="Swap the first two inputs for the effects strip"; + + /* api callbacks */ + ot->exec= sequencer_swap_inputs_exec; + ot->poll= sequencer_effect_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /* cut operator */ static EnumPropertyItem prop_cut_types[] = { {SEQ_CUT_SOFT, "SOFT", 0, "Soft", ""}, diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index bf0dfff8e98..116786c3009 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -87,6 +87,7 @@ void SEQUENCER_OT_unlock(struct wmOperatorType *ot); void SEQUENCER_OT_reload(struct wmOperatorType *ot); void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot); void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot); +void SEQUENCER_OT_swap_inputs(struct wmOperatorType *ot); void SEQUENCER_OT_duplicate(struct wmOperatorType *ot); void SEQUENCER_OT_delete(struct wmOperatorType *ot); void SEQUENCER_OT_images_separate(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 041b475223b..62c478f916f 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -60,6 +60,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_reload); WM_operatortype_append(SEQUENCER_OT_refresh_all); WM_operatortype_append(SEQUENCER_OT_reassign_inputs); + WM_operatortype_append(SEQUENCER_OT_swap_inputs); WM_operatortype_append(SEQUENCER_OT_duplicate); WM_operatortype_append(SEQUENCER_OT_delete); WM_operatortype_append(SEQUENCER_OT_images_separate); @@ -169,6 +170,7 @@ void sequencer_keymap(wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_swap", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0)->ptr, "side", SEQ_SIDE_RIGHT); WM_keymap_add_item(keymap, "SEQUENCER_OT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_inputs", SKEY, KM_PRESS, KM_ALT, 0); /* multicam editing keyboard layout, switch to camera 1-10 using regular number keys */ diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 923f4560532..4f3af7e9cc1 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -502,6 +502,12 @@ static void rna_Sequence_attenuation_set(PointerRNA *ptr, float value) } +static int rna_Sequence_input_count_get(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)(ptr->data); + + return get_sequence_effect_num_inputs(seq->type); +} /*static void rna_SoundSequence_filename_set(PointerRNA *ptr, const char *value) { Sequence *seq= (Sequence*)(ptr->data); @@ -985,6 +991,24 @@ static void rna_def_sequence(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Speed factor", "Multiply the current speed of the sequence with this number or remap current frame to this frame"); RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update"); + /* effect strip inputs */ + + prop= RNA_def_property(srna, "input_count", PROP_INT, PROP_UNSIGNED); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_int_funcs(prop, "rna_Sequence_input_count_get", NULL, NULL); + + prop= RNA_def_property(srna, "input_1", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "seq1"); + RNA_def_property_ui_text(prop, "Input 1", "First input for the effect strip"); + + prop= RNA_def_property(srna, "input_2", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "seq2"); + RNA_def_property_ui_text(prop, "Input 2", "Second input for the effect strip"); + + prop= RNA_def_property(srna, "input_3", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "seq1"); + RNA_def_property_ui_text(prop, "Input 3", "Third input for the effect strip"); + RNA_api_sequence_strip(srna); } |