[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21132] branches/blender2.5/blender/source /blender: 2.5
Ton Roosendaal
ton at blender.org
Wed Jun 24 18:44:54 CEST 2009
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;
}
}
More information about the Bf-blender-cvs
mailing list