2.5: layout.itemO now returns OperatorProperties to be filled in,
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 21 Aug 2009 12:57:47 +0000 (12:57 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 21 Aug 2009 12:57:47 +0000 (12:57 +0000)
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.

16 files changed:
release/ui/space_view3d.py
source/blender/editors/animation/fmodifier_ui.c
source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_utils.c
source/blender/editors/object/object_edit.c
source/blender/editors/space_action/action_header.c
source/blender/editors/space_file/file_panels.c
source/blender/editors/space_graph/graph_header.c
source/blender/editors/space_nla/nla_buttons.c
source/blender/editors/space_nla/nla_header.c
source/blender/editors/space_view3d/view3d_header.c
source/blender/editors/space_view3d/view3d_toolbar.c
source/blender/makesrna/intern/makesrna.c
source/blender/makesrna/intern/rna_ui_api.c

index 44b1c82ff460882a40ad7fddc02c6e144258b20e..0b08b213cd4ed0fda9a898f65fc2f30c66944297 100644 (file)
@@ -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"
index 7a618f4d222a81aa744cc8d808b340a535290cec..4aff26105f30a57b055338ed7bc7bc7e620bb538 100644 (file)
@@ -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);
        }
 }
 
index 5bf59b06bc4fdb875e7005d67f99e4ff2744dc7b..5f93743493acfb8f7054d0d9f7141766f6404e09 100644 (file)
@@ -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);
index ab27f8fb0f60a2adba1954932f730a5e006dabfa..8676fe62a3aca9f0238ef6bacae69d0c2dd71a63 100644 (file)
@@ -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;
                }
        }
index e7c99f10a66c39f2adad55828010e230f1e8dcc1..56badedaded14b6105cb4344704390cce23282f5 100644 (file)
@@ -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);
                        }
                }
        }
index 4201850f5e439029ec1ad746c9ec1e4d1b19b8d4..b5cfbe19466e73297761c0e4a3332b206b0d24f0 100644 (file)
@@ -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;
 }
index e1b8858937c389f26c51156e8219c2e7891dca59..47eaf1757ac305f9fca4ceb35d966d372b7426d5 100644 (file)
@@ -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);
index e4750bd0a370b8c23b6dfe1cedcffa4e8687e7ef..375136d199efbaaffcc70efe7a20639559eb0344 100644 (file)
@@ -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");
index 30598d39d58248cc09d9cb2123a24d8fd820bfc3..c48b3529389f4cb3ab653c5e1c595acf1a482237 100644 (file)
@@ -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;
index c4654972dcdc6200973e2a9551e17390321ff076..fc02cadb47502c610d4d6150a666f5a3acdfb34a 100644 (file)
@@ -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");
index 7184737e0ba31dc598f5ad6771832072562188fe..2ffca5185f23d0d82c20b2007a2cd4879e96afae 100644 (file)
@@ -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 */
index e507efb0a3041f00220577fac5b6f1fdb9275dec..0d3bf2cb6b13f60f05ca4fd58c3ebb5a7d4ecab5 100644 (file)
@@ -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);
        
index 3487efc4218a69631c2f94692426d599aa7a524b..9fa1b2228680c478f832f8fb53296d8b589d70d2 100644 (file)
@@ -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
index 32378a915bd43b299bcbbe97732c09abc9d62f45..c87dd0b794824c88bc2ac3c347e31839616a2e33 100644 (file)
@@ -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);
                        }
                }
        }
index 05eac06de7ffeceac29bbc2251f0be2ec1bea802..83178f32d5f4dc0a602974fbb0616e823fd05915 100644 (file)
@@ -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));
index 82694098e699f489ab72c5c7fefeb22b9712a941..587ff57a0b57cfeae0f0fb1a1d573b0f840e02b8 100644 (file)
 
 #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);