[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