Revision: 26698
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26698
Author:   aligorith
Date:     2010-02-08 10:22:17 +0100 (Mon, 08 Feb 2010)

Log Message:
-----------
RNA - Added reset to defaults support for Strings too

Many string properties need tweaks to work correctly with this, since many 
don't have any reasonable defaults set (especially name fields, which often get 
cleared with these changes).

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/intern/rna_access.c

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h  2010-02-08 08:31:06 UTC 
(rev 26697)
+++ trunk/blender/source/blender/makesrna/RNA_access.h  2010-02-08 09:22:17 UTC 
(rev 26698)
@@ -701,7 +701,9 @@
 char *RNA_property_string_get_alloc(PointerRNA *ptr, PropertyRNA *prop, char 
*fixedbuf, int fixedlen);
 void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char 
*value);
 int RNA_property_string_length(PointerRNA *ptr, PropertyRNA *prop);
-// TODO: get default strings...
+void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char 
*value);
+char *RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA 
*prop, char *fixedbuf, int fixedlen);
+int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop);
 
 int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop);
 void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value);

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c   2010-02-08 
08:31:06 UTC (rev 26697)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c   2010-02-08 
09:22:17 UTC (rev 26698)
@@ -1775,6 +1775,36 @@
        }
 }
 
+void RNA_property_string_get_default(PointerRNA *ptr, PropertyRNA *prop, char 
*value)
+{
+       StringPropertyRNA *sprop= (StringPropertyRNA*)prop;
+       strcpy(value, sprop->defaultvalue);
+}
+
+char *RNA_property_string_get_default_alloc(PointerRNA *ptr, PropertyRNA 
*prop, char *fixedbuf, int fixedlen)
+{
+       char *buf;
+       int length;
+
+       length= RNA_property_string_default_length(ptr, prop);
+
+       if(length+1 < fixedlen)
+               buf= fixedbuf;
+       else
+               buf= MEM_callocN(sizeof(char)*(length+1), 
"RNA_string_get_alloc");
+
+       RNA_property_string_get_default(ptr, prop, buf);
+
+       return buf;
+}
+
+/* this is the length without \0 terminator */
+int RNA_property_string_default_length(PointerRNA *ptr, PropertyRNA *prop)
+{
+       StringPropertyRNA *sprop= (StringPropertyRNA*)prop;
+       return strlen(sprop->defaultvalue);
+}
+
 int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
 {
        EnumPropertyRNA *eprop= (EnumPropertyRNA*)prop;
@@ -4316,8 +4346,15 @@
                        return 1;
                }
                
+               case PROP_STRING:
+               {
+                       char *value= RNA_property_string_get_default_alloc(ptr, 
prop, NULL, 0);
+                       RNA_property_string_set(ptr, prop, value);
+                       MEM_freeN(value);
+                       return 1;
+               }
+               
                //case PROP_POINTER:
-               //case PROP_STRING:
                default: 
                        // FIXME: many of the other types such as strings and 
pointers need this implemented too!
                        return 0;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to