Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-08-18 16:56:43 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-08-18 16:56:43 +0400
commitac2451c6be437fba14f9c0ceeeaeab382fd9ad58 (patch)
treee4799082130d796e00c44df6db75bf96f43d2f6b /source/blender/makesrna
parent6e10e93965291f011f48a0fb2cf0b3c149a8a1e6 (diff)
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.
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_access.c42
-rw-r--r--source/blender/makesrna/intern/rna_ui_api.c3
2 files changed, 43 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 54cde57a54f..c2f1f31a4bc 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -2844,8 +2844,10 @@ const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func)
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 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr,
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;
}
diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c
index 40d300315f5..f9287bddc10 100644
--- a/source/blender/makesrna/intern/rna_ui_api.c
+++ b/source/blender/makesrna/intern/rna_ui_api.c
@@ -119,7 +119,7 @@ void RNA_api_ui_layout(StructRNA *srna)
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 @@ void RNA_api_ui_layout(StructRNA *srna)
/* 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);