[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45192] trunk/blender: Clean-up logic of behavior of refresh/reload operators in sequencer

Sergey Sharybin sergey.vfx at gmail.com
Tue Mar 27 00:26:32 CEST 2012


Revision: 45192
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45192
Author:   nazgul
Date:     2012-03-26 22:26:30 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Clean-up logic of behavior of refresh/reload operators in sequencer

After discussion with Campbell we found much nicer solution which
keeps operation with data much more clear:

- Refresh Sequencer is totally harmless, do not touch actual data
  and just removes everything from cache
- Reload Strip will reload data and adjust it's length for all
  selected strips without affecting on length of strip itself
- Reload Strip and Adjust length will do the same but will also
  adjust length of strip itself.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    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-26 20:49:33 UTC (rev 45191)
+++ trunk/blender/release/scripts/startup/bl_ui/space_sequencer.py	2012-03-26 22:26:30 UTC (rev 45192)
@@ -285,7 +285,10 @@
         #}
 
         layout.separator()
-        layout.operator("sequencer.reload")
+        props = layout.operator("sequencer.reload", text="Reload Strips")
+        props.adjust_length = False
+        props = layout.operator("sequencer.reload", text="Reload Strips and Adjust Length")
+        props.adjust_length = True
         layout.operator("sequencer.reassign_inputs")
         layout.operator("sequencer.swap_inputs")
         layout.separator()

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-03-26 20:49:33 UTC (rev 45191)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-03-26 22:26:30 UTC (rev 45192)
@@ -348,6 +348,4 @@
 extern ListBase seqbase_clipboard;
 extern int seqbase_clipboard_frame;
 
-void seq_update_sequence_length(struct Scene *scene, struct Editing *ed, struct Sequence *seq);
-
 #endif // __BKE_SEQUENCER_H__

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-03-26 20:49:33 UTC (rev 45191)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-03-26 22:26:30 UTC (rev 45192)
@@ -4007,31 +4007,3 @@
 		}
 	}
 }
-
-void seq_update_sequence_length(Scene *scene, Editing *ed, Sequence *seq)
-{
-	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_open_anim_file(seq);
-			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);
-	}
-}

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-03-26 20:49:33 UTC (rev 45191)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-03-26 22:26:30 UTC (rev 45192)
@@ -1273,15 +1273,22 @@
 }
 
 /* reload operator */
-static int sequencer_reload_exec(bContext *C, wmOperator *UNUSED(op))
+static int sequencer_reload_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene= CTX_data_scene(C);
 	Editing *ed= seq_give_editing(scene, FALSE);
 	Sequence *seq;
+	int adjust_length= RNA_boolean_get(op->ptr, "adjust_length");
 
 	for (seq= ed->seqbasep->first; seq; seq= seq->next) {
 		if (seq->flag & SELECT) {
 			update_changed_seq_and_deps(scene, seq, 0, 1);
+			reload_sequence_new_file(scene, seq, !adjust_length);
+
+			if (adjust_length) {
+				if (seq_test_overlap(ed->seqbasep, seq))
+					shuffle_seq(ed->seqbasep, seq, scene);
+			}
 		}
 	}
 
@@ -1292,6 +1299,8 @@
 
 void SEQUENCER_OT_reload(struct wmOperatorType *ot)
 {
+	PropertyRNA *prop;
+
 	/* identifiers */
 	ot->name = "Reload Strips";
 	ot->idname = "SEQUENCER_OT_reload";
@@ -1303,26 +1312,18 @@
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER; /* no undo, the data changed is stored outside 'main' */
+
+	prop = RNA_def_boolean(ot->srna, "adjust_length", 0, "Adjust Length", "Adjust lenght of strips to their data length");
+	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
 }
 
 /* reload operator */
-static void sequencer_refresh_all_length(Scene *scene, Editing *ed)
-{
-	Sequence *seq;
-
-	SEQP_BEGIN(ed, seq) {
-		seq_update_sequence_length(scene, ed, seq);
-	}
-	SEQ_END
-}
-
 static int sequencer_refresh_all_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Scene *scene= CTX_data_scene(C);
 	Editing *ed= seq_give_editing(scene, FALSE);
 
 	free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE);
-	sequencer_refresh_all_length(scene, ed);
 
 	WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene);
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2012-03-26 20:49:33 UTC (rev 45191)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2012-03-26 22:26:30 UTC (rev 45192)
@@ -159,7 +159,10 @@
 	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);
+	kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+		RNA_boolean_set(kmi->ptr, "adjust_length", TRUE);
 
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_offset_clear", OKEY, KM_PRESS, KM_ALT, 0);
 




More information about the Bf-blender-cvs mailing list