[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25439] trunk/blender: sequencer clipboard

Campbell Barton ideasman42 at gmail.com
Thu Dec 17 15:45:47 CET 2009


Revision: 25439
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25439
Author:   campbellbarton
Date:     2009-12-17 15:45:47 +0100 (Thu, 17 Dec 2009)

Log Message:
-----------
sequencer clipboard
note: for inter-scene copying this uses a hack because Colin needs it because half his scene was scrambled by blender.

Modified Paths:
--------------
    trunk/blender/release/scripts/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_intern.h
    trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    trunk/blender/source/blender/makesdna/DNA_sequence_types.h

Modified: trunk/blender/release/scripts/ui/space_sequencer.py
===================================================================
--- trunk/blender/release/scripts/ui/space_sequencer.py	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/release/scripts/ui/space_sequencer.py	2009-12-17 14:45:47 UTC (rev 25439)
@@ -56,6 +56,10 @@
             layout.prop(st, "display_mode", text="")
 
         if (st.view_type == 'SEQUENCER'):
+            row = layout.row(align=True)
+            row.operator("sequencer.copy", text="", icon='COPYDOWN')
+            row.operator("sequencer.paste", text="", icon='PASTEDOWN')
+
             layout.separator()
             layout.operator("sequencer.refresh_all")
         elif (st.view_type == 'SEQUENCER_PREVIEW'):

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2009-12-17 14:45:47 UTC (rev 25439)
@@ -141,6 +141,7 @@
 void seq_free_sequence(struct Scene *scene, struct Sequence *seq);
 void seq_free_strip(struct Strip *strip);
 void seq_free_editing(struct Scene *scene);
+void seq_free_clipboard(struct Scene *scene);
 struct Editing *seq_give_editing(struct Scene *scene, int alloc);
 char *give_seqname(struct Sequence *seq);
 struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2009-12-17 14:45:47 UTC (rev 25439)
@@ -232,11 +232,23 @@
 	return scene->ed;
 }
 
+void seq_free_clipboard(Scene *scene)
+{
+	Editing *ed = scene->ed;
+	Sequence *seq, *nseq;
+
+	for(seq= ed->seqbase_clipboard.first; seq; seq= nseq) {
+		nseq= seq->next;
+		seq_free_sequence(scene, seq);
+	}
+	ed->seqbase_clipboard.first= ed->seqbase_clipboard.last= NULL;
+}
+
 void seq_free_editing(Scene *scene)
 {
 	Editing *ed = scene->ed;
 	MetaStack *ms;
-	Sequence *seq;
+	Sequence *seq, *nseq;
 
 	if(ed==NULL)
 		return;
@@ -246,6 +258,8 @@
 	}
 	SEQ_END
 
+	seq_free_clipboard(scene);
+
 	while((ms= ed->metastack.first)) {
 		BLI_remlink(&ed->metastack, ms);
 		MEM_freeN(ms);

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-12-17 14:45:47 UTC (rev 25439)
@@ -2746,3 +2746,66 @@
 	/* properties */
 }
 
+static void *_copy_scene= NULL; // XXX - FIXME
+static int sequencer_copy_exec(bContext *C, wmOperator *op)
+{
+	Scene *scene= CTX_data_scene(C);
+	Editing *ed= seq_give_editing(scene, FALSE);
+
+	if(ed==NULL)
+		return OPERATOR_CANCELLED;
+
+	seq_free_clipboard(scene);
+	recurs_dupli_seq(scene, ed->seqbasep, &ed->seqbase_clipboard);
+
+	_copy_scene = scene;
+	return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_copy(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Copy";
+	ot->idname= "SEQUENCER_OT_copy";
+	ot->description="";
+
+	/* api callbacks */
+	ot->exec= sequencer_copy_exec;
+	ot->poll= ED_operator_sequencer_active;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	/* properties */
+}
+
+static int sequencer_paste_exec(bContext *C, wmOperator *op)
+{
+	int retval = OPERATOR_CANCELLED;
+	Scene *scene= CTX_data_scene(C);
+	Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */
+	Editing *ed_from= seq_give_editing((Scene *)_copy_scene, TRUE); /* create if needed */
+
+
+	addlisttolist(ed->seqbasep, &ed_from->seqbase_clipboard);
+	ed_from->seqbase_clipboard.first= ed_from->seqbase_clipboard.last= NULL; // XXX - could duplicate these to use the clip
+
+	return OPERATOR_FINISHED;
+}
+
+void SEQUENCER_OT_paste(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Paste";
+	ot->idname= "SEQUENCER_OT_paste";
+	ot->description="";
+
+	/* api callbacks */
+	ot->exec= sequencer_paste_exec;
+	ot->poll= ED_operator_sequencer_active;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	/* properties */
+}

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-12-17 14:45:47 UTC (rev 25439)
@@ -98,6 +98,9 @@
 void SEQUENCER_OT_view_all(struct wmOperatorType *ot);
 void SEQUENCER_OT_view_selected(struct wmOperatorType *ot);
 
+void SEQUENCER_OT_copy(struct wmOperatorType *ot);
+void SEQUENCER_OT_paste(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	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2009-12-17 14:45:47 UTC (rev 25439)
@@ -106,6 +106,9 @@
 	WM_operatortype_append(SEQUENCER_OT_image_strip_add);
 	WM_operatortype_append(SEQUENCER_OT_effect_strip_add);
 	WM_operatortype_append(SEQUENCER_OT_properties);
+
+	WM_operatortype_append(SEQUENCER_OT_copy);
+	WM_operatortype_append(SEQUENCER_OT_paste);
 }
 
 

Modified: trunk/blender/source/blender/makesdna/DNA_sequence_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sequence_types.h	2009-12-17 14:38:30 UTC (rev 25438)
+++ trunk/blender/source/blender/makesdna/DNA_sequence_types.h	2009-12-17 14:45:47 UTC (rev 25439)
@@ -186,6 +186,7 @@
 	ListBase *seqbasep; /* pointer to the current list of seq's being edited (can be within a meta strip) */
 	ListBase seqbase;	/* pointer to the top-most seq's */
 	ListBase metastack;
+	ListBase seqbase_clipboard; /* optionally store a copy */
 	
 	/* Context vars, used to be static */
 	Sequence *act_seq;





More information about the Bf-blender-cvs mailing list