Mercurial > pidgin.yaz
diff src/gtkutils.c @ 5646:48c63ee49961
[gaim-migrate @ 6060]
The protocol drop-down menu now has protocol icons.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 02 Jun 2003 03:52:43 +0000 |
parents | 213e999fa5cc |
children | 6e551616d051 |
line wrap: on
line diff
--- a/src/gtkutils.c Sun Jun 01 23:31:46 2003 +0000 +++ b/src/gtkutils.c Mon Jun 02 03:52:43 2003 +0000 @@ -532,9 +532,14 @@ GtkWidget *optmenu; GtkWidget *menu; GtkWidget *item; + GtkWidget *image; + GdkPixbuf *pixbuf; + GdkPixbuf *scale; GList *p; - int i; - int selected_index = -1; + char *filename; + const char *proto_name; + char buf[256]; + int i, selected_index = -1; optmenu = gtk_option_menu_new(); gtk_widget_show(optmenu); @@ -549,7 +554,28 @@ plugin = (GaimPlugin *)p->data; prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin); - item = gtk_menu_item_new_with_label(plugin->info->name); + /* Create the item. */ + item = gtk_image_menu_item_new_with_label(plugin->info->name); + + /* Load the image. */ + proto_name = prpl_info->list_icon(NULL, NULL); + g_snprintf(buf, sizeof(buf), "%s.png", proto_name); + + filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", + "default", buf, NULL); + pixbuf = gdk_pixbuf_new_from_file(filename, NULL); + g_free(filename); + + if (pixbuf != NULL) { + /* Scale and insert the image */ + scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, + GDK_INTERP_BILINEAR); + image = gtk_image_new_from_pixbuf(scale); + g_object_unref(G_OBJECT(pixbuf)); + g_object_unref(G_OBJECT(scale)); + gtk_widget_show(image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); + } g_object_set_data(G_OBJECT(item), "user_data", user_data);