| 2527 const char *browser = value; |
2542 const char *browser = value; |
| 2528 |
2543 |
| 2529 gtk_widget_set_sensitive(hbox, purple_strequal(browser, "custom")); |
2544 gtk_widget_set_sensitive(hbox, purple_strequal(browser, "custom")); |
| 2530 } |
2545 } |
| 2531 |
2546 |
| 2532 static GtkWidget * |
2547 static void |
| 2533 browser_page(void) |
2548 bind_browser_page(PidginPrefsWindow *win) |
| 2534 { |
2549 { |
| 2535 GtkWidget *ret, *vbox, *hbox, *label, *entry, *browser_button; |
|
| 2536 GtkSizeGroup *sg; |
|
| 2537 GList *browsers = NULL; |
|
| 2538 |
|
| 2539 ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, PIDGIN_HIG_CAT_SPACE); |
|
| 2540 gtk_container_set_border_width (GTK_CONTAINER (ret), PIDGIN_HIG_BORDER); |
|
| 2541 |
|
| 2542 vbox = pidgin_make_frame (ret, _("Browser Selection")); |
|
| 2543 |
|
| 2544 if (purple_running_gnome()) { |
2550 if (purple_running_gnome()) { |
| 2545 gchar *path; |
2551 gchar *path; |
| 2546 |
2552 |
| 2547 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
2553 gtk_stack_set_visible_child_name(GTK_STACK(win->browser.stack), |
| 2548 label = gtk_label_new(_("Browser preferences are configured in GNOME preferences")); |
2554 "gnome"); |
| 2549 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
|
| 2550 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
|
| 2551 |
|
| 2552 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_BOX_SPACE); |
|
| 2553 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
|
| 2554 |
2555 |
| 2555 path = g_find_program_in_path("gnome-control-center"); |
2556 path = g_find_program_in_path("gnome-control-center"); |
| 2556 if (path != NULL) { |
2557 if (path != NULL) { |
| 2557 gchar *tmp = g_strdup_printf("%s info", path); |
2558 gchar *tmp = g_strdup_printf("%s info", path); |
| 2558 g_free(path); |
2559 g_free(path); |
| 2559 path = tmp; |
2560 path = tmp; |
| 2560 } else { |
2561 } else { |
| 2561 path = g_find_program_in_path("gnome-default-applications-properties"); |
2562 path = g_find_program_in_path("gnome-default-applications-properties"); |
| 2562 } |
2563 } |
| 2563 |
2564 |
| 2564 if (path == NULL) { |
2565 win->browser.gnome_program_path = path; |
| 2565 label = gtk_label_new(NULL); |
2566 gtk_widget_set_visible(win->browser.gnome_not_found, |
| 2566 gtk_label_set_markup(GTK_LABEL(label), |
2567 path == NULL); |
| 2567 _("<b>Browser configuration program was not found.</b>")); |
2568 gtk_widget_set_visible(win->browser.gnome_program, |
| 2568 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
2569 path != NULL); |
| |
2570 } else { |
| |
2571 GList *browsers = NULL; |
| |
2572 |
| |
2573 gtk_stack_set_visible_child_name(GTK_STACK(win->browser.stack), |
| |
2574 "nongnome"); |
| |
2575 |
| |
2576 win->browser.browser.type = PURPLE_PREF_STRING; |
| |
2577 win->browser.browser.key = PIDGIN_PREFS_ROOT "/browsers/browser"; |
| |
2578 browsers = get_available_browsers(); |
| |
2579 pidgin_prefs_bind_dropdown_from_list( |
| |
2580 &win->browser.browser, |
| |
2581 browsers); |
| |
2582 g_list_free(browsers); |
| |
2583 |
| |
2584 win->browser.place.type = PURPLE_PREF_INT; |
| |
2585 win->browser.place.key = PIDGIN_PREFS_ROOT "/browsers/place"; |
| |
2586 pidgin_prefs_bind_dropdown(&win->browser.place); |
| |
2587 |
| |
2588 purple_prefs_connect_callback(prefs, |
| |
2589 PIDGIN_PREFS_ROOT "/browsers/browser", |
| |
2590 browser_changed1_cb, |
| |
2591 win->browser.place_hbox); |
| |
2592 |
| |
2593 gtk_entry_set_text(GTK_ENTRY(win->browser.manual_command), |
| |
2594 purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/manual_command")); |
| |
2595 purple_prefs_connect_callback(prefs, |
| |
2596 PIDGIN_PREFS_ROOT "/browsers/browser", |
| |
2597 browser_changed2_cb, |
| |
2598 win->browser.manual_command_hbox); |
| |
2599 |
| |
2600 if (purple_strequal( |
| |
2601 purple_prefs_get_string( |
| |
2602 PIDGIN_PREFS_ROOT "/browsers/browser"), |
| |
2603 "custom")) { |
| |
2604 gtk_widget_set_sensitive(win->browser.place_hbox, |
| |
2605 FALSE); |
| 2569 } else { |
2606 } else { |
| 2570 browser_button = gtk_button_new_with_mnemonic(_("Configure _Browser")); |
2607 gtk_widget_set_sensitive(win->browser.manual_command_hbox, |
| 2571 g_signal_connect_data(G_OBJECT(browser_button), "clicked", |
2608 FALSE); |
| 2572 G_CALLBACK(browser_button_clicked_cb), path, |
|
| 2573 (GClosureNotify)g_free, 0); |
|
| 2574 gtk_box_pack_start(GTK_BOX(hbox), browser_button, FALSE, FALSE, 0); |
|
| 2575 } |
2609 } |
| 2576 |
2610 } |
| 2577 gtk_widget_show_all(ret); |
|
| 2578 } else { |
|
| 2579 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
|
| 2580 |
|
| 2581 browsers = get_available_browsers(); |
|
| 2582 if (browsers != NULL) { |
|
| 2583 label = pidgin_prefs_dropdown_from_list(vbox,_("_Browser:"), PURPLE_PREF_STRING, |
|
| 2584 PIDGIN_PREFS_ROOT "/browsers/browser", |
|
| 2585 browsers); |
|
| 2586 g_list_free(browsers); |
|
| 2587 gtk_label_set_xalign(GTK_LABEL(label), 0.0); |
|
| 2588 gtk_label_set_yalign(GTK_LABEL(label), 0.5); |
|
| 2589 gtk_size_group_add_widget(sg, label); |
|
| 2590 |
|
| 2591 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); |
|
| 2592 label = pidgin_prefs_dropdown(hbox, _("_Open link in:"), PURPLE_PREF_INT, |
|
| 2593 PIDGIN_PREFS_ROOT "/browsers/place", |
|
| 2594 _("Browser default"), PIDGIN_BROWSER_DEFAULT, |
|
| 2595 _("New window"), PIDGIN_BROWSER_NEW_WINDOW, |
|
| 2596 _("New tab"), PIDGIN_BROWSER_NEW_TAB, |
|
| 2597 NULL); |
|
| 2598 gtk_label_set_xalign(GTK_LABEL(label), 0.0); |
|
| 2599 gtk_label_set_yalign(GTK_LABEL(label), 0.5); |
|
| 2600 gtk_size_group_add_widget(sg, label); |
|
| 2601 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
|
| 2602 |
|
| 2603 if (purple_strequal(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser"), "custom")) |
|
| 2604 gtk_widget_set_sensitive(hbox, FALSE); |
|
| 2605 purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/browsers/browser", |
|
| 2606 browser_changed1_cb, hbox); |
|
| 2607 } |
|
| 2608 |
|
| 2609 entry = gtk_entry_new(); |
|
| 2610 gtk_entry_set_text(GTK_ENTRY(entry), |
|
| 2611 purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/manual_command")); |
|
| 2612 g_signal_connect(G_OBJECT(entry), "focus-out-event", |
|
| 2613 G_CALLBACK(manual_browser_set), NULL); |
|
| 2614 hbox = pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Manual:\n(%s for URL)"), sg, entry, TRUE, NULL); |
|
| 2615 if (!purple_strequal(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/browsers/browser"), "custom")) |
|
| 2616 gtk_widget_set_sensitive(hbox, FALSE); |
|
| 2617 purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/browsers/browser", |
|
| 2618 browser_changed2_cb, hbox); |
|
| 2619 |
|
| 2620 gtk_widget_show_all(ret); |
|
| 2621 g_object_unref(sg); |
|
| 2622 } |
|
| 2623 |
|
| 2624 return ret; |
|
| 2625 } |
2611 } |
| 2626 #endif /*_WIN32*/ |
2612 #endif /*_WIN32*/ |
| 2627 |
2613 |
| 2628 static void |
2614 static void |
| 2629 bind_proxy_page(PidginPrefsWindow *win) |
2615 bind_proxy_page(PidginPrefsWindow *win) |
| 4063 |
4055 |
| 4064 /* Main window */ |
4056 /* Main window */ |
| 4065 gtk_widget_class_bind_template_child( |
4057 gtk_widget_class_bind_template_child( |
| 4066 widget_class, PidginPrefsWindow, notebook); |
4058 widget_class, PidginPrefsWindow, notebook); |
| 4067 gtk_widget_class_bind_template_callback(widget_class, delete_prefs); |
4059 gtk_widget_class_bind_template_callback(widget_class, delete_prefs); |
| |
4060 |
| |
4061 /* Browser page */ |
| |
4062 gtk_widget_class_bind_template_child( |
| |
4063 widget_class, PidginPrefsWindow, browser.page); |
| |
4064 gtk_widget_class_bind_template_child( |
| |
4065 widget_class, PidginPrefsWindow, browser.stack); |
| |
4066 gtk_widget_class_bind_template_child( |
| |
4067 widget_class, PidginPrefsWindow, browser.gnome_not_found); |
| |
4068 gtk_widget_class_bind_template_child( |
| |
4069 widget_class, PidginPrefsWindow, browser.gnome_program); |
| |
4070 gtk_widget_class_bind_template_child( |
| |
4071 widget_class, PidginPrefsWindow, browser.browser.combo); |
| |
4072 gtk_widget_class_bind_template_child( |
| |
4073 widget_class, PidginPrefsWindow, browser.place_hbox); |
| |
4074 gtk_widget_class_bind_template_child( |
| |
4075 widget_class, PidginPrefsWindow, browser.place.combo); |
| |
4076 gtk_widget_class_bind_template_child( |
| |
4077 widget_class, PidginPrefsWindow, browser.manual_command_hbox); |
| |
4078 gtk_widget_class_bind_template_child( |
| |
4079 widget_class, PidginPrefsWindow, browser.manual_command); |
| |
4080 gtk_widget_class_bind_template_callback(widget_class, |
| |
4081 browser_button_clicked_cb); |
| |
4082 gtk_widget_class_bind_template_callback(widget_class, |
| |
4083 manual_browser_set); |
| 4068 |
4084 |
| 4069 /* Conversations page */ |
4085 /* Conversations page */ |
| 4070 gtk_widget_class_bind_template_child( |
4086 gtk_widget_class_bind_template_child( |
| 4071 widget_class, PidginPrefsWindow, |
4087 widget_class, PidginPrefsWindow, |
| 4072 conversations.notification_chat.combo); |
4088 conversations.notification_chat.combo); |