Revision: 21132
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21132
Author:   ton
Date:     2009-06-24 18:44:54 +0200 (Wed, 24 Jun 2009)

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

Added support for icons in search menu.
It already displays icons for saved materials etc. from old files.
Have to add previewrenders for this still.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    
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_utils.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/editors/space_info/info_header.c
    
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.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-06-24 14:18:34 UTC (rev 21131)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-06-24 16:44:54 UTC (rev 21132)
@@ -454,7 +454,7 @@
 typedef void (*uiBlockHandleFunc)(struct bContext *C, void *arg, int event);
                
                /* use inside searchfunc to add items */
-int            uiSearchItemAdd(uiSearchItems *items, const char *name, void 
*poin);
+int            uiSearchItemAdd(uiSearchItems *items, const char *name, void 
*poin, int iconid);
                /* bfunc gets search item *poin as arg2, or if NULL the old 
string */
 void   uiButSetSearchFunc      (uiBut *but,            uiButSearchFunc sfunc, 
void *arg1, uiButHandleFunc bfunc);
                /* height in pixels, it's using hardcoded values still */

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h 
    2009-06-24 16:44:54 UTC (rev 21132)
@@ -420,7 +420,7 @@
 struct ThemeUI;
 void ui_widget_color_init(struct ThemeUI *tui);
 
-void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int 
state);
+void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int 
iconid, int state);
 
 /* interface_style.c */
 void uiStyleInit(void);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-06-24 16:44:54 UTC (rev 21132)
@@ -40,6 +40,7 @@
 #include "BLI_dynstr.h"
 
 #include "BKE_context.h"
+#include "BKE_icons.h"
 #include "BKE_report.h"
 #include "BKE_screen.h"
 #include "BKE_texture.h"
@@ -433,7 +434,7 @@
        
        char **names;
        void **pointers;
