[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19274] branches/blender2.5/blender/source /blender: 2.5: UI Layout Engine, initial code.

Brecht Van Lommel brecht at blender.org
Fri Mar 13 14:38:41 CET 2009


Revision: 19274
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19274
Author:   blendix
Date:     2009-03-13 14:38:41 +0100 (Fri, 13 Mar 2009)

Log Message:
-----------
2.5: UI Layout Engine, initial code.

* As a test, used by:
  * Object buttons, tried to make it match the mockup.
  * Text window header.
  * Text window properties panel.
* Panel interaction with view2d is still problematic, need to make
  this work properly still.
* Templates are very basic, the ones there are simple but already
  can follow the object buttons mockup quite closely.
* It's based on a three level system: panels, templates and items.
  To get an idea of what that means in practice, see:

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/UI_LayoutEngine#Panels.2C_Templates_and_Items

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    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_panel.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_utils.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_header.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_intern.h
    branches/blender2.5/blender/source/blender/editors/space_buttons/space_buttons.c
    branches/blender2.5/blender/source/blender/editors/space_image/image_draw.c
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/editors/space_text/space_text.c
    branches/blender2.5/blender/source/blender/editors/space_text/text_header.c
    branches/blender2.5/blender/source/blender/editors/space_text/text_intern.h
    branches/blender2.5/blender/source/blender/editors/space_text/text_ops.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_image.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_space.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_text.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_ui.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_object.c

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-03-13 13:11:50 UTC (rev 19273)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-03-13 13:38:41 UTC (rev 19274)
@@ -4329,7 +4329,7 @@
 						v3d->bgpic->ima= restore_pointer_by_name(newmain, (ID *)v3d->bgpic->ima, 1);
 					}
 					if(v3d->localvd) {
-						Base *base;
+						/*Base *base;*/
 
 						v3d->localvd->camera= sc->scene->camera;
 						
@@ -5960,10 +5960,7 @@
 				while(sl) {
 					if(sl->spacetype==SPACE_TEXT) {
 						SpaceText *st= (SpaceText*) sl;
-						if(st->font_id>1) {
-							st->font_id= 0;
-							st->lheight= 13;
-						}
+						st->lheight= 12;
 					}
 					sl= sl->next;
 				}

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-03-13 13:11:50 UTC (rev 19273)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-03-13 13:38:41 UTC (rev 19274)
@@ -36,6 +36,7 @@
 struct Main;
 struct ListBase;
 struct ARegion;
+struct ScrArea;
 struct wmWindow;
 struct wmWindowManager;
 struct wmOperator;
@@ -303,7 +304,7 @@
 void uiPopupBoundsBlock(uiBlock *block, int addval, int mx, int my);
 void uiMenuPopupBoundsBlock(uiBlock *block, int addvall, int mx, int my);
 
-int		uiBlocksGetYMin		(ListBase *lb);
+int		uiBlocksGetYMin		(struct ListBase *lb);
 int		uiBlockGetCol		(uiBlock *block);
 
 void	uiBlockSetCol		(uiBlock *block, int col);
@@ -430,7 +431,7 @@
 
 void uiBlockPickerButtons(struct uiBlock *block, float *col, float *hsv, float *old, char *hexcol, char mode, short retval);
 
-uiBut *uiDefAutoButR(uiBlock *block, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, char *name, int x1, int y1, int x2, int y2);
+uiBut *uiDefAutoButR(uiBlock *block, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, char *name, int icon, int x1, int y1, int x2, int y2);
 int uiDefAutoButsRNA(uiBlock *block, struct PointerRNA *ptr);
 
 /* Links
@@ -500,7 +501,7 @@
 
 extern void uiNewPanelHeight(struct uiBlock *block, int sizey);
 extern void uiNewPanelTitle(struct uiBlock *block, char *str);
-extern uiBlock *uiFindOpenPanelBlockName(ListBase *lb, char *name);
+extern uiBlock *uiFindOpenPanelBlockName(struct ListBase *lb, char *name);
 extern int uiAlignPanelStep(struct ScrArea *sa, struct ARegion *ar, float fac);
 extern void uiPanelControl(int);
 extern void uiSetPanelHandler(int);
@@ -519,16 +520,16 @@
  * Callbacks and utils to get 2.48 work */
 
 void test_idbutton_cb(struct bContext *C, void *namev, void *arg2);
-void test_scriptpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_actionpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_obpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_meshobpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_meshpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_matpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_scenepoin_but(struct bContext *C, char *name, ID **idpp);
-void test_grouppoin_but(struct bContext *C, char *name, ID **idpp);
-void test_texpoin_but(struct bContext *C, char *name, ID **idpp);
-void test_imapoin_but(struct bContext *C, char *name, ID **idpp);
+void test_scriptpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_actionpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_obpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_meshobpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_meshpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_matpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_scenepoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_grouppoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_texpoin_but(struct bContext *C, char *name, struct ID **idpp);
+void test_imapoin_but(struct bContext *C, char *name, struct ID **idpp);
 void autocomplete_bone(struct bContext *C, char *str, void *arg_v);
 void autocomplete_vgroup(struct bContext *C, char *str, void *arg_v);
 
@@ -553,5 +554,78 @@
 uiBut *uiDefMenuSub(uiBlock *block, uiBlockCreateFunc func, char *name);
 uiBut *uiDefMenuTogR(uiBlock *block, struct PointerRNA *ptr, char *propname, char *propvalue, char *name);
 
+/* Layout
+ *
+ * More automated layout of buttons. Has three levels:
+ * - Layout: contains a number templates, within a bounded width or height.
+ * - Template: predefined layouts for buttons with a number of slots, each
+ *   slot can contain multiple items.
+ * - Item: item to put in a template slot, being either an RNA property,
+ *   operator, label or menu currently. */
+
+/* layout */
+#define UI_LAYOUT_HORIZONTAL	0
+#define UI_LAYOUT_VERTICAL		1
+
+typedef struct uiLayout uiLayout;
+
+uiLayout *uiLayoutBegin(int dir, int x, int y, int w, int h);
+void uiLayoutContext(uiLayout *layout, int opcontext);
+void uiLayoutEnd(const struct bContext *C, uiBlock *block, uiLayout *layout, int *x, int *y);
+
+/* vertical button templates */
+#define UI_TSLOT_COLUMN_1	0
+#define UI_TSLOT_COLUMN_2	1
+#define UI_TSLOT_COLUMN_3	2
+#define UI_TSLOT_COLUMN_4	3
+#define UI_TSLOT_COLUMN_5	4
+#define UI_TSLOT_COLUMN_MAX	5
+
+#define UI_TSLOT_LR_LEFT	0
+#define UI_TSLOT_LR_RIGHT	1
+
+void uiTemplateLeftRight(uiLayout *layout);
+void uiTemplateColumn(uiLayout *layout);
+uiLayout *uiTemplateStack(uiLayout *layout);
+
+/* horizontal header templates */
+#define UI_TSLOT_HEADER		0
+
+void uiTemplateHeaderMenus(uiLayout *layout);
+void uiTemplateHeaderButtons(uiLayout *layout);
+void uiTemplateHeaderID(uiLayout *layout, struct PointerRNA *ptr, char *propname, int flag, uiIDPoinFunc func);
+void uiTemplateSetColor(uiLayout *layout, int color);
+
+/* items */
+void uiItemO(uiLayout *layout, int slot, const char *name, int icon, char *opname);
+void uiItemEnumO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, int value);
+void uiItemsEnumO(uiLayout *layout, int slot, char *opname, char *propname);
+void uiItemBooleanO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, int value);
+void uiItemIntO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, int value);
+void uiItemFloatO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, float value);
+void uiItemStringO(uiLayout *layout, int slot, const char *name, int icon, char *opname, char *propname, char *value);
+void uiItemFullO(uiLayout *layout, int slot, const char *name, int icon, char *idname, IDProperty *properties, int context);
+
+void uiItemR(uiLayout *layout, int slot, const char *name, int icon, struct PointerRNA *ptr, char *propname);
+void uiItemFullR(uiLayout *layout, int slot, const char *name, int icon, struct PointerRNA *ptr, char *propname, int index);
+
+void uiItemLabel(uiLayout *layout, int slot, const char *name, int icon);
+
+void uiItemMenu(uiLayout *layout, int slot, const char *name, int icon, uiMenuCreateFunc func);
+
+/* utilities */
+#define UI_PANEL_WIDTH			340
+#define UI_COMPACT_PANEL_WIDTH	160
+
+typedef void (*uiHeaderCreateFunc)(const struct bContext *C, uiLayout *layout);
+typedef void (*uiPanelCreateFunc)(const struct bContext *C, uiLayout *layout);
+
+void uiPanelLayout(const struct bContext *C, struct ARegion *ar, char *blockname,
+	char *panelname, char *tabname, uiPanelCreateFunc func, int order);
+void uiCompactPanelLayout(const struct bContext *C, struct ARegion *ar, char *blockname,
+	char *panelname, char *tabname, uiPanelCreateFunc func, int order);
+void uiHeaderLayout(const struct bContext *C, struct ARegion *ar,
+	uiHeaderCreateFunc func);
+
 #endif /*  UI_INTERFACE_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2009-03-13 13:11:50 UTC (rev 19273)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2009-03-13 13:38:41 UTC (rev 19274)
