[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45083] trunk/blender: Fix #30491: Not Updating Scene Length

Sergey Sharybin sergey.vfx at gmail.com
Thu Mar 22 14:22:37 CET 2012


Revision: 45083
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45083
Author:   nazgul
Date:     2012-03-22 13:22:28 +0000 (Thu, 22 Mar 2012)
Log Message:
-----------
Fix #30491: Not Updating Scene Length
(also fixes special request from Ian for Mango)

Added operator to update actual content length of all selected strips.
Can be useful for scenes and movies as well after doing making changes to
scene/movie.

Can be improved further to deal better with cases when strip has got effect
and it's get reshuffled because of overlapping after changing it's length.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py	2012-03-22 12:19:31 UTC (rev 45082)
+++ trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py	2012-03-22 13:22:28 UTC (rev 45083)
@@ -242,6 +242,7 @@
         layout.operator("sequencer.offset_clear")
         layout.operator("sequencer.deinterlace_selected_movies")
         layout.operator("sequencer.rebuild_proxy")
+        layout.operator("sequencer.update_strip_length")
         layout.separator()
 
         layout.operator("sequencer.duplicate")

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-03-22 12:19:31 UTC (rev 45082)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-03-22 13:22:28 UTC (rev 45083)
@@ -55,6 +55,7 @@
 #include "BKE_sequencer.h"
 #include "BKE_report.h"
 #include "BKE_sound.h"
+#include "BKE_movieclip.h"
 
 #include "IMB_imbuf.h"
 
@@ -3055,3 +3056,65 @@
 
 	WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH|WM_FILESEL_FILEPATH|WM_FILESEL_FILES, FILE_DEFAULTDISPLAY);
 }
+
+static int sequencer_update_strip_length_exec(bContext *C, wmOperator *UNUSED(op))
+{
+	Scene *scene = CTX_data_scene(C);
+	Editing *ed = seq_give_editing(scene, FALSE);
+	Sequence *seq;
+	int update = FALSE;
+
+	SEQP_BEGIN(ed, seq) {
+		if ((seq->flag & SELECT)) {
+			int changed = FALSE;
+
+			switch (seq->type) {
+				case SEQ_SCENE:
+					seq->len = seq->scene->r.efra - seq->scene->r.sfra + 1;
+					changed = TRUE;
+					break;
+				case SEQ_MOVIECLIP:
+					seq->len = BKE_movieclip_get_duration(seq->clip);
+					changed = TRUE;
+					break;
+				case SEQ_MOVIE:
+					seq->len = IMB_anim_get_duration(seq->anim, IMB_TC_RECORD_RUN);
+					changed = TRUE;
+					break;
+			}
+
+			if (changed) {
+				calc_sequence_disp(scene, seq);
+
+				if (seq_test_overlap(ed->seqbasep, seq))
+					shuffle_seq(ed->seqbasep, seq, scene);
+
+				update = TRUE;
+			}
+		}
+	}
+	SEQ_END
+
+	if (update) {
+		free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
+
+		WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
+	}
+
+	return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_update_strip_length(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Update Strip Length";
+	ot->idname = "SEQUENCER_OT_update_strip_length";
+	ot->description = "Update actual content length for selected strips";
+
+	/* api callbacks */
+	ot->exec = sequencer_update_strip_length_exec;
+	ot->poll = ED_operator_sequencer_active;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2012-03-22 12:19:31 UTC (rev 45082)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2012-03-22 13:22:28 UTC (rev 45083)
@@ -117,6 +117,8 @@
 
 void SEQUENCER_OT_rebuild_proxy(struct wmOperatorType *ot);
 
+void SEQUENCER_OT_update_strip_length(struct wmOperatorType *ot);
+
 /* preview specific operators */
 void SEQUENCER_OT_view_all_preview(struct wmOperatorType *ot);
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2012-03-22 12:19:31 UTC (rev 45082)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2012-03-22 13:22:28 UTC (rev 45083)
@@ -113,6 +113,8 @@
 
 	WM_operatortype_append(SEQUENCER_OT_copy);
 	WM_operatortype_append(SEQUENCER_OT_paste);
+
+	WM_operatortype_append(SEQUENCER_OT_update_strip_length);
 }
 
 




More information about the Bf-blender-cvs mailing list