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

Brecht Van Lommel brecht at blender.org
Tue Aug 18 14:56:43 CEST 2009


Revision: 22598
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22598
Author:   blendix
Date:     2009-08-18 14:56:43 +0200 (Tue, 18 Aug 2009)

Log Message:
-----------
2.5: RNA. Default values were not set when calling functions, this
is fixed now. Also added option for spaces without menus in the
header in uiTemplateHeader.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-08-18 12:10:12 UTC (rev 22597)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-08-18 12:56:43 UTC (rev 22598)
@@ -625,7 +625,7 @@
 uiBlock *uiLayoutFreeBlock(uiLayout *layout);
 
 /* templates */
-void uiTemplateHeader(uiLayout *layout, struct bContext *C);
+void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus);
 void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
 	char *newop, char *unlinkop);
 uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c	2009-08-18 12:10:12 UTC (rev 22597)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c	2009-08-18 12:56:43 UTC (rev 22598)
@@ -56,12 +56,13 @@
 
 /********************** Header Template *************************/
 
-void uiTemplateHeader(uiLayout *layout, bContext *C)
+void uiTemplateHeader(uiLayout *layout, bContext *C, int menus)
 {
 	uiBlock *block;
 	
 	block= uiLayoutFreeBlock(layout);
-	ED_area_header_standardbuttons(C, block, 0);
+	if(menus) ED_area_header_standardbuttons(C, block, 0);
+	else ED_area_header_switchbutton(C, block, 0);
 }
 
 /********************** Search Callbacks *************************/

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-08-18 12:10:12 UTC (rev 22597)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-08-18 12:56:43 UTC (rev 22598)
@@ -2844,8 +2844,10 @@
 ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func)
 {
 	PropertyRNA *parm;
-	int tot= 0;
+	void *data;
+	int tot= 0, size;
 
+	/* allocate data */
 	for(parm= func->cont.properties.first; parm; parm= parm->next)
 		tot+= rna_parameter_size(parm);
 
@@ -2853,6 +2855,44 @@
 	parms->func= func;
 	parms->tot= tot;
 
+	/* set default values */
+	data= parms->data;
+
+	for(parm= func->cont.properties.first; parm; parm= parm->next) {
+		size= rna_parameter_size(parm);
+
+		if(!(parm->flag & PROP_REQUIRED)) {
+			switch(parm->type) {
+				case PROP_BOOLEAN:
+					if(parm->arraylength) memcpy(data, &((BooleanPropertyRNA*)parm)->defaultarray, size);
+					else memcpy(data, &((BooleanPropertyRNA*)parm)->defaultvalue, size);
+					break;
+				case PROP_INT:
+					if(parm->arraylength) memcpy(data, &((IntPropertyRNA*)parm)->defaultarray, size);
+					else memcpy(data, &((IntPropertyRNA*)parm)->defaultvalue, size);
+					break;
+				case PROP_FLOAT:
+					if(parm->arraylength) memcpy(data, &((FloatPropertyRNA*)parm)->defaultarray, size);
+					else memcpy(data, &((FloatPropertyRNA*)parm)->defaultvalue, size);
+					break;
+				case PROP_ENUM:
+					memcpy(data, &((EnumPropertyRNA*)parm)->defaultvalue, size);
+					break;
+				case PROP_STRING: {
+					const char *defvalue= ((StringPropertyRNA*)parm)->defaultvalue;
+					if(defvalue && defvalue[0])
+						memcpy(data, &defvalue, size);
+					break;
+				}
+				case PROP_POINTER:
+				case PROP_COLLECTION:
+					break;
+			}
+		}
+
+		data= ((char*)data) + size;
+	}
+
 	return parms;
 }
 

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c	2009-08-18 12:10:12 UTC (rev 22597)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c	2009-08-18 12:56:43 UTC (rev 22598)
@@ -119,7 +119,7 @@
 	func= RNA_def_function(srna, "split", "uiLayoutSplit");
 	parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
 	RNA_def_function_return(func, parm);
-	RNA_def_float(func, "percentage", 0.5f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
+	RNA_def_float(func, "percentage", 0.0f, 0.0f, 1.0f, "Percentage", "Percentage of width to split at.", 0.0f, 1.0f);
 
 	/* items */
 	func= RNA_def_function(srna, "itemR", "uiItemR");
@@ -220,6 +220,7 @@
 	/* templates */
 	func= RNA_def_function(srna, "template_header", "uiTemplateHeader");
 	RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+	RNA_def_boolean(func, "menus", 1, "", "The header has menus, and should show menu expander.");
 
 	func= RNA_def_function(srna, "template_ID", "uiTemplateID");
 	RNA_def_function_flag(func, FUNC_USE_CONTEXT);





More information about the Bf-blender-cvs mailing list