# HG changeset patch # User Sean Egan # Date 1169631054 0 # Node ID a8ee645e7fb4f02815ee7ec337f0cc4958b1796c # Parent eb93d03ed6c73697af39254b18bfceb1d615e86d A lot of status icon changes: - Added Tango icons to blist - Added tooltip changes A work in progress. TODO: - desaturate and tranparentify status icons in list - protocol icon in tooltip - statusbox icon changes - Add emblems diff -r eb93d03ed6c7 -r a8ee645e7fb4 configure.ac --- a/configure.ac Tue Jan 23 19:45:31 2007 +0000 +++ b/configure.ac Wed Jan 24 09:30:54 2007 +0000 @@ -1896,7 +1896,12 @@ pidgin/pixmaps/emotes/default/scalable/Makefile pidgin/pixmaps/emotes/none/Makefile pidgin/pixmaps/status/Makefile - pidgin/pixmaps/status/default/Makefile + pidgin/pixmaps/status/16/Makefile + pidgin/pixmaps/status/16/scalable/Makefile + pidgin/pixmaps/status/22/Makefile + pidgin/pixmaps/status/22/scalable/Makefile + pidgin/pixmaps/status/32/Makefile + pidgin/pixmaps/status/32/scalable/Makefile pidgin/plugins/Makefile pidgin/plugins/cap/Makefile pidgin/plugins/gestures/Makefile diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/gaimstock.c --- a/pidgin/gaimstock.c Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/gaimstock.c Wed Jan 24 09:30:54 2007 +0000 @@ -117,9 +117,6 @@ { GAIM_STOCK_TYPED, "gaim", "typed.png" }, { GAIM_STOCK_TYPING, "gaim", "typing.png" }, { GAIM_STOCK_VOICE_CHAT, "gaim", "phone.png" }, - { GAIM_STOCK_STATUS_ONLINE, "gaim", "status-online.png" }, - { GAIM_STOCK_STATUS_OFFLINE, "gaim", "status-offline.png" }, - { GAIM_STOCK_STATUS_AWAY, "gaim", "status-away.png" }, { GAIM_STOCK_STATUS_INVISIBLE,"gaim", "status-invisible.png" }, { GAIM_STOCK_STATUS_TYPING0, "gaim", "status-typing0.png" }, { GAIM_STOCK_STATUS_TYPING1, "gaim", "status-typing1.png" }, @@ -145,6 +142,28 @@ { GAIM_STOCK_PAUSE, N_("_Pause"), 0, 0, NULL }, }; +static struct SizedStockIcon { + const char *name; + const char *dir; + const char *filename; + gboolean extra_small; + gboolean small; + gboolean medium; + gboolean huge; +} const sized_stock_icons [] = { + { GAIM_STOCK_STATUS_AVAILABLE, "status", "available.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_AWAY, "status", "away.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_BUSY, "status", "busy.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_CHAT, "status", "chat.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_XA, "status", "extended-away.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_LOGIN, "status", "log-in.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_LOGOUT, "status", "log-out.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_OFFLINE, "status", "offline.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_PERSON, "status", "person.png", TRUE, TRUE, TRUE, FALSE }, + { GAIM_STOCK_STATUS_OPERATOR, "status", "operator.png", TRUE, FALSE, FALSE, FALSE }, + { GAIM_STOCK_STATUS_HALFOP, "status", "half-operator.png", TRUE, FALSE, FALSE, FALSE }, +}; + static gchar * find_file(const char *dir, const char *base) { @@ -161,16 +180,26 @@ base, NULL); } - if (!g_file_test(filename, G_FILE_TEST_EXISTS)) - { - g_critical("Unable to load stock pixmap %s\n", base); + return filename; +} + +static void +add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir, + const char *size, const char *file) +{ + char *filename; + GtkIconSource *source; - g_free(filename); - - return NULL; - } - - return filename; + filename = g_build_filename(DATADIR, "pixmaps", "pidgin", dir, size, file, NULL); + source = gtk_icon_source_new(); + gtk_icon_source_set_filename(source, filename); + gtk_icon_source_set_direction_wildcarded(source, TRUE); + gtk_icon_source_set_size(source, sizeid); + gtk_icon_source_set_size_wildcarded(source, FALSE); + gtk_icon_source_set_state_wildcarded(source, TRUE); + gtk_icon_set_add_source(iconset, source); + gtk_icon_source_free(source); + g_free(filename); } void @@ -180,7 +209,8 @@ GtkIconFactory *icon_factory; size_t i; GtkWidget *win; - + GtkIconSize extra_small, small, medium, huge; + if (stock_initted) return; @@ -197,7 +227,7 @@ for (i = 0; i < G_N_ELEMENTS(stock_icons); i++) { - GdkPixbuf *pixbuf; + GtkIconSource *source; GtkIconSet *iconset; gchar *filename; @@ -214,13 +244,18 @@ if (filename == NULL) continue; - pixbuf = gdk_pixbuf_new_from_file(filename, NULL); - - g_free(filename); + source = gtk_icon_source_new(); + gtk_icon_source_set_filename(source, filename); + gtk_icon_source_set_direction_wildcarded(source, TRUE); + gtk_icon_source_set_size_wildcarded(source, TRUE); + gtk_icon_source_set_state_wildcarded(source, TRUE); + - iconset = gtk_icon_set_new_from_pixbuf(pixbuf); - - g_object_unref(G_OBJECT(pixbuf)); + iconset = gtk_icon_set_new(); + gtk_icon_set_add_source(iconset, source); + + gtk_icon_source_free(source); + g_free(filename); } gtk_icon_factory_add(icon_factory, stock_icons[i].name, iconset); @@ -228,15 +263,40 @@ gtk_icon_set_unref(iconset); } - gtk_widget_destroy(win); - /* register custom icon sizes */ gtk_icon_size_register(GAIM_ICON_SIZE_DIALOG_COOL, 40, 60); - gtk_icon_size_register(GAIM_ICON_SIZE_STATUS, 30, 30); - gtk_icon_size_register(GAIM_ICON_SIZE_STATUS_TWO_LINE, 30, 30); - gtk_icon_size_register(GAIM_ICON_SIZE_STATUS_SMALL, 16, 16); - gtk_icon_size_register(GAIM_ICON_SIZE_STATUS_SMALL_TWO_LINE, 24, 24); + extra_small = gtk_icon_size_register(GAIM_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16); + small = gtk_icon_size_register(GAIM_ICON_SIZE_TANGO_SMALL, 22, 22); + medium = gtk_icon_size_register(GAIM_ICON_SIZE_TANGO_MEDIUM, 32, 32); + huge = gtk_icon_size_register(GAIM_ICON_SIZE_TANGO_HUGE, 64, 64); + + for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++) + { + GtkIconSet *iconset; + iconset = gtk_icon_set_new(); + if (sized_stock_icons[i].extra_small) + add_sized_icon(iconset, extra_small, + sized_stock_icons[i].dir, + "16", sized_stock_icons[i].filename); + if (sized_stock_icons[i].small) + add_sized_icon(iconset, small, + sized_stock_icons[i].dir, + "22", sized_stock_icons[i].filename); + if (sized_stock_icons[i].medium) + add_sized_icon(iconset, medium, + sized_stock_icons[i].dir, + "32", sized_stock_icons[i].filename); + if (sized_stock_icons[i].huge) + add_sized_icon(iconset, huge, + sized_stock_icons[i].dir, + "64", sized_stock_icons[i].filename); + + gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset); + gtk_icon_set_unref(iconset); + } + + gtk_widget_destroy(win); g_object_unref(G_OBJECT(icon_factory)); /* Register the stock items. */ diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/gaimstock.h --- a/pidgin/gaimstock.h Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/gaimstock.h Wed Jan 24 09:30:54 2007 +0000 @@ -98,17 +98,30 @@ #define GAIM_STOCK_TYPING "gaim-typing" #define GAIM_STOCK_UPLOAD "gaim-upload" #define GAIM_STOCK_VOICE_CHAT "gaim-voice-chat" + +#define GAIM_STOCK_STATUS_AVAILABLE "gaim-status-available" +#define GAIM_STOCK_STATUS_AWAY "gaim-status-away" +#define GAIM_STOCK_STATUS_BUSY "gaim-status-busy" +#define GAIM_STOCK_STATUS_CHAT "gaim-status-chat" +#define GAIM_STOCK_STATUS_XA "gaim-status-xa" +#define GAIM_STOCK_STATUS_LOGIN "gaim-status-login" +#define GAIM_STOCK_STATUS_LOGOUT "gaim-status-logout" +#define GAIM_STOCK_STATUS_OFFLINE "gaim-status-offline" +#define GAIM_STOCK_STATUS_PERSON "gaim-status-person" +#define GAIM_STOCK_STATUS_OPERATOR "gaim-status-operator" +#define GAIM_STOCK_STATUS_HALFOP "gaim-status-halfop" + /*@}*/ /** * For using icons that aren't one of the default GTK_ICON_SIZEs */ -#define GAIM_ICON_SIZE_DIALOG_COOL "gaim-icon-size-dialog-cool" -#define GAIM_ICON_SIZE_STATUS "gaim-icon-size-status" -#define GAIM_ICON_SIZE_STATUS_TWO_LINE "gaim-icon-size-status-two-line" -#define GAIM_ICON_SIZE_STATUS_SMALL "gaim-icon-size-status-small" -#define GAIM_ICON_SIZE_STATUS_SMALL_TWO_LINE "gaim-icon-size-status-small-two-line" - +#define GAIM_ICON_SIZE_DIALOG_COOL "gaim-icon-size-dialog-cool" +#define GAIM_ICON_SIZE_TANGO_EXTRA_SMALL "gaim-icon-size-tango-extra-small" +#define GAIM_ICON_SIZE_TANGO_SMALL "gaim-icon-size-tango-small" +#define GAIM_ICON_SIZE_TANGO_MEDIUM "gaim-icon-size-tango-medium" +#define GAIM_ICON_SIZE_TANGO_HUGE "gaim-icon-size-tango-huge" +#define GAIM_ICON_SIZE_TANGO /** * Sets up the gaim stock repository. */ diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/gtkblist.c --- a/pidgin/gtkblist.c Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/gtkblist.c Wed Jan 24 09:30:54 2007 +0000 @@ -108,7 +108,6 @@ static guint visibility_manager_count = 0; static gboolean gtk_blist_obscured = FALSE; -GHashTable* status_icon_hash_table = NULL; static GList *gaim_gtk_blist_sort_methods = NULL; static struct gaim_gtk_blist_sort_method *current_sort_method = NULL; @@ -142,13 +141,8 @@ gboolean contact_expanded; gboolean recent_signonoff; gint recent_signonoff_timer; - GString *status_icon_key; }; -static void gaim_gtk_blist_update_buddy_status_icon_key(struct _gaim_gtk_blist_node *gtkbuddynode, - GaimBuddy *buddy, GaimStatusIconSize size); - - static char dim_grey_string[8] = ""; static char *dim_grey() { @@ -2141,16 +2135,16 @@ if (scaled) { if(scale_height > scale_width) { - scale_width = 30.0 * (double)scale_width / (double)scale_height; - scale_height = 30; + scale_width = 32.0 * (double)scale_width / (double)scale_height; + scale_height = 32; } else { - scale_height = 30.0 * (double)scale_height / (double)scale_width; - scale_width = 30; + scale_height = 32.0 * (double)scale_height / (double)scale_width; + scale_width = 32; } - ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 30, 30); + ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); gdk_pixbuf_fill(ret, 0x00000000); - gdk_pixbuf_scale(buf, ret, (30-scale_width)/2, (30-scale_height)/2, scale_width, scale_height, (30-scale_width)/2, (30-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR); + gdk_pixbuf_scale(buf, ret, (32-scale_width)/2, (32-scale_height)/2, scale_width, scale_height, (32-scale_width)/2, (32-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR); } else { ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR); } @@ -2161,91 +2155,160 @@ } struct tooltip_data { - PangoLayout *layout; - GdkPixbuf *status_icon; - GdkPixbuf *avatar; - int avatar_width; - int width; - int height; + PangoLayout *layout; + GdkPixbuf *status_icon; + GdkPixbuf *avatar; + const char *protocol; + int avatar_width; + int avatar_height; + int width; + int height; }; static struct tooltip_data * create_tip_for_node(GaimBlistNode *node, gboolean full) { - char *tooltip_text = NULL; - struct tooltip_data *td = g_new0(struct tooltip_data, 1); - - td->status_icon = gaim_gtk_blist_get_status_icon(node, GAIM_STATUS_ICON_LARGE); - td->avatar = gaim_gtk_blist_get_buddy_icon(node, !full, FALSE, FALSE); - tooltip_text = gaim_get_tooltip_text(node, full); - td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL); - pango_layout_set_markup(td->layout, tooltip_text, -1); - pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD); - pango_layout_set_width(td->layout, 300000); - - pango_layout_get_size (td->layout, &td->width, &td->height); - td->width = PANGO_PIXELS(td->width) + 38 + 8; - td->height = MAX(PANGO_PIXELS(td->height + 4) + 8, 38); - - if(td->avatar) { - td->avatar_width = gdk_pixbuf_get_width(td->avatar); - td->width += td->avatar_width + 8; - td->height = MAX(td->height, gdk_pixbuf_get_height(td->avatar) + 8); - } - - g_free(tooltip_text); - return td; + char *tooltip_text = NULL; + struct tooltip_data *td = g_new0(struct tooltip_data, 1); + GaimAccount *account = NULL; + GaimPlugin *prpl = NULL; + GaimPluginProtocolInfo *prpl_info; + + if(GAIM_BLIST_NODE_IS_BUDDY(node)) { + account = ((GaimBuddy*)(node))->account; + } else if(GAIM_BLIST_NODE_IS_CHAT(node)) { + account = ((GaimChat*)(node))->account; + } + + if(account != NULL) { + prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); + } + + td->protocol = NULL; + if (prpl) { + prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); + if(prpl_info && prpl_info->list_icon) { + td->protocol = prpl_info->list_icon(account, (GaimBuddy*)node); + } + } + td->status_icon = gaim_gtk_blist_get_status_icon(node, GAIM_STATUS_ICON_LARGE); + td->avatar = gaim_gtk_blist_get_buddy_icon(node, !full, FALSE, TRUE); + tooltip_text = gaim_get_tooltip_text(node, full); + td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL); + pango_layout_set_markup(td->layout, tooltip_text, -1); + pango_layout_set_wrap(td->layout, PANGO_WRAP_WORD); + pango_layout_set_width(td->layout, 300000); + + pango_layout_get_size (td->layout, &td->width, &td->height); + td->width = PANGO_PIXELS(td->width) + 12 + 32 + 6 + 12; + td->height = MAX(PANGO_PIXELS(td->height + 4) + 24, 56); + + if(td->avatar) { + int height_with_protocol = 0; + td->avatar_width = gdk_pixbuf_get_width(td->avatar); + td->avatar_height = gdk_pixbuf_get_height(td->avatar); + height_with_protocol = td->avatar_height; + if (td->avatar_height < 50 && td->protocol != NULL) + height_with_protocol += 24; + td->width += td->avatar_width + 8; + td->height = MAX(td->height, height_with_protocol + 24); + } + + g_free(tooltip_text); + return td; +} + +static gboolean pixbuf_is_opaque(GdkPixbuf *pixbuf) { + int width, height, rowstride, i; + unsigned char *pixels; + unsigned char *row; + + if (!gdk_pixbuf_get_has_alpha(pixbuf)) + return TRUE; + + width = gdk_pixbuf_get_width (pixbuf); + height = gdk_pixbuf_get_height (pixbuf); + rowstride = gdk_pixbuf_get_rowstride (pixbuf); + pixels = gdk_pixbuf_get_pixels (pixbuf); + + row = pixels; + for (i = 3; i < rowstride; i+=4) { + if (row[i] != 0xff) + return FALSE; + } + + for (i = 1; i < height - 1; i++) { + row = pixels + (i*rowstride); + if (row[3] != 0xff || row[rowstride-1] != 0xff) { + printf("0: %d, last: %d\n", row[3], row[rowstride-1]); + return FALSE; + } + } + + row = pixels + ((height-1) * rowstride); + for (i = 3; i < rowstride; i+=4) { + if (row[i] != 0xff) + return FALSE; + } + + return TRUE; } static void gaim_gtk_blist_paint_tip(GtkWidget *widget, GdkEventExpose *event, GaimBlistNode *node) { - GtkStyle *style; - int current_height, max_width; - GList *l; - - if(gtkblist->tooltipdata == NULL) - return; - - style = gtkblist->tipwindow->style; - gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, - NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1); - - max_width = 0; - for(l = gtkblist->tooltipdata; l; l = l->next) - { - struct tooltip_data *td = l->data; - max_width = MAX(max_width, td->width); - } - - current_height = 4; - for(l = gtkblist->tooltipdata; l; l = l->next) - { - struct tooltip_data *td = l->data; + GtkStyle *style; + int current_height, max_width; + GList *l; + + if(gtkblist->tooltipdata == NULL) + return; + + style = gtkblist->tipwindow->style; + gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, + NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1); + + max_width = 0; + for(l = gtkblist->tooltipdata; l; l = l->next) + { + struct tooltip_data *td = l->data; + max_width = MAX(max_width, td->width); + } + + current_height = 12; + for(l = gtkblist->tooltipdata; l; l = l->next) + { + struct tooltip_data *td = l->data; + if (td->avatar && pixbuf_is_opaque(td->avatar)) + gtk_paint_flat_box(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, + NULL, gtkblist->tipwindow, "tooltip", max_width - (td->avatar_width+12)-1, current_height-1,td->avatar_width+2, td->avatar_height+2); + #if GTK_CHECK_VERSION(2,2,0) - gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon, - 0, 0, 4, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); - if(td->avatar) - gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, - td->avatar, 0, 0, max_width - (td->avatar_width + 4), current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); + gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon, + 0, 0, 12, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); + if(td->avatar) + gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, + td->avatar, 0, 0, max_width - (td->avatar_width + 12), current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); + #else - gdk_pixbuf_render_to_drawable(td->status_icon, GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, 4, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); - if(td->avatar) - gdk_pixbuf_render_to_drawable(td->avatar, - GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, - max_width - (td->avatar_width + 4), - current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); + gdk_pixbuf_render_to_drawable(td->status_icon, GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, 12, current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); + if(td->avatar) + gdk_pixbuf_render_to_drawable(td->avatar, + GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, 0, 0, + max_width - (td->avatar_width + 12), + current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); #endif - gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, - NULL, gtkblist->tipwindow, "tooltip", 38 + 4, current_height, td->layout); - - current_height += td->height; - - if(l->next) - gtk_paint_hline(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, NULL, NULL, NULL, 4, max_width - 4, current_height-6); - - } -} + gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, + NULL, gtkblist->tipwindow, "tooltip", 44 + 6, current_height, td->layout); + + current_height += td->height; + + if(l->next) + gtk_paint_hline(style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, NULL, NULL, NULL, 12, max_width - 12, current_height-6); + + } +} + static void gaim_gtk_blist_tooltip_destroy() { @@ -2831,104 +2894,19 @@ int y; }; -static void g_string_destroy(GString *destroyable) -{ - g_string_free(destroyable, TRUE); -} - -static void -gaim_gtk_blist_update_buddy_status_icon_key(struct _gaim_gtk_blist_node *gtkbuddynode, GaimBuddy *buddy, GaimStatusIconSize size) -{ - GString *key = g_string_sized_new(16); - - if(gtkbuddynode && gtkbuddynode->recent_signonoff) { - if(GAIM_BUDDY_IS_ONLINE(buddy)) - g_string_printf(key, "login"); - else - g_string_printf(key, "logout"); - } else { - int i; - const char *protoname = NULL; - GaimAccount *account = buddy->account; - GaimPlugin *prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); - GaimPluginProtocolInfo *prpl_info; - GaimConversation *conv; - struct _emblem_data emblems[4] = {{NULL, 15, 15}, {NULL, 0, 15}, - {NULL, 0, 0}, {NULL, 15, 0}}; - - if(!prpl) - return; - - prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); - - if(prpl_info && prpl_info->list_icon) { - protoname = prpl_info->list_icon(account, buddy); - } - if(prpl_info && prpl_info->list_emblems) { - prpl_info->list_emblems(buddy, &emblems[0].filename, - &emblems[1].filename, &emblems[2].filename, - &emblems[3].filename); - } - - g_string_assign(key, protoname); - - conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, - gaim_buddy_get_name(buddy), account); - - if(conv != NULL) { - GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); - if(gaim_gtkconv_is_hidden(gtkconv)) { - /* add pending emblem */ - if(size == GAIM_STATUS_ICON_SMALL) { - emblems[0].filename = "pending"; - } - else { - emblems[3].filename = emblems[2].filename; - emblems[2].filename = "pending"; - } - } - } - - if(size == GAIM_STATUS_ICON_SMALL) { - /* So that only the se icon will composite */ - emblems[1].filename = emblems[2].filename = emblems[3].filename = NULL; - } - - for(i = 0; i < 4; i++) { - if(emblems[i].filename) - g_string_append_printf(key, "/%s", emblems[i].filename); - } - } - - if (!GAIM_BUDDY_IS_ONLINE(buddy)) - g_string_append(key, "/off"); - else if (gaim_presence_is_idle(gaim_buddy_get_presence(buddy))) - g_string_append(key, "/idle"); - - if (!gaim_privacy_check(buddy->account, gaim_buddy_get_name(buddy))) - g_string_append(key, "/priv"); - - if (gtkbuddynode->status_icon_key) - g_string_free(gtkbuddynode->status_icon_key, TRUE); - gtkbuddynode->status_icon_key = key; - -} - GdkPixbuf * gaim_gtk_blist_get_status_icon(GaimBlistNode *node, GaimStatusIconSize size) { - GdkPixbuf *scale, *status = NULL; - int i, scalesize = 30; - char *filename; - GString *key = g_string_sized_new(16); + GdkPixbuf *ret; const char *protoname = NULL; struct _gaim_gtk_blist_node *gtknode = node->ui_data; struct _gaim_gtk_blist_node *gtkbuddynode = NULL; struct _emblem_data emblems[4] = {{NULL, 15, 15}, {NULL, 0, 15}, {NULL, 0, 0}, {NULL, 15, 0}}; - GaimPresence *presence = NULL; GaimBuddy *buddy = NULL; GaimChat *chat = NULL; + GtkIconSize icon_size = gtk_icon_size_from_name((size == GAIM_STATUS_ICON_LARGE) ? GAIM_ICON_SIZE_TANGO_MEDIUM : + GAIM_ICON_SIZE_TANGO_EXTRA_SMALL); if(GAIM_BLIST_NODE_IS_CONTACT(node)) { if(!gtknode->contact_expanded) { @@ -2944,28 +2922,6 @@ return NULL; } - if (!status_icon_hash_table) { - status_icon_hash_table = g_hash_table_new_full((GHashFunc)g_string_hash, - (GEqualFunc)g_string_equal, - (GDestroyNotify)g_string_destroy, - (GDestroyNotify)gdk_pixbuf_unref); - - } else if (buddy && gtkbuddynode->status_icon_key && gtkbuddynode->status_icon_key->str) { - key = g_string_new(gtkbuddynode->status_icon_key->str); - - /* Respect the size request given */ - if (size == GAIM_STATUS_ICON_SMALL) { - g_string_append(key, "/tiny"); - } - - scale = g_hash_table_lookup(status_icon_hash_table, key); - if (scale) { - gdk_pixbuf_ref(scale); - g_string_free(key, TRUE); - return scale; - } - } - if(buddy || chat) { GaimAccount *account; GaimPlugin *prpl; @@ -2992,54 +2948,41 @@ &emblems[3].filename); } } - -/* Begin Generating Lookup Key */ - if (buddy) { - gaim_gtk_blist_update_buddy_status_icon_key(gtkbuddynode, buddy, size); - g_string_assign(key, gtkbuddynode->status_icon_key->str); - } - /* There are only two options for chat or gaimdude - big or small */ - else if (chat) { - GaimAccount *account; - GaimPlugin *prpl; - GaimPluginProtocolInfo *prpl_info; - - account = chat->account; - - prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); - if(!prpl) - return NULL; - - prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); - - if(prpl_info && prpl_info->list_icon) { - protoname = prpl_info->list_icon(account, NULL); - } - g_string_append_printf(key, "%s-chat", protoname); - } - else - g_string_append(key, "gaimdude"); - - /* If the icon is small, we do not store this into the status_icon_key - * in the gtkbuddynode. This way we can respect the size value on cache - * lookup. Otherwise, different sized icons could not be stored easily. - */ - if (size == GAIM_STATUS_ICON_SMALL) { - g_string_append(key, "/tiny"); - } - -/* End Generating Lookup Key */ - -/* If we already know this icon, just return it */ - scale = g_hash_table_lookup(status_icon_hash_table, key); - if (scale) { - gdk_pixbuf_ref(scale); - g_string_free(key, TRUE); - return scale; - } - -/* Create a new composite icon */ - + + if(buddy) { + GaimPresence *p = gaim_buddy_get_presence(buddy); + if (GAIM_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_LOGIN, + icon_size, "GtkTreeView"); + else if (gtkbuddynode && gtkbuddynode->recent_signonoff) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_LOGOUT, + icon_size, "GtkTreeView"); + else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_UNAVAILABLE)) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_BUSY, + icon_size, "GtkTreeView"); + else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_AWAY)) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_AWAY, + icon_size, "GtkTreeView"); + else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_EXTENDED_AWAY)) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_XA, + icon_size, "GtkTreeView"); + else if (gaim_presence_is_status_primitive_active(p, GAIM_STATUS_OFFLINE)) + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_OFFLINE, + icon_size, "GtkTreeView"); + else + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_AVAILABLE, + icon_size, "GtkTreeView"); + } else if (chat) { + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_CHAT, + icon_size, "GtkTreeView"); + } else { + ret = gtk_widget_render_icon (GTK_WIDGET(gtkblist->treeview), GAIM_STOCK_STATUS_PERSON, + icon_size, "GtkTreeView"); + } + + return ret; + +#if 0 if(buddy) { GaimAccount *account; GaimPlugin *prpl; @@ -3187,6 +3130,7 @@ gdk_pixbuf_ref(scale); return scale; +#endif } static gchar *gaim_gtk_blist_get_name_markup(GaimBuddy *b, gboolean selected) @@ -4086,6 +4030,9 @@ gtkblist = GAIM_GTK_BLIST(list); + gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32); + gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000); + gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list"); gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List")); @@ -4450,7 +4397,6 @@ gtkblist, GAIM_CALLBACK(conversation_deleting_cb), gtkblist); -// gtk_widget_hide(gtkblist->scrollbook); gtk_widget_hide(gtkblist->headline_hbox); /* emit our created signal */ @@ -4484,12 +4430,6 @@ node = gaim_blist_node_next(node, FALSE); } - /* There is no hash table if there is nothing in the buddy list to update */ - if (status_icon_hash_table) { - g_hash_table_destroy(status_icon_hash_table); - status_icon_hash_table = NULL; - } - } void gaim_gtk_blist_refresh(GaimBuddyList *list) @@ -4768,9 +4708,14 @@ presence = gaim_buddy_get_presence(buddy); status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy, - biglist ? GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL); + GAIM_STATUS_ICON_SMALL); avatar = gaim_gtk_blist_get_buddy_icon((GaimBlistNode *)buddy, TRUE, TRUE, TRUE); + if (!avatar) { + g_object_ref(G_OBJECT(gtkblist->empty_avatar)); + avatar = gtkblist->empty_avatar; + } + mark = gaim_gtk_blist_get_name_markup(buddy, selected); if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") && @@ -4860,8 +4805,7 @@ char *mark; status = gaim_gtk_blist_get_status_icon(cnode, - (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ? - GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); + GAIM_STATUS_ICON_SMALL); mark = g_markup_escape_text(gaim_contact_get_alias(contact), -1); gtk_tree_store_set(gtkblist->treemodel, &iter, @@ -4892,7 +4836,6 @@ { GaimBuddy *buddy; struct _gaim_gtk_blist_node *gtkparentnode; - struct _gaim_gtk_blist_node *gtknode = node->ui_data; g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node)); @@ -4901,11 +4844,6 @@ buddy = (GaimBuddy*)node; - if (statusChange) - gaim_gtk_blist_update_buddy_status_icon_key(gtknode, buddy, - (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") - ? GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); - /* First things first, update the contact */ gaim_gtk_blist_update_contact(list, node); @@ -4946,8 +4884,7 @@ return; status = gaim_gtk_blist_get_status_icon(node, - (gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons") ? - GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL)); + GAIM_STATUS_ICON_SMALL); mark = g_markup_escape_text(gaim_chat_get_name(chat), -1); @@ -5026,6 +4963,7 @@ gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL; gtkblist->treemodel = NULL; g_object_unref(G_OBJECT(gtkblist->ift)); + g_object_unref(G_OBJECT(gtkblist->empty_avatar)); gdk_cursor_unref(gtkblist->hand_cursor); gdk_cursor_unref(gtkblist->arrow_cursor); diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/gtkblist.h --- a/pidgin/gtkblist.h Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/gtkblist.h Wed Jan 24 09:30:54 2007 +0000 @@ -111,6 +111,7 @@ GtkWidget *error_buttons; /**< Box containing the connection error buttons */ GtkWidget *statusbox; /**< The status selector dropdown */ + GdkPixbuf *empty_avatar; /**< A 32x32 transparent pixbuf */ }; #define GAIM_GTK_BLIST(list) ((GaimGtkBuddyList *)(list)->ui_data) diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/gtkstatusbox.c --- a/pidgin/gtkstatusbox.c Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/gtkstatusbox.c Wed Jan 24 09:30:54 2007 +0000 @@ -518,7 +518,7 @@ gboolean account_status = FALSE; GaimAccount *acct = (status_box->token_status_account) ? status_box->token_status_account : status_box->account; - icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS); + icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_TANGO_EXTRA_SMALL); style = gtk_widget_get_style(GTK_WIDGET(status_box)); snprintf(aa_color, sizeof(aa_color), "#%02x%02x%02x", @@ -818,7 +818,7 @@ /* Odd... oh well, nothing we can do about it. */ return; - icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS_SMALL); + icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_TANGO_EXTRA_SMALL); gtk_gaim_status_box_add_separator(statusbox); @@ -956,7 +956,7 @@ GdkPixbuf *pixbuf, *pixbuf2, *pixbuf3, *pixbuf4; GtkIconSize icon_size; - icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS_SMALL); + icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_TANGO_EXTRA_SMALL); /* Unset the model while clearing it */ gtk_tree_view_set_model(GTK_TREE_VIEW(status_box->tree_view), NULL); @@ -1086,7 +1086,7 @@ GtkIconSize icon_size; g_object_set(G_OBJECT(status_box->icon_rend), "xpad", 3, NULL); - icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS_SMALL); + icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_TANGO_EXTRA_SMALL); if (status_box->connecting_pixbufs[0] != NULL) gdk_pixbuf_unref(status_box->connecting_pixbufs[0]); @@ -1673,7 +1673,7 @@ gtk_widget_size_request(GTK_GAIM_STATUS_BOX(widget)->toggle_button, requisition); /* Make this icon the same size as other buddy icons in the list; unless it already wants to be bigger */ - requisition->height = MAX(requisition->height, 30 + (border_width*2)); + requisition->height = MAX(requisition->height, 32 + (border_width*2)); /* If the gtkimhtml is visible, then add some additional padding */ gtk_widget_size_request(GTK_GAIM_STATUS_BOX(widget)->vbox, &box_req); @@ -1735,7 +1735,7 @@ gtk_widget_size_request(status_box->toggle_button, &req); /* Make this icon the same size as other buddy icons in the list; unless it already wants to be bigger */ - req.height = MAX(req.height, 30 + (border_width*2)); + req.height = MAX(req.height, 32 + (border_width*2)); box_alc = *allocation; @@ -1951,7 +1951,7 @@ if (status_box->buddy_icon != NULL) { gtk_image_set_from_pixbuf(GTK_IMAGE(status_box->icon), status_box->buddy_icon); status_box->buddy_icon_hover = gdk_pixbuf_copy(status_box->buddy_icon); - do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 30); + do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 32); } } diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,18 @@ +SUBDIRS = scalable + +EXTRA_DIST = available.png \ + away.png \ + busy.png \ + chat.png \ + extended-away.png \ + half-operator.png \ + log-in.png \ + log-out.png \ + offline.png \ + operator.png \ + person.png + +pidginstatuspixdir = $(datadir)/pixmaps/pidgin/status/16 + +pidginstatuspix_DATA = $(EXTRA_DIST) + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/available.png Binary file pidgin/pixmaps/status/16/available.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/away.png Binary file pidgin/pixmaps/status/16/away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/busy.png Binary file pidgin/pixmaps/status/16/busy.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/chat.png Binary file pidgin/pixmaps/status/16/chat.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/extended-away.png Binary file pidgin/pixmaps/status/16/extended-away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/half-operator.png Binary file pidgin/pixmaps/status/16/half-operator.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/log-in.png Binary file pidgin/pixmaps/status/16/log-in.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/log-out.png Binary file pidgin/pixmaps/status/16/log-out.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/offline.png Binary file pidgin/pixmaps/status/16/offline.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/operator.png Binary file pidgin/pixmaps/status/16/operator.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/person.png Binary file pidgin/pixmaps/status/16/person.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,11 @@ +EXTRA_DIST = available.svg \ + away.svg \ + busy.svg \ + chat.svg \ + extended-away.svg \ + half-operator.svg \ + log-in.svg \ + log-out.svg \ + offline.svg \ + operator.svg \ + person.svg diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/available.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/available.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/busy.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/busy.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/chat.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/chat.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/extended-away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/extended-away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/log-in.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/log-in.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/log-out.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/log-out.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/offline.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/offline.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/16/scalable/person.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/16/scalable/person.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,16 @@ +SUBDIRS = scalable + +EXTRA_DIST = available.png \ + away.png \ + busy.png \ + chat.png \ + extended-away.png \ + log-in.png \ + log-out.png \ + offline.png \ + person.png + +pidginstatuspixdir = $(datadir)/pixmaps/pidgin/status/22 + +pidginstatuspix_DATA = $(EXTRA_DIST) + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/available.png Binary file pidgin/pixmaps/status/22/available.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/away.png Binary file pidgin/pixmaps/status/22/away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/busy.png Binary file pidgin/pixmaps/status/22/busy.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/chat.png Binary file pidgin/pixmaps/status/22/chat.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/extended-away.png Binary file pidgin/pixmaps/status/22/extended-away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/log-in.png Binary file pidgin/pixmaps/status/22/log-in.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/log-out.png Binary file pidgin/pixmaps/status/22/log-out.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/offline.png Binary file pidgin/pixmaps/status/22/offline.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/person.png Binary file pidgin/pixmaps/status/22/person.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,9 @@ +EXTRA_DIST = available.svg \ + away.svg \ + busy.svg \ + chat.svg \ + extended-away.svg \ + log-in.svg \ + log-out.svg \ + offline.svg \ + person.svg diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/available.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/available.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/busy22.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/busy22.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/chat.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/chat.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/extended-away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/extended-away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/log-in.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/log-in.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/log-out.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/log-out.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/offline22.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/offline22.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/22/scalable/person.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/22/scalable/person.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,16 @@ +SUBDIRS = scalable + +EXTRA_DIST = available.png \ + away.png \ + busy.png \ + chat.png \ + extended-away.png \ + log-in.png \ + log-out.png \ + offline.png \ + person.png + +pidginstatuspixdir = $(datadir)/pixmaps/pidgin/status/32 + +pidginstatuspix_DATA = $(EXTRA_DIST) + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/available.png Binary file pidgin/pixmaps/status/32/available.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/away.png Binary file pidgin/pixmaps/status/32/away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/busy.png Binary file pidgin/pixmaps/status/32/busy.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/chat.png Binary file pidgin/pixmaps/status/32/chat.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/extended-away.png Binary file pidgin/pixmaps/status/32/extended-away.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/log-in.png Binary file pidgin/pixmaps/status/32/log-in.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/log-out.png Binary file pidgin/pixmaps/status/32/log-out.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/offline.png Binary file pidgin/pixmaps/status/32/offline.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/person.png Binary file pidgin/pixmaps/status/32/person.png has changed diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,9 @@ +EXTRA_DIST = available.svg \ + away.svg \ + busy.svg \ + chat.svg \ + extended-away.svg \ + log-in.svg \ + log-out.svg \ + offline.svg \ + person.svg diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/available.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/available.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/busy.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/busy.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/chat.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/chat.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/extended-away.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/extended-away.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/log-in.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/log-in.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/log-out.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/log-out.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/offline.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/offline.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/32/scalable/person.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/status/32/scalable/person.svg Wed Jan 24 09:30:54 2007 +0000 @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff -r eb93d03ed6c7 -r a8ee645e7fb4 pidgin/pixmaps/status/Makefile.am --- a/pidgin/pixmaps/status/Makefile.am Tue Jan 23 19:45:31 2007 +0000 +++ b/pidgin/pixmaps/status/Makefile.am Wed Jan 24 09:30:54 2007 +0000 @@ -1,2 +1,2 @@ -SUBDIRS = default +SUBDIRS = 16 22 32