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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-08-21 16:57:47 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-08-21 16:57:47 +0400
commit1c614f6cf63fb65622b855123d8db76898d3c9ca (patch)
treef3e576a33418ab929db9459ddb7028b40ce81923 /source/blender/editors/interface
parent27797a45ee6cbc987350269e6827197f47daf036 (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.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface_layout.c49
-rw-r--r--source/blender/editors/interface/interface_templates.c16
-rw-r--r--source/blender/editors/interface/interface_utils.c2
3 files changed, 41 insertions, 26 deletions
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;
}