[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21745] branches/blender2.5/blender/source /blender: 2.5: UI

Brecht Van Lommel brecht at blender.org
Tue Jul 21 03:26:18 CEST 2009


Revision: 21745
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21745
Author:   blendix
Date:     2009-07-21 03:26:17 +0200 (Tue, 21 Jul 2009)

Log Message:
-----------
2.5: UI

* List template visual changes. Items now look different,
  and it expands to size 5 as more items are added.

* Added LISTROW and LISTBOX elements. The former is like
  a typical ROW button, but looks diffrent. The latter
  looks like a BOUNDBOX, and has no extra features yet.
* Fix some glColor3ubv warnings with casting, did not find
  a nicer way.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_style.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_userdef_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_userdef.c

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-07-21 01:26:17 UTC (rev 21745)
@@ -30,6 +30,8 @@
 #ifndef UI_INTERFACE_H
 #define UI_INTERFACE_H
 
+#include "RNA_types.h"
+
 /* Struct Declarations */
 
 struct ID;
@@ -201,7 +203,9 @@
 #define SEARCH_MENU	(40<<9)
 #define BUT_EXTRA	(41<<9)
 #define HSVCIRCLE	(42<<9)
-#define BUTTYPE	(63<<9)
+#define LISTBOX		(43<<9)
+#define LISTROW		(44<<9)
+#define BUTTYPE		(63<<9)
 
 /* Drawing
  *
@@ -588,7 +592,6 @@
 void uiLayoutSetScaleX(uiLayout *layout, float scale);
 void uiLayoutSetScaleY(uiLayout *layout, float scale);
 
-
 int uiLayoutGetOperatorContext(uiLayout *layout);
 int uiLayoutGetActive(uiLayout *layout);
 int uiLayoutGetEnabled(uiLayout *layout);
@@ -597,12 +600,14 @@
 int uiLayoutGetKeepAspect(uiLayout *layout);
 float uiLayoutGetScaleX(uiLayout *layout);
 float uiLayoutGetScaleY(uiLayout *layout);
+ListBase *uiLayoutBoxGetList(uiLayout *layout);
 
 /* layout specifiers */
 uiLayout *uiLayoutRow(uiLayout *layout, int align);
 uiLayout *uiLayoutColumn(uiLayout *layout, int align);
 uiLayout *uiLayoutColumnFlow(uiLayout *layout, int number, int align);
 uiLayout *uiLayoutBox(uiLayout *layout);
+uiLayout *uiLayoutListBox(uiLayout *layout);
 uiLayout *uiLayoutFree(uiLayout *layout, int align);
 uiLayout *uiLayoutSplit(uiLayout *layout, float percentage);
 
@@ -619,11 +624,19 @@
 void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int type);
 void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname);
 void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser);
-ListBase uiTemplateList(uiLayout *layout, struct PointerRNA *ptr, char *propname, struct PointerRNA *activeptr, char *activeprop, int rows, int columns, int compact);
 void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C);
 void uiTemplateOperatorSearch(uiLayout *layout);
 void uiTemplateHeader3D(uiLayout *layout, struct bContext *C);
 
+typedef struct uiListItem {
+	struct uiListItem *next, *prev;
+
+	struct PointerRNA data;
+	uiLayout *layout;
+} uiListItem;
+
+ListBase uiTemplateList(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *activeptr, char *activeprop, int rows, int type);
+
 /* items */
 void uiItemO(uiLayout *layout, char *name, int icon, char *opname);
 void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-07-21 01:26:17 UTC (rev 21745)
@@ -720,6 +720,7 @@
 			if(value==0.0) push= 1;
 			break;
 		case ROW:
+		case LISTROW:
 			if(value == but->hardmax) push= 1;
 			break;
 		case COL:
@@ -2149,7 +2150,7 @@
 
 				freestr= 1;
 			}
