[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24039] trunk/blender: shape key operators and buttons for reordering

Campbell Barton ideasman42 at gmail.com
Wed Oct 21 16:33:52 CEST 2009


Revision: 24039
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24039
Author:   campbellbarton
Date:     2009-10-21 16:33:52 +0200 (Wed, 21 Oct 2009)

Log Message:
-----------
shape key operators and buttons for reordering

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/buttons_data_mesh.py
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/object/object_shapekey.c

Modified: trunk/blender/release/scripts/ui/buttons_data_mesh.py
===================================================================
--- trunk/blender/release/scripts/ui/buttons_data_mesh.py	2009-10-21 10:56:31 UTC (rev 24038)
+++ trunk/blender/release/scripts/ui/buttons_data_mesh.py	2009-10-21 14:33:52 UTC (rev 24039)
@@ -125,9 +125,16 @@
 		subcol.itemO("object.shape_key_mirror", icon='ICON_MOD_MIRROR', text="")
 
 		if kb:
+			
 			col.itemS()
 
 			subcol = col.column(align=True)
+			subcol.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="")
+			subcol.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="")
+			
+			col.itemS()
+
+			subcol = col.column(align=True)
 			subcol.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="")
 			subcol.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="")
 

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h	2009-10-21 10:56:31 UTC (rev 24038)
+++ trunk/blender/source/blender/editors/object/object_intern.h	2009-10-21 14:33:52 UTC (rev 24039)
@@ -182,6 +182,7 @@
 void OBJECT_OT_shape_key_remove(struct wmOperatorType *ot);
 void OBJECT_OT_shape_key_clear(struct wmOperatorType *ot);
 void OBJECT_OT_shape_key_mirror(struct wmOperatorType *ot);
+void OBJECT_OT_shape_key_move(struct wmOperatorType *ot);
 
 /* object_group.c */
 void OBJECT_OT_group_add(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c	2009-10-21 10:56:31 UTC (rev 24038)
+++ trunk/blender/source/blender/editors/object/object_ops.c	2009-10-21 14:33:52 UTC (rev 24039)
@@ -178,6 +178,7 @@
 	WM_operatortype_append(OBJECT_OT_shape_key_remove);
 	WM_operatortype_append(OBJECT_OT_shape_key_clear);
 	WM_operatortype_append(OBJECT_OT_shape_key_mirror);
+	WM_operatortype_append(OBJECT_OT_shape_key_move);
 
 	WM_operatortype_append(LATTICE_OT_select_all_toggle);
 	WM_operatortype_append(LATTICE_OT_make_regular);

Modified: trunk/blender/source/blender/editors/object/object_shapekey.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_shapekey.c	2009-10-21 10:56:31 UTC (rev 24038)
+++ trunk/blender/source/blender/editors/object/object_shapekey.c	2009-10-21 14:33:52 UTC (rev 24039)
@@ -660,3 +660,63 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
+
+static int shape_key_move_exec(bContext *C, wmOperator *op)
+{
+	Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
+
+	int type= RNA_enum_get(op->ptr, "type");
+	Key *key= ob_get_key(ob);
+
+	if(key) {
+		KeyBlock *kb, *kb_other;
+		kb= BLI_findlink(&key->block, ob->shapenr-1);
+
+		if(type==-1) {
+			/* move back */
+			if(kb->prev) {
+				kb_other= kb->prev;
+				BLI_remlink(&key->block, kb);
+				BLI_insertlinkbefore(&key->block, kb_other, kb);
+				ob->shapenr--;
+			}
+		}
+		else {
+			/* move next */
+			if(kb->next) {
+				kb_other= kb->next;
+				BLI_remlink(&key->block, kb);
+				BLI_insertlinkafter(&key->block, kb_other, kb);
+				ob->shapenr++;
+			}
+		}
+	}
+
+	DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
+	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
+
+	return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_shape_key_move(wmOperatorType *ot)
+{
+	static EnumPropertyItem slot_move[] = {
+		{-1, "UP", 0, "Up", ""},
+		{1, "DOWN", 0, "Down", ""},
+		{0, NULL, 0, NULL, NULL}
+	};
+
+	/* identifiers */
+	ot->name= "Move Shape Key";
+	ot->idname= "OBJECT_OT_shape_key_move";
+
+	/* api callbacks */
+	ot->poll= shape_key_poll;
+	ot->exec= shape_key_move_exec;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	RNA_def_enum(ot->srna, "type", slot_move, 0, "Type", "");
+}
+





More information about the Bf-blender-cvs mailing list