[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18226] branches/blender2.5/blender/source /blender: RNA

Brecht Van Lommel brecht at blender.org
Thu Jan 1 21:44:43 CET 2009


Revision: 18226
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18226
Author:   blendix
Date:     2009-01-01 21:44:40 +0100 (Thu, 01 Jan 2009)

Log Message:
-----------
RNA
* Object has some more properties wrapped, mostly game related.
* Scene frame changes now send a notifier.
* Added functions to create/free operator properties for calling
  operators. This also simplifies some duplicated code that did
  this. Ideally though this kind of thing should use the properties
  pointer provided by buttons and keymap items. Example code:

PointerRNA ptr;

WM_operator_properties_create(&ptr, "SOME_OT_name");
RNA_int_set(&ptr, "value", 42);
WM_operator_name_call(C, "SOME_OT_name", WM_OP_EXEC_DEFAULT, &ptr);
WM_operator_properties_free(&ptr);

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_keymap.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-01 20:44:40 UTC (rev 18226)
@@ -1371,11 +1371,10 @@
 
 static void ui_free_but(const bContext *C, uiBut *but)
 {
-	if(but->opproperties) {
-		IDP_FreeProperty(but->opproperties);
-		MEM_freeN(but->opproperties);
+	if(but->opptr) {
+		WM_operator_properties_free(but->opptr);
+		MEM_freeN(but->opptr);
 	}
-	if(but->opptr) MEM_freeN(but->opptr);
 	if(but->active) ui_button_active_cancel(C, but);
 	if(but->str && but->str != but->strdata) MEM_freeN(but->str);
 	ui_free_link(but->link);
@@ -2610,15 +2609,9 @@
 
 PointerRNA *uiButGetOperatorPtrRNA(uiBut *but)
 {
-	wmOperatorType *ot;
-	
 	if(but->opname && !but->opptr) {
-		ot= WM_operatortype_find(but->opname);
-
-		if(ot) {
-			but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr");
-			RNA_pointer_create(NULL, NULL, ot->srna, &but->opproperties, but->opptr);
-		}
+		but->opptr= MEM_callocN(sizeof(PointerRNA), "uiButOpPtr");
+		WM_operator_properties_create(but->opptr, but->opname);
 	}
 
 	return but->opptr;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-01 20:44:40 UTC (rev 18226)
@@ -147,7 +147,7 @@
 
 	const char *opname;
 	int opcontext;
-	IDProperty *opproperties;
+	PointerRNA *opptr;
 
 	PointerRNA rnapoin;
 	PropertyRNA *rnaprop;
@@ -190,14 +190,14 @@
 
 		after->opname= but->opname;
 		after->opcontext= but->opcontext;
-		after->opproperties= but->opproperties;
+		after->opptr= but->opptr;
 
 		after->rnapoin= but->rnapoin;
 		after->rnaprop= but->rnaprop;
 
 		but->opname= NULL;
 		but->opcontext= 0;
-		but->opproperties= NULL;
+		but->opptr= NULL;
 
 		BLI_addtail(&UIAfterFuncs, after);
 	}
@@ -222,10 +222,10 @@
 			after->butm_func(C, after->butm_func_arg, after->a2);
 
 		if(after->opname)
-			WM_operator_name_call(C, after->opname, after->opcontext, after->opproperties);
-		if(after->opproperties) {
-			IDP_FreeProperty(after->opproperties);
-			MEM_freeN(after->opproperties);
+			WM_operator_name_call(C, after->opname, after->opcontext, after->opptr);
+		if(after->opptr) {
+			WM_operator_properties_free(after->opptr);
+			MEM_freeN(after->opptr);
 		}
 
 		if(after->rnapoin.data)

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c	2009-01-01 20:44:40 UTC (rev 18226)
@@ -1096,7 +1096,7 @@
 				te->name= coloritem[index];
 			else {
 				te->name= MEM_callocN(sizeof(char)*20, "OutlinerRNAArrayName");
-				sprintf(te->name, "    %d", index);
+				sprintf(te->name, "  %d", index+1);
 				te->flag |= TE_FREE_NAME;
 			}
 		}
@@ -3227,6 +3227,8 @@
 		return ICON_RNA;
 	else if(rnatype == &RNA_CollectionProperty)
 		return ICON_RNA;
+	else if(rnatype == &RNA_ObjectGameSettings)
+		return ICON_GAME;
 	else
 		return ICON_DOT;
 }

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-01-01 20:44:40 UTC (rev 18226)
@@ -151,7 +151,6 @@
 	struct wmKeymapItem *next, *prev;
 	
 	char idname[64];				/* used to retrieve operator type pointer */
-	IDProperty *properties;			/* default operator properties */
 	struct PointerRNA *ptr;			/* rna pointer to access properties */
 	
 	short type;						/* event code itself */

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-01-01 20:44:40 UTC (rev 18226)
@@ -143,6 +143,7 @@
 extern StructRNA RNA_NodeTree;
 extern StructRNA RNA_NorController;
 extern StructRNA RNA_Object;
+extern StructRNA RNA_ObjectGameSettings;
 extern StructRNA RNA_ObstacleFluidSettings;
 extern StructRNA RNA_Operator;
 extern StructRNA RNA_OperatorMousePath;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-01-01 20:44:40 UTC (rev 18226)
@@ -99,22 +99,20 @@
 
 /* ID Properties */
 
-IDProperty *rna_idproperties_get(StructRNA *type, void *data, int create)
+IDProperty *rna_idproperties_get(PointerRNA *ptr, int create)
 {
-	if(type->flag & STRUCT_ID)
-		return IDP_GetProperties(data, create);
-	else if(type == &RNA_IDPropertyGroup || type->from == &RNA_IDPropertyGroup)
-		return data;
-	else if(type->from == &RNA_OperatorProperties) {
-		IDProperty **properties= (IDProperty**)data;
-
-		if(create && !*properties) {
+	if(ptr->type->flag & STRUCT_ID)
+		return IDP_GetProperties(ptr->data, create);
+	else if(ptr->type == &RNA_IDPropertyGroup || ptr->type->from == &RNA_IDPropertyGroup)
+		return ptr->data;
+	else if(ptr->type->from == &RNA_OperatorProperties) {
+		if(create && !ptr->data) {
 			IDPropertyTemplate val;
 			val.i = 0; /* silence MSVC warning about uninitialized var when debugging */
-			*properties= IDP_New(IDP_GROUP, val, "RNA_OperatorProperties group");
+			ptr->data= IDP_New(IDP_GROUP, val, "RNA_OperatorProperties group");
 		}
 
-		return *properties;
+		return ptr->data;
 	}
 	else
 		return NULL;
@@ -122,7 +120,7 @@
 
 static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name)
 {
-	IDProperty *group= rna_idproperties_get(ptr->type, ptr->data, 0);
+	IDProperty *group= rna_idproperties_get(ptr, 0);
 	IDProperty *idprop;
 
 	if(group) {
@@ -194,7 +192,7 @@
 			IDProperty *idprop= rna_idproperty_find(ptr, (*prop)->identifier);
 
 			if(idprop && !rna_idproperty_verify_valid(*prop, idprop)) {
-				IDProperty *group= rna_idproperties_get(ptr->type, ptr->data, 0);
+				IDProperty *group= rna_idproperties_get(ptr, 0);
 
 				IDP_RemFromGroup(group, idprop);
 				IDP_FreeProperty(idprop);
@@ -549,7 +547,7 @@
 
 		val.i= value;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -584,7 +582,7 @@
 		val.array.len= prop->arraylength;
 		val.array.type= IDP_INT;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -622,7 +620,7 @@
 
 		val.i= value;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -657,7 +655,7 @@
 		val.array.len= prop->arraylength;
 		val.array.type= IDP_INT;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -704,7 +702,7 @@
 
 		val.f= value;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_FLOAT, val, (char*)prop->identifier));
 	}
@@ -748,7 +746,7 @@
 		val.array.len= prop->arraylength;
 		val.array.type= IDP_FLOAT;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group) {
 			idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
 			IDP_AddToGroup(group, idprop);
@@ -816,7 +814,7 @@
 
 		val.str= (char*)value;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_STRING, val, (char*)prop->identifier));
 	}
