Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-06-10 01:29:59 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-06-10 01:29:59 +0400
commitb9ef34b6e5c8455638d1e88211e536d0009b3bfa (patch)
tree63ac858ad1e8af09d100c0f6ba27aef8d9f04ab6
parenta796a74fb5b9676b564fac3112e3c2bb0a049f64 (diff)
patch from Xavier Thomas, add back the sequencer snap operator
-rw-r--r--release/ui/space_sequencer.py2
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c55
-rw-r--r--source/blender/editors/space_sequencer/sequencer_intern.h1
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c1
4 files changed, 45 insertions, 14 deletions
diff --git a/release/ui/space_sequencer.py b/release/ui/space_sequencer.py
index fb8cc12c436..c783fd27b98 100644
--- a/release/ui/space_sequencer.py
+++ b/release/ui/space_sequencer.py
@@ -239,7 +239,7 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
layout.item_enumO("SEQUENCER_OT_mute", property="type", value='UNSELECTED', text="Mute Deselected Strips")
-
+ layout.itemO("SEQUENCER_OT_snap")
# Panels
class SequencerButtonsPanel(bpy.types.Panel):
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 9c3191c93d6..20ad1b61981 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -1388,13 +1388,20 @@ static int seq_get_snaplimit(View2D *v2d)
}
#endif
-void seq_snap(Scene *scene, short event)
+/* Operator functions */
+
+/* snap operator*/
+static int sequencer_snap_exec(bContext *C, wmOperator *op)
{
+ Scene *scene= CTX_data_scene(C);
+
Editing *ed= seq_give_editing(scene, FALSE);
Sequence *seq;
-
+ int snap_frame;
- if(ed==NULL) return;
+ if(ed==NULL) return OPERATOR_CANCELLED;
+
+ snap_frame= RNA_int_get(op->ptr, "frame");
/* problem: contents of meta's are all shifted to the same position... */
@@ -1403,12 +1410,12 @@ void seq_snap(Scene *scene, short event)
if (seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK) &&
seq_tx_test(seq)) {
if((seq->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL))==0) {
- seq->start= CFRA-seq->startofs+seq->startstill;
+ seq->start= snap_frame-seq->startofs+seq->startstill;
} else {
if(seq->flag & SEQ_LEFTSEL) {
- seq_tx_set_final_left(seq, CFRA);
+ seq_tx_set_final_left(seq, snap_frame);
} else { /* SEQ_RIGHTSEL */
- seq_tx_set_final_right(seq, CFRA);
+ seq_tx_set_final_right(seq, snap_frame);
}
seq_tx_handle_xlimits(seq, seq->flag & SEQ_LEFTSEL, seq->flag & SEQ_RIGHTSEL);
}
@@ -1438,21 +1445,43 @@ void seq_snap(Scene *scene, short event)
/* as last: */
sort_seq(scene);
-
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+
+ return OPERATOR_FINISHED;
}
-void seq_snap_menu(Scene *scene)
+static int sequencer_snap_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- short event;
+ Scene *scene = CTX_data_scene(C);
- event= pupmenu("Snap %t|To Current Frame%x1");
- if(event < 1) return;
+ int snap_frame;
- seq_snap(scene, event);
+ snap_frame= CFRA;
+
+ RNA_int_set(op->ptr, "frame", snap_frame);
+ return sequencer_snap_exec(C, op);
}
-/* Operator functions */
+void SEQUENCER_OT_snap(struct wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Snap strips";
+ ot->idname= "SEQUENCER_OT_snap";
+
+ /* api callbacks */
+ ot->invoke= sequencer_snap_invoke;
+ ot->exec= sequencer_snap_exec;
+
+ ot->poll= ED_operator_sequencer_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_int(ot->srna, "frame", 0, INT_MIN, INT_MAX, "Frame", "Frame where selected strips will snaped", INT_MIN, INT_MAX);
+}
+/* mute operator */
static int sequencer_mute_exec(bContext *C, wmOperator *op)
{
Scene *scene= CTX_data_scene(C);
diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h
index 1f78c4d5199..6d61f743917 100644
--- a/source/blender/editors/space_sequencer/sequencer_intern.h
+++ b/source/blender/editors/space_sequencer/sequencer_intern.h
@@ -89,6 +89,7 @@ void SEQUENCER_OT_images_separate(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_make(struct wmOperatorType *ot);
void SEQUENCER_OT_meta_separate(struct wmOperatorType *ot);
+void SEQUENCER_OT_snap(struct wmOperatorType *ot);
void SEQUENCER_OT_view_all(struct wmOperatorType *ot);
void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 600ef87e1b3..c6e5fbe39a4 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -77,6 +77,7 @@ void sequencer_operatortypes(void)
WM_operatortype_append(SEQUENCER_OT_meta_toggle);
WM_operatortype_append(SEQUENCER_OT_meta_make);
WM_operatortype_append(SEQUENCER_OT_meta_separate);
+ WM_operatortype_append(SEQUENCER_OT_snap);
WM_operatortype_append(SEQUENCER_OT_view_all);
WM_operatortype_append(SEQUENCER_OT_view_selected);