merge with 2.5 (not trunk, last merge message said that on accident) at r22252
[blender.git] / source / blender / makesrna / intern / rna_nla.c
index 97f35af1db78c95f5daa114800fcf34bf40ef99a..a9b289f314bcd2a7595d02e503d926ca97aaeb2a 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * $Id$
+ * $Id: rna_nla.c 21537 2009-07-11 22:22:53Z gsrb3d $
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
 #include <math.h>
 
 /* needed for some of the validation stuff... */
+#include "BKE_animsys.h"
 #include "BKE_nla.h"
 
 /* temp constant defined for these funcs only... */
 #define NLASTRIP_MIN_LEN_THRESH        0.1f
 
+void rna_NlaStrip_name_set(PointerRNA *ptr, const char *value)
+{
+       NlaStrip *data= (NlaStrip *)ptr->data;
+       
+       /* copy the name first */
+       BLI_strncpy(data->name, value, sizeof(data->name));
+       
+       /* validate if there's enough info to do so */
+       if (ptr->id.data) {
+               AnimData *adt= BKE_animdata_from_id(ptr->id.data);
+               BKE_nlastrip_validate_name(adt, data);
+       }
+}
+
+
 static void rna_NlaStrip_start_frame_set(PointerRNA *ptr, float value)
 {
        NlaStrip *data= (NlaStrip*)ptr->data;
@@ -227,6 +243,19 @@ static void rna_NlaStrip_animated_time_set(PointerRNA *ptr, int value)
 
 #else
 
+/* enum defines exported for rna_animation.c */
+EnumPropertyItem nla_mode_blend_items[] = {
+       {NLASTRIP_MODE_REPLACE, "REPLACE", 0, "Replace", "Result strip replaces the accumulated results by amount specified by influence."},
+       {NLASTRIP_MODE_ADD, "ADD", 0, "Add", "Weighted result of strip is added to the accumlated results."},
+       {NLASTRIP_MODE_SUBTRACT, "SUBTRACT", 0, "Subtract", "Weighted result of strip is removed from the accumlated results."},
+       {NLASTRIP_MODE_MULTIPLY, "MULITPLY", 0, "Multiply", "Weighted result of strip is multiplied with the accumlated results."},
+       {0, NULL, 0, NULL, NULL}};
+EnumPropertyItem nla_mode_extend_items[] = {
+       {NLASTRIP_EXTEND_NOTHING, "NOTHING", 0, "Nothing", "Strip has no influence past its extents."},
+       {NLASTRIP_EXTEND_HOLD, "HOLD", 0, "Hold", "Hold the first frame if no previous strips in track, and always hold last frame."},
+       {NLASTRIP_EXTEND_HOLD_FORWARD, "HOLD_FORWARD", 0, "Hold Forward", "Only hold last frame."},
+       {0, NULL, 0, NULL, NULL}};
+
 void rna_def_nlastrip(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -238,23 +267,18 @@ void rna_def_nlastrip(BlenderRNA *brna)
                {NLASTRIP_TYPE_TRANSITION, "TRANSITION", 0, "Transition", "NLA Strip 'transitions' between adjacent strips."},
                {NLASTRIP_TYPE_META, "META", 0, "Meta", "NLA Strip acts as a container for adjacent strips."},
                {0, NULL, 0, NULL, NULL}};
-       static EnumPropertyItem prop_mode_blend_items[] = {
-               {NLASTRIP_MODE_REPLACE, "REPLACE", 0, "Replace", "Result strip replaces the accumulated results by amount specified by influence."},
-               {NLASTRIP_MODE_ADD, "ADD", 0, "Add", "Weighted result of strip is added to the accumlated results."},
-               {NLASTRIP_MODE_SUBTRACT, "SUBTRACT", 0, "Subtract", "Weighted result of strip is removed from the accumlated results."},
-               {NLASTRIP_MODE_MULTIPLY, "MULITPLY", 0, "Multiply", "Weighted result of strip is multiplied with the accumlated results."},
-               {0, NULL, 0, NULL, NULL}};
-       static EnumPropertyItem prop_mode_extend_items[] = {
-               {NLASTRIP_EXTEND_NOTHING, "NOTHING", 0, "Nothing", "Strip has no influence past its extents."},
-               {NLASTRIP_EXTEND_HOLD, "HOLD", 0, "Hold", "Hold the first frame if no previous strips in track, and always hold last frame."},
-               {NLASTRIP_EXTEND_HOLD_FORWARD, "HOLD_FORWARD", 0, "Hold Forward", "Only hold last frame."},
-               {0, NULL, 0, NULL, NULL}};
        
        /* struct definition */
        srna= RNA_def_struct(brna, "NlaStrip", NULL);
        RNA_def_struct_ui_text(srna, "NLA Strip", "A container referencing an existing Action.");
        RNA_def_struct_ui_icon(srna, ICON_NLA); // XXX
        
+       /* name property */
+       prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+       RNA_def_property_ui_text(prop, "Name", "");
+       RNA_def_property_string_funcs(prop, NULL, NULL, "rna_NlaStrip_name_set");
+       RNA_def_struct_name_property(srna, prop);
+       
        /* Enums */
        prop= RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "type");
@@ -264,12 +288,12 @@ void rna_def_nlastrip(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "extrapolation", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "extendmode");
-       RNA_def_property_enum_items(prop, prop_mode_extend_items);
+       RNA_def_property_enum_items(prop, nla_mode_extend_items);
        RNA_def_property_ui_text(prop, "Extrapolation", "Action to take for gaps past the strip extents.");
        
        prop= RNA_def_property(srna, "blending", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "blendmode");
-       RNA_def_property_enum_items(prop, prop_mode_blend_items);
+       RNA_def_property_enum_items(prop, nla_mode_blend_items);
        RNA_def_property_ui_text(prop, "Blending", "Method used for combining strip's result with accumulated result.");
        
        /* Strip extents */