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:
Diffstat (limited to 'source/blender/editors/interface/interface_layout.c')
-rw-r--r--source/blender/editors/interface/interface_layout.c111
1 files changed, 75 insertions, 36 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 432904fd243..a208eee1649 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -22,6 +22,11 @@
* ***** END GPL LICENSE BLOCK *****
*/
+/** \file blender/editors/interface/interface_layout.c
+ * \ingroup edinterface
+ */
+
+
#include <limits.h>
#include <math.h>
#include <stdlib.h>
@@ -408,14 +413,14 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, const char *name, in
col= a % dim_size[0];
row= a / dim_size[0];
- but= uiDefAutoButR(block, ptr, prop, a, "", ICON_NULL, x + w*col, y+(dim_size[1]*UI_UNIT_Y)-(row*UI_UNIT_Y), w, UI_UNIT_Y);
+ but= uiDefAutoButR(block, ptr, prop, a, "", ICON_NONE, x + w*col, y+(dim_size[1]*UI_UNIT_Y)-(row*UI_UNIT_Y), w, UI_UNIT_Y);
if(slider && but->type==NUM)
but->type= NUMSLI;
}
}
else {
if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && !expand)
- uiDefAutoButR(block, ptr, prop, -1, "", ICON_NULL, 0, 0, w, UI_UNIT_Y);
+ uiDefAutoButR(block, ptr, prop, -1, "", ICON_NONE, 0, 0, w, UI_UNIT_Y);
if(!ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) || expand) {
/* layout for known array subtypes */
@@ -604,15 +609,16 @@ static void ui_item_disabled(uiLayout *layout, const char *name)
}
/* operator items */
-PointerRNA uiItemFullO(uiLayout *layout, const char *idname, const char *name, int icon, IDProperty *properties, int context, int flag)
+PointerRNA uiItemFullO(uiLayout *layout, const char *opname, const char *name, int icon, IDProperty *properties, int context, int flag)
{
uiBlock *block= layout->root->block;
- wmOperatorType *ot= WM_operatortype_find(idname, 0);
+ wmOperatorType *ot= WM_operatortype_find(opname, 1);
uiBut *but;
int w;
if(!ot) {
- ui_item_disabled(layout, idname);
+ ui_item_disabled(layout, opname);
+ RNA_warning("uiItemFullO: unknown operator '%s'\n", opname);
return PointerRNA_NULL;
}
@@ -708,7 +714,7 @@ void uiItemEnumO(uiLayout *layout, const char *opname, const char *name, int ico
void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname, IDProperty *properties, int context, int flag)
{
- wmOperatorType *ot= WM_operatortype_find(opname, 0);
+ wmOperatorType *ot= WM_operatortype_find(opname, 1);
PointerRNA ptr;
PropertyRNA *prop;
uiBut *bt;
@@ -716,6 +722,7 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname
if(!ot || !ot->srna) {
ui_item_disabled(layout, opname);
+ RNA_warning("uiItemsFullEnumO: %s '%s'\n", ot ? "unknown operator" : "operator missing srna", opname);
return;
}
@@ -756,7 +763,7 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname
block->flag |= UI_BLOCK_NO_FLIP;
}
- uiItemL(column, item[i].name, ICON_NULL);
+ uiItemL(column, item[i].name, ICON_NONE);
bt= block->buttons.last;
bt->flag= UI_TEXT_LEFT;
}
@@ -776,6 +783,33 @@ void uiItemsEnumO(uiLayout *layout, const char *opname, const char *propname)
}
/* for use in cases where we have */
+void uiItemEnumO_value(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
+{
+ PointerRNA ptr;
+
+ /* for getting the enum */
+ PropertyRNA *prop;
+
+ WM_operator_properties_create(&ptr, opname);
+
+ /* enum lookup */
+ if((prop= RNA_struct_find_property(&ptr, propname))) {
+ /* pass */
+ }
+ else {
+ RNA_warning("uiItemEnumO_value: %s.%s not found.\n", RNA_struct_identifier(ptr.type), propname);
+ return;
+ }
+
+ RNA_property_enum_set(&ptr, prop, value);
+
+ /* same as uiItemEnumO */
+ if(!name)
+ name= ui_menu_enumpropname(layout, opname, propname, value);
+
+ uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0);
+}
+
void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, const char *value_str)
{
PointerRNA ptr;
@@ -792,7 +826,7 @@ void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char
RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free);
if(item==NULL || RNA_enum_value_from_id(item, value_str, &value)==0) {
if(free) MEM_freeN(item);
- printf("uiItemEnumO_string: %s.%s, enum %s not found.\n", RNA_struct_identifier(ptr.type), propname, value_str);
+ RNA_warning("uiItemEnumO_string: %s.%s, enum %s not found.\n", RNA_struct_identifier(ptr.type), propname, value_str);
return;
}
@@ -800,7 +834,7 @@ void uiItemEnumO_string(uiLayout *layout, const char *name, int icon, const char
MEM_freeN(item);
}
else {
- printf("uiItemEnumO_string: %s.%s not found.\n", RNA_struct_identifier(ptr.type), propname);
+ RNA_warning("uiItemEnumO_string: %s.%s not found.\n", RNA_struct_identifier(ptr.type), propname);
return;
}
@@ -881,7 +915,7 @@ static void ui_item_rna_size(uiLayout *layout, const char *name, int icon, Point
/* increase height for arrays */
if(index == RNA_NO_INDEX && len > 0) {
- if(!name[0] && icon == ICON_NULL)
+ if(!name[0] && icon == ICON_NONE)
h= 0;
if(ELEM(subtype, PROP_LAYER, PROP_LAYER_MEMBER))
@@ -921,7 +955,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index
/* set name and icon */
if(!name)
name= RNA_property_ui_name(prop);
- if(icon == ICON_NULL)
+ if(icon == ICON_NONE)
icon= RNA_property_ui_icon(prop);
if(ELEM4(type, PROP_INT, PROP_FLOAT, PROP_STRING, PROP_POINTER))
@@ -1006,7 +1040,7 @@ void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, int flag,
if(!prop) {
ui_item_disabled(layout, propname);
- printf("uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
+ RNA_warning("uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1019,7 +1053,7 @@ void uiItemEnumR(uiLayout *layout, const char *name, int icon, struct PointerRNA
if(!prop || RNA_property_type(prop) != PROP_ENUM) {
ui_item_disabled(layout, propname);
- printf("uiItemEnumR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
+ RNA_warning("uiItemEnumR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1034,7 +1068,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *pr
if(!prop || RNA_property_type(prop) != PROP_ENUM) {
ui_item_disabled(layout, propname);
- printf("uiItemEnumR_string: enum property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
+ RNA_warning("uiItemEnumR_string: enum property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1043,7 +1077,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *pr
if(!RNA_enum_value_from_id(item, value, &ivalue)) {
if(free) MEM_freeN(item);
ui_item_disabled(layout, propname);
- printf("uiItemEnumR: enum property value not found: %s\n", value);
+ RNA_warning("uiItemEnumR: enum property value not found: %s\n", value);
return;
}
@@ -1068,10 +1102,15 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname
if(!prop) {
ui_item_disabled(layout, propname);
+ RNA_warning("uiItemsEnumR: enum property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
- if(RNA_property_type(prop) == PROP_ENUM) {
+ if(RNA_property_type(prop) != PROP_ENUM) {
+ RNA_warning("uiItemsEnumR: not an enum property: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
+ return;
+ }
+ else {
EnumPropertyItem *item;
int totitem, i, free;
uiLayout *split= uiLayoutSplit(layout, 0, 0);
@@ -1081,7 +1120,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname
for(i=0; i<totitem; i++) {
if(item[i].identifier[0]) {
- uiItemEnumR(column, item[i].name, ICON_NULL, ptr, propname, item[i].value);
+ uiItemEnumR(column, item[i].name, ICON_NONE, ptr, propname, item[i].value);
}
else {
if(item[i].name) {
@@ -1091,7 +1130,7 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname
block->flag |= UI_BLOCK_NO_FLIP;
}
- uiItemL(column, item[i].name, ICON_NULL);
+ uiItemL(column, item[i].name, ICON_NONE);
bt= block->buttons.last;
bt->flag= UI_TEXT_LEFT;
}
@@ -1256,13 +1295,13 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propna
prop= RNA_struct_find_property(ptr, propname);
if(!prop) {
- printf("uiItemPointerR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
+ RNA_warning("uiItemPointerR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
type= RNA_property_type(prop);
if(!ELEM(type, PROP_POINTER, PROP_STRING)) {
- printf("uiItemPointerR: property %s must be a pointer or string.\n", propname);
+ RNA_warning("uiItemPointerR: property %s must be a pointer or string.\n", propname);
return;
}
@@ -1270,16 +1309,16 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propna
if(!searchprop) {
- printf("uiItemPointerR: search collection property not found: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname);
+ RNA_warning("uiItemPointerR: search collection property not found: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname);
return;
}
else if (RNA_property_type(searchprop) != PROP_COLLECTION) {
- printf("uiItemPointerR: search collection property is not a collection type: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname);
+ RNA_warning("uiItemPointerR: search collection property is not a collection type: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname);
return;
}
/* get icon & name */
- if(icon==ICON_NULL) {
+ if(icon==ICON_NONE) {
if(type == PROP_POINTER)
icontype= RNA_property_pointer_type(ptr, prop);
else
@@ -1359,7 +1398,7 @@ void uiItemM(uiLayout *layout, bContext *UNUSED(C), const char *menuname, const
mt= WM_menutype_find(menuname, FALSE);
if(mt==NULL) {
- printf("uiItemM: not found %s\n", menuname);
+ RNA_warning("uiItemM: not found %s\n", menuname);
return;
}
@@ -1472,11 +1511,12 @@ static void menu_item_enum_opname_menu(bContext *UNUSED(C), uiLayout *layout, vo
void uiItemMenuEnumO(uiLayout *layout, const char *opname, const char *propname, const char *name, int icon)
{
- wmOperatorType *ot= WM_operatortype_find(opname, 0);
+ wmOperatorType *ot= WM_operatortype_find(opname, 1);
MenuItemLevel *lvl;
if(!ot || !ot->srna) {
ui_item_disabled(layout, opname);
+ RNA_warning("uiItemMenuEnumO: %s '%s'\n", ot ? "unknown operator" : "operator missing srna", name);
return;
}
@@ -1509,6 +1549,7 @@ void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propn
prop= RNA_struct_find_property(ptr, propname);
if(!prop) {
ui_item_disabled(layout, propname);
+ RNA_warning("uiItemMenuEnumR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1966,17 +2007,15 @@ static void ui_litem_layout_split(uiLayout *litem)
uiLayoutItemSplt *split= (uiLayoutItemSplt*)litem;
uiItem *item;
float percentage;
- int itemh, x, y, w, tot=0, colw=0;
+ const int tot= BLI_countlist(&litem->items);
+ int itemh, x, y, w, colw=0;
+
+ if(tot == 0)
+ return;
x= litem->x;
y= litem->y;
- for(item=litem->items.first; item; item=item->next)
- tot++;
-
- if(tot == 0)
- return;
-
percentage= (split->percentage == 0.0f)? 1.0f/(float)tot: split->percentage;
w= (litem->w - (tot-1)*litem->space);
@@ -2682,14 +2721,14 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in
}
if(flag & UI_LAYOUT_OP_SHOW_TITLE) {
- uiItemL(layout, op->type->name, ICON_NULL);
+ uiItemL(layout, op->type->name, ICON_NONE);
}
/* poll() on this operator may still fail, at the moment there is no nice feedback when this happens
* just fails silently */
if(!WM_operator_repeat_check(C, op)) {
uiBlockSetButLock(uiLayoutGetBlock(layout), TRUE, "Operator cannot redo");
- uiItemL(layout, "* Redo Unsupported *", ICON_NULL); // XXX, could give some nicer feedback or not show redo panel at all?
+ uiItemL(layout, "* Redo Unsupported *", ICON_NONE); // XXX, could give some nicer feedback or not show redo panel at all?
}
if(op->type->ui) {
@@ -2713,7 +2752,7 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in
uiLayout *row;
row= uiLayoutRow(layout, TRUE);
- uiItemM(row, (bContext *)C, "WM_MT_operator_presets", NULL, ICON_NULL);
+ uiItemM(row, (bContext *)C, "WM_MT_operator_presets", NULL, ICON_NONE);
WM_operator_properties_create(&op_ptr, "WM_OT_operator_preset_add");
RNA_string_set(&op_ptr, "operator", op->type->idname);
@@ -2729,7 +2768,7 @@ void uiLayoutOperatorButs(const bContext *C, uiLayout *layout, wmOperator *op,in
empty= uiDefAutoButsRNA(layout, &ptr, check_prop, label_align) == 0;
if(empty && (flag & UI_LAYOUT_OP_SHOW_EMPTY)) {
- uiItemL(layout, "No Properties.", ICON_NULL);
+ uiItemL(layout, "No Properties.", ICON_NONE);
}
}