diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-08-18 16:56:43 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-08-18 16:56:43 +0400 |
commit | ac2451c6be437fba14f9c0ceeeaeab382fd9ad58 (patch) | |
tree | e4799082130d796e00c44df6db75bf96f43d2f6b /source | |
parent | 6e10e93965291f011f48a0fb2cf0b3c149a8a1e6 (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')
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 5 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 42 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_ui_api.c | 3 |
4 files changed, 47 insertions, 5 deletions
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index cc3b243d38d..8da2702b603 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -625,7 +625,7 @@ uiLayout *uiLayoutSplit(uiLayout *layout, float percentage); 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); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 1a5c1178983..0ee21cbcf77 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -56,12 +56,13 @@ void ui_template_fix_linking() /********************** 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 *************************/ 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); |