diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-08-21 16:57:47 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-08-21 16:57:47 +0400 |
commit | 1c614f6cf63fb65622b855123d8db76898d3c9ca (patch) | |
tree | f3e576a33418ab929db9459ddb7028b40ce81923 | |
parent | 27797a45ee6cbc987350269e6827197f47daf036 (diff) |
2.5: layout.itemO now returns OperatorProperties to be filled in,
when passing properties=True as argument.
Other changes:
* uiItemR, uiItemFullR, uiItemFullO now accept a flag argument rather
than multiple different "boolean" arguments, but still exposed as
booleans to python.
* Fix RNA to support setting PROP_RNAPTR for return values.
-rw-r--r-- | release/ui/space_view3d.py | 20 | ||||
-rw-r--r-- | source/blender/editors/animation/fmodifier_ui.c | 52 | ||||
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 15 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 49 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 16 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_utils.c | 2 | ||||
-rw-r--r-- | source/blender/editors/object/object_edit.c | 20 | ||||
-rw-r--r-- | source/blender/editors/space_action/action_header.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_file/file_panels.c | 2 | ||||
-rw-r--r-- | source/blender/editors/space_graph/graph_header.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_nla/nla_buttons.c | 50 | ||||
-rw-r--r-- | source/blender/editors/space_nla/nla_header.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 67 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_toolbar.c | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/makesrna.c | 12 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_ui_api.c | 29 |
16 files changed, 170 insertions, 182 deletions
diff --git a/release/ui/space_view3d.py b/release/ui/space_view3d.py index 44b1c82ff46..0b08b213cd4 100644 --- a/release/ui/space_view3d.py +++ b/release/ui/space_view3d.py @@ -157,7 +157,13 @@ class VIEW3D_MT_select_POSE(bpy.types.Menu): layout.itemS() - layout.view3d_select_posemenu() + props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Parent") + props.extend = True + props.direction = 'PARENT' + + props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Child") + props.extend = True + props.direction = 'CHILD' class VIEW3D_MT_select_PARTICLE(bpy.types.Menu): __space_type__ = "VIEW_3D" @@ -327,12 +333,18 @@ class VIEW3D_MT_select_EDIT_ARMATURE(bpy.types.Menu): layout.itemS() - layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT') - layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD') + layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT', text="Parent") + layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD', text="Child") layout.itemS() - layout.view3d_select_armaturemenu() + props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Parent") + props.extend = True + props.direction = 'PARENT' + + props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Child") + props.extend = True + props.direction = 'CHILD' class VIEW3D_MT_select_FACE(bpy.types.Menu):# XXX no matching enum __space_type__ = "VIEW_3D" diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 7a618f4d222..4aff26105f3 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -258,14 +258,14 @@ static void draw_modifier__fn_generator(uiLayout *layout, ID *id, FModifier *fcm /* add the settings */ col= uiLayoutColumn(layout, 1); - uiItemR(col, "", 0, &ptr, "type", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "additive", 0, 0, 1); + uiItemR(col, "", 0, &ptr, "type", 0); + uiItemR(col, NULL, 0, &ptr, "additive", UI_ITEM_R_TOGGLE); col= uiLayoutColumn(layout, 0); // no grouping for now - uiItemR(col, NULL, 0, &ptr, "amplitude", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "phase_multiplier", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "phase_offset", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "value_offset", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "amplitude", 0); + uiItemR(col, NULL, 0, &ptr, "phase_multiplier", 0); + uiItemR(col, NULL, 0, &ptr, "phase_offset", 0); + uiItemR(col, NULL, 0, &ptr, "value_offset", 0); } /* --------------- */ @@ -287,14 +287,14 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor /* before range */ col= uiLayoutColumn(split, 1); uiItemL(col, "Before:", 0); - uiItemR(col, "", 0, &ptr, "before_mode", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "before_cycles", 0, 0, 0); + uiItemR(col, "", 0, &ptr, "before_mode", 0); + uiItemR(col, NULL, 0, &ptr, "before_cycles", 0); /* after range */ col= uiLayoutColumn(split, 1); uiItemL(col, "After:", 0); - uiItemR(col, "", 0, &ptr, "after_mode", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "after_cycles", 0, 0, 0); + uiItemR(col, "", 0, &ptr, "after_mode", 0); + uiItemR(col, NULL, 0, &ptr, "after_cycles", 0); } /* --------------- */ @@ -309,20 +309,20 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short RNA_pointer_create(id, &RNA_FModifierNoise, fcm, &ptr); /* blending mode */ - uiItemR(layout, NULL, 0, &ptr, "modification", 0, 0, 0); + uiItemR(layout, NULL, 0, &ptr, "modification", 0); /* split into 2 columns */ split= uiLayoutSplit(layout, 0.5f); /* col 1 */ col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &ptr, "size", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "strength", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "size", 0); + uiItemR(col, NULL, 0, &ptr, "strength", 0); /* col 2 */ col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &ptr, "phase", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "depth", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "phase", 0); + uiItemR(col, NULL, 0, &ptr, "depth", 0); } /* --------------- */ @@ -503,11 +503,11 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh /* general settings */ col= uiLayoutColumn(layout, 1); uiItemL(col, "Envelope:", 0); - uiItemR(col, NULL, 0, &ptr, "reference_value", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "reference_value", 0); row= uiLayoutRow(col, 1); - uiItemR(row, "Min", 0, &ptr, "default_minimum", 0, 0, 0); - uiItemR(row, "Max", 0, &ptr, "default_maximum", 0, 0, 0); + uiItemR(row, "Min", 0, &ptr, "default_minimum", 0); + uiItemR(row, "Max", 0, &ptr, "default_maximum", 0); /* control points header */ // TODO: move this control-point control stuff to using the new special widgets for lists @@ -559,13 +559,13 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* x-minimum */ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_minimum_x", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "minimum_x", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "use_minimum_x", 0); + uiItemR(col, NULL, 0, &ptr, "minimum_x", 0); /* y-minimum*/ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_minimum_y", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "minimum_y", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "use_minimum_y", 0); + uiItemR(col, NULL, 0, &ptr, "minimum_y", 0); } /* row 2: minimum */ @@ -577,13 +577,13 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* x-minimum */ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_maximum_x", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "maximum_x", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "use_maximum_x", 0); + uiItemR(col, NULL, 0, &ptr, "maximum_x", 0); /* y-minimum*/ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_maximum_y", 0, 0, 0); - uiItemR(col, NULL, 0, &ptr, "maximum_y", 0, 0, 0); + uiItemR(col, NULL, 0, &ptr, "use_maximum_y", 0); + uiItemR(col, NULL, 0, &ptr, "maximum_y", 0); } } diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 5bf59b06bc4..5f93743493a 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -585,16 +585,21 @@ void UI_exit(void); #define UI_LAYOUT_ALIGN_CENTER 2 #define UI_LAYOUT_ALIGN_RIGHT 3 +#define UI_ITEM_O_RETURN_PROPS 1 +#define UI_ITEM_R_EXPAND 2 +#define UI_ITEM_R_SLIDER 4 +#define UI_ITEM_R_TOGGLE 8 + uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int size, int em, struct uiStyle *style); void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout); void uiBlockLayoutResolve(const struct bContext *C, uiBlock *block, int *x, int *y); uiBlock *uiLayoutGetBlock(uiLayout *layout); -void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext); void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv); void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA *ptr); +void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext); void uiLayoutSetActive(uiLayout *layout, int active); void uiLayoutSetEnabled(uiLayout *layout, int enabled); void uiLayoutSetRedAlert(uiLayout *layout, int redalert); @@ -641,8 +646,6 @@ void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C); void uiTemplateOperatorSearch(uiLayout *layout); void uiTemplateHeader3D(uiLayout *layout, struct bContext *C); void uiTemplate_view3d_select_metaballmenu(uiLayout *layout, struct bContext *C); -void uiTemplate_view3d_select_armaturemenu(uiLayout *layout, struct bContext *C); -void uiTemplate_view3d_select_posemenu(uiLayout *layout, struct bContext *C); void uiTemplate_view3d_select_faceselmenu(uiLayout *layout, struct bContext *C); void uiTemplateTextureImage(uiLayout *layout, struct bContext *C, struct Tex *tex); @@ -664,10 +667,10 @@ void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char * void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value); void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *propname, float value); void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value); -void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, struct IDProperty *properties, int context); +PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, struct IDProperty *properties, int context, int flag); -void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int expand, int slider, int toggle); -void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider, int toggle); +void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int flag); +void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag); void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value); void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value); void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index ab27f8fb0f6..8676fe62a3a 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -535,7 +535,7 @@ static void ui_item_disabled(uiLayout *layout, char *name) } /* operator items */ -void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDProperty *properties, int context) +PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDProperty *properties, int context, int flag) { uiBlock *block= layout->root->block; wmOperatorType *ot= WM_operatortype_find(idname, 0); @@ -544,7 +544,7 @@ void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDPropert if(!ot) { ui_item_disabled(layout, idname); - return; + return PointerRNA_NULL; } if(!name) @@ -565,10 +565,21 @@ void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDPropert but= uiDefButO(block, BUT, ot->idname, context, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); /* assign properties */ - if(properties) { + if(properties || (flag & UI_ITEM_O_RETURN_PROPS)) { PointerRNA *opptr= uiButGetOperatorPtrRNA(but); - opptr->data= properties; + + if(properties) { + opptr->data= properties; + } + else { + IDPropertyTemplate val = {0}; + opptr->data= IDP_New(IDP_GROUP, val, "wmOperatorProperties"); + } + + return *opptr; } + + return PointerRNA_NULL; } static char *ui_menu_enumpropname(uiLayout *layout, char *opname, char *propname, int retval) @@ -611,7 +622,7 @@ void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *pro if(!name) name= ui_menu_enumpropname(layout, opname, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemsEnumO(uiLayout *layout, char *opname, char *propname) @@ -699,7 +710,7 @@ void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, ch if(!name) name= ui_menu_enumpropname(layout, opname, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value) @@ -709,7 +720,7 @@ void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char * WM_operator_properties_create(&ptr, opname); RNA_boolean_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value) @@ -719,7 +730,7 @@ void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *prop WM_operator_properties_create(&ptr, opname); RNA_int_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *propname, float value) @@ -729,7 +740,7 @@ void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *pr WM_operator_properties_create(&ptr, opname); RNA_float_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value) @@ -739,12 +750,12 @@ void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *p WM_operator_properties_create(&ptr, opname); RNA_string_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); } void uiItemO(uiLayout *layout, char *name, int icon, char *opname) { - uiItemFullO(layout, name, icon, opname, NULL, layout->root->opcontext); + uiItemFullO(layout, name, icon, opname, NULL, layout->root->opcontext, 0); } /* RNA property items */ @@ -793,13 +804,13 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PropertyRNA *r_h= h; } -void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int expand, int slider, int toggle) +void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int flag) { uiBlock *block= layout->root->block; uiBut *but; PropertyType type; char namestr[UI_MAX_NAME_STR]; - int len, w, h; + int len, w, h, slider, toggle, expand; if(!ptr->data || !prop) return; @@ -830,6 +841,10 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper icon= (RNA_property_enum_get(ptr, prop) == value)? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; } + slider= (flag & UI_ITEM_R_SLIDER); + toggle= (flag & UI_ITEM_R_TOGGLE); + expand= (flag & UI_ITEM_R_EXPAND); + /* get size */ ui_item_rna_size(layout, name, icon, prop, index, &w, &h); @@ -867,7 +882,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper } } -void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle) +void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int flag) { PropertyRNA *prop; @@ -882,7 +897,7 @@ void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *prop return; } - uiItemFullR(layout, name, icon, ptr, prop, RNA_NO_INDEX, 0, expand, slider, toggle); + uiItemFullR(layout, name, icon, ptr, prop, RNA_NO_INDEX, 0, flag); } void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value) @@ -900,7 +915,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, return; } - uiItemFullR(layout, name, icon, ptr, prop, RNA_ENUM_VALUE, value, 0, 0, 0); + uiItemFullR(layout, name, icon, ptr, prop, RNA_ENUM_VALUE, value, 0); } void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value) @@ -931,7 +946,7 @@ void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRN for(a=0; item[a].identifier; a++) { if(item[a].value == ivalue) { - uiItemFullR(layout, (char*)item[a].name, item[a].icon, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, 0, 0); + uiItemFullR(layout, (char*)item[a].name, item[a].icon, ptr, prop, RNA_ENUM_VALUE, ivalue, 0); break; } } diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index e7c99f10a66..56badedaded 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -428,15 +428,15 @@ static uiLayout *draw_modifier(uiLayout *layout, Object *ob, ModifierData *md, i else { /* real modifier */ uiBlockBeginAlign(block); - uiItemR(row, "", 0, &ptr, "name", 0, 0, 0); + uiItemR(row, "", 0, &ptr, "name", 0); /* Softbody not allowed in this situation, enforce! */ if(((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && (md->type!=eModifierType_Surface)) { - uiItemR(row, "", ICON_SCENE, &ptr, "render", 0, 0, 0); - uiItemR(row, "", ICON_RESTRICT_VIEW_OFF, &ptr, "realtime", 0, 0, 0); + uiItemR(row, "", ICON_SCENE, &ptr, "render", 0); + uiItemR(row, "", ICON_RESTRICT_VIEW_OFF, &ptr, "realtime", 0); if(mti->flags & eModifierTypeFlag_SupportsEditmode) - uiItemR(row, "", ICON_EDITMODE_HLT, &ptr, "editmode", 0, 0, 0); + uiItemR(row, "", ICON_EDITMODE_HLT, &ptr, "editmode", 0); } @@ -1224,9 +1224,9 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) /* nselected, selected, active color swatches */ csPtr= RNA_property_pointer_get(ptr, prop); - uiItemR(row, "", 0, &csPtr, "normal", 0, 0, 0); - uiItemR(row, "", 0, &csPtr, "selected", 0, 0, 0); - uiItemR(row, "", 0, &csPtr, "active", 0, 0, 0); + uiItemR(row, "", 0, &csPtr, "normal", 0); + uiItemR(row, "", 0, &csPtr, "selected", 0); + uiItemR(row, "", 0, &csPtr, "active", 0); } /********************* Layer Buttons Template ************************/ @@ -1278,7 +1278,7 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname) /* add layers as toggle buts */ for (col= 0; (col < cols) && (layer < layers); col++, layer++) { int icon=0; // XXX - add some way of setting this... - uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, 0, 0, 1); + uiItemFullR(uRow, "", icon, ptr, prop, layer, 0, UI_ITEM_R_TOGGLE); } } } diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index 4201850f5e4..b5cfbe19466 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -175,7 +175,7 @@ void uiDefAutoButsRNA(const bContext *C, uiLayout *layout, PointerRNA *ptr, int if(strcmp(name, "Axis")==0) { uiDefButR(uiLayoutGetBlock(col), BUT_NORMAL, 0, name, 0, 0, 100, 100, ptr, "axis", -1, 0, 0, -1, -1, NULL); } - else uiItemFullR(col, "", 0, ptr, prop, -1, 0, 0, 0, 0); + else uiItemFullR(col, "", 0, ptr, prop, -1, 0, 0); } RNA_STRUCT_END; } diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index e1b8858937c..47eaf1757ac 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -2759,13 +2759,10 @@ static void proxy_group_objects_menu (bContext *C, wmOperator *op, Object *ob, G if (go->ob) { PointerRNA props_ptr; - /* create operator properties, and assign the relevant pointers to that, - * and add a menu entry which uses these props - */ - WM_operator_properties_create(&props_ptr, op->idname); - RNA_string_set(&props_ptr, "object", go->ob->id.name+2); - RNA_string_set(&props_ptr, "group_object", go->ob->id.name+2); - uiItemFullO(layout, go->ob->id.name+2, 0, op->idname, props_ptr.data, WM_OP_EXEC_REGION_WIN); + /* create operator menu item with relevant properties filled in */ + props_ptr= uiItemFullO(layout, go->ob->id.name+2, 0, op->idname, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); + RNA_string_set(&props_ptr, "object", go->ob->id.name+2); + RNA_string_set(&props_ptr, "group_object", go->ob->id.name+2); } } @@ -2793,12 +2790,9 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) uiLayout *layout= uiPupMenuLayout(pup); PointerRNA props_ptr; - /* create operator properties, and assign the relevant pointers to that, - * and add a menu entry which uses these props - */ - WM_operator_properties_create(&props_ptr, op->idname); - RNA_string_set(&props_ptr, "object", ob->id.name+2); - uiItemFullO(layout, op->type->name, 0, op->idname, props_ptr.data, WM_OP_EXEC_REGION_WIN); + /* create operator menu item with relevant properties filled in */ + props_ptr= uiItemFullO(layout, op->type->name, 0, op->idname, props_ptr.data, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); + RNA_string_set(&props_ptr, "object", ob->id.name+2); /* present the menu and be done... */ uiPupMenuEnd(C, pup); diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c index e4750bd0a37..375136d199e 100644 --- a/source/blender/editors/space_action/action_header.c +++ b/source/blender/editors/space_action/action_header.c @@ -88,9 +88,9 @@ static void act_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) //uiItemS(layout); - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0, 0, 0); - uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0, 0, 0); - uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0, 0, 0); + uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); + uiItemR(layout, NULL, 0, &spaceptr, "show_sliders", 0); + uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0); if (sact->flag & SACTION_DRAWTIME) uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index 30598d39d58..c48b3529389 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -184,7 +184,7 @@ static void file_panel_operator(const bContext *C, Panel *pa) if(strncmp(RNA_property_identifier(prop), "filter", 6) == 0) continue; - uiItemFullR(pa->layout, NULL, 0, op->ptr, prop, -1, 0, 0, 0, 0); + uiItemFullR(pa->layout, NULL, 0, op->ptr, prop, -1, 0, 0); empty= 0; } RNA_STRUCT_END; diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c index c4654972dcd..fc02cadb475 100644 --- a/source/blender/editors/space_graph/graph_header.c +++ b/source/blender/editors/space_graph/graph_header.c @@ -80,15 +80,15 @@ static void graph_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemS(layout); - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0, 0, 0); + uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); if (sipo->flag & SIPO_NOHANDLES) uiItemO(layout, "Show Handles", ICON_CHECKBOX_DEHLT, "GRAPH_OT_handles_view_toggle"); else uiItemO(layout, "Show Handles", ICON_CHECKBOX_HLT, "GRAPH_OT_handles_view_toggle"); - uiItemR(layout, NULL, 0, &spaceptr, "only_selected_curves_handles", 0, 0, 0); - uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0, 0, 0); + uiItemR(layout, NULL, 0, &spaceptr, "only_selected_curves_handles", 0); + uiItemR(layout, NULL, 0, &spaceptr, "automerge_keyframes", 0); if (sipo->flag & SIPO_DRAWTIME) uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 7184737e0ba..2ffca5185f2 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -210,19 +210,19 @@ static void nla_panel_animdata (const bContext *C, Panel *pa) /* Active Action Properties ------------------------------------- */ /* action */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action", 0, 0, 0); + uiItemR(row, NULL, 0, &adt_ptr, "action", 0); /* extrapolation */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_extrapolation", 0, 0, 0); + uiItemR(row, NULL, 0, &adt_ptr, "action_extrapolation", 0); /* blending */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_blending", 0, 0, 0); + uiItemR(row, NULL, 0, &adt_ptr, "action_blending", 0); /* influence */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_influence", 0, 0, 0); + uiItemR(row, NULL, 0, &adt_ptr, "action_influence", 0); } /* active NLA-Track */ @@ -242,7 +242,7 @@ static void nla_panel_track (const bContext *C, Panel *pa) /* Info - Active NLA-Context:Track ---------------------- */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, ICON_NLA, &nlt_ptr, "name", 0, 0, 0); + uiItemR(row, NULL, ICON_NLA, &nlt_ptr, "name", 0); } /* generic settings for active NLA-Strip */ @@ -262,41 +262,41 @@ static void nla_panel_properties(const bContext *C, Panel *pa) /* Strip Properties ------------------------------------- */ /* strip type */ row= uiLayoutColumn(layout, 1); - uiItemR(row, NULL, ICON_NLA, &strip_ptr, "name", 0, 0, 0); // XXX icon? - uiItemR(row, NULL, 0, &strip_ptr, "type", 0, 0, 0); + uiItemR(row, NULL, ICON_NLA, &strip_ptr, "name", 0); // XXX icon? + uiItemR(row, NULL, 0, &strip_ptr, "type", 0); /* strip extents */ column= uiLayoutColumn(layout, 1); uiItemL(column, "Strip Extents:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "start_frame", 0, 0, 0); - uiItemR(column, NULL, 0, &strip_ptr, "end_frame", 0, 0, 0); + uiItemR(column, NULL, 0, &strip_ptr, "start_frame", 0); + uiItemR(column, NULL, 0, &strip_ptr, "end_frame", 0); /* extrapolation */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &strip_ptr, "extrapolation", 0, 0, 0); + uiItemR(row, NULL, 0, &strip_ptr, "extrapolation", 0); /* blending */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &strip_ptr, "blending", 0, 0, 0); + uiItemR(row, NULL, 0, &strip_ptr, "blending", 0); /* blend in/out + autoblending * - blend in/out can only be set when autoblending is off */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_influence")==0); - uiItemR(column, NULL, 0, &strip_ptr, "auto_blending", 0, 0, 0); // XXX as toggle? + uiItemR(column, NULL, 0, &strip_ptr, "auto_blending", 0); // XXX as toggle? subcol= uiLayoutColumn(column, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&strip_ptr, "auto_blending")==0); - uiItemR(subcol, NULL, 0, &strip_ptr, "blend_in", 0, 0, 0); - uiItemR(subcol, NULL, 0, &strip_ptr, "blend_out", 0, 0, 0); + uiItemR(subcol, NULL, 0, &strip_ptr, "blend_in", 0); + uiItemR(subcol, NULL, 0, &strip_ptr, "blend_out", 0); /* settings */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "animated_influence") || RNA_boolean_get(&strip_ptr, "animated_time"))); uiItemL(column, "Playback Settings:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "muted", 0, 0, 0); - uiItemR(column, NULL, 0, &strip_ptr, "reversed", 0, 0, 0); + uiItemR(column, NULL, 0, &strip_ptr, "muted", 0); + uiItemR(column, NULL, 0, &strip_ptr, "reversed", 0); } @@ -318,21 +318,21 @@ static void nla_panel_actclip(const bContext *C, Panel *pa) /* Strip Properties ------------------------------------- */ /* action pointer */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, ICON_ACTION, &strip_ptr, "action", 0, 0, 0); + uiItemR(row, NULL, ICON_ACTION, &strip_ptr, "action", 0); /* action extents */ // XXX custom names were used here (to avoid the prefixes)... probably not necessary in future? column= uiLayoutColumn(layout, 1); uiItemL(column, "Action Extents:", 0); - uiItemR(column, "Start Frame", 0, &strip_ptr, "action_start_frame", 0, 0, 0); - uiItemR(column, "End Frame", 0, &strip_ptr, "action_end_frame", 0, 0, 0); + uiItemR(column, "Start Frame", 0, &strip_ptr, "action_start_frame", 0); + uiItemR(column, "End Frame", 0, &strip_ptr, "action_end_frame", 0); /* action usage */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_time")==0); uiItemL(column, "Playback Settings:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "scale", 0, 0, 0); - uiItemR(column, NULL, 0, &strip_ptr, "repeat", 0, 0, 0); + uiItemR(column, NULL, 0, &strip_ptr, "scale", 0); + uiItemR(column, NULL, 0, &strip_ptr, "repeat", 0); } /* evaluation settings for active NLA-Strip */ @@ -351,19 +351,19 @@ static void nla_panel_evaluation(const bContext *C, Panel *pa) uiBlockSetHandleFunc(block, do_nla_region_buttons, NULL); column= uiLayoutColumn(layout, 1); - uiItemR(column, NULL, 0, &strip_ptr, "animated_influence", 0, 0, 0); + uiItemR(column, NULL, 0, &strip_ptr, "animated_influence", 0); subcolumn= uiLayoutColumn(column, 1); uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "animated_influence")); - uiItemR(subcolumn, NULL, 0, &strip_ptr, "influence", 0, 0, 0); + uiItemR(subcolumn, NULL, 0, &strip_ptr, "influence", 0); column= uiLayoutColumn(layout, 1); - uiItemR(column, NULL, 0, &strip_ptr, "animated_time", 0, 0, 0); + uiItemR(column, NULL, 0, &strip_ptr, "animated_time", 0); subcolumn= uiLayoutColumn(column, 1); uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "animated_time")); - uiItemR(subcolumn, NULL, 0, &strip_ptr, "strip_time", 0, 0, 0); + uiItemR(subcolumn, NULL, 0, &strip_ptr, "strip_time", 0); } /* F-Modifiers for active NLA-Strip */ diff --git a/source/blender/editors/space_nla/nla_header.c b/source/blender/editors/space_nla/nla_header.c index e507efb0a30..0d3bf2cb6b1 100644 --- a/source/blender/editors/space_nla/nla_header.c +++ b/source/blender/editors/space_nla/nla_header.c @@ -94,14 +94,14 @@ static void nla_viewmenu(bContext *C, uiLayout *layout, void *arg_unused) uiItemS(layout); - uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0, 0, 0); + uiItemR(layout, NULL, 0, &spaceptr, "show_cframe_indicator", 0); if (snla->flag & SNLA_DRAWTIME) uiItemO(layout, "Show Frames", 0, "ANIM_OT_time_toggle"); else uiItemO(layout, "Show Seconds", 0, "ANIM_OT_time_toggle"); - uiItemR(layout, NULL, 0, &spaceptr, "show_strip_curves", 0, 0, 0); + uiItemR(layout, NULL, 0, &spaceptr, "show_strip_curves", 0); uiItemS(layout); diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 3487efc4218..9fa1b222868 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -949,65 +949,6 @@ void uiTemplate_view3d_select_metaballmenu(uiLayout *layout, bContext *C) view3d_select_metaballmenu(C, layout, arg_unused); } -static void view3d_select_armaturemenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - PointerRNA ptr; - - /* this part of the menu has been moved to python */ - /*uiItemO(layout, NULL, 0, "VIEW3D_OT_select_border"); - - uiItemS(layout); - - uiItemO(layout, "Select/Deselect All", 0, "ARMATURE_OT_select_all_toggle"); - uiItemO(layout, "Inverse", 0, "ARMATURE_OT_select_inverse"); - - uiItemS(layout); - - uiItemEnumO(layout, "Parent", 0, "ARMATURE_OT_select_hierarchy", "direction", BONE_SELECT_PARENT); - uiItemEnumO(layout, "Child", 0, "ARMATURE_OT_select_hierarchy", "direction", BONE_SELECT_CHILD); - - uiItemS(layout);*/ - - WM_operator_properties_create(&ptr, "ARMATURE_OT_select_hierarchy"); - RNA_boolean_set(&ptr, "extend", 1); - RNA_enum_set(&ptr, "direction", BONE_SELECT_PARENT); - uiItemFullO(layout, "Extend Parent", 0, "ARMATURE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN); - - WM_operator_properties_create(&ptr, "ARMATURE_OT_select_hierarchy"); - RNA_boolean_set(&ptr, "extend", 1); - RNA_enum_set(&ptr, "direction", BONE_SELECT_CHILD); - uiItemFullO(layout, "Extend Child", 0, "ARMATURE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN); -} - -/* wrapper for python layouts */ -void uiTemplate_view3d_select_armaturemenu(uiLayout *layout, bContext *C) -{ - void *arg_unused = NULL; - view3d_select_armaturemenu(C, layout, arg_unused); -} - -static void view3d_select_posemenu(bContext *C, uiLayout *layout, void *arg_unused) -{ - PointerRNA ptr; - - WM_operator_properties_create(&ptr, "POSE_OT_select_hierarchy"); - RNA_boolean_set(&ptr, "extend", 1); - RNA_enum_set(&ptr, "direction", BONE_SELECT_PARENT); - uiItemFullO(layout, "Extend Parent", 0, "POSE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN); - - WM_operator_properties_create(&ptr, "POSE_OT_select_hierarchy"); - RNA_boolean_set(&ptr, "extend", 1); - RNA_enum_set(&ptr, "direction", BONE_SELECT_CHILD); - uiItemFullO(layout, "Extend Child", 0, "POSE_OT_select_hierarchy", ptr.data, WM_OP_EXEC_REGION_WIN); -} - -/* wrapper for python layouts */ -void uiTemplate_view3d_select_posemenu(uiLayout *layout, bContext *C) -{ - void *arg_unused = NULL; - view3d_select_posemenu(C, layout, arg_unused); -} - void do_view3d_select_faceselmenu(bContext *C, void *arg, int event) { #if 0 @@ -2120,8 +2061,8 @@ static void view3d_edit_meshmenu(bContext *C, uiLayout *layout, void *arg_unused uiItemS(layout); - uiItemR(layout, NULL, 0, &tsptr, "automerge_editing", 0, 0, 0); - uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O + uiItemR(layout, NULL, 0, &tsptr, "automerge_editing", 0); + uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0); // |O uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O uiItemS(layout); @@ -2204,7 +2145,7 @@ static void view3d_edit_curvemenu(bContext *C, uiLayout *layout, void *arg_unuse uiItemS(layout); - uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O + uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0); // |O uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O uiItemS(layout); @@ -2245,7 +2186,7 @@ static void view3d_edit_latticemenu(bContext *C, uiLayout *layout, void *arg_unu uiItemS(layout); - uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0, 0, 0); // |O + uiItemR(layout, NULL, 0, &tsptr, "proportional_editing", 0); // |O uiItemMenuEnumR(layout, NULL, 0, &tsptr, "proportional_editing_falloff"); // |Shift O } #endif diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 32378a915bd..c87dd0b7948 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -270,7 +270,7 @@ static void view3d_panel_tool_shelf(const bContext *C, Panel *pa) for(ct= st->toolshelf.first; ct; ct= ct->next) { if(0==strncmp(context, ct->context, OP_MAX_TYPENAME)) { col= uiLayoutColumn(pa->layout, 1); - uiItemFullO(col, NULL, 0, ct->opname, NULL, WM_OP_INVOKE_REGION_WIN); + uiItemFullO(col, NULL, 0, ct->opname, NULL, WM_OP_INVOKE_REGION_WIN, 0); } } } diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 05eac06de7f..83178f32d5f 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1198,7 +1198,13 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA dparm= dfunc->cont.properties.first; for(; dparm; dparm= dparm->next) { - ptrstr= (dparm->prop->type == PROP_POINTER || dparm->prop->arraylength > 0)? "*" : ""; + if(dparm->prop->arraylength > 0) + ptrstr= "*"; + else if(dparm->prop==func->ret) + ptrstr= ((dparm->prop->type == PROP_POINTER) && !(dparm->prop->flag & PROP_RNAPTR))? "*": ""; + else + ptrstr= (dparm->prop->type == PROP_POINTER)? "*": ""; + fprintf(f, "\t%s%s %s%s;\n", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), ptrstr, dparm->prop->identifier); } @@ -1274,7 +1280,7 @@ static void rna_def_function_funcs(FILE *f, StructDefRNA *dsrna, FunctionDefRNA if(func->ret) { dparm= rna_find_parameter_def(func->ret); - ptrstr= dparm->prop->type == PROP_POINTER || dparm->prop->arraylength > 0 ? "*" : ""; + ptrstr= (((dparm->prop->type == PROP_POINTER) && !(dparm->prop->flag & PROP_RNAPTR)) || (dparm->prop->arraylength > 0))? "*": ""; fprintf(f, "\t*((%s%s%s*)_retdata)= %s;\n", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop), ptrstr, func->ret->identifier); } } @@ -1516,7 +1522,7 @@ static void rna_generate_static_parameter_prototypes(BlenderRNA *brna, StructRNA if(dparm->prop==func->ret) { if(dparm->prop->arraylength) fprintf(f, "XXX no array return types yet"); /* XXX not supported */ - else if(dparm->prop->type == PROP_POINTER) + else if(dparm->prop->type == PROP_POINTER && !(dparm->prop->flag & PROP_RNAPTR)) fprintf(f, "%s%s *", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); else fprintf(f, "%s%s ", rna_type_struct(dparm->prop), rna_parameter_type_name(dparm->prop)); diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 82694098e69..587ff57a0b5 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -37,6 +37,23 @@ #ifdef RNA_RUNTIME +static void rna_uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int expand, int slider, int toggle) +{ + int flag= 0; + + flag |= (slider)? UI_ITEM_R_SLIDER: 0; + flag |= (expand)? UI_ITEM_R_EXPAND: 0; + flag |= (toggle)? UI_ITEM_R_TOGGLE: 0; + + uiItemR(layout, name, icon, ptr, propname, flag); +} + +static PointerRNA rna_uiItemO(uiLayout *layout, char *name, int icon, char *opname, int properties) +{ + int flag= (properties)? UI_ITEM_O_RETURN_PROPS: 0; + return uiItemFullO(layout, name, icon, opname, NULL, uiLayoutGetOperatorContext(layout), flag); +} + #else #define DEF_ICON(name) {name, #name, 0, #name, ""}, @@ -122,7 +139,7 @@ void RNA_api_ui_layout(StructRNA *srna) 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"); + func= RNA_def_function(srna, "itemR", "rna_uiItemR"); api_ui_item_common(func); api_ui_item_rna_common(func); RNA_def_boolean(func, "expand", 0, "", "Expand button to show more detail."); @@ -150,8 +167,12 @@ void RNA_api_ui_layout(StructRNA *srna) parm= RNA_def_string(func, "search_property", "", 0, "", "Identifier of search collection property."); RNA_def_property_flag(parm, PROP_REQUIRED); - func= RNA_def_function(srna, "itemO", "uiItemO"); + func= RNA_def_function(srna, "itemO", "rna_uiItemO"); api_ui_item_op_common(func); + parm= RNA_def_boolean(func, "properties", 0, "Properties", "Return operator properties to fill in manually."); + parm= RNA_def_pointer(func, "return_properties", "OperatorProperties", "", "Operator properties to fill in, return when 'properties' is set to true."); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); + RNA_def_function_return(func, parm); func= RNA_def_function(srna, "item_enumO", "uiItemEnumO_string"); api_ui_item_op_common(func); @@ -292,10 +313,6 @@ void RNA_api_ui_layout(StructRNA *srna) func= RNA_def_function(srna, "view3d_select_metaballmenu", "uiTemplate_view3d_select_metaballmenu"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); - func= RNA_def_function(srna, "view3d_select_armaturemenu", "uiTemplate_view3d_select_armaturemenu"); - RNA_def_function_flag(func, FUNC_USE_CONTEXT); - func= RNA_def_function(srna, "view3d_select_posemenu", "uiTemplate_view3d_select_posemenu"); - RNA_def_function_flag(func, FUNC_USE_CONTEXT); func= RNA_def_function(srna, "view3d_select_faceselmenu", "uiTemplate_view3d_select_faceselmenu"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); |