Revision: 20481
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20481
Author:   blendix
Date:     2009-05-29 01:37:55 +0200 (Fri, 29 May 2009)

Log Message:
-----------
UI:
* Added some properties of uiLayout that can be set. I've added
  some API code for more than the two I've implementeds, so
  ignore those for now.

  * layout.active = False will gray out buttons inside a layout.
  * layout.enabled = False will gray out and completely disable
    the buttons inside a layout.

* Also some function renames.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/armature/poselib.c
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.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/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
    branches/blender2.5/blender/source/blender/editors/space_info/info_header.c
    
branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_header.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c

Modified: branches/blender2.5/blender/source/blender/editors/armature/poselib.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/poselib.c       
2009-05-28 23:23:47 UTC (rev 20480)
+++ branches/blender2.5/blender/source/blender/editors/armature/poselib.c       
2009-05-28 23:37:55 UTC (rev 20481)
@@ -328,7 +328,7 @@
        /* start building */
        pup= uiPupMenuBegin(C, op->type->name, 0);
        layout= uiPupMenuLayout(pup);
-       uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
+       uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
        
        /* add new (adds to the first unoccupied frame) */
        uiItemIntO(layout, "Add New", 0, "POSELIB_OT_pose_add", "frame", 
poselib_get_free_index(ob->poselib));
@@ -462,7 +462,7 @@
        /* start building */
        pup= uiPupMenuBegin(C, op->type->name, 0);
        layout= uiPupMenuLayout(pup);
-       uiLayoutContext(layout, WM_OP_EXEC_DEFAULT);
+       uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
        
        /* add each marker to this menu */
        for (marker=act->markers.first, i=0; marker; marker= marker->next, i++)

Modified: 
branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-05-28 23:23:47 UTC (rev 20480)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-05-28 23:37:55 UTC (rev 20481)
@@ -131,6 +131,7 @@
 #define UI_BUT_ANIMATED                (1<<20)
 #define UI_BUT_ANIMATED_KEY    (1<<21)
 #define UI_BUT_DRIVEN          (1<<22)
+#define UI_BUT_INACTIVE                (1<<23)
 
 #define UI_PANEL_WIDTH                 340
 #define UI_COMPACT_PANEL_WIDTH 160
@@ -534,20 +535,38 @@
 #define UI_LAYOUT_PANEL                        0
 #define UI_LAYOUT_HEADER               1
 #define UI_LAYOUT_MENU                 2
+ 
+#define UI_UNIT_X                              20
+#define UI_UNIT_Y                              20
 
-#define UI_UNIT_X              20
-#define UI_UNIT_Y              20
+#define UI_LAYOUT_ALIGN_LEFT   0
+#define UI_LAYOUT_ALIGN_CENTER 1
+#define UI_LAYOUT_ALIGN_RIGHT  2
 
 uiLayout *uiBlockLayout(uiBlock *block, int dir, int type, int x, int y, int 
size, int em, struct uiStyle *style);
 void uiBlockSetCurLayout(uiBlock *block, uiLayout *layout);
 void uiBlockLayoutResolve(const struct bContext *C, uiBlock *block, int *x, 
int *y);
 
-void uiLayoutContext(uiLayout *layout, int opcontext);
-void uiLayoutFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv);
-uiBlock *uiLayoutBlock(uiLayout *layout);
+uiBlock *uiLayoutGetBlock(uiLayout *layout);
 
+void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext);
+void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void 
*argv);
 void uiLayoutSetContextPointer(uiLayout *layout, char *name, struct PointerRNA 
*ptr);
 
+void uiLayoutSetActive(uiLayout *layout, int active);
+void uiLayoutSetEnabled(uiLayout *layout, int enabled);
+void uiLayoutSetRedAlert(uiLayout *layout, int redalert);
+void uiLayoutSetAlignment(uiLayout *layout, int alignment);
+void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect);
+void uiLayoutSetScale(uiLayout *layout, float scale);
+
+int uiLayoutGetActive(uiLayout *layout);
+int uiLayoutGetEnabled(uiLayout *layout);
+int uiLayoutGetRedAlert(uiLayout *layout);
+int uiLayoutGetAlignment(uiLayout *layout);
+int uiLayoutGetKeepAspect(uiLayout *layout);
+float uiLayoutGetScale(uiLayout *layout);
+
 /* layout specifiers */
 uiLayout *uiLayoutRow(uiLayout *layout, int align);
 uiLayout *uiLayoutColumn(uiLayout *layout, int align);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c 
    2009-05-28 23:23:47 UTC (rev 20480)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c 
    2009-05-28 23:37:55 UTC (rev 20481)
