2007-02-02 Christian Persch <chpe@svn.gnome.org> * Makefile.am: * capplets/about-me/Makefile.am: * capplets/about-me/gnome-about-me-password.c: (passdlg_init): * capplets/about-me/gnome-about-me.c: (about_me_setup_dialog): * capplets/accessibility/at-properties/Makefile.am: * capplets/accessibility/keyboard/Makefile.am: * capplets/accessibility/keyboard/accessibility-keyboard.c: (setup_accessX_dialog): * capplets/background/Makefile.am: * capplets/background/gnome-wp-capplet.c: (gnome_wp_create_dialog): * capplets/common/Makefile.am: * capplets/common/capplet-util.c: (capplet_set_icon): * capplets/default-applications/Makefile.am: * capplets/display/Makefile.am: * capplets/file-types/Makefile.am: * capplets/file-types/file-types-capplet.c: (create_dialog): * capplets/file-types/mime-category-edit-dialog.c: (mime_category_edit_dialog_init): * capplets/file-types/mime-edit-dialog.c: (mime_edit_dialog_init): * capplets/file-types/service-edit-dialog.c: (service_edit_dialog_init): * capplets/font/Makefile.am: * capplets/keybindings/Makefile.am: * capplets/keybindings/gnome-keybinding-properties.c: (create_dialog): * capplets/keyboard/Makefile.am: * capplets/keyboard/gnome-keyboard-properties-xkblt.c: (xkb_layout_choose): * capplets/keyboard/gnome-keyboard-properties-xkbmc.c: (choose_model): * capplets/keyboard/gnome-keyboard-properties.c: (create_dialog): * capplets/localization/Makefile.am: * capplets/localization/gnome-localization-properties.c: (create_dialog): * capplets/mime-type/Makefile.am: * capplets/mouse/Makefile.am: * capplets/mouse/gnome-mouse-properties.c: (create_dialog): * capplets/network/Makefile.am: * capplets/network/gnome-network-preferences.c: (cb_http_details_button_clicked), (main): * capplets/rollback/Makefile.am: * capplets/sound/Makefile.am: * capplets/sound/sound-properties-capplet.c: (create_dialog), (device_test_button_clicked): * capplets/theme-switcher/Makefile.am: * capplets/ui-properties/Makefile.am: * capplets/ui-properties/gnome-ui-properties.c: (create_dialog): * capplets/url-properties/Makefile.am: * capplets/windows/Makefile.am: * capplets/wm-properties/wm-desktops/Makefile.am: * configure.in: * gnome-settings-daemon/Makefile.am: * gnome-settings-daemon/actions/Makefile.am: * gnome-settings-daemon/gnome-settings-xmodmap.c: (gnome_settings_modmap_dialog_call): * gnome-settings-daemon/gnome-settings-xrdb.c: * gnome-settings-daemon/gsd-media-keys-window.c: (action_changed), (gsd_media_keys_window_init): * gnome-settings-daemon/xrdb/Makefile.am: * typing-break/Makefile.am: * vfs-methods/themus/Makefile.am: Don't define directories in configure. Remove some obsolete defines, and use the standard installation paths. Bug #395383. svn path=/trunk/; revision=7226
562 lines
18 KiB
C
562 lines
18 KiB
C
/* gnome-network-preferences.c: network preferences capplet
|
|
*
|
|
* Copyright (C) 2002 Sun Microsystems Inc.
|
|
*
|
|
* Written by: Mark McLoughlin <mark@skynet.ie>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include <config.h>
|
|
#endif
|
|
|
|
#include <libgnome/libgnome.h>
|
|
#include <gconf/gconf-client.h>
|
|
#include <glade/glade.h>
|
|
#include <libgnomevfs/gnome-vfs-uri.h>
|
|
|
|
#include "capplet-util.h"
|
|
#include "gconf-property-editor.h"
|
|
|
|
enum ProxyMode
|
|
{
|
|
PROXYMODE_NONE,
|
|
PROXYMODE_MANUAL,
|
|
PROXYMODE_AUTO
|
|
};
|
|
|
|
static GEnumValue proxytype_values[] = {
|
|
{ PROXYMODE_NONE, "PROXYMODE_NONE", "none"},
|
|
{ PROXYMODE_MANUAL, "PROXYMODE_MANUAL", "manual"},
|
|
{ PROXYMODE_AUTO, "PROXYMODE_AUTO", "auto"},
|
|
{ 0, NULL, NULL }
|
|
};
|
|
|
|
#define USE_PROXY_KEY "/system/http_proxy/use_http_proxy"
|
|
#define USE_SAME_PROXY_KEY "/system/http_proxy/use_same_proxy"
|
|
#define HTTP_PROXY_HOST_KEY "/system/http_proxy/host"
|
|
#define HTTP_PROXY_PORT_KEY "/system/http_proxy/port"
|
|
#define HTTP_USE_AUTH_KEY "/system/http_proxy/use_authentication"
|
|
#define HTTP_AUTH_USER_KEY "/system/http_proxy/authentication_user"
|
|
#define HTTP_AUTH_PASSWD_KEY "/system/http_proxy/authentication_password"
|
|
#define IGNORE_HOSTS_KEY "/system/http_proxy/ignore_hosts"
|
|
#define PROXY_MODE_KEY "/system/proxy/mode"
|
|
#define SECURE_PROXY_HOST_KEY "/system/proxy/secure_host"
|
|
#define OLD_SECURE_PROXY_HOST_KEY "/system/proxy/old_secure_host"
|
|
#define SECURE_PROXY_PORT_KEY "/system/proxy/secure_port"
|
|
#define OLD_SECURE_PROXY_PORT_KEY "/system/proxy/old_secure_port"
|
|
#define FTP_PROXY_HOST_KEY "/system/proxy/ftp_host"
|
|
#define OLD_FTP_PROXY_HOST_KEY "/system/proxy/old_ftp_host"
|
|
#define FTP_PROXY_PORT_KEY "/system/proxy/ftp_port"
|
|
#define OLD_FTP_PROXY_PORT_KEY "/system/proxy/old_ftp_port"
|
|
#define SOCKS_PROXY_HOST_KEY "/system/proxy/socks_host"
|
|
#define OLD_SOCKS_PROXY_HOST_KEY "/system/proxy/old_socks_host"
|
|
#define SOCKS_PROXY_PORT_KEY "/system/proxy/socks_port"
|
|
#define OLD_SOCKS_PROXY_PORT_KEY "/system/proxy/old_socks_port"
|
|
#define PROXY_AUTOCONFIG_URL_KEY "/system/proxy/autoconfig_url"
|
|
|
|
static GtkWidget *details_dialog = NULL;
|
|
static GSList *ignore_hosts = NULL;
|
|
static GtkTreeModel *model = NULL;
|
|
|
|
static GtkTreeModel *
|
|
create_listmodel(void)
|
|
{
|
|
GtkListStore *store;
|
|
|
|
store = gtk_list_store_new(1, G_TYPE_STRING);
|
|
|
|
return GTK_TREE_MODEL(store);
|
|
}
|
|
|
|
static GtkTreeModel *
|
|
populate_listmodel(GtkListStore *store, GSList *list)
|
|
{
|
|
GtkTreeIter iter;
|
|
GSList *pointer;
|
|
|
|
gtk_list_store_clear(store);
|
|
|
|
pointer = list;
|
|
while(pointer)
|
|
{
|
|
gtk_list_store_append(store, &iter);
|
|
gtk_list_store_set(store, &iter, 0, (char *) pointer->data, -1);
|
|
pointer = g_slist_next(pointer);
|
|
}
|
|
|
|
return GTK_TREE_MODEL(store);
|
|
}
|
|
|
|
static GtkWidget *
|
|
config_treeview(GtkTreeView *tree, GtkTreeModel *model)
|
|
{
|
|
GtkCellRenderer *renderer;
|
|
|
|
renderer = gtk_cell_renderer_text_new();
|
|
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree),
|
|
-1, "Hosts", renderer,
|
|
"text", 0, NULL);
|
|
|
|
gtk_tree_view_set_model(GTK_TREE_VIEW(tree), model);
|
|
|
|
return GTK_WIDGET(tree);
|
|
}
|
|
|
|
static void
|
|
cb_add_url (GtkButton *button, gpointer data)
|
|
{
|
|
GladeXML *dialog = (GladeXML *) data;
|
|
gchar *new_url = NULL;
|
|
GConfClient *client;
|
|
|
|
new_url = g_strdup(gtk_entry_get_text(GTK_ENTRY(WID("entry_url"))));
|
|
if (strlen (new_url) == 0)
|
|
return;
|
|
ignore_hosts = g_slist_append(ignore_hosts, new_url);
|
|
populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
|
|
gtk_entry_set_text(GTK_ENTRY(WID("entry_url")), "");
|
|
|
|
client = gconf_client_get_default ();
|
|
gconf_client_set_list (client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, ignore_hosts, NULL);
|
|
g_object_unref (client);
|
|
}
|
|
|
|
static void
|
|
cb_remove_url (GtkButton *button, gpointer data)
|
|
{
|
|
GladeXML *dialog = (GladeXML *) data;
|
|
GtkTreeSelection *selection;
|
|
GtkTreeIter iter;
|
|
GConfClient *client;
|
|
|
|
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(WID("treeview_ignore_host")));
|
|
if (gtk_tree_selection_get_selected(selection, &model, &iter))
|
|
{
|
|
gchar *url;
|
|
GSList *pointer;
|
|
|
|
gtk_tree_model_get (model, &iter, 0, &url, -1);
|
|
|
|
pointer = ignore_hosts;
|
|
while(pointer)
|
|
{
|
|
if(strcmp(url, (char *) pointer->data) == 0)
|
|
{
|
|
g_free (pointer->data);
|
|
ignore_hosts = g_slist_delete_link(ignore_hosts, pointer);
|
|
break;
|
|
}
|
|
pointer = g_slist_next(pointer);
|
|
}
|
|
|
|
g_free(url);
|
|
populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
|
|
|
|
client = gconf_client_get_default ();
|
|
gconf_client_set_list(client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, ignore_hosts, NULL);
|
|
g_object_unref (client);
|
|
}
|
|
}
|
|
|
|
static void
|
|
cb_dialog_response (GtkDialog *dialog, gint response_id)
|
|
{
|
|
if (response_id == GTK_RESPONSE_HELP)
|
|
capplet_help (GTK_WINDOW (dialog),
|
|
"user-guide.xml",
|
|
"goscustdesk-50");
|
|
else
|
|
{
|
|
if (ignore_hosts) {
|
|
g_slist_foreach (ignore_hosts, (GFunc) g_free, NULL);
|
|
g_slist_free (ignore_hosts);
|
|
}
|
|
|
|
gtk_main_quit ();
|
|
}
|
|
}
|
|
|
|
static void
|
|
cb_details_dialog_response (GtkDialog *dialog, gint response_id)
|
|
{
|
|
if (response_id == GTK_RESPONSE_HELP)
|
|
capplet_help (GTK_WINDOW (dialog),
|
|
"user-guide.xml",
|
|
"goscustdesk-50");
|
|
else {
|
|
gtk_widget_destroy (GTK_WIDGET (dialog));
|
|
details_dialog = NULL;
|
|
}
|
|
}
|
|
|
|
static void
|
|
cb_use_auth_toggled (GtkToggleButton *toggle,
|
|
GtkWidget *table)
|
|
{
|
|
gtk_widget_set_sensitive (table, toggle->active);
|
|
}
|
|
|
|
static void
|
|
cb_http_details_button_clicked (GtkWidget *button,
|
|
GtkWidget *parent)
|
|
{
|
|
GladeXML *dialog;
|
|
GtkWidget *widget;
|
|
GConfPropertyEditor *peditor;
|
|
|
|
if (details_dialog != NULL) {
|
|
gtk_window_present (GTK_WINDOW (details_dialog));
|
|
gtk_widget_grab_focus (details_dialog);
|
|
return;
|
|
}
|
|
|
|
dialog = glade_xml_new (GNOMECC_GLADE_DIR "/gnome-network-preferences.glade",
|
|
"details_dialog", NULL);
|
|
|
|
details_dialog = widget = WID ("details_dialog");
|
|
|
|
gtk_window_set_transient_for (GTK_WINDOW (widget), GTK_WINDOW (parent));
|
|
|
|
gtk_label_set_use_markup (GTK_LABEL (GTK_BIN (WID ("use_auth_checkbutton"))->child), TRUE);
|
|
|
|
g_signal_connect (G_OBJECT (WID ("use_auth_checkbutton")),
|
|
"toggled",
|
|
G_CALLBACK (cb_use_auth_toggled),
|
|
WID ("auth_table"));
|
|
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_boolean (
|
|
NULL, HTTP_USE_AUTH_KEY, WID ("use_auth_checkbutton"),
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, HTTP_AUTH_USER_KEY, WID ("username_entry"),
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, HTTP_AUTH_PASSWD_KEY, WID ("password_entry"),
|
|
NULL));
|
|
|
|
g_signal_connect (widget, "response",
|
|
G_CALLBACK (cb_details_dialog_response), NULL);
|
|
|
|
capplet_set_icon (widget, "stock_proxy");
|
|
|
|
gtk_widget_show_all (widget);
|
|
}
|
|
|
|
static void
|
|
cb_use_same_proxy_checkbutton_clicked (GtkWidget *checkbutton,
|
|
GladeXML *dialog)
|
|
{
|
|
GConfClient *client;
|
|
gboolean same_proxy;
|
|
gchar *http_proxy;
|
|
gint http_port;
|
|
gchar *host;
|
|
|
|
client = gconf_client_get_default ();
|
|
same_proxy = gconf_client_get_bool (client, USE_SAME_PROXY_KEY, NULL);
|
|
|
|
http_proxy = gconf_client_get_string (client, HTTP_PROXY_HOST_KEY, NULL);
|
|
http_port = gconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
|
|
|
|
if (same_proxy)
|
|
{
|
|
/* Save the old values */
|
|
host = gconf_client_get_string (client, SECURE_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, OLD_SECURE_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, OLD_SECURE_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
|
|
host = gconf_client_get_string (client, FTP_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, OLD_FTP_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, OLD_FTP_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
|
|
host = gconf_client_get_string (client, SOCKS_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, OLD_SOCKS_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, OLD_SOCKS_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, SOCKS_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
|
|
/* Set the new values */
|
|
gconf_client_set_string (client, SECURE_PROXY_HOST_KEY, http_proxy, NULL);
|
|
gconf_client_set_int (client, SECURE_PROXY_PORT_KEY, http_port, NULL);
|
|
|
|
gconf_client_set_string (client, FTP_PROXY_HOST_KEY, http_proxy, NULL);
|
|
gconf_client_set_int (client, FTP_PROXY_PORT_KEY, http_port, NULL);
|
|
|
|
gconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, http_proxy, NULL);
|
|
gconf_client_set_int (client, SOCKS_PROXY_PORT_KEY, http_port, NULL);
|
|
}
|
|
else
|
|
{
|
|
host = gconf_client_get_string (client, OLD_SECURE_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, SECURE_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, SECURE_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, OLD_SECURE_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
|
|
host = gconf_client_get_string (client, OLD_FTP_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, FTP_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, FTP_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, OLD_FTP_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
|
|
host = gconf_client_get_string (client, OLD_SOCKS_PROXY_HOST_KEY, NULL);
|
|
gconf_client_set_string (client, SOCKS_PROXY_HOST_KEY, host, NULL);
|
|
gconf_client_set_int (client, SOCKS_PROXY_PORT_KEY,
|
|
gconf_client_get_int (client, OLD_SOCKS_PROXY_PORT_KEY, NULL), NULL);
|
|
g_free (host);
|
|
}
|
|
|
|
/* Set the proxy entries insensitive if we are using the same proxy for all */
|
|
gtk_widget_set_sensitive (WID ("secure_host_entry"), !same_proxy);
|
|
gtk_widget_set_sensitive (WID ("secure_port_spinbutton"), !same_proxy);
|
|
gtk_widget_set_sensitive (WID ("ftp_host_entry"), !same_proxy);
|
|
gtk_widget_set_sensitive (WID ("ftp_port_spinbutton"), !same_proxy);
|
|
gtk_widget_set_sensitive (WID ("socks_host_entry"), !same_proxy);
|
|
gtk_widget_set_sensitive (WID ("socks_port_spinbutton"), !same_proxy);
|
|
|
|
g_object_unref (client);
|
|
}
|
|
|
|
static GConfValue *
|
|
extract_proxy_host (GConfPropertyEditor *peditor, const GConfValue *orig)
|
|
{
|
|
char const *entered_text = gconf_value_get_string (orig);
|
|
GConfValue *res = NULL;
|
|
|
|
if (entered_text != NULL) {
|
|
GnomeVFSURI *uri = gnome_vfs_uri_new (entered_text);
|
|
if (uri != NULL) {
|
|
char const *host = gnome_vfs_uri_get_host_name (uri);
|
|
if (host != NULL) {
|
|
res = gconf_value_new (GCONF_VALUE_STRING);
|
|
gconf_value_set_string (res, host);
|
|
}
|
|
gnome_vfs_uri_unref (uri);
|
|
}
|
|
}
|
|
|
|
if (res != NULL)
|
|
return res;
|
|
return gconf_value_copy (orig);
|
|
}
|
|
|
|
static void
|
|
proxy_mode_radiobutton_clicked_cb (GtkWidget *widget,
|
|
GladeXML *dialog)
|
|
{
|
|
GSList *mode_group;
|
|
int mode;
|
|
GConfClient *client;
|
|
|
|
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)))
|
|
return;
|
|
|
|
mode_group = g_slist_copy (gtk_radio_button_get_group
|
|
(GTK_RADIO_BUTTON (WID ("none_radiobutton"))));
|
|
mode_group = g_slist_reverse (mode_group);
|
|
mode = g_slist_index (mode_group, widget);
|
|
g_slist_free (mode_group);
|
|
|
|
gtk_widget_set_sensitive (WID ("manual_box"),
|
|
mode == PROXYMODE_MANUAL);
|
|
gtk_widget_set_sensitive (WID ("same_proxy_checkbutton"),
|
|
mode == PROXYMODE_MANUAL);
|
|
gtk_widget_set_sensitive (WID ("auto_box"),
|
|
mode == PROXYMODE_AUTO);
|
|
client = gconf_client_get_default ();
|
|
gconf_client_set_bool (client, USE_PROXY_KEY,
|
|
mode == PROXYMODE_AUTO || mode == PROXYMODE_MANUAL, NULL);
|
|
g_object_unref (client);
|
|
}
|
|
|
|
static void
|
|
connect_sensitivity_signals (GladeXML *dialog, GSList *mode_group)
|
|
{
|
|
for (; mode_group != NULL; mode_group = mode_group->next)
|
|
{
|
|
g_signal_connect (G_OBJECT (mode_group->data), "clicked",
|
|
G_CALLBACK(proxy_mode_radiobutton_clicked_cb),
|
|
dialog);
|
|
}
|
|
}
|
|
|
|
static void
|
|
setup_dialog (GladeXML *dialog)
|
|
{
|
|
GConfPropertyEditor *peditor;
|
|
GSList *mode_group;
|
|
GType mode_type = 0;
|
|
GConfClient *client;
|
|
gint port_value;
|
|
|
|
mode_type = g_enum_register_static ("NetworkPreferencesProxyType",
|
|
proxytype_values);
|
|
|
|
/* There's a bug in peditors that cause them to not initialize the entry
|
|
* correctly. */
|
|
client = gconf_client_get_default ();
|
|
|
|
/* Hackety hack */
|
|
gtk_label_set_use_markup (GTK_LABEL (GTK_BIN (WID ("none_radiobutton"))->child), TRUE);
|
|
gtk_label_set_use_markup (GTK_LABEL (GTK_BIN (WID ("manual_radiobutton"))->child), TRUE);
|
|
gtk_label_set_use_markup (GTK_LABEL (GTK_BIN (WID ("auto_radiobutton"))->child), TRUE);
|
|
|
|
/* Mode */
|
|
mode_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (WID ("none_radiobutton")));
|
|
connect_sensitivity_signals (dialog, mode_group);
|
|
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_select_radio_with_enum (NULL,
|
|
PROXY_MODE_KEY, mode_group, mode_type,
|
|
TRUE, NULL));
|
|
|
|
/* Use same proxy for all protocols */
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_boolean (NULL,
|
|
USE_SAME_PROXY_KEY, WID ("same_proxy_checkbutton"), NULL));
|
|
|
|
g_signal_connect (G_OBJECT (WID ("same_proxy_checkbutton")),
|
|
"toggled",
|
|
G_CALLBACK (cb_use_same_proxy_checkbutton_clicked),
|
|
dialog);
|
|
|
|
/* Http */
|
|
port_value = gconf_client_get_int (client, HTTP_PROXY_PORT_KEY, NULL);
|
|
gtk_spin_button_set_value (GTK_SPIN_BUTTON (WID ("http_port_spinbutton")), (gdouble) port_value);
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, HTTP_PROXY_HOST_KEY, WID ("http_host_entry"),
|
|
"conv-from-widget-cb", extract_proxy_host,
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
|
|
NULL, HTTP_PROXY_PORT_KEY, WID ("http_port_spinbutton"),
|
|
NULL));
|
|
g_signal_connect (G_OBJECT (WID ("details_button")),
|
|
"clicked",
|
|
G_CALLBACK (cb_http_details_button_clicked),
|
|
WID ("network_dialog"));
|
|
|
|
/* Secure */
|
|
port_value = gconf_client_get_int (client, SECURE_PROXY_PORT_KEY, NULL);
|
|
gtk_spin_button_set_value (GTK_SPIN_BUTTON (WID ("secure_port_spinbutton")), (gdouble) port_value);
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, SECURE_PROXY_HOST_KEY, WID ("secure_host_entry"),
|
|
"conv-from-widget-cb", extract_proxy_host,
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
|
|
NULL, SECURE_PROXY_PORT_KEY, WID ("secure_port_spinbutton"),
|
|
NULL));
|
|
|
|
/* Ftp */
|
|
port_value = gconf_client_get_int (client, FTP_PROXY_PORT_KEY, NULL);
|
|
gtk_spin_button_set_value (GTK_SPIN_BUTTON (WID ("ftp_port_spinbutton")), (gdouble) port_value);
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, FTP_PROXY_HOST_KEY, WID ("ftp_host_entry"),
|
|
"conv-from-widget-cb", extract_proxy_host,
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
|
|
NULL, FTP_PROXY_PORT_KEY, WID ("ftp_port_spinbutton"),
|
|
NULL));
|
|
|
|
/* Socks */
|
|
port_value = gconf_client_get_int (client, SOCKS_PROXY_PORT_KEY, NULL);
|
|
gtk_spin_button_set_value (GTK_SPIN_BUTTON (WID ("socks_port_spinbutton")), (gdouble) port_value);
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, SOCKS_PROXY_HOST_KEY, WID ("socks_host_entry"),
|
|
"conv-from-widget-cb", extract_proxy_host,
|
|
NULL));
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_integer (
|
|
NULL, SOCKS_PROXY_PORT_KEY, WID ("socks_port_spinbutton"),
|
|
NULL));
|
|
|
|
/* Set the proxy entries insensitive if we are using the same proxy for all */
|
|
if (gconf_client_get_bool (client, USE_SAME_PROXY_KEY, NULL))
|
|
{
|
|
gtk_widget_set_sensitive (WID ("secure_host_entry"), FALSE);
|
|
gtk_widget_set_sensitive (WID ("secure_port_spinbutton"), FALSE);
|
|
gtk_widget_set_sensitive (WID ("ftp_host_entry"), FALSE);
|
|
gtk_widget_set_sensitive (WID ("ftp_port_spinbutton"), FALSE);
|
|
gtk_widget_set_sensitive (WID ("socks_host_entry"), FALSE);
|
|
gtk_widget_set_sensitive (WID ("socks_port_spinbutton"), FALSE);
|
|
}
|
|
|
|
/* Autoconfiguration */
|
|
peditor = GCONF_PROPERTY_EDITOR (gconf_peditor_new_string (
|
|
NULL, PROXY_AUTOCONFIG_URL_KEY, WID ("autoconfig_entry"),
|
|
NULL));
|
|
|
|
g_signal_connect (WID ("network_dialog"), "response",
|
|
G_CALLBACK (cb_dialog_response), NULL);
|
|
|
|
|
|
gtk_label_set_use_markup (GTK_LABEL (WID ("label_ignore_host")), TRUE);
|
|
ignore_hosts = gconf_client_get_list(client, IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, NULL);
|
|
g_object_unref (client);
|
|
|
|
model = create_listmodel();
|
|
populate_listmodel(GTK_LIST_STORE(model), ignore_hosts);
|
|
config_treeview(GTK_TREE_VIEW(WID("treeview_ignore_host")), model);
|
|
|
|
g_signal_connect (WID ("button_add_url"), "clicked",
|
|
G_CALLBACK (cb_add_url), dialog);
|
|
g_signal_connect (WID ("entry_url"), "activate",
|
|
G_CALLBACK (cb_add_url), dialog);
|
|
g_signal_connect (WID ("button_remove_url"), "clicked",
|
|
G_CALLBACK (cb_remove_url), dialog);
|
|
}
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
GnomeProgram *program;
|
|
GladeXML *dialog;
|
|
GConfClient *client;
|
|
GtkWidget *widget;
|
|
|
|
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
|
|
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
|
textdomain (GETTEXT_PACKAGE);
|
|
|
|
program = gnome_program_init ("gnome-network-preferences",
|
|
VERSION, LIBGNOMEUI_MODULE,
|
|
argc, argv, GNOME_PARAM_NONE);
|
|
|
|
client = gconf_client_get_default ();
|
|
gconf_client_add_dir (client, "/system/gnome-vfs",
|
|
GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
|
|
gconf_client_add_dir (client, "/system/http_proxy",
|
|
GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
|
|
gconf_client_add_dir (client, "/system/proxy",
|
|
GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
|
|
|
|
dialog = glade_xml_new (GNOMECC_GLADE_DIR "/gnome-network-preferences.glade",
|
|
"network_dialog", NULL);
|
|
|
|
setup_dialog (dialog);
|
|
widget = WID ("network_dialog");
|
|
capplet_set_icon (widget, "stock_proxy");
|
|
gtk_widget_show_all (widget);
|
|
gtk_main ();
|
|
|
|
g_object_unref (dialog);
|
|
g_object_unref (client);
|
|
g_object_unref (program);
|
|
|
|
return 0;
|
|
}
|