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.
This commit is contained in:
2009-08-21 12:57:47 +00:00
parent 27797a45ee
commit 1c614f6cf6
16 changed files with 170 additions and 182 deletions

View 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"

View 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);
}
}

View 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);

View 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;
}
}

View 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);
}
}
}

View 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;
}

View 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);

View 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");

View 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;

View 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");

View 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 */

View 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);

View 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

View 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);
}
}
}

View 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));

View File

@@ -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);