@@ -130,8 +130,14 @@
        ListBase items;
 
        int x, y, w, h;
-       int space;
-       int align;
+       float scale;
+       short space;
+       char align;
+       char active;
+       char enabled;
+       char redalert;
+       char keepaspect;
+       char alignment;
 };
 
 typedef struct uiLayoutItemFlow {
@@ -946,7 +952,7 @@
 {
        MenuItemLevel *lvl= (MenuItemLevel*)(((uiBut*)arg)->func_argN);
 
-       uiLayoutContext(layout, WM_OP_EXEC_REGION_WIN);
+       uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN);
        uiItemsEnumO(layout, lvl->opname, lvl->propname);
 }
 
@@ -977,7 +983,7 @@
 {
        MenuItemLevel *lvl= (MenuItemLevel*)(((uiBut*)arg)->func_argN);
 
-       uiLayoutContext(layout, lvl->opcontext);
+       uiLayoutSetOperatorContext(layout, lvl->opcontext);
        uiItemsEnumR(layout, &lvl->rnapoin, lvl->propname);
 }
 
@@ -1435,6 +1441,9 @@
        litem->item.type= ITEM_LAYOUT_ROW;
        litem->root= layout->root;
        litem->align= align;
+       litem->active= 1;
+       litem->enabled= 1;
+       litem->context= layout->context;
        litem->space= (align)? 0: layout->root->style->buttonspacex;
        BLI_addtail(&layout->items, litem);
 
@@ -1451,6 +1460,9 @@
        litem->item.type= ITEM_LAYOUT_COLUMN;
        litem->root= layout->root;
        litem->align= align;
+       litem->active= 1;
+       litem->enabled= 1;
+       litem->context= layout->context;
        litem->space= (litem->align)? 0: layout->root->style->buttonspacey;
        BLI_addtail(&layout->items, litem);
 
@@ -1467,6 +1479,9 @@
        flow->litem.item.type= ITEM_LAYOUT_COLUMN_FLOW;
        flow->litem.root= layout->root;
        flow->litem.align= align;
+       flow->litem.active= 1;
+       flow->litem.enabled= 1;
+       flow->litem.context= layout->context;
        flow->litem.space= (flow->litem.align)? 0: 
layout->root->style->columnspace;
        flow->number= number;
        BLI_addtail(&layout->items, flow);
@@ -1483,6 +1498,9 @@
        box= MEM_callocN(sizeof(uiLayoutItemBx), "uiLayoutItemBx");
        box->litem.item.type= ITEM_LAYOUT_BOX;
        box->litem.root= layout->root;
+       box->litem.active= 1;
+       box->litem.enabled= 1;
+       box->litem.context= layout->context;
        box->litem.space= layout->root->style->columnspace;
        BLI_addtail(&layout->items, box);
 
@@ -1501,6 +1519,9 @@
        litem->item.type= ITEM_LAYOUT_FREE;
        litem->root= layout->root;
        litem->align= align;
+       litem->active= 1;
+       litem->enabled= 1;
+       litem->context= layout->context;
        BLI_addtail(&layout->items, litem);
 
        uiBlockSetCurLayout(layout->root->block, litem);
@@ -1512,7 +1533,7 @@
 {
        uiBlock *block;
 
-       block= uiLayoutBlock(layout);
+       block= uiLayoutGetBlock(layout);
        uiLayoutFree(layout, 0);
 
        return block;
@@ -1532,6 +1553,66 @@
        return litem;
 }
 
+void uiLayoutSetActive(uiLayout *layout, int active)
+{
+       layout->active= active;
+}
+
+void uiLayoutSetEnabled(uiLayout *layout, int enabled)
+{
+       layout->enabled= enabled;
+}
+
+void uiLayoutSetRedAlert(uiLayout *layout, int redalert)
+{
+       layout->redalert= redalert;
+}
+
+void uiLayoutSetKeepAspect(uiLayout *layout, int keepaspect)
+{
+       layout->keepaspect= keepaspect;
+}
+
+void uiLayoutSetAlignment(uiLayout *layout, int alignment)
+{
+       layout->alignment= alignment;
+}
+
+void uiLayoutSetScale(uiLayout *layout, float scale)
+{
+       layout->scale= scale;
+}
+
+int uiLayoutGetActive(uiLayout *layout)
+{
+       return layout->active;
+}
+
+int uiLayoutGetEnabled(uiLayout *layout)
+{
+       return layout->enabled;
+}
+
+int uiLayoutGetRedAlert(uiLayout *layout)
+{
+       return layout->redalert;
+}
+
+int uiLayoutGetKeepAspect(uiLayout *layout)
+{
+       return layout->keepaspect;
+}
+
+int uiLayoutGetAlignment(uiLayout *layout)
+{
+       return layout->alignment;
+}
+
+float uiLayoutGetScale(uiLayout *layout)
+{
+       return layout->scale;
+}
+
 /********************** Layout *******************/
 
 static void ui_item_estimate(uiItem *item)