-       
+       int *icons;
 };
 
 typedef struct uiSearchboxData {
@@ -448,7 +449,7 @@
 
 /* exported for use by search callbacks */
 /* returns zero if nothing to add */
-int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin)
+int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin, int 
iconid)
 {
        
        if(items->totitem>=items->maxitem) {
@@ -464,6 +465,7 @@
        
        BLI_strncpy(items->names[items->totitem], name, items->maxstrlen);
        items->pointers[items->totitem]= poin;
+       items->icons[items->totitem]= iconid;
        
        items->totitem++;
        
@@ -639,7 +641,8 @@
                for(a=0; a<data->items.totitem; a++) {
                        ui_searchbox_butrect(&rect, data, a);
                        
-                       ui_draw_menu_item(&data->fstyle, &rect, 
data->items.names[a], (a+1)==data->active?UI_ACTIVE:0);
+                       /* widget itself */
+                       ui_draw_menu_item(&data->fstyle, &rect, 
data->items.names[a], data->items.icons[a], (a+1)==data->active?UI_ACTIVE:0);
                        
                }
                /* indicate more */
@@ -666,6 +669,7 @@
                MEM_freeN(data->items.names[a]);
        MEM_freeN(data->items.names);
        MEM_freeN(data->items.pointers);
+       MEM_freeN(data->items.icons);
        
        MEM_freeN(data);
        ar->regiondata= NULL;
@@ -794,6 +798,7 @@
        data->items.totitem= 0;
        data->items.names= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search 
names");
        data->items.pointers= MEM_callocN(SEARCH_ITEMS*sizeof(void *), "search 
pointers");
+       data->items.icons= MEM_callocN(SEARCH_ITEMS*sizeof(int), "search 
icons");
        for(x1=0; x1<SEARCH_ITEMS; x1++)
                data->items.names[x1]= MEM_callocN(but->hardmax+1, "search 
pointers");
        

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
  2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
  2009-06-24 16:44:54 UTC (rev 21132)
@@ -146,9 +146,24 @@
        ID *id;
        
        for(id= lb->first; id; id= id->next) {
+               int iconid= 0;
                
+               /* icon */
+               switch(GS(id->name))
+               {
+                       case ID_MA: /* fall through */
+                       case ID_TE: /* fall through */
+                       case ID_IM: /* fall through */
+                       case ID_WO: /* fall through */
+                       case ID_LA: /* fall through */
+                               iconid= BKE_icon_getid(id);
+                               break;
+                       default:
+                               break;
+               }
+               
                if(BLI_strcasestr(id->name+2, str)) {
-                       if(0==uiSearchItemAdd(items, id->name+2, id))
+                       if(0==uiSearchItemAdd(items, id->name+2, id, iconid))
                                break;
                }
        }

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_utils.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_utils.c  
    2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_utils.c  
    2009-06-24 16:44:54 UTC (rev 21132)
@@ -43,6 +43,7 @@
 #include "BKE_colortools.h"
 #include "BKE_context.h"
 #include "BKE_idprop.h"
+#include "BKE_icons.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_texture.h"
@@ -306,9 +307,25 @@
        ID *id;
        
        for(id= params->lb->first; id; id= id->next) {
+               int iconid= 0;
                
+               
+               /* icon */
+               switch(GS(id->name))
+               {
+                       case ID_MA: /* fall through */
+                       case ID_TE: /* fall through */
+                       case ID_IM: /* fall through */
+                       case ID_WO: /* fall through */
+                       case ID_LA: /* fall through */
+                               iconid= BKE_icon_getid(id);
+                               break;
+                       default:
+                               break;
+               }
+               
                if(BLI_strcasestr(id->name+2, str)) {
-                       if(0==uiSearchItemAdd(items, id->name+2, id))
+                       if(0==uiSearchItemAdd(items, id->name+2, id, iconid))
                                break;
                }
        }

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    2009-06-24 16:44:54 UTC (rev 21132)
@@ -2356,7 +2356,7 @@
 
 /* helper call to draw a menu item without button */
 /* state: UI_ACTIVE or 0 */
-void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, char *name, int state)
+void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, char *name, int 
iconid, int state)
 {
        uiWidgetType *wt= widget_type(UI_WTYPE_MENU_ITEM);
        rcti _rect= *rect;
@@ -2370,6 +2370,7 @@
        
        /* text location offset */
        rect->xmin+=5;
+       if(iconid) rect->xmin+= ICON_HEIGHT;
 
        /* cut string in 2 parts? */
        cpoin= strchr(name, '|');
@@ -2392,5 +2393,12 @@
        /* restore rect, was messed with */
        *rect= _rect;
 
+       if(iconid) {
+               int xs= rect->xmin+4;
+               int ys= 1 + (rect->ymin+rect->ymax- ICON_HEIGHT)/2;
+               glEnable(GL_BLEND);
+               UI_icon_draw_aspect_blended(xs, ys, iconid, 1.2f, 0); /* XXX 
scale weak get from fstyle? */
+               glDisable(GL_BLEND);
+       }
 }
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_info/info_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_info/info_header.c 
2009-06-24 14:18:34 UTC (rev 21131)
+++ branches/blender2.5/blender/source/blender/editors/space_info/info_header.c 
2009-06-24 16:44:54 UTC (rev 21132)
@@ -415,7 +415,7 @@
                                                name[len]= '|';
                                }
                                
-                               if(0==uiSearchItemAdd(items, name, ot))
+                               if(0==uiSearchItemAdd(items, name, ot, 0))
                                        break;
                        }
                }

Modified: 
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c  
    2009-06-24 14:18:34 UTC (rev 21131)
+++ 
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c  
    2009-06-24 16:44:54 UTC (rev 21132)
@@ -402,7 +402,7 @@
                                                name[len]= '|';
                                }
                                
-                               if(0==uiSearchItemAdd(items, name, ot))
+                               if(0==uiSearchItemAdd(items, name, ot, 0))
                                        break;
                        }
                }


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

Reply via email to