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

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

Reply via email to