[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55326] trunk/blender/source/blender/ editors/space_nla/nla_buttons.c: NLA Editor: Show the ID+AnimData block that the AnimData panel is showing the

Joshua Leung aligorith at gmail.com
Sat Mar 16 03:42:22 CET 2013


Revision: 55326
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55326
Author:   aligorith
Date:     2013-03-16 02:42:19 +0000 (Sat, 16 Mar 2013)
Log Message:
-----------
NLA Editor: Show the ID+AnimData block that the AnimData panel is showing the
active action for

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_nla/nla_buttons.c

Modified: trunk/blender/source/blender/editors/space_nla/nla_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_nla/nla_buttons.c	2013-03-16 01:19:03 UTC (rev 55325)
+++ trunk/blender/source/blender/editors/space_nla/nla_buttons.c	2013-03-16 02:42:19 UTC (rev 55326)
@@ -147,16 +147,25 @@
 			case ANIMTYPE_DSSPK:
 			{
 				/* for these channels, we only do AnimData */
-				if (ale->id && ale->adt) {
-					if (adt_ptr) {
-						/* AnimData pointer */
-						RNA_pointer_create(ale->id, &RNA_AnimData, ale->adt, adt_ptr);
-						
-						/* set found status to -1, since setting to 1 would break the loop 
-						 * and potentially skip an active NLA-Track in some cases...
-						 */
-						found = -1;
+				if (ale->adt && adt_ptr) {
+					ID *id;
+					
+					if ((ale->data == NULL) || (ale->type == ANIMTYPE_OBJECT)) {
+						/* ale->data is not an ID block! */
+						id = ale->id;
 					}
+					else {
+						/* ale->data is always the proper ID block we need, but ale->id may not be (i.e. for textures) */
+						id = (ID *)ale->data;
+					}
+					
+					/* AnimData pointer */
+					RNA_pointer_create(id, &RNA_AnimData, ale->adt, adt_ptr);
+					
+					/* set found status to -1, since setting to 1 would break the loop 
+					 * and potentially skip an active NLA-Track in some cases...
+					 */
+					found = -1;
 				}
 			}
 			break;
@@ -249,6 +258,28 @@
 	block = uiLayoutGetBlock(layout);
 	uiBlockSetHandleFunc(block, do_nla_region_buttons, NULL);
 	
+	/* AnimData Source Properties ----------------------------------- */
+	
+	/* icon + id-block name of block where AnimData came from to prevent 
+	 * accidentally changing the properties of the wrong action
+	 */
+	if (adt_ptr.id.data) {
+		ID *id = adt_ptr.id.data;
+		PointerRNA id_ptr;
+		
+		RNA_id_pointer_create(id, &id_ptr);
+		
+		/* ID-block name > AnimData */
+		row = uiLayoutRow(layout, TRUE);
+		uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT);
+		
+		uiItemL(row, id->name + 2, RNA_struct_ui_icon(id_ptr.type));  /* id-block (src) */
+		uiItemL(row, "", VICO_SMALL_TRI_RIGHT_VEC);                   /* expander */
+		uiItemL(row, IFACE_("Animation Data"), ICON_ANIM_DATA);       /* animdata */
+		
+		uiItemS(layout);
+	}
+	
 	/* Active Action Properties ------------------------------------- */
 	/* action */
 	row = uiLayoutRow(layout, TRUE);




More information about the Bf-blender-cvs mailing list