@@ -1585,7 +1666,8 @@
                if(item->type == ITEM_BUTTON) {
                        bitem= (uiButtonItem*)item;
                        if(ui_but_can_align(bitem->but))
-                               bitem->but->alignnr= nr;
+                               if(!bitem->but->alignnr)
+                                       bitem->but->alignnr= nr;
                }
                else if(item->type == ITEM_LAYOUT_FREE);
                else if(item->type == ITEM_LAYOUT_BOX) {
@@ -1599,6 +1681,21 @@
        }
 }
 
+static void ui_item_flag(uiLayout *litem, int flag)
+{
+       uiItem *item;
+       uiButtonItem *bitem;
+
+       for(item=litem->items.last; item; item=item->prev) {
+               if(item->type == ITEM_BUTTON) {
+                       bitem= (uiButtonItem*)item;
+                       bitem->but->flag |= flag;
+               }
+               else
+                       ui_item_flag((uiLayout*)item, flag);
+       }
+}
+
 static void ui_item_layout(uiItem *item)
 {
        uiItem *subitem;
@@ -1611,6 +1708,10 @@
 
                if(litem->align)
                        ui_item_align(litem, ++litem->root->block->alignnr);
+               if(!litem->active)
+                       ui_item_flag(litem, UI_BUT_INACTIVE);
+               if(!litem->enabled)
+                       ui_item_flag(litem, UI_BUT_DISABLED);
 
                switch(litem->item.type) {
                        case ITEM_LAYOUT_COLUMN:
@@ -1694,6 +1795,9 @@
        layout->y= y;
        layout->root= root;
        layout->space= style->templatespace;
+       layout->active= 1;
+       layout->enabled= 1;
+       layout->context= NULL;
 
        if(type == UI_LAYOUT_MENU)
                layout->space= 0;
@@ -1714,7 +1818,7 @@
        return layout;
 }
 
-uiBlock *uiLayoutBlock(uiLayout *layout)
+uiBlock *uiLayoutGetBlock(uiLayout *layout)
 {
        return layout->root->block;
 }
@@ -1739,12 +1843,12 @@
        }
 }
 
-void uiLayoutContext(uiLayout *layout, int opcontext)
+void uiLayoutSetOperatorContext(uiLayout *layout, int opcontext)
 {
        layout->root->opcontext= opcontext;
 }
 
-void uiLayoutFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv)
+void uiLayoutSetFunc(uiLayout *layout, uiMenuHandleFunc handlefunc, void *argv)
 {
        layout->root->handlefunc= handlefunc;
        layout->root->argv= argv;

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-05-28 23:23:47 UTC (rev 20480)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-05-28 23:37:55 UTC (rev 20481)
@@ -1819,7 +1819,7 @@
        pup= MEM_callocN(sizeof(uiPopupMenu), "menu dummy");
        pup->block= uiBeginBlock(C, NULL, "ui_popup_menu_create", UI_EMBOSSP);
        pup->layout= uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, 
UI_LAYOUT_MENU, 0, 0, 200, 0, style);
-       uiLayoutContext(pup->layout, WM_OP_INVOKE_REGION_WIN);
+       uiLayoutSetOperatorContext(pup->layout, WM_OP_INVOKE_REGION_WIN);
 
        /* create in advance so we can let buttons point to retval already */
        pup->block->handle= MEM_callocN(sizeof(uiPopupBlockHandle), 
"uiPopupBlockHandle");
@@ -1851,7 +1851,7 @@
        
        pup->block= uiBeginBlock(C, NULL, "uiPupMenuBegin", UI_EMBOSSP);
        pup->layout= uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, 
UI_LAYOUT_MENU, 0, 0, 200, 0, style);
-       uiLayoutContext(pup->layout, WM_OP_EXEC_REGION_WIN);

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