[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58553] branches/soc-2013-ui_replay: Extended uiLayout to make it possible to have taller buttons.
Vincent Akkermans
vincent at ack-err.net
Tue Jul 23 20:33:27 CEST 2013
Revision: 58553
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58553
Author: ack-err
Date: 2013-07-23 18:33:26 +0000 (Tue, 23 Jul 2013)
Log Message:
-----------
Extended uiLayout to make it possible to have taller buttons. Buttons in a row or a column layout can be from one to five times the normal height.
Modified Paths:
--------------
branches/soc-2013-ui_replay/release/scripts/startup/bl_ui/space_view3d_toolbar.py
branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h
branches/soc-2013-ui_replay/source/blender/editors/interface/interface_layout.c
branches/soc-2013-ui_replay/source/blender/makesrna/intern/rna_ui_api.c
Modified: branches/soc-2013-ui_replay/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2013-ui_replay/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-07-23 18:30:06 UTC (rev 58552)
+++ branches/soc-2013-ui_replay/release/scripts/startup/bl_ui/space_view3d_toolbar.py 2013-07-23 18:33:26 UTC (rev 58553)
@@ -80,8 +80,9 @@
col = layout.column(align=True)
col.label(text="Transform:")
col.operator("transform.translate")
- col.operator("transform.rotate")
- col.operator("transform.resize", text="Scale")
+ row = col.row(align=True, button_height=2)
+ row.operator("transform.rotate")
+ row.operator("transform.resize", text="Scale")
col = layout.column(align=True)
col.operator("object.origin_set", text="Origin")
Modified: branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h 2013-07-23 18:30:06 UTC (rev 58552)
+++ branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h 2013-07-23 18:33:26 UTC (rev 58553)
@@ -784,7 +784,9 @@
/* layout specifiers */
uiLayout *uiLayoutRow(uiLayout *layout, int align);
+uiLayout *uiLayoutRowWithButtonHeight(uiLayout *layout, int align, int button_height);
uiLayout *uiLayoutColumn(uiLayout *layout, int align);
+uiLayout *uiLayoutColumnWithButtonHeight(uiLayout *layout, int align, int button_height);
uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align);
uiLayout *uiLayoutBox(uiLayout *layout);
uiLayout *uiLayoutListBox(uiLayout *layout, struct uiList *ui_list, struct PointerRNA *ptr, struct PropertyRNA *prop,
Modified: branches/soc-2013-ui_replay/source/blender/editors/interface/interface_layout.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/interface/interface_layout.c 2013-07-23 18:30:06 UTC (rev 58552)
+++ branches/soc-2013-ui_replay/source/blender/editors/interface/interface_layout.c 2013-07-23 18:33:26 UTC (rev 58553)
@@ -146,6 +146,7 @@
bool redalert;
bool keepaspect;
char alignment;
+ int button_height;
};
typedef struct uiLayoutItemFlow {
@@ -237,13 +238,14 @@
return (variable) ? UI_GetStringWidth(name) + (compact ? f5 : f10) + UI_UNIT_X : 10 * UI_UNIT_X; /* text only */
}
-static void ui_item_size(uiItem *item, int *r_w, int *r_h)
+static void ui_item_size(uiLayout *layout, uiItem *item, int *r_w, int *r_h)
{
if (item->type == ITEM_BUTTON) {
uiButtonItem *bitem = (uiButtonItem *)item;
if (r_w) *r_w = BLI_rctf_size_x(&bitem->but->rect);
- if (r_h) *r_h = BLI_rctf_size_y(&bitem->but->rect);
+ if (r_h) *r_h = BLI_rctf_size_y(&bitem->but->rect) *
+ (layout->button_height ? layout->button_height : 1);
}
else {
uiLayout *litem = (uiLayout *)item;
@@ -1810,7 +1812,7 @@
litem->h = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
litem->w += itemw;
litem->h = MAX2(itemh, litem->h);
@@ -1838,7 +1840,7 @@
tot = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
totw += itemw;
tot++;
}
@@ -1860,7 +1862,7 @@
if (item->flag)
continue;
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
minw = ui_litem_min_width(itemw);
if (w - lastw > 0)
@@ -1892,7 +1894,7 @@
x = litem->x;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
minw = ui_litem_min_width(itemw);
if (item->flag) {
@@ -1941,7 +1943,7 @@
litem->h = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
litem->w = MAX2(litem->w, itemw);
litem->h += itemh;
@@ -1960,7 +1962,7 @@
y = litem->y;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, NULL, &itemh);
+ ui_item_size(litem, item, NULL, &itemh);
y -= itemh;
ui_item_position(item, x, y, litem->w, itemh);
@@ -2042,7 +2044,7 @@
toth = 0;
totitem = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
maxw = MAX2(maxw, itemw);
toth += itemh;
totitem++;
@@ -2073,7 +2075,7 @@
/* create column per column */
col = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
y -= itemh + style->buttonspacey;
miny = min_ii(miny, y);
@@ -2106,7 +2108,7 @@
toth = 0;
totitem = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
toth += itemh;
totitem++;
}
@@ -2123,7 +2125,7 @@
/* create column per column */
col = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, NULL, &itemh);
+ ui_item_size(litem, item, NULL, &itemh);
itemw = ui_item_fit(1, x - litem->x, flow->totcol, w, col == flow->totcol - 1, litem->alignment, &offset);
y -= itemh;
@@ -2159,7 +2161,7 @@
for (item = litem->items.first; item; item = item->next) {
ui_item_offset(item, &itemx, &itemy);
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
minx = min_ii(minx, itemx);
miny = min_ii(miny, itemy);
@@ -2185,7 +2187,7 @@
for (item = litem->items.first; item; item = item->next) {
ui_item_offset(item, &itemx, &itemy);
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
minx = min_ii(minx, itemx);
miny = min_ii(miny, itemy);
@@ -2207,7 +2209,7 @@
for (item = litem->items.first; item; item = item->next) {
ui_item_offset(item, &itemx, &itemy);
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
if (scalex != 1.0f) {
newx = (itemx - minx) * scalex;
@@ -2257,7 +2259,7 @@
colw = MAX2(colw, 0);
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, NULL, &itemh);
+ ui_item_size(litem, item, NULL, &itemh);
ui_item_position(item, x, y - itemh, colw, itemh);
x += colw;
@@ -2286,7 +2288,7 @@
litem->h = 0;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
litem->w = MAX2(itemw, litem->w);
litem->h = MAX2(itemh, litem->h);
@@ -2302,7 +2304,7 @@
y = litem->y;
for (item = litem->items.first; item; item = item->next) {
- ui_item_size(item, &itemw, &itemh);
+ ui_item_size(litem, item, &itemw, &itemh);
ui_item_position(item, x, y - itemh, litem->w, itemh);
litem->h = MAX2(litem->h, itemh);
@@ -2313,10 +2315,11 @@
}
/* layout create functions */
-uiLayout *uiLayoutRow(uiLayout *layout, int align)
+
+static uiLayout *ui_layout_row(uiLayout *layout, int align, int button_height)
{
uiLayout *litem;
-
+
litem = MEM_callocN(sizeof(uiLayout), "uiLayoutRow");
litem->item.type = ITEM_LAYOUT_ROW;
litem->root = layout->root;
@@ -2327,15 +2330,26 @@
litem->space = (align) ? 0 : layout->root->style->buttonspacex;
litem->redalert = layout->redalert;
litem->w = layout->w;
+ litem->button_height = button_height;
BLI_addtail(&layout->items, litem);
-
+
uiBlockSetCurLayout(layout->root->block, litem);
-
+
return litem;
}
-uiLayout *uiLayoutColumn(uiLayout *layout, int align)
+uiLayout *uiLayoutRowWithButtonHeight(uiLayout *layout, int align, int button_height)
{
+ return ui_layout_row(layout, align, button_height);
+}
+
+uiLayout *uiLayoutRow(uiLayout *layout, int align)
+{
+ return ui_layout_row(layout, align, 1);
+}
+
+static uiLayout *ui_layout_column(uiLayout *layout, int align, int button_height)
+{
uiLayout *litem;
litem = MEM_callocN(sizeof(uiLayout), "uiLayoutColumn");
@@ -2348,6 +2362,7 @@
litem->space = (litem->align) ? 0 : layout->root->style->buttonspacey;
litem->redalert = layout->redalert;
litem->w = layout->w;
+ litem->button_height = button_height;
BLI_addtail(&layout->items, litem);
uiBlockSetCurLayout(layout->root->block, litem);
@@ -2355,6 +2370,16 @@
return litem;
}
+uiLayout *uiLayoutColumn(uiLayout *layout, int align)
+{
+ return ui_layout_column(layout, align, 1);
+}
+
+uiLayout *uiLayoutColumnWithButtonHeight(uiLayout *layout, int align, int button_height)
+{
+ return ui_layout_column(layout, align, button_height);
+}
+
uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align)
{
uiLayoutItemFlow *flow;
@@ -2584,7 +2609,7 @@
int x, y, w, h;
for (item = litem->items.last; item; item = item->prev) {
- ui_item_size(item, &w, &h);
+ ui_item_size(litem, item, &w, &h);
ui_item_offset(item, &x, &y);
if (scale[0] != 0.0f) {
Modified: branches/soc-2013-ui_replay/source/blender/makesrna/intern/rna_ui_api.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/makesrna/intern/rna_ui_api.c 2013-07-23 18:30:06 UTC (rev 58552)
+++ branches/soc-2013-ui_replay/source/blender/makesrna/intern/rna_ui_api.c 2013-07-23 18:33:26 UTC (rev 58553)
@@ -422,21 +422,25 @@
static float node_socket_color_default[] = { 0.0f, 0.0f, 0.0f, 1.0f };
/* simple layout specifiers */
- func = RNA_def_function(srna, "row", "uiLayoutRow");
+ func = RNA_def_function(srna, "row", "uiLayoutRowWithButtonHeight");
parm = RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in");
RNA_def_function_return(func, parm);
RNA_def_function_ui_description(func,
"Sub-layout. Items placed in this sublayout are placed next to each other "
"in a row");
RNA_def_boolean(func, "align", 0, "", "Align buttons to each other");
+ parm = RNA_def_int(func, "button_height", 1, 1, 5, "",
+ "The multiplier for the height of buttons in this new layout.", 1, 5);
- func = RNA_def_function(srna, "column", "uiLayoutColumn");
+ func = RNA_def_function(srna, "column", "uiLayoutColumnWithButtonHeight");
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list