Mercurial > pidgin.yaz
comparison pidgin/gtkprefs.c @ 21032:acbbcf6b6b46
Add a button in Network prefences page to launch Gnome proxy configuration
program if running Gnome. Inspired by Galeon.
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Sun, 28 Oct 2007 17:25:18 +0000 |
parents | 787b3897ba9f |
children | fe1b44022884 |
comparison
equal
deleted
inserted
replaced
21031:afb4704781ed | 21032:acbbcf6b6b46 |
---|---|
1111 purple_prefs_set_string("/purple/proxy/username", gtk_entry_get_text(entry)); | 1111 purple_prefs_set_string("/purple/proxy/username", gtk_entry_get_text(entry)); |
1112 else if (entrynum == PROXYPASS) | 1112 else if (entrynum == PROXYPASS) |
1113 purple_prefs_set_string("/purple/proxy/password", gtk_entry_get_text(entry)); | 1113 purple_prefs_set_string("/purple/proxy/password", gtk_entry_get_text(entry)); |
1114 } | 1114 } |
1115 | 1115 |
1116 static void | |
1117 proxy_button_clicked_cb(GtkWidget *button, gpointer null) | |
1118 { | |
1119 GError *err = NULL; | |
1120 | |
1121 if (g_spawn_command_line_async ("gnome-network-preferences", &err)) | |
1122 return; | |
1123 | |
1124 purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message); | |
1125 g_error_free(err); | |
1126 } | |
1127 | |
1116 static GtkWidget * | 1128 static GtkWidget * |
1117 network_page() | 1129 network_page() |
1118 { | 1130 { |
1119 GtkWidget *ret; | 1131 GtkWidget *ret; |
1120 GtkWidget *vbox, *hbox, *entry; | 1132 GtkWidget *vbox, *hbox, *entry; |
1121 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; | 1133 GtkWidget *table, *label, *auto_ip_checkbox, *ports_checkbox, *spin_button; |
1134 GtkWidget *warning, *proxy_button; | |
1122 GtkSizeGroup *sg; | 1135 GtkSizeGroup *sg; |
1123 PurpleProxyInfo *proxy_info = NULL; | 1136 PurpleProxyInfo *proxy_info = NULL; |
1124 | 1137 |
1125 ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); | 1138 ret = gtk_vbox_new(FALSE, PIDGIN_HIG_CAT_SPACE); |
1126 gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); | 1139 gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); |
1199 if (!purple_prefs_get_bool("/purple/network/ports_range_use")) | 1212 if (!purple_prefs_get_bool("/purple/network/ports_range_use")) |
1200 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); | 1213 gtk_widget_set_sensitive(GTK_WIDGET(spin_button), FALSE); |
1201 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", | 1214 g_signal_connect(G_OBJECT(ports_checkbox), "clicked", |
1202 G_CALLBACK(pidgin_toggle_sensitive), spin_button); | 1215 G_CALLBACK(pidgin_toggle_sensitive), spin_button); |
1203 | 1216 |
1204 if (!purple_running_gnome()) { | 1217 vbox = pidgin_make_frame(ret, _("Proxy Server")); |
1205 vbox = pidgin_make_frame(ret, _("Proxy Server")); | 1218 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); |
1206 prefs_proxy_frame = gtk_vbox_new(FALSE, 0); | 1219 |
1220 if (purple_running_gnome()) { | |
1221 warning = hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | |
1222 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1223 | |
1224 label = gtk_label_new(NULL); | |
1225 gtk_label_set_markup(GTK_LABEL(label), | |
1226 _("<b>Proxy configuration program was not found.</b>")); | |
1227 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
1228 | |
1229 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | |
1230 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1231 label = gtk_label_new(_("Proxy preferences are configured in\n" | |
1232 "GNOME Control Center: Desktop Preferences")); | |
1233 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
1234 gtk_widget_show(label); | |
1235 | |
1236 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE); | |
1237 gtk_container_add(GTK_CONTAINER(vbox), hbox); | |
1238 proxy_button = gtk_button_new_with_mnemonic(_("Configure _Proxy")); | |
1239 g_signal_connect(G_OBJECT(proxy_button), "clicked", | |
1240 G_CALLBACK(proxy_button_clicked_cb), NULL); | |
1241 gtk_box_pack_start(GTK_BOX(hbox), proxy_button, FALSE, FALSE, 0); | |
1242 gtk_widget_show(proxy_button); | |
1243 } else { | |
1207 pidgin_prefs_dropdown(vbox, _("Proxy _type:"), PURPLE_PREF_STRING, | 1244 pidgin_prefs_dropdown(vbox, _("Proxy _type:"), PURPLE_PREF_STRING, |
1208 "/purple/proxy/type", | 1245 "/purple/proxy/type", |
1209 _("No proxy"), "none", | 1246 _("No proxy"), "none", |
1210 "SOCKS 4", "socks4", | 1247 "SOCKS 4", "socks4", |
1211 "SOCKS 5", "socks5", | 1248 "SOCKS 5", "socks5", |
1301 | 1338 |
1302 gtk_widget_show_all(ret); | 1339 gtk_widget_show_all(ret); |
1303 /* Only hide table if not running gnome otherwise we hide the IP address table! */ | 1340 /* Only hide table if not running gnome otherwise we hide the IP address table! */ |
1304 if (!purple_running_gnome() && (proxy_info == NULL || | 1341 if (!purple_running_gnome() && (proxy_info == NULL || |
1305 purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_NONE || | 1342 purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_NONE || |
1306 purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR)) | 1343 purple_proxy_info_get_type(proxy_info) == PURPLE_PROXY_USE_ENVVAR)) { |
1307 gtk_widget_hide(table); | 1344 gtk_widget_hide(table); |
1345 } else { | |
1346 gchar *path; | |
1347 path = g_find_program_in_path("gnome-network-preferences"); | |
1348 if (path != NULL) { | |
1349 gtk_widget_set_sensitive(proxy_button, TRUE); | |
1350 gtk_widget_hide(warning); | |
1351 g_free(path); | |
1352 } else { | |
1353 gtk_widget_set_sensitive(proxy_button, FALSE); | |
1354 gtk_widget_show(warning); | |
1355 } | |
1356 } | |
1357 | |
1308 return ret; | 1358 return ret; |
1309 } | 1359 } |
1310 | 1360 |
1311 #ifndef _WIN32 | 1361 #ifndef _WIN32 |
1312 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { | 1362 static gboolean manual_browser_set(GtkWidget *entry, GdkEventFocus *event, gpointer data) { |