# HG changeset patch # User Nathan Walp # Date 1178754289 0 # Node ID b4720d213f316348f3552a33277a24d999f7a25a # Parent f8d0c9bbb9ae36e1f6f229547df5a48052dcac01# Parent 87e6707b512f552c14c99b03343a61d6b458e290 merge of 'c0fb147adcf6f18b147249c26e510fed206697ea' and 'ed3f09c2af33db942ef45b9acc2a75f126aadcfa' diff -r f8d0c9bbb9ae -r b4720d213f31 COPYRIGHT --- a/COPYRIGHT Wed May 09 23:07:56 2007 +0000 +++ b/COPYRIGHT Wed May 09 23:44:49 2007 +0000 @@ -88,6 +88,7 @@ Jeramey Crawford Michael Culbertson Martijn Dekker +Vinicius Depizzol Philip Derrin Taso N. Devetzis Balwinder Singh Dheeman diff -r f8d0c9bbb9ae -r b4720d213f31 libpurple/buddyicon.c --- a/libpurple/buddyicon.c Wed May 09 23:07:56 2007 +0000 +++ b/libpurple/buddyicon.c Wed May 09 23:44:49 2007 +0000 @@ -416,7 +416,7 @@ } ref_filename(filename); } - else + else if (!icon->img) { purple_blist_node_remove_setting((PurpleBlistNode *)buddy, "buddy_icon"); purple_blist_node_remove_setting((PurpleBlistNode *)buddy, "icon_checksum"); diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Wed May 09 23:07:56 2007 +0000 +++ b/pidgin/gtkaccount.c Wed May 09 23:44:49 2007 +0000 @@ -385,12 +385,20 @@ add_login_options(AccountPrefsDialog *dialog, GtkWidget *parent) { GtkWidget *frame; + GtkWidget *hbox; GtkWidget *vbox; GtkWidget *entry; GList *user_splits; GList *l, *l2; char *username = NULL; + if (dialog->protocol_menu != NULL) + { + gtk_widget_ref(dialog->protocol_menu); + hbox = g_object_get_data(G_OBJECT(dialog->protocol_menu), "container"); + gtk_container_remove(GTK_CONTAINER(hbox), dialog->protocol_menu); + } + if (dialog->login_frame != NULL) gtk_widget_destroy(dialog->login_frame); @@ -409,10 +417,17 @@ gtk_widget_show(vbox); /* Protocol */ - dialog->protocol_menu = pidgin_protocol_option_menu_new( - dialog->protocol_id, G_CALLBACK(set_account_protocol_cb), dialog); - - add_pref_box(dialog, vbox, _("Protocol:"), dialog->protocol_menu); + if (dialog->protocol_menu == NULL) + { + dialog->protocol_menu = pidgin_protocol_option_menu_new( + dialog->protocol_id, G_CALLBACK(set_account_protocol_cb), dialog); + gtk_widget_ref(dialog->protocol_menu); + } + + hbox = add_pref_box(dialog, vbox, _("Protocol:"), dialog->protocol_menu); + g_object_set_data(G_OBJECT(dialog->protocol_menu), "container", hbox); + + gtk_widget_unref(dialog->protocol_menu); /* Screen name */ dialog->screenname_entry = gtk_entry_new(); diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/gtkutils.c --- a/pidgin/gtkutils.c Wed May 09 23:07:56 2007 +0000 +++ b/pidgin/gtkutils.c Wed May 09 23:44:49 2007 +0000 @@ -103,17 +103,17 @@ if (purple_running_gnome()) { char *path, *font; PangoFontDescription *desc = NULL; - + if ((path = g_find_program_in_path("gconftool-2"))) { g_free(path); if (!g_spawn_command_line_sync( - "gconftool-2 -g /desktop/gnome/interface/document_font_name", + "gconftool-2 -g /desktop/gnome/interface/document_font_name", &font, NULL, NULL, NULL)) return; } desc = pango_font_description_from_string(font); g_free(font); - + if (desc) { gtk_widget_modify_font(imhtml, desc); pango_font_description_free(desc); @@ -442,26 +442,68 @@ item = gtk_menu_get_active(GTK_MENU(menu)); protocol = g_object_get_data(G_OBJECT(item), "protocol"); + + if (!strcmp(protocol, "prpl-fake")) + protocol = g_object_get_data(G_OBJECT(item), "real_protocol"); + + if (!strcmp(protocol, g_object_get_data(G_OBJECT(optmenu), "last_protocol"))) + return; + user_data = (g_object_get_data(G_OBJECT(optmenu), "user_data")); + g_object_set_data(G_OBJECT(optmenu), "last_protocol", (gpointer)protocol); if (cb != NULL) ((void (*)(GtkWidget *, const char *, gpointer))cb)(item, protocol, 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; + GdkPixbuf *pixbuf; GtkWidget *image; - GdkPixbuf *pixbuf; GList *p; GtkSizeGroup *sg; char *filename; @@ -486,14 +528,6 @@ 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); @@ -503,34 +537,46 @@ 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(); - 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); + pidgin_protocol_option_menu_item(menu, sg, image, plugin->info->name, plugin->info->id); if (id != NULL && !strcmp(plugin->info->id, id)) + { + g_object_set_data(G_OBJECT(optmenu), "last_protocol", plugin->info->id); selected_index = i; + } + else if (i == 0) + { + /* Ensure we set the protocol even if id is NULL or can't be found. */ + g_object_set_data(G_OBJECT(optmenu), "last_protocol", plugin->info->id); + } + + if (!strcmp(plugin->info->id, "prpl-jabber")) + { + GtkWidget *gtalk_item; + + filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", + "16", "google-talk.png", NULL); + pixbuf = gdk_pixbuf_new_from_file(filename, NULL); + g_free(filename); + + + 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"), "prpl-fake"); + g_object_set_data(G_OBJECT(gtalk_item), "real_protocol", plugin->info->id); + i++; + } + + if (pixbuf) + g_object_unref(G_OBJECT(pixbuf)); } gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); @@ -2279,6 +2325,10 @@ if (!filename || g_stat(filename, &st)) { +#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ + gtk_file_chooser_set_preview_widget_active( + GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE); +#endif /* FILECHOOSER */ g_free(filename); return; } diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/16/Makefile.am --- a/pidgin/pixmaps/protocols/16/Makefile.am Wed May 09 23:07:56 2007 +0000 +++ b/pidgin/pixmaps/protocols/16/Makefile.am Wed May 09 23:44:49 2007 +0000 @@ -3,6 +3,7 @@ EXTRA_DIST = aim.png \ bonjour.png \ gadu-gadu.png \ + google-talk.png \ novell.png \ icq.png \ irc.png \ diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/16/google-talk.png Binary file pidgin/pixmaps/protocols/16/google-talk.png has changed diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/22/Makefile.am --- a/pidgin/pixmaps/protocols/22/Makefile.am Wed May 09 23:07:56 2007 +0000 +++ b/pidgin/pixmaps/protocols/22/Makefile.am Wed May 09 23:44:49 2007 +0000 @@ -3,6 +3,7 @@ EXTRA_DIST = aim.png \ bonjour.png \ gadu-gadu.png \ + google-talk.png \ novell.png \ icq.png \ irc.png \ diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/22/google-talk.png Binary file pidgin/pixmaps/protocols/22/google-talk.png has changed diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/48/scalable/Makefile.am --- a/pidgin/pixmaps/protocols/48/scalable/Makefile.am Wed May 09 23:07:56 2007 +0000 +++ b/pidgin/pixmaps/protocols/48/scalable/Makefile.am Wed May 09 23:44:49 2007 +0000 @@ -1,6 +1,7 @@ EXTRA_DIST = aim.svg \ bonjour.svg \ gadu-gadu.svg \ + google-talk.svg \ novell.svg \ icq.svg \ irc.svg \ diff -r f8d0c9bbb9ae -r b4720d213f31 pidgin/pixmaps/protocols/48/scalable/google-talk.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/protocols/48/scalable/google-talk.svg Wed May 09 23:44:49 2007 +0000 @@ -0,0 +1,301 @@ + + + + + + + image/svg+xml + + Google Talk Icon + 2006-12-03 + + + Vinicius Scopel Depizzol + + + vdepizzol@gmail.com + + + Google Talk + GTalk + VOIP + Protocol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r f8d0c9bbb9ae -r b4720d213f31 po/th.po --- a/po/th.po Wed May 09 23:07:56 2007 +0000 +++ b/po/th.po Wed May 09 23:44:49 2007 +0000 @@ -3065,7 +3065,7 @@ #: ../src/gtkconv.c:4958 ../src/gtkconv.c:5067 #, c-format msgid "%d person in room" -msgstr "ในห้องมี %s คน" +msgstr "ในห้องมี %d คน" #: ../src/gtkconv.c:5624 ../src/gtkstatusbox.c:366 msgid "Typing"