[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26698] trunk/blender/source/blender/ makesrna: RNA - Added reset to defaults support for Strings too

Joshua Leung aligorith at gmail.com
Mon Feb 8 10:22:19 CET 2010


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;





More information about the Bf-blender-cvs mailing list