[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31453] trunk/blender: - Properties from base classes are now registered too, this allows class mix-in's to define properties.

Campbell Barton ideasman42 at gmail.com
Thu Aug 19 12:16:30 CEST 2010


Revision: 31453
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31453
Author:   campbellbarton
Date:     2010-08-19 12:16:30 +0200 (Thu, 19 Aug 2010)

Log Message:
-----------
- Properties from base classes are now registered too, this allows class mix-in's to define properties.
  An example of how this is useful - an importer mixin could define the filepath properties and a generic invoke function which can run the subclasses exec for each selected file.

- Panels and Menus now skip the property check when registering.

- renamed _idproperties_ to _idprops_ in function names, function names were getting very long.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_physics_fluid.py
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/RNA_define.h
    trunk/blender/source/blender/makesrna/RNA_types.h
    trunk/blender/source/blender/makesrna/intern/rna_ID.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/makesrna/intern/rna_armature.c
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_internal.h
    trunk/blender/source/blender/makesrna/intern/rna_pose.c
    trunk/blender/source/blender/makesrna/intern/rna_rna.c
    trunk/blender/source/blender/makesrna/intern/rna_ui.c
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/python/intern/bpy_operator_wrap.c
    trunk/blender/source/blender/python/intern/bpy_rna.c
    trunk/blender/source/blender/python/intern/bpy_rna.h

Modified: trunk/blender/release/scripts/ui/properties_physics_fluid.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_physics_fluid.py	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/release/scripts/ui/properties_physics_fluid.py	2010-08-19 10:16:30 UTC (rev 31453)
@@ -69,7 +69,7 @@
 
             layout = layout.column()
             if fluid.type not in ('NONE', 'DOMAIN', 'PARTICLE'):
-                layout.active = fluid.active
+                layout.active = fluid.use
 
             if fluid.type == 'DOMAIN':
                 layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='MOD_FLUIDSIM')

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2010-08-19 10:16:30 UTC (rev 31453)
@@ -607,8 +607,9 @@
 void *RNA_struct_blender_type_get(StructRNA *srna);
 void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type);
 
-struct IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create);
-int RNA_struct_idproperties_check(StructRNA *srna);
+struct IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create);
+int RNA_struct_idprops_check(StructRNA *srna);
+int RNA_struct_idprops_register_check(StructRNA *type);
 
 
 PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier);

Modified: trunk/blender/source/blender/makesrna/RNA_define.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_define.h	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/RNA_define.h	2010-08-19 10:16:30 UTC (rev 31453)
@@ -57,7 +57,7 @@
 void RNA_def_struct_flag(StructRNA *srna, int flag);
 void RNA_def_struct_clear_flag(StructRNA *srna, int flag);
 void RNA_def_struct_refine_func(StructRNA *srna, const char *refine);
-void RNA_def_struct_idproperties_func(StructRNA *srna, const char *refine);
+void RNA_def_struct_idprops_func(StructRNA *srna, const char *refine);
 void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg);
 void RNA_def_struct_path_func(StructRNA *srna, const char *path);
 void RNA_def_struct_identifier(StructRNA *srna, const char *identifier);

Modified: trunk/blender/source/blender/makesrna/RNA_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_types.h	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/RNA_types.h	2010-08-19 10:16:30 UTC (rev 31453)
@@ -298,7 +298,8 @@
 	/* internal flags */
 	STRUCT_RUNTIME = 4,
 	STRUCT_GENERATED = 8,
-	STRUCT_FREE_POINTERS = 16
+	STRUCT_FREE_POINTERS = 16,
+	STRUCT_NO_IDPROPERTIES = 32, /* Menu's and Panels don't need properties */
 } StructFlag;
 
 typedef int (*StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function);

Modified: trunk/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-08-19 10:16:30 UTC (rev 31453)
@@ -176,7 +176,7 @@
 	return ID_code_to_RNA_type(GS(id->name));
 }
 
-IDProperty *rna_ID_idproperties(PointerRNA *ptr, int create)
+IDProperty *rna_ID_idprops(PointerRNA *ptr, int create)
 {
 	return IDP_GetProperties(ptr->data, create);
 }
@@ -195,7 +195,7 @@
 	}
 }
 
-IDProperty *rna_IDPropertyGroup_idproperties(PointerRNA *ptr, int create)
+IDProperty *rna_IDPropertyGroup_idprops(PointerRNA *ptr, int create)
 {
 	return ptr->data;
 }
@@ -317,7 +317,7 @@
 	 * care of the properties here */
 	srna= RNA_def_struct(brna, "IDPropertyGroup", NULL);
 	RNA_def_struct_ui_text(srna, "ID Property Group", "Group of ID properties");
-	RNA_def_struct_idproperties_func(srna, "rna_IDPropertyGroup_idproperties");
+	RNA_def_struct_idprops_func(srna, "rna_IDPropertyGroup_idprops");
 	RNA_def_struct_register_funcs(srna, "rna_IDPropertyGroup_register", "rna_IDPropertyGroup_unregister");
 	RNA_def_struct_refine_func(srna, "rna_IDPropertyGroup_refine");
 
