| 2406 static GtkWidget * |
2406 static GtkWidget * |
| 2407 proxy_page(void) |
2407 proxy_page(void) |
| 2408 { |
2408 { |
| 2409 GtkWidget *ret = NULL, *vbox = NULL, *hbox = NULL; |
2409 GtkWidget *ret = NULL, *vbox = NULL, *hbox = NULL; |
| 2410 GtkWidget *grid = NULL, *entry = NULL, *proxy_button = NULL; |
2410 GtkWidget *grid = NULL, *entry = NULL, *proxy_button = NULL; |
| 2411 GtkLabel *label = NULL; |
2411 GtkWidget *label = NULL; |
| 2412 GtkWidget *prefs_proxy_frame = NULL; |
2412 GtkWidget *prefs_proxy_frame = NULL; |
| 2413 PurpleProxyInfo *proxy_info; |
2413 PurpleProxyInfo *proxy_info; |
| 2414 |
2414 |
| 2415 ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_CAT_SPACE); |
2415 ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_CAT_SPACE); |
| 2416 gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER); |
2416 gtk_container_set_border_width(GTK_CONTAINER(ret), PIDGIN_HIG_BORDER); |
| 2419 |
2419 |
| 2420 if(purple_running_gnome()) { |
2420 if(purple_running_gnome()) { |
| 2421 gchar *path = NULL; |
2421 gchar *path = NULL; |
| 2422 |
2422 |
| 2423 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
2423 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
| 2424 label = GTK_LABEL(gtk_label_new(_("Proxy preferences " |
2424 label = gtk_label_new(_("Proxy preferences are configured in " |
| 2425 "are configured in GNOME preferences"))); |
2425 "GNOME preferences")); |
| 2426 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
2426 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 2427 gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label), FALSE, FALSE, 0); |
2427 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 2428 |
2428 |
| 2429 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
2429 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
| 2430 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
2430 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 2431 |
2431 |
| 2432 path = g_find_program_in_path("gnome-network-properties"); |
2432 path = g_find_program_in_path("gnome-network-properties"); |
| 2440 path = tmp; |
2440 path = tmp; |
| 2441 } |
2441 } |
| 2442 } |
2442 } |
| 2443 |
2443 |
| 2444 if (path == NULL) { |
2444 if (path == NULL) { |
| 2445 label = GTK_LABEL(gtk_label_new(NULL)); |
2445 label = gtk_label_new(NULL); |
| 2446 gtk_label_set_markup(label, _("<b>Proxy configuration " |
2446 gtk_label_set_markup(GTK_LABEL(label), |
| 2447 "program was not found.</b>")); |
2447 _("<b>Proxy configuration program was " |
| 2448 gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label), FALSE, FALSE, 0); |
2448 "not found.</b>")); |
| |
2449 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 2449 } else { |
2450 } else { |
| 2450 proxy_button = gtk_button_new_with_mnemonic(_("Configure _Proxy")); |
2451 proxy_button = gtk_button_new_with_mnemonic(_("Configure _Proxy")); |
| 2451 g_signal_connect(G_OBJECT(proxy_button), "clicked", |
2452 g_signal_connect(G_OBJECT(proxy_button), "clicked", |
| 2452 G_CALLBACK(proxy_button_clicked_cb), |
2453 G_CALLBACK(proxy_button_clicked_cb), |
| 2453 path); |
2454 path); |
| 2487 gtk_container_set_border_width(GTK_CONTAINER(grid), 0); |
2488 gtk_container_set_border_width(GTK_CONTAINER(grid), 0); |
| 2488 gtk_grid_set_column_spacing(GTK_GRID(grid), 5); |
2489 gtk_grid_set_column_spacing(GTK_GRID(grid), 5); |
| 2489 gtk_grid_set_row_spacing(GTK_GRID(grid), 10); |
2490 gtk_grid_set_row_spacing(GTK_GRID(grid), 10); |
| 2490 gtk_container_add(GTK_CONTAINER(prefs_proxy_subframe), grid); |
2491 gtk_container_add(GTK_CONTAINER(prefs_proxy_subframe), grid); |
| 2491 |
2492 |
| 2492 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("_Host:"))); |
2493 label = gtk_label_new_with_mnemonic(_("_Host:")); |
| 2493 gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_END); |
2494 gtk_widget_set_halign(label, GTK_ALIGN_END); |
| 2494 gtk_widget_set_valign(GTK_WIDGET(label), GTK_ALIGN_CENTER); |
2495 gtk_widget_set_valign(label, GTK_ALIGN_CENTER); |
| 2495 gtk_grid_attach_full(GTK_GRID(grid), GTK_WIDGET(label), 0, 0, 1, 1, |
2496 gtk_grid_attach_full(GTK_GRID(grid), label, 0, 0, 1, 1, |
| 2496 GTK_FILL, 0, 0, 0); |
2497 GTK_FILL, 0, 0, 0); |
| 2497 |
2498 |
| 2498 entry = gtk_entry_new(); |
2499 entry = gtk_entry_new(); |
| 2499 gtk_label_set_mnemonic_widget(label, entry); |
2500 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
| 2500 gtk_grid_attach_full(GTK_GRID(grid), entry, 1, 0, 1, 1, |
2501 gtk_grid_attach_full(GTK_GRID(grid), entry, 1, 0, 1, 1, |
| 2501 GTK_FILL, 0, 0, 0); |
2502 GTK_FILL, 0, 0, 0); |
| 2502 g_signal_connect(G_OBJECT(entry), "changed", |
2503 g_signal_connect(G_OBJECT(entry), "changed", |
| 2503 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); |
2504 G_CALLBACK(proxy_print_option), (void *)PROXYHOST); |
| 2504 |
2505 |
| 2507 purple_proxy_info_get_host(proxy_info)); |
2508 purple_proxy_info_get_host(proxy_info)); |
| 2508 |
2509 |
| 2509 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); |
2510 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); |
| 2510 gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); |
2511 gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); |
| 2511 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
2512 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 2512 pidgin_set_accessible_label(entry, label); |
2513 pidgin_set_accessible_label(entry, GTK_LABEL(label)); |
| 2513 |
2514 |
| 2514 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("P_ort:"))); |
2515 label = gtk_label_new_with_mnemonic(_("P_ort:")); |
| 2515 gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_END); |
2516 gtk_widget_set_halign(label, GTK_ALIGN_END); |
| 2516 gtk_widget_set_valign(GTK_WIDGET(label), GTK_ALIGN_CENTER); |
2517 gtk_widget_set_valign(label, GTK_ALIGN_CENTER); |
| 2517 gtk_grid_attach_full(GTK_GRID(grid), GTK_WIDGET(label), 2, 0, 1, 1, |
2518 gtk_grid_attach_full(GTK_GRID(grid), label, 2, 0, 1, 1, |
| 2518 GTK_FILL, 0, 0, 0); |
2519 GTK_FILL, 0, 0, 0); |
| 2519 |
2520 |
| 2520 entry = gtk_spin_button_new_with_range(0, 65535, 1); |
2521 entry = gtk_spin_button_new_with_range(0, 65535, 1); |
| 2521 gtk_label_set_mnemonic_widget(label, entry); |
2522 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
| 2522 gtk_grid_attach_full(GTK_GRID(grid), entry, 3, 0, 1, 1, |
2523 gtk_grid_attach_full(GTK_GRID(grid), entry, 3, 0, 1, 1, |
| 2523 GTK_FILL, 0, 0, 0); |
2524 GTK_FILL, 0, 0, 0); |
| 2524 g_signal_connect(G_OBJECT(entry), "changed", |
2525 g_signal_connect(G_OBJECT(entry), "changed", |
| 2525 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); |
2526 G_CALLBACK(proxy_print_option), (void *)PROXYPORT); |
| 2526 |
2527 |
| 2527 if (proxy_info != NULL && purple_proxy_info_get_port(proxy_info) != 0) { |
2528 if (proxy_info != NULL && purple_proxy_info_get_port(proxy_info) != 0) { |
| 2528 gtk_spin_button_set_value(GTK_SPIN_BUTTON(entry), |
2529 gtk_spin_button_set_value(GTK_SPIN_BUTTON(entry), |
| 2529 purple_proxy_info_get_port(proxy_info)); |
2530 purple_proxy_info_get_port(proxy_info)); |
| 2530 } |
2531 } |
| 2531 pidgin_set_accessible_label(entry, label); |
2532 pidgin_set_accessible_label(entry, GTK_LABEL(label)); |
| 2532 |
2533 |
| 2533 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("User_name:"))); |
2534 label = gtk_label_new_with_mnemonic(_("User_name:")); |
| 2534 gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_END); |
2535 gtk_widget_set_halign(label, GTK_ALIGN_END); |
| 2535 gtk_widget_set_valign(GTK_WIDGET(label), GTK_ALIGN_CENTER); |
2536 gtk_widget_set_valign(label, GTK_ALIGN_CENTER); |
| 2536 gtk_grid_attach_full(GTK_GRID(grid), GTK_WIDGET(label), 0, 1, 1, 1, |
2537 gtk_grid_attach_full(GTK_GRID(grid), label, 0, 1, 1, 1, |
| 2537 GTK_FILL, 0, 0, 0); |
2538 GTK_FILL, 0, 0, 0); |
| 2538 |
2539 |
| 2539 entry = gtk_entry_new(); |
2540 entry = gtk_entry_new(); |
| 2540 gtk_label_set_mnemonic_widget(label, entry); |
2541 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
| 2541 gtk_grid_attach_full(GTK_GRID(grid), entry, 1, 1, 1, 1, |
2542 gtk_grid_attach_full(GTK_GRID(grid), entry, 1, 1, 1, 1, |
| 2542 GTK_FILL, 0, 0, 0); |
2543 GTK_FILL, 0, 0, 0); |
| 2543 g_signal_connect(G_OBJECT(entry), "changed", |
2544 g_signal_connect(G_OBJECT(entry), "changed", |
| 2544 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); |
2545 G_CALLBACK(proxy_print_option), (void *)PROXYUSER); |
| 2545 |
2546 |
| 2548 purple_proxy_info_get_username(proxy_info)); |
2549 purple_proxy_info_get_username(proxy_info)); |
| 2549 |
2550 |
| 2550 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); |
2551 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5); |
| 2551 gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); |
2552 gtk_box_set_homogeneous(GTK_BOX(hbox), TRUE); |
| 2552 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
2553 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 2553 pidgin_set_accessible_label(entry, label); |
2554 pidgin_set_accessible_label(entry, GTK_LABEL(label)); |
| 2554 |
2555 |
| 2555 label = GTK_LABEL(gtk_label_new_with_mnemonic(_("Pa_ssword:"))); |
2556 label = gtk_label_new_with_mnemonic(_("Pa_ssword:")); |
| 2556 gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_END); |
2557 gtk_widget_set_halign(label, GTK_ALIGN_END); |
| 2557 gtk_widget_set_valign(GTK_WIDGET(label), GTK_ALIGN_CENTER); |
2558 gtk_widget_set_valign(label, GTK_ALIGN_CENTER); |
| 2558 gtk_grid_attach_full(GTK_GRID(grid), GTK_WIDGET(label), 2, 1, 1, 1, |
2559 gtk_grid_attach_full(GTK_GRID(grid), label, 2, 1, 1, 1, |
| 2559 GTK_FILL, 0, 0, 0); |
2560 GTK_FILL, 0, 0, 0); |
| 2560 |
2561 |
| 2561 entry = gtk_entry_new(); |
2562 entry = gtk_entry_new(); |
| 2562 gtk_label_set_mnemonic_widget(label, entry); |
2563 gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry); |
| 2563 gtk_grid_attach_full(GTK_GRID(grid), entry, 3, 1, 1, 1, |
2564 gtk_grid_attach_full(GTK_GRID(grid), entry, 3, 1, 1, 1, |
| 2564 GTK_FILL, 0, 0, 0); |
2565 GTK_FILL, 0, 0, 0); |
| 2565 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
2566 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
| 2566 g_signal_connect(G_OBJECT(entry), "changed", |
2567 g_signal_connect(G_OBJECT(entry), "changed", |
| 2567 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); |
2568 G_CALLBACK(proxy_print_option), (void *)PROXYPASS); |
| 2568 |
2569 |
| 2569 if (proxy_info != NULL && purple_proxy_info_get_password(proxy_info) != NULL) |
2570 if (proxy_info != NULL && purple_proxy_info_get_password(proxy_info) != NULL) |
| 2570 gtk_entry_set_text(GTK_ENTRY(entry), |
2571 gtk_entry_set_text(GTK_ENTRY(entry), |
| 2571 purple_proxy_info_get_password(proxy_info)); |
2572 purple_proxy_info_get_password(proxy_info)); |
| 2572 pidgin_set_accessible_label(entry, label); |
2573 pidgin_set_accessible_label(entry, GTK_LABEL(label)); |
| 2573 |
2574 |
| 2574 proxy_changed_cb("/purple/proxy/type", PURPLE_PREF_STRING, |
2575 proxy_changed_cb("/purple/proxy/type", PURPLE_PREF_STRING, |
| 2575 purple_prefs_get_string("/purple/proxy/type"), |
2576 purple_prefs_get_string("/purple/proxy/type"), |
| 2576 prefs_proxy_subframe); |
2577 prefs_proxy_subframe); |
| 2577 |
2578 |