# HG changeset patch # User Stu Tomlinson # Date 1193592427 0 # Node ID b3ae0eb23df38faf2b493005bef79541d9175e31 # Parent 5af17c5a4a12afcd611ae3e05cc7d4460ae5844c# Parent acbbcf6b6b462ad7be9d9c402de572283a7d3432 merge of '022ff8d97a85c1c5ea7b66f7d6ce6c607fd12a32' and '7f71f284598d962a9074116360bce09e65458488' diff -r 5af17c5a4a12 -r b3ae0eb23df3 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sun Oct 28 16:51:48 2007 +0000 +++ b/pidgin/gtkprefs.c Sun Oct 28 17:27:07 2007 +0000 @@ -1113,12 +1113,25 @@ purple_prefs_set_string("/purple/proxy/password", gtk_entry_get_text(entry)); } +static void +proxy_button_clicked_cb(GtkWidget *button, gpointer null) +{ + GError *err = NULL; + + if (g_spawn_command_line_async ("gnome-network-preferences", &err)) + return; + + purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message); + g_error_free(err); +} + static GtkWidget * network_page() { GtkWidget *ret; GtkWidget *vbox, *hbox, *entry; GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; + GtkWidget *warning, *proxy_button; GtkSizeGroup *sg; PurpleProxyInfo *proxy_info = NULL; @@ -1201,9 +1214,33 @@ g_signal_connect(G_OBJECT(ports_checkbox), "clicked", G_CALLBACK(pidgin_toggle_sensitive), spin_button); - if (!purple_running_gnome()) { - vbox = pidgin_make_frame(ret, _("Proxy Server")); - prefs_proxy_frame = gtk_vbox_new(FALSE, 0); + vbox = pidgin_make_frame(ret, _("Proxy Server")); + prefs_proxy_frame = gtk_vbox_new(FALSE, 0); + + if (purple_running_gnome()) { + warning = hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); + gtk_container_add(GTK_CONTAINER(vbox), hbox); + + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), + _("Proxy configuration program was not found.")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + + hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); + gtk_container_add(GTK_CONTAINER(vbox), hbox); + label = gtk_label_new(_("Proxy preferences are configured in\n" + "GNOME Control Center: Desktop Preferences")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_widget_show(label); + + hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); + gtk_container_add(GTK_CONTAINER(vbox), hbox); + proxy_button = gtk_button_new_with_mnemonic(_("Configure _Proxy")); + g_signal_connect(G_OBJECT(proxy_button), "clicked", + G_CALLBACK(proxy_button_clicked_cb), NULL); + gtk_box_pack_start(GTK_BOX(hbox), proxy_button, FALSE, FALSE, 0); + gtk_widget_show(proxy_button); + } else { pidgin_prefs_dropdown(vbox, _("Proxy _type:"), PURPLE_PREF_STRING, "/purple/proxy/type", _("No proxy"), "none", @@ -1303,8 +1340,21 @@ /* Only hide table if not running gnome otherwise we hide the IP address table! */ if (!purple_running_gnome() && (proxy_info == NULL || purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_NONE || - purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR)) + purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR)) { gtk_widget_hide(table); + } else { + gchar *path; + path = g_find_program_in_path("gnome-network-preferences"); + if (path != NULL) { + gtk_widget_set_sensitive(proxy_button, TRUE); + gtk_widget_hide(warning); + g_free(path); + } else { + gtk_widget_set_sensitive(proxy_button, FALSE); + gtk_widget_show(warning); + } + } + return ret; }