@@ -341,7 +341,7 @@
 	RNA_def_struct_ui_text(srna, "ID", "Base type for datablocks, defining a unique name, linking from other libraries and garbage collection");
 	RNA_def_struct_flag(srna, STRUCT_ID|STRUCT_ID_REFCOUNT);
 	RNA_def_struct_refine_func(srna, "rna_ID_refine");
-	RNA_def_struct_idproperties_func(srna, "rna_ID_idproperties");
+	RNA_def_struct_idprops_func(srna, "rna_ID_idprops");
 
 	prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
 	RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name");

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2010-08-19 10:16:30 UTC (rev 31453)
@@ -241,7 +241,7 @@
 	return NULL;
 }
 
-IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
+IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create)
 {
 	StructRNA *type= ptr->type;
 
@@ -251,14 +251,14 @@
 	return NULL;
 }
 
-int RNA_struct_idproperties_check(StructRNA *srna)
+int RNA_struct_idprops_check(StructRNA *srna)
 {
 	return (srna && srna->idproperties) ? 1 : 0;
 }
 
 static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name)
 {
-	IDProperty *group= RNA_struct_idproperties(ptr, 0);
+	IDProperty *group= RNA_struct_idprops(ptr, 0);
 
 	if(group)
 		return IDP_GetPropertyFromGroup(group, name);
@@ -387,7 +387,7 @@
 			IDProperty *idprop= rna_idproperty_find(ptr, (*prop)->identifier);
 
 			if(idprop && !rna_idproperty_verify_valid(ptr, *prop, idprop)) {
-				IDProperty *group= RNA_struct_idproperties(ptr, 0);
+				IDProperty *group= RNA_struct_idprops(ptr, 0);
 
 				IDP_RemFromGroup(group, idprop);
 				IDP_FreeProperty(idprop);
@@ -510,6 +510,11 @@
 	return (type->flag & STRUCT_ID) != 0;
 }
 
+int RNA_struct_idprops_register_check(StructRNA *type)
+{
+	return (type->flag & STRUCT_NO_IDPROPERTIES) == 0;
+}
+
 int RNA_struct_is_a(StructRNA *type, StructRNA *srna)
 {
 	StructRNA *base;
@@ -1305,7 +1310,7 @@
 
 		val.i= value;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -1375,7 +1380,7 @@
 		val.array.len= prop->totarraylength;
 		val.array.type= IDP_INT;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -1472,7 +1477,7 @@
 
 		val.i= value;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -1542,7 +1547,7 @@
 		val.array.len= prop->totarraylength;
 		val.array.type= IDP_INT;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -1648,7 +1653,7 @@
 
 		val.f= value;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_FLOAT, val, (char*)prop->identifier));
 	}
@@ -1736,7 +1741,7 @@
 		val.array.len= prop->totarraylength;
 		val.array.type= IDP_FLOAT;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -1861,7 +1866,7 @@
 	else if(prop->flag & PROP_EDITABLE) {
 		IDProperty *group;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_NewString((char*)value, (char*)prop->identifier, RNA_property_string_maxlength(prop) - 1));
 	}
@@ -1926,7 +1931,7 @@
 
 		val.i= value;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -1999,7 +2004,7 @@
 
 		val.i= 0;
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_GROUP, val, (char*)prop->identifier));
 	}
@@ -2012,7 +2017,7 @@
 	IDProperty *idprop, *group;
 
 	if((idprop=rna_idproperty_check(&prop, ptr))) {
-		group= RNA_struct_idproperties(ptr, 0);
+		group= RNA_struct_idprops(ptr, 0);
 		
 		if(group) {
 			IDP_RemFromGroup(group, idprop);
@@ -2125,7 +2130,7 @@
 		IDProperty *group, *item;
 		IDPropertyTemplate val = {0};
 
-		group= RNA_struct_idproperties(ptr, 1);
+		group= RNA_struct_idprops(ptr, 1);
 		if(group) {
 			idprop= IDP_NewIDPArray(prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -2965,7 +2970,7 @@
 			return 0;
 
 		if(use_id_prop) { /* look up property name in current struct */
-			IDProperty *group= RNA_struct_idproperties(&curptr, 0);
+			IDProperty *group= RNA_struct_idprops(&curptr, 0);
 			if(group && rna_token_strip_quotes(token))
 				prop= (PropertyRNA *)IDP_GetPropertyFromGroup(group, token+1);
 		}

Modified: trunk/blender/source/blender/makesrna/intern/rna_armature.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_armature.c	2010-08-19 08:17:45 UTC (rev 31452)
+++ trunk/blender/source/blender/makesrna/intern/rna_armature.c	2010-08-19 10:16:30 UTC (rev 31453)
@@ -123,7 +123,7 @@
 	return BLI_sprintfN("bones[\"%s\"]", ((Bone*)ptr->data)->name);
 }
 
-static IDProperty *rna_Bone_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_Bone_idprops(PointerRNA *ptr, int create)
 {
 	Bone *bone= ptr->data;
 
@@ -135,7 +135,7 @@
 	return bone->prop;
 }
 
-static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_EditBone_idprops(PointerRNA *ptr, int create)
 {
 	EditBone *ebone= ptr->data;
 
@@ -504,7 +504,7 @@
 	RNA_def_struct_ui_text(srna, "Bone", "Bone in an Armature datablock");
 	RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list