pidgin/prefs/pidginproxyprefs.c

changeset 41377
89e348e53f71
parent 41370
0ae2dfa4a5cf
child 41550
a1e1d5c248e4
equal deleted inserted replaced
41376:5bd22f39246a 41377:89e348e53f71
54 *****************************************************************************/ 54 *****************************************************************************/
55 static void 55 static void
56 proxy_changed_cb(const gchar *name, PurplePrefType type, gconstpointer value, 56 proxy_changed_cb(const gchar *name, PurplePrefType type, gconstpointer value,
57 gpointer data) 57 gpointer data)
58 { 58 {
59 PidginProxyPrefs *page = data; 59 PidginProxyPrefs *prefs = data;
60 const char *proxy = value; 60 const char *proxy = value;
61 61
62 if (!purple_strequal(proxy, "none") && !purple_strequal(proxy, "envvar")) { 62 if (!purple_strequal(proxy, "none") && !purple_strequal(proxy, "envvar")) {
63 gtk_widget_show_all(page->options); 63 gtk_widget_show_all(prefs->options);
64 } else { 64 } else {
65 gtk_widget_hide(page->options); 65 gtk_widget_hide(prefs->options);
66 } 66 }
67 } 67 }
68 68
69 static void 69 static void
70 proxy_print_option(GtkWidget *entry, gpointer data) 70 proxy_print_option(GtkWidget *entry, gpointer data)
71 { 71 {
72 PidginProxyPrefs *page = data; 72 PidginProxyPrefs *prefs = data;
73 73
74 if (entry == page->host) { 74 if (entry == prefs->host) {
75 purple_prefs_set_string("/purple/proxy/host", 75 purple_prefs_set_string("/purple/proxy/host",
76 gtk_entry_get_text(GTK_ENTRY(entry))); 76 gtk_entry_get_text(GTK_ENTRY(entry)));
77 } else if (entry == page->port) { 77 } else if (entry == prefs->port) {
78 purple_prefs_set_int("/purple/proxy/port", 78 purple_prefs_set_int("/purple/proxy/port",
79 gtk_spin_button_get_value_as_int( 79 gtk_spin_button_get_value_as_int(
80 GTK_SPIN_BUTTON(entry))); 80 GTK_SPIN_BUTTON(entry)));
81 } else if (entry == page->username) { 81 } else if (entry == prefs->username) {
82 purple_prefs_set_string("/purple/proxy/username", 82 purple_prefs_set_string("/purple/proxy/username",
83 gtk_entry_get_text(GTK_ENTRY(entry))); 83 gtk_entry_get_text(GTK_ENTRY(entry)));
84 } else if (entry == page->password) { 84 } else if (entry == prefs->password) {
85 purple_prefs_set_string("/purple/proxy/password", 85 purple_prefs_set_string("/purple/proxy/password",
86 gtk_entry_get_text(GTK_ENTRY(entry))); 86 gtk_entry_get_text(GTK_ENTRY(entry)));
87 } 87 }
88 } 88 }
89 89
90 static void 90 static void
91 proxy_button_clicked_cb(GtkWidget *button, gpointer data) 91 proxy_button_clicked_cb(GtkWidget *button, gpointer data)
92 { 92 {
93 PidginProxyPrefs *page = data; 93 PidginProxyPrefs *prefs = data;
94 GError *err = NULL; 94 GError *err = NULL;
95 95
96 if (g_spawn_command_line_async(page->gnome_program_path, &err)) { 96 if (g_spawn_command_line_async(prefs->gnome_program_path, &err)) {
97 return; 97 return;
98 } 98 }
99 99
100 purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message, NULL); 100 purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message, NULL);
101 g_error_free(err); 101 g_error_free(err);
154 gtk_widget_class_bind_template_callback(widget_class, 154 gtk_widget_class_bind_template_callback(widget_class,
155 proxy_print_option); 155 proxy_print_option);
156 } 156 }
157 157
158 static void 158 static void
159 pidgin_proxy_prefs_init(PidginProxyPrefs *page) 159 pidgin_proxy_prefs_init(PidginProxyPrefs *prefs)
160 { 160 {
161 PurpleProxyInfo *proxy_info; 161 PurpleProxyInfo *proxy_info;
162 162
163 gtk_widget_init_template(GTK_WIDGET(page)); 163 gtk_widget_init_template(GTK_WIDGET(prefs));
164 164
165 if(purple_running_gnome()) { 165 if(purple_running_gnome()) {
166 gchar *path = NULL; 166 gchar *path = NULL;
167 167
168 gtk_stack_set_visible_child_name(GTK_STACK(page->stack), 168 gtk_stack_set_visible_child_name(GTK_STACK(prefs->stack),
169 "gnome"); 169 "gnome");
170 170
171 path = g_find_program_in_path("gnome-network-properties"); 171 path = g_find_program_in_path("gnome-network-properties");
172 if (path == NULL) { 172 if (path == NULL) {
173 path = g_find_program_in_path("gnome-network-preferences"); 173 path = g_find_program_in_path("gnome-network-preferences");
179 g_free(path); 179 g_free(path);
180 path = tmp; 180 path = tmp;
181 } 181 }
182 } 182 }
183 183
184 page->gnome_program_path = path; 184 prefs->gnome_program_path = path;
185 gtk_widget_set_visible(page->gnome_not_found, path == NULL); 185 gtk_widget_set_visible(prefs->gnome_not_found, path == NULL);
186 gtk_widget_set_visible(page->gnome_program, path != NULL); 186 gtk_widget_set_visible(prefs->gnome_program, path != NULL);
187 } else { 187 } else {
188 gtk_stack_set_visible_child_name(GTK_STACK(page->stack), 188 gtk_stack_set_visible_child_name(GTK_STACK(prefs->stack),
189 "nongnome"); 189 "nongnome");
190 190
191 /* This is a global option that affects SOCKS4 usage even with 191 /* This is a global option that affects SOCKS4 usage even with
192 * account-specific proxy settings */ 192 * account-specific proxy settings */
193 pidgin_prefs_bind_checkbox("/purple/proxy/socks4_remotedns", 193 pidgin_prefs_bind_checkbox("/purple/proxy/socks4_remotedns",
194 page->socks4_remotedns); 194 prefs->socks4_remotedns);
195 195
196 page->type.type = PURPLE_PREF_STRING; 196 prefs->type.type = PURPLE_PREF_STRING;
197 page->type.key = "/purple/proxy/type"; 197 prefs->type.key = "/purple/proxy/type";
198 pidgin_prefs_bind_dropdown(&page->type); 198 pidgin_prefs_bind_dropdown(&prefs->type);
199 proxy_info = purple_global_proxy_get_info(); 199 proxy_info = purple_global_proxy_get_info();
200 200
201 purple_prefs_connect_callback(page, "/purple/proxy/type", 201 purple_prefs_connect_callback(prefs, "/purple/proxy/type",
202 proxy_changed_cb, page); 202 proxy_changed_cb, prefs);
203 203
204 if (proxy_info != NULL) { 204 if (proxy_info != NULL) {
205 if (purple_proxy_info_get_hostname(proxy_info)) { 205 if (purple_proxy_info_get_hostname(proxy_info)) {
206 gtk_entry_set_text(GTK_ENTRY(page->host), 206 gtk_entry_set_text(GTK_ENTRY(prefs->host),
207 purple_proxy_info_get_hostname(proxy_info)); 207 purple_proxy_info_get_hostname(proxy_info));
208 } 208 }
209 209
210 if (purple_proxy_info_get_port(proxy_info) != 0) { 210 if (purple_proxy_info_get_port(proxy_info) != 0) {
211 gtk_spin_button_set_value( 211 gtk_spin_button_set_value(
212 GTK_SPIN_BUTTON(page->port), 212 GTK_SPIN_BUTTON(prefs->port),
213 purple_proxy_info_get_port(proxy_info)); 213 purple_proxy_info_get_port(proxy_info));
214 } 214 }
215 215
216 if (purple_proxy_info_get_username(proxy_info) != NULL) { 216 if (purple_proxy_info_get_username(proxy_info) != NULL) {
217 gtk_entry_set_text(GTK_ENTRY(page->username), 217 gtk_entry_set_text(GTK_ENTRY(prefs->username),
218 purple_proxy_info_get_username(proxy_info)); 218 purple_proxy_info_get_username(proxy_info));
219 } 219 }
220 220
221 if (purple_proxy_info_get_password(proxy_info) != NULL) { 221 if (purple_proxy_info_get_password(proxy_info) != NULL) {
222 gtk_entry_set_text(GTK_ENTRY(page->password), 222 gtk_entry_set_text(GTK_ENTRY(prefs->password),
223 purple_proxy_info_get_password(proxy_info)); 223 purple_proxy_info_get_password(proxy_info));
224 } 224 }
225 } 225 }
226 226
227 proxy_changed_cb("/purple/proxy/type", PURPLE_PREF_STRING, 227 proxy_changed_cb("/purple/proxy/type", PURPLE_PREF_STRING,
228 purple_prefs_get_string("/purple/proxy/type"), 228 purple_prefs_get_string("/purple/proxy/type"),
229 page); 229 prefs);
230 } 230 }
231 } 231 }
232 232
233 /****************************************************************************** 233 /******************************************************************************
234 * API 234 * API

mercurial