@@ -852,7 +850,7 @@
 
 		val.i= value;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
 	}
@@ -916,7 +914,7 @@
 
 		val.i= 0;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group)
 			IDP_AddToGroup(group, IDP_New(IDP_GROUP, val, (char*)prop->identifier));
 	}
@@ -1078,7 +1076,7 @@
 		IDPropertyTemplate val;
 		val.i= 0;
 
-		group= rna_idproperties_get(ptr->type, ptr->data, 1);
+		group= rna_idproperties_get(ptr, 1);
 		if(group) {
 			idprop= IDP_NewIDPArray(prop->identifier);
 			IDP_AddToGroup(group, idprop);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c	2009-01-01 20:31:13 UTC (rev 18225)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c	2009-01-01 20:44:40 UTC (rev 18226)
@@ -63,12 +63,12 @@
 		{CONSTRAINT_TYPE_CLAMPTO, "CLAMPTO", "Clamp To", ""},
 		{CONSTRAINT_TYPE_TRANSFORM, "TRANSFORM", "Transformation", ""},
 		{0, NULL, NULL, NULL}};
-	static EnumPropertyItem space_items[] ={
+	/*static EnumPropertyItem space_items[] ={
 		{CONSTRAINT_SPACE_WORLD, "WORLD", "World Space", "World/Global space."},
 		{CONSTRAINT_SPACE_LOCAL, "LOCAL", "Local", "For objects (relative to parent/without parent influence). | For bones (along normals of bone, without parent/restpositions)."},

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list