Mercurial > pidgin
changeset 16968:84fc71d9241b
merge of '0e99f198a80a8b0a9004c99b718ffea8d374f7e0'
and '4c87fc288fc11aefa6d7ff9c06f98a532e72d6fb'
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 09 May 2007 18:49:48 +0000 |
parents | e13e5dd8ecb5 (current diff) a728447e4e72 (diff) |
children | 9457f04bd857 e7d7b5b88691 |
files | |
diffstat | 1 files changed, 33 insertions(+), 64 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin/gtkutils.c Wed May 09 18:49:46 2007 +0000 +++ b/pidgin/gtkutils.c Wed May 09 18:49:48 2007 +0000 @@ -442,14 +442,6 @@ item = gtk_menu_get_active(GTK_MENU(menu)); protocol = g_object_get_data(G_OBJECT(item), "protocol"); - - if (!strcmp(protocol, "prpl-fake")) - { - guint index = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(item), "real_index")); - gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), index); - return; - } - user_data = (g_object_get_data(G_OBJECT(optmenu), "user_data")); if (cb != NULL) @@ -457,53 +449,19 @@ user_data); } -static GtkWidget * -pidgin_protocol_option_menu_item(GtkWidget *menu, GtkSizeGroup *sg, GtkWidget *image, - const char *name, const char *id) -{ - GtkWidget *item; - GtkWidget *hbox; - GtkWidget *label; - - /* Create the item. */ - item = gtk_menu_item_new(); - - /* Create the hbox. */ - hbox = gtk_hbox_new(FALSE, 4); - gtk_container_add(GTK_CONTAINER(item), hbox); - gtk_widget_show(hbox); - - gtk_size_group_add_widget(sg, image); - - gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); - gtk_widget_show(image); - - /* Create the label. */ - label = gtk_label_new(name); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); - gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); - gtk_widget_show(label); - - g_object_set_data(G_OBJECT(item), "protocol", (gpointer)id); - - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); - pidgin_set_accessible_label (item, label); - - return item; -} - GtkWidget * pidgin_protocol_option_menu_new(const char *id, GCallback cb, gpointer user_data) { PurplePluginProtocolInfo *prpl_info; PurplePlugin *plugin; + GtkWidget *hbox; + GtkWidget *label; GtkWidget *optmenu; GtkWidget *menu; + GtkWidget *item; + GtkWidget *image; GdkPixbuf *pixbuf; - GtkWidget *image; GList *p; GtkSizeGroup *sg; char *filename; @@ -528,6 +486,14 @@ plugin = (PurplePlugin *)p->data; prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); + /* Create the item. */ + item = gtk_menu_item_new(); + + /* Create the hbox. */ + hbox = gtk_hbox_new(FALSE, 4); + gtk_container_add(GTK_CONTAINER(item), hbox); + gtk_widget_show(hbox); + /* Load the image. */ proto_name = prpl_info->list_icon(NULL, NULL); g_snprintf(buf, sizeof(buf), "%s.png", proto_name); @@ -537,31 +503,34 @@ pixbuf = gdk_pixbuf_new_from_file(filename, NULL); g_free(filename); - if (pixbuf) + if (pixbuf) { image = gtk_image_new_from_pixbuf(pixbuf); + + g_object_unref(G_OBJECT(pixbuf)); + } else image = gtk_image_new(); - pidgin_protocol_option_menu_item(menu, sg, image, plugin->info->name, plugin->info->id); + gtk_size_group_add_widget(sg, image); + + gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); + gtk_widget_show(image); + + /* Create the label. */ + label = gtk_label_new(plugin->info->name); + gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); + gtk_widget_show(label); + + g_object_set_data(G_OBJECT(item), "protocol", plugin->info->id); + + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + gtk_widget_show(item); + pidgin_set_accessible_label (item, label); if (id != NULL && !strcmp(plugin->info->id, id)) selected_index = i; - - if (!strcmp(plugin->info->id, "prpl-jabber")) - { - GtkWidget *gtalk_item; - if (pixbuf) - image = gtk_image_new_from_pixbuf(pixbuf); - else - image = gtk_image_new(); - - gtalk_item = pidgin_protocol_option_menu_item(menu, sg, image, _("Google Talk (XMPP)"), "prpl-fake"); - g_object_set_data(G_OBJECT(gtalk_item), "real_index", GUINT_TO_POINTER(i)); - i++; - } - - if (pixbuf) - g_object_unref(G_OBJECT(pixbuf)); } gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);