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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to