-			else if(type == ROW && proptype == PROP_ENUM) {
+			else if(ELEM(type, ROW, LISTROW) && proptype == PROP_ENUM) {
 				EnumPropertyItem *item;
 				int i, totitem, free;
 
@@ -2202,7 +2203,7 @@
 				RNA_property_int_range(ptr, prop, &hardmin, &hardmax);
 				RNA_property_int_ui_range(ptr, prop, &softmin, &softmax, &step);
 
-				if(type != ROW && min == max) {
+				if(!ELEM(type, ROW, LISTROW) && min == max) {
 					min= hardmin;
 					max= hardmax;
 				}
@@ -2217,7 +2218,7 @@
 				RNA_property_float_range(ptr, prop, &hardmin, &hardmax);
 				RNA_property_float_ui_range(ptr, prop, &softmin, &softmax, &step, &precision);
 
-				if(type != ROW && min == max) {
+				if(!ELEM(type, ROW, LISTROW) && min == max) {
 					min= hardmin;
 					max= hardmax;
 				}

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c	2009-07-21 01:26:17 UTC (rev 21745)
@@ -788,7 +788,7 @@
 	glGetMaterialfv(GL_FRONT, GL_DIFFUSE, diff);
 		
 	/* backdrop */
-	glColor3ubv(wcol->inner);
+	glColor3ubv((unsigned char*)wcol->inner);
 	uiSetRoundBox(15);
 	gl_round_box(GL_POLYGON, rect->xmin, rect->ymin, rect->xmax, rect->ymax, 5.0f);
 	
@@ -852,7 +852,7 @@
 	/* AA circle */
 	glEnable(GL_BLEND);
 	glEnable(GL_LINE_SMOOTH );
-	glColor3ubv(wcol->inner);
+	glColor3ubv((unsigned char*)wcol->inner);
 	glutil_draw_lined_arc(0.0f, M_PI*2.0, 100.0f, 32);
 	glDisable(GL_BLEND);
 	glDisable(GL_LINE_SMOOTH );
@@ -926,14 +926,14 @@
 	if(cumap->flag & CUMA_DO_CLIP) {
 		glColor3ubvShade(wcol->inner, -20);
 		glRectf(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
-		glColor3ubv(wcol->inner);
+		glColor3ubv((unsigned char*)wcol->inner);
 		glRectf(rect->xmin + zoomx*(cumap->clipr.xmin-offsx),
 				rect->ymin + zoomy*(cumap->clipr.ymin-offsy),
 				rect->xmin + zoomx*(cumap->clipr.xmax-offsx),
 				rect->ymin + zoomy*(cumap->clipr.ymax-offsy));
 	}
 	else {
-		glColor3ubv(wcol->inner);
+		glColor3ubv((unsigned char*)wcol->inner);
 		glRectf(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
 	}
 	
@@ -989,7 +989,7 @@
 	}*/
 	
 	/* the curve */
-	glColor3ubv(wcol->item);
+	glColor3ubv((unsigned char*)wcol->item);
 	glEnable(GL_LINE_SMOOTH);
 	glEnable(GL_BLEND);
 	glBegin(GL_LINE_STRIP);
@@ -1043,7 +1043,7 @@
 	glScissor(scissor[0], scissor[1], scissor[2], scissor[3]);
 
 	/* outline */
-	glColor3ubv(wcol->outline);
+	glColor3ubv((unsigned char*)wcol->outline);
 	fdrawbox(rect->xmin, rect->ymin, rect->xmax, rect->ymax);
 }
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-07-21 01:26:17 UTC (rev 21745)
@@ -188,7 +188,7 @@
 {
 	while(but->prev) {
 		but= but->prev;
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but;
 	}
 	return NULL;
 }
@@ -197,7 +197,7 @@
 {
 	while(but->next) {
 		but= but->next;
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but;
 	}
 	return NULL;
 }
@@ -208,7 +208,7 @@
 	
 	but= block->buttons.first;
 	while(but) {
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but;
 		but= but->next;
 	}
 	return NULL;
@@ -220,7 +220,7 @@
 	
 	but= block->buttons.last;
 	while(but) {
-		if(but->type!=LABEL && but->type!=SEPR && but->type!=ROUNDBOX) return but;
+		if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but;
 		but= but->prev;
 	}
 	return NULL;
@@ -284,7 +284,7 @@
 	uiAfterFunc *after;
 	char *str= NULL;
 
-	if ELEM5(but->type, BLOCK, BUT, LABEL, PULLDOWN, ROUNDBOX);
+	if ELEM6(but->type, BLOCK, BUT, LABEL, PULLDOWN, ROUNDBOX, LISTBOX);
 	else {
 		/* define which string to use for undo */
 		if ELEM(but->type, LINK, INLINK) str= "Add button link";
@@ -449,7 +449,7 @@
 	
 	/* states of other row buttons */
 	for(bt= block->buttons.first; bt; bt= bt->next)
-		if(bt!=but && bt->poin==but->poin && bt->type==ROW)
+		if(bt!=but && bt->poin==but->poin && ELEM(bt->type, ROW, LISTROW))
 			ui_check_but(bt);
 	
 	ui_apply_but_func(C, but);
@@ -782,6 +782,7 @@
 			ui_apply_but_TOG(C, block, but, data);
 			break;
 		case ROW:
+		case LISTROW:
 			ui_apply_but_ROW(C, block, but, data);
 			break;
 		case SCROLL:
@@ -1392,7 +1393,7 @@
 	uiBut *but;
 
 	/* label and roundbox can overlap real buttons (backdrops...) */
-	if(actbut->type==LABEL && actbut->type==ROUNDBOX)
+	if(ELEM4(actbut->type, LABEL, SEPR, ROUNDBOX, LISTBOX))
 		return;
 
 	for(but= actbut->next; but; but= but->next) {
@@ -1416,7 +1417,7 @@
 	uiBut *but;
 
 	/* label and roundbox can overlap real buttons (backdrops...) */
-	if(actbut->type==LABEL && actbut->type==ROUNDBOX)
+	if(ELEM4(actbut->type, LABEL, SEPR, ROUNDBOX, LISTBOX))
 		return;
 
 	for(but= actbut->prev; but; but= but->prev) {
@@ -3183,9 +3184,11 @@
 		retval= ui_do_but_SLI(C, block, but, data, event);
 		break;
 	case ROUNDBOX:	
+	case LISTBOX:
 	case LABEL:	
 	case TOG3:	
 	case ROW:
+	case LISTROW:
 		retval= ui_do_but_EXIT(C, but, data, event);
 		break;
 	case TEX:
@@ -3331,7 +3334,7 @@
 		ui_window_to_block(ar, block, &mx, &my);
 
 		for(but=block->buttons.first; but; but= but->next) {
-			if(ELEM3(but->type, LABEL, ROUNDBOX, SEPR))
+			if(ELEM4(but->type, LABEL, ROUNDBOX, SEPR, LISTBOX))
 				continue;
 			if(but->flag & UI_HIDDEN)
 				continue;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h	2009-07-21 01:26:17 UTC (rev 21745)
@@ -84,7 +84,8 @@
 	UI_WTYPE_RGB_PICKER,
 	UI_WTYPE_NORMAL,
 	UI_WTYPE_BOX,
-	UI_WTYPE_SCROLL
+	UI_WTYPE_SCROLL,
+	UI_WTYPE_LISTITEM
 	
 } uiWidgetTypeEnum;
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c	2009-07-21 01:14:55 UTC (rev 21744)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c	2009-07-21 01:26:17 UTC (rev 21745)
@@ -148,6 +148,7 @@
 typedef struct uiLayoutItemBx {
 	uiLayout litem;
 	uiBut *roundbox;
+	ListBase items;
 } uiLayoutItemBx;
 
 typedef struct uiLayoutItemSplt {
@@ -218,7 +219,7 @@
 {
 	int variable = ui_layout_vary_direction(layout) == UI_ITEM_VARY_X;
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list