@@ -56,6 +56,8 @@
 	V2D_COMMONVIEW_HEADER,
 		/* ui listviews, tries to wrap tot inside region width */
 	V2D_COMMONVIEW_LIST_UI,
+		/* ui region containing panels */
+	V2D_COMMONVIEW_PANELS_UI,
 } eView2D_CommonViewTypes;
 
 /* ---- Defines for Scroller/Grid Arguments ----- */

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c	2009-03-13 13:11:50 UTC (rev 19273)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_draw.c	2009-03-13 13:38:41 UTC (rev 19274)
@@ -2221,8 +2221,8 @@
 	/* text color, with pulldown item exception */
 	if(but->dt==UI_EMBOSSP) {
 		if (sunken) {
-			float col[4];
-			UI_GetThemeColor4ubv(TH_MENU_TEXT, col);
+			float col[3];
+			UI_GetThemeColor3fv(TH_MENU_TEXT, col);
 			if ((col[0] + col[1] + col[2]) / 3.f < 0.5f)
 				UI_ThemeColorShadeAlpha(TH_HEADER, 20, alpha_offs);
 		} else if((but->flag & UI_ACTIVE) && but->type!=LABEL) {	// LABEL = title in pulldowns

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-03-13 13:11:50 UTC (rev 19273)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-03-13 13:38:41 UTC (rev 19274)
@@ -2961,6 +2961,8 @@
 
 	data->state= state;
 
+	ui_check_but(but);
+
 	/* redraw */
 	ED_region_tag_redraw(data->region);
 }
@@ -3050,6 +3052,7 @@
 	MEM_freeN(but->active);
 	but->active= NULL;
 	but->flag &= ~(UI_ACTIVE|UI_SELECT);
+	ui_check_but(but);
 
 	/* adds empty mousemove in queue for re-init handler, in case mouse is
 	 * still over a button. we cannot just check for this ourselfs because

Added: branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list