[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20770] branches/blender2.5/blender: patch from Xavier Thomas, add back the sequencer snap operator

Campbell Barton ideasman42 at gmail.com
Tue Jun 9 23:30:00 CEST 2009


Revision: 20770
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20770
Author:   campbellbarton
Date:     2009-06-09 23:29:59 +0200 (Tue, 09 Jun 2009)

Log Message:
-----------
patch from Xavier Thomas, add back the sequencer snap operator

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/space_sequencer.py
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c

Modified: branches/blender2.5/blender/release/ui/space_sequencer.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_sequencer.py	2009-06-09 20:03:52 UTC (rev 20769)
+++ branches/blender2.5/blender/release/ui/space_sequencer.py	2009-06-09 21:29:59 UTC (rev 20770)
@@ -239,8 +239,8 @@
 		
 		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):
 	__space_type__ = "SEQUENCE_EDITOR"

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-06-09 20:03:52 UTC (rev 20769)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-06-09 21:29:59 UTC (rev 20770)
@@ -1388,14 +1388,21 @@
 }
 #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... */
 
 	/* also check metas */
@@ -1403,12 +1410,12 @@
 		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 @@
 
 	/* as last: */
 	sort_seq(scene);
+	
+	ED_area_tag_redraw(CTX_wm_area(C));
+	
+	return OPERATOR_FINISHED;
+}
 
+static int sequencer_snap_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+	Scene *scene = CTX_data_scene(C);
+	
+	int snap_frame;
+	
+	snap_frame= CFRA;
+	
+	RNA_int_set(op->ptr, "frame", snap_frame);
+	return sequencer_snap_exec(C, op);
 }
 
-void seq_snap_menu(Scene *scene)
+void SEQUENCER_OT_snap(struct wmOperatorType *ot)
 {
-	short event;
+	/* 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;
 	
-	event= pupmenu("Snap %t|To Current Frame%x1");
-	if(event < 1) return;
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 	
-	seq_snap(scene, event);
+	RNA_def_int(ot->srna, "frame", 0, INT_MIN, INT_MAX, "Frame", "Frame where selected strips will snaped", INT_MIN, INT_MAX);
 }
 
-/* Operator functions */
-
+/* mute operator */
 static int sequencer_mute_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene= CTX_data_scene(C);

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-06-09 20:03:52 UTC (rev 20769)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-06-09 21:29:59 UTC (rev 20770)
@@ -89,6 +89,7 @@
 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);

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2009-06-09 20:03:52 UTC (rev 20769)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2009-06-09 21:29:59 UTC (rev 20770)
@@ -77,6 +77,7 @@
 	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);





More information about the Bf-blender-cvs mailing list