void font_changed_cb (MateConfClient *client, guint cnxn_id, MateConfEntry *entry, Idol *idol) { const gchar *font; GtkFontButton *item; item = GTK_FONT_BUTTON (gtk_builder_get_object (idol->xml, "font_sel_button")); font = mateconf_value_get_string (entry->value); gtk_font_button_set_font_name (item, font); bacon_video_widget_set_subtitle_font (idol->bvw, font); }
static void font_changed_cb (GSettings *settings, const gchar *key, TotemObject *totem) { gchar *font; GtkFontButton *item; item = GTK_FONT_BUTTON (POBJ ("font_sel_button")); font = g_settings_get_string (settings, "subtitle-font"); gtk_font_button_set_font_name (item, font); bacon_video_widget_set_subtitle_font (totem->bvw, font); g_free (font); }
void idol_setup_preferences (Idol *idol) { GtkWidget *menu, *content_area; gboolean show_visuals, auto_resize, is_local, no_deinterlace, lock_screensaver_on_audio, auto_chapters; int connection_speed; guint i, hidden; char *visual, *font, *encoding; GList *list, *l; BvwAudioOutType audio_out; MateConfValue *value; GObject *item; static struct { const char *name; BvwVideoProperty prop; const char *label; } props[4] = { { "tpw_contrast_scale", BVW_VIDEO_CONTRAST, "tpw_contrast_label" }, { "tpw_saturation_scale", BVW_VIDEO_SATURATION, "tpw_saturation_label" }, { "tpw_bright_scale", BVW_VIDEO_BRIGHTNESS, "tpw_brightness_label" }, { "tpw_hue_scale", BVW_VIDEO_HUE, "tpw_hue_label" } }; g_return_if_fail (idol->gc != NULL); is_local = idol_display_is_local (); mateconf_client_add_dir (idol->gc, MATECONF_PREFIX, MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/auto_resize", (MateConfClientNotifyFunc) auto_resize_changed_cb, idol, NULL, NULL); mateconf_client_add_dir (idol->gc, "/desktop/mate/lockdown", MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL); /* Work-around builder dialogue not parenting properly for * On top windows */ item = gtk_builder_get_object (idol->xml, "tpw_notebook"); idol->prefs = gtk_dialog_new_with_buttons (_("Preferences"), GTK_WINDOW (idol->win), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL); gtk_container_set_border_width (GTK_CONTAINER (idol->prefs), 5); content_area = gtk_dialog_get_content_area (GTK_DIALOG (idol->prefs)); gtk_box_set_spacing (GTK_BOX (content_area), 2); gtk_widget_reparent (GTK_WIDGET (item), content_area); gtk_widget_show_all (content_area); item = gtk_builder_get_object (idol->xml, "idol_preferences_window"); gtk_widget_destroy (GTK_WIDGET (item)); g_signal_connect (G_OBJECT (idol->prefs), "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (G_OBJECT (idol->prefs), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (idol->prefs, "destroy", G_CALLBACK (gtk_widget_destroyed), &idol->prefs); /* Remember position */ idol->remember_position = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/remember_position", NULL); item = gtk_builder_get_object (idol->xml, "tpw_remember_position_checkbutton"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), idol->remember_position); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/remember_position", (MateConfClientNotifyFunc) remember_position_changed_cb, idol, NULL, NULL); /* Auto-resize */ auto_resize = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/auto_resize", NULL); item = gtk_builder_get_object (idol->xml, "tpw_display_checkbutton"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), auto_resize); bacon_video_widget_set_auto_resize (BACON_VIDEO_WIDGET (idol->bvw), auto_resize); /* Screensaver audio locking */ lock_screensaver_on_audio = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/lock_screensaver_on_audio", NULL); if (lock_screensaver_on_audio != FALSE) item = gtk_builder_get_object (idol->xml, "tpw_audio_toggle_button"); else item = gtk_builder_get_object (idol->xml, "tpw_video_toggle_button"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), TRUE); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/lock_screensaver_on_audio", (MateConfClientNotifyFunc) lock_screensaver_on_audio_changed_cb, idol, NULL, NULL); /* Disable deinterlacing */ item = gtk_builder_get_object (idol->xml, "tpw_no_deinterlace_checkbutton"); no_deinterlace = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/disable_deinterlacing", NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), no_deinterlace); bacon_video_widget_set_deinterlacing (idol->bvw, !no_deinterlace); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/disable_deinterlacing", (MateConfClientNotifyFunc) no_deinterlace_changed_cb, idol, NULL, NULL); /* Connection Speed */ connection_speed = bacon_video_widget_get_connection_speed (idol->bvw); item = gtk_builder_get_object (idol->xml, "tpw_speed_combobox"); gtk_combo_box_set_active (GTK_COMBO_BOX (item), connection_speed); /* Enable visuals */ item = gtk_builder_get_object (idol->xml, "tpw_visuals_checkbutton"); show_visuals = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/show_vfx", NULL); if (is_local == FALSE && show_visuals != FALSE) show_visuals = ask_show_visuals (idol); g_signal_handlers_disconnect_by_func (item, checkbutton2_toggled_cb, idol); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), show_visuals); idol_prefs_set_show_visuals (idol, show_visuals); g_signal_connect (item, "toggled", G_CALLBACK (checkbutton2_toggled_cb), idol); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/show_vfx", (MateConfClientNotifyFunc) show_vfx_changed_cb, idol, NULL, NULL); /* Auto-load subtitles */ item = gtk_builder_get_object (idol->xml, "tpw_auto_subtitles_checkbutton"); idol->autoload_subs = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/autoload_subtitles", NULL); g_signal_handlers_disconnect_by_func (item, checkbutton3_toggled_cb, idol); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), idol->autoload_subs); g_signal_connect (item, "toggled", G_CALLBACK (checkbutton3_toggled_cb), idol); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/autoload_subtitles", (MateConfClientNotifyFunc) autoload_subtitles_changed_cb, idol, NULL, NULL); /* Auto-load external chapters */ item = gtk_builder_get_object (idol->xml, "tpw_auto_chapters_checkbutton"); auto_chapters = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/autoload_chapters", NULL); g_signal_handlers_disconnect_by_func (item, auto_chapters_toggled_cb, idol); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), auto_chapters); g_signal_connect (item, "toggled", G_CALLBACK (auto_chapters_toggled_cb), idol); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/autoload_chapters", (MateConfClientNotifyFunc) autoload_chapters_changed_cb, idol, NULL, NULL); /* Visuals list */ list = bacon_video_widget_get_visuals_list (idol->bvw); menu = gtk_menu_new (); gtk_widget_show (menu); visual = mateconf_client_get_string (idol->gc, MATECONF_PREFIX"/visual", NULL); if (visual == NULL || strcmp (visual, "") == 0) { g_free (visual); visual = g_strdup ("goom"); } item = gtk_builder_get_object (idol->xml, "tpw_visuals_type_combobox"); i = 0; for (l = list; l != NULL; l = l->next) { const char *name = l->data; gtk_combo_box_append_text (GTK_COMBO_BOX (item), name); if (strcmp (name, visual) == 0) gtk_combo_box_set_active (GTK_COMBO_BOX (item), i); i++; } g_free (visual); /* Visualisation quality */ i = mateconf_client_get_int (idol->gc, MATECONF_PREFIX"/visual_quality", NULL); bacon_video_widget_set_visuals_quality (idol->bvw, i); item = gtk_builder_get_object (idol->xml, "tpw_visuals_size_combobox"); gtk_combo_box_set_active (GTK_COMBO_BOX (item), i); /* Brightness and all */ hidden = 0; for (i = 0; i < G_N_ELEMENTS (props); i++) { int prop_value; item = gtk_builder_get_object (idol->xml, props[i].name); prop_value = bacon_video_widget_get_video_property (idol->bvw, props[i].prop); if (prop_value >= 0) gtk_range_set_value (GTK_RANGE (item), (gdouble) prop_value); else { gtk_range_set_value (GTK_RANGE (item), (gdouble) 65535/2); gtk_widget_hide (GTK_WIDGET (item)); item = gtk_builder_get_object (idol->xml, props[i].label); gtk_widget_hide (GTK_WIDGET (item)); hidden++; } } if (hidden == G_N_ELEMENTS (props)) { item = gtk_builder_get_object (idol->xml, "tpw_bright_contr_vbox"); gtk_widget_hide (GTK_WIDGET (item)); } /* Sound output type */ item = gtk_builder_get_object (idol->xml, "tpw_sound_output_combobox"); audio_out = bacon_video_widget_get_audio_out_type (idol->bvw); gtk_combo_box_set_active (GTK_COMBO_BOX (item), audio_out); /* Subtitle font selection */ item = gtk_builder_get_object (idol->xml, "font_sel_button"); gtk_font_button_set_title (GTK_FONT_BUTTON (item), _("Select Subtitle Font")); font = mateconf_client_get_string (idol->gc, MATECONF_PREFIX"/subtitle_font", NULL); if (font && strcmp (font, "") != 0) { gtk_font_button_set_font_name (GTK_FONT_BUTTON (item), font); bacon_video_widget_set_subtitle_font (idol->bvw, font); } g_free (font); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/subtitle_font", (MateConfClientNotifyFunc) font_changed_cb, idol, NULL, NULL); /* Subtitle encoding selection */ item = gtk_builder_get_object (idol->xml, "subtitle_encoding_combo"); idol_subtitle_encoding_init (GTK_COMBO_BOX (item)); value = mateconf_client_get_without_default (idol->gc, MATECONF_PREFIX"/subtitle_encoding", NULL); /* Make sure the default is UTF-8 */ if (value != NULL) { if (mateconf_value_get_string (value) == NULL) { encoding = g_strdup ("UTF-8"); } else { encoding = g_strdup (mateconf_value_get_string (value)); if (encoding[0] == '\0') { g_free (encoding); encoding = g_strdup ("UTF-8"); } } mateconf_value_free (value); } else { encoding = g_strdup ("UTF-8"); } idol_subtitle_encoding_set (GTK_COMBO_BOX(item), encoding); if (encoding && strcasecmp (encoding, "") != 0) { bacon_video_widget_set_subtitle_encoding (idol->bvw, encoding); } g_free (encoding); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/subtitle_encoding", (MateConfClientNotifyFunc) encoding_changed_cb, idol, NULL, NULL); /* Disable keyboard shortcuts */ idol->disable_kbd_shortcuts = mateconf_client_get_bool (idol->gc, MATECONF_PREFIX"/disable_keyboard_shortcuts", NULL); mateconf_client_notify_add (idol->gc, MATECONF_PREFIX"/disable_keyboard_shortcuts", (MateConfClientNotifyFunc) disable_kbd_shortcuts_changed_cb, idol, NULL, NULL); }
void totem_setup_preferences (Totem *totem) { GtkWidget *menu, *content_area, *bvw; gboolean show_visuals, lock_screensaver_on_audio; guint i, hidden; char *visual, *font, *encoding; GList *list, *l; GtkWidget *widget; GObject *item; static struct { const char *name; BvwVideoProperty prop; const char *label; const gchar *key; const gchar *adjustment; } props[4] = { { "tpw_contrast_scale", BVW_VIDEO_CONTRAST, "tpw_contrast_label", "contrast", "tpw_contrast_adjustment" }, { "tpw_saturation_scale", BVW_VIDEO_SATURATION, "tpw_saturation_label", "saturation", "tpw_saturation_adjustment" }, { "tpw_bright_scale", BVW_VIDEO_BRIGHTNESS, "tpw_brightness_label", "brightness", "tpw_bright_adjustment" }, { "tpw_hue_scale", BVW_VIDEO_HUE, "tpw_hue_label", "hue", "tpw_hue_adjustment" } }; g_return_if_fail (totem->settings != NULL); bvw = totem_get_video_widget (totem); /* Work-around builder dialogue not parenting properly for * On top windows */ widget = PWID ("tpw_notebook"); totem->prefs = gtk_dialog_new_with_buttons (_("Preferences"), GTK_WINDOW (totem->win), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CLOSE, GTK_RESPONSE_ACCEPT, NULL); gtk_container_set_border_width (GTK_CONTAINER (totem->prefs), 5); content_area = gtk_dialog_get_content_area (GTK_DIALOG (totem->prefs)); gtk_box_set_spacing (GTK_BOX (content_area), 2); gtk_widget_reparent (widget, content_area); gtk_widget_show_all (content_area); widget = PWID ("totem_preferences_window"); gtk_widget_destroy (widget); g_signal_connect (G_OBJECT (totem->prefs), "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (G_OBJECT (totem->prefs), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (totem->prefs, "destroy", G_CALLBACK (gtk_widget_destroyed), &totem->prefs); /* Remember position */ item = POBJ ("tpw_remember_position_checkbutton"); g_settings_bind (totem->settings, "remember-position", item, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, "remember-position", totem, "remember-position", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); /* Auto-resize */ item = POBJ ("tpw_display_checkbutton"); g_settings_bind (totem->settings, "auto-resize", item, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, "auto-resize", bvw, "auto-resize", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); /* Screensaver audio locking */ lock_screensaver_on_audio = g_settings_get_boolean (totem->settings, "lock-screensaver-on-audio"); if (lock_screensaver_on_audio != FALSE) item = POBJ ("tpw_audio_toggle_button"); else item = POBJ ("tpw_video_toggle_button"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), TRUE); g_signal_connect (totem->settings, "changed::lock-screensaver-on-audio", (GCallback) lock_screensaver_on_audio_changed_cb, totem); /* Disable deinterlacing */ item = POBJ ("tpw_no_deinterlace_checkbutton"); g_settings_bind (totem->settings, "disable-deinterlacing", item, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, "disable-deinterlacing", bvw, "deinterlacing", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY | G_SETTINGS_BIND_INVERT_BOOLEAN); /* Enable visuals */ item = POBJ ("tpw_visuals_checkbutton"); show_visuals = g_settings_get_boolean (totem->settings, "show-visualizations"); g_signal_handlers_disconnect_by_func (item, checkbutton2_toggled_cb, totem); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item), show_visuals); totem_prefs_set_show_visuals (totem, show_visuals); g_signal_connect (item, "toggled", G_CALLBACK (checkbutton2_toggled_cb), totem); g_signal_connect (totem->settings, "changed::show-visualizations", (GCallback) show_vfx_changed_cb, totem); /* Auto-load subtitles */ item = POBJ ("tpw_auto_subtitles_checkbutton"); g_settings_bind (totem->settings, "autoload-subtitles", item, "active", G_SETTINGS_BIND_DEFAULT); /* Auto-load external chapters */ item = POBJ ("tpw_auto_chapters_checkbutton"); g_settings_bind (totem->settings, "autoload-chapters", item, "active", G_SETTINGS_BIND_DEFAULT); /* Visuals list */ list = bacon_video_widget_get_visualization_list (totem->bvw); menu = gtk_menu_new (); gtk_widget_show (menu); visual = g_settings_get_string (totem->settings, "visualization-name"); if (*visual == '\0') { g_free (visual); visual = g_strdup ("goom"); } item = POBJ ("tpw_visuals_type_liststore"); i = 0; for (l = list; l != NULL; l = l->next) { const char *name = l->data; GtkTreeIter iter; gtk_list_store_append (GTK_LIST_STORE (item), &iter); gtk_list_store_set (GTK_LIST_STORE (item), &iter, 0, name, -1); if (strcmp (name, visual) == 0) { GObject *combobox; combobox = POBJ ("tpw_visuals_type_combobox"); gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), i); } i++; } g_free (visual); /* Visualisation quality. We have to bind the writability separately, as the sensitivity of the size combobox is also affected by whether * visualizations are enabled. */ item = POBJ ("tpw_visuals_size_combobox"); g_settings_bind (totem->settings, "visualization-quality", bvw, "visualization-quality", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); g_settings_bind_with_mapping (totem->settings, "visualization-quality", item, "active", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY, (GSettingsBindGetMapping) int_enum_get_mapping, (GSettingsBindSetMapping) int_enum_set_mapping, g_type_class_ref (BVW_TYPE_VISUALIZATION_QUALITY), (GDestroyNotify) g_type_class_unref); g_signal_connect (totem->settings, "writable-changed::visualization-quality", (GCallback) visualization_quality_writable_changed_cb, totem); /* Brightness and all */ hidden = 0; for (i = 0; i < G_N_ELEMENTS (props); i++) { int prop_value; item = POBJ (props[i].adjustment); g_settings_bind (totem->settings, props[i].key, item, "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, props[i].key, bvw, props[i].key, G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); prop_value = bacon_video_widget_get_video_property (totem->bvw, props[i].prop); if (prop_value < 0) { /* The property's unsupported, so hide the widget and its label */ item = POBJ (props[i].name); gtk_range_set_value (GTK_RANGE (item), (gdouble) 65535/2); gtk_widget_hide (GTK_WIDGET (item)); item = POBJ (props[i].label); gtk_widget_hide (GTK_WIDGET (item)); hidden++; } } /* If all the properties have been hidden, hide their section box */ if (hidden == G_N_ELEMENTS (props)) { item = POBJ ("tpw_bright_contr_vbox"); gtk_widget_hide (GTK_WIDGET (item)); } /* Sound output type */ item = POBJ ("tpw_sound_output_combobox"); g_settings_bind (totem->settings, "audio-output-type", bvw, "audio-output-type", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); g_settings_bind_with_mapping (totem->settings, "audio-output-type", item, "active", G_SETTINGS_BIND_DEFAULT, (GSettingsBindGetMapping) int_enum_get_mapping, (GSettingsBindSetMapping) int_enum_set_mapping, g_type_class_ref (BVW_TYPE_AUDIO_OUTPUT_TYPE), (GDestroyNotify) g_type_class_unref); /* Subtitle font selection */ item = POBJ ("font_sel_button"); gtk_font_button_set_title (GTK_FONT_BUTTON (item), _("Select Subtitle Font")); font = g_settings_get_string (totem->settings, "subtitle-font"); if (*font != '\0') { gtk_font_button_set_font_name (GTK_FONT_BUTTON (item), font); bacon_video_widget_set_subtitle_font (totem->bvw, font); } g_free (font); g_signal_connect (totem->settings, "changed::subtitle-font", (GCallback) font_changed_cb, totem); /* Subtitle encoding selection */ item = POBJ ("subtitle_encoding_combo"); totem_subtitle_encoding_init (GTK_COMBO_BOX (item)); encoding = g_settings_get_string (totem->settings, "subtitle-encoding"); /* Make sure the default is UTF-8 */ if (*encoding == '\0') { g_free (encoding); encoding = g_strdup ("UTF-8"); } totem_subtitle_encoding_set (GTK_COMBO_BOX(item), encoding); if (encoding && strcasecmp (encoding, "") != 0) { bacon_video_widget_set_subtitle_encoding (totem->bvw, encoding); } g_free (encoding); g_signal_connect (totem->settings, "changed::subtitle-encoding", (GCallback) encoding_changed_cb, totem); /* Disable keyboard shortcuts */ totem->disable_kbd_shortcuts = g_settings_get_boolean (totem->settings, "disable-keyboard-shortcuts"); g_signal_connect (totem->settings, "changed::disable-keyboard-shortcuts", (GCallback) disable_kbd_shortcuts_changed_cb, totem); g_object_unref (bvw); }
void totem_setup_preferences (Totem *totem) { GtkWidget *bvw; guint i, hidden; char *font, *encoding; GObject *item; GtkWidget *content_area; static struct { const char *name; BvwVideoProperty prop; const char *label; const gchar *key; const gchar *adjustment; } props[4] = { { "tpw_contrast_scale", BVW_VIDEO_CONTRAST, "tpw_contrast_label", "contrast", "tpw_contrast_adjustment" }, { "tpw_saturation_scale", BVW_VIDEO_SATURATION, "tpw_saturation_label", "saturation", "tpw_saturation_adjustment" }, { "tpw_bright_scale", BVW_VIDEO_BRIGHTNESS, "tpw_brightness_label", "brightness", "tpw_bright_adjustment" }, { "tpw_hue_scale", BVW_VIDEO_HUE, "tpw_hue_label", "hue", "tpw_hue_adjustment" } }; g_return_if_fail (totem->settings != NULL); g_return_if_fail (totem->prefs != NULL); content_area = POBJ ("tpw_dialog_vbox"); g_return_if_fail (content_area != NULL); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (totem->prefs))), content_area); bvw = totem_object_get_video_widget (totem); g_signal_connect (G_OBJECT (totem->prefs), "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (G_OBJECT (totem->prefs), "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (totem->prefs, "destroy", G_CALLBACK (gtk_widget_destroyed), &totem->prefs); /* Disable deinterlacing */ item = POBJ ("tpw_no_deinterlace_checkbutton"); g_settings_bind (totem->settings, "disable-deinterlacing", item, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, "disable-deinterlacing", bvw, "deinterlacing", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY | G_SETTINGS_BIND_INVERT_BOOLEAN); /* Auto-load subtitles */ item = POBJ ("tpw_auto_subtitles_checkbutton"); g_settings_bind (totem->settings, "autoload-subtitles", item, "active", G_SETTINGS_BIND_DEFAULT); /* Auto-load external chapters */ item = POBJ ("tpw_auto_chapters_checkbutton"); g_settings_bind (totem->settings, "autoload-chapters", item, "active", G_SETTINGS_BIND_DEFAULT); /* Plugins button */ item = POBJ ("tpw_plugins_button"); g_signal_connect (G_OBJECT (item), "clicked", G_CALLBACK (plugin_button_clicked_cb), totem); /* Brightness and all */ hidden = 0; for (i = 0; i < G_N_ELEMENTS (props); i++) { int prop_value; item = POBJ (props[i].adjustment); g_settings_bind (totem->settings, props[i].key, item, "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind (totem->settings, props[i].key, bvw, props[i].key, G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); prop_value = bacon_video_widget_get_video_property (totem->bvw, props[i].prop); if (prop_value < 0) { /* The property's unsupported, so hide the widget and its label */ item = POBJ (props[i].name); gtk_range_set_value (GTK_RANGE (item), (gdouble) 65535/2); gtk_widget_hide (GTK_WIDGET (item)); item = POBJ (props[i].label); gtk_widget_hide (GTK_WIDGET (item)); hidden++; } } /* If all the properties have been hidden, hide their section box */ if (hidden == G_N_ELEMENTS (props)) { item = POBJ ("tpw_bright_contr_vbox"); gtk_widget_hide (GTK_WIDGET (item)); } /* Sound output type */ item = POBJ ("tpw_sound_output_combobox"); g_settings_bind (totem->settings, "audio-output-type", bvw, "audio-output-type", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY); g_settings_bind_with_mapping (totem->settings, "audio-output-type", item, "active", G_SETTINGS_BIND_DEFAULT, (GSettingsBindGetMapping) int_enum_get_mapping, (GSettingsBindSetMapping) int_enum_set_mapping, g_type_class_ref (BVW_TYPE_AUDIO_OUTPUT_TYPE), (GDestroyNotify) g_type_class_unref); /* Subtitle font selection */ item = POBJ ("font_sel_button"); gtk_font_button_set_title (GTK_FONT_BUTTON (item), _("Select Subtitle Font")); font = g_settings_get_string (totem->settings, "subtitle-font"); if (*font != '\0') { gtk_font_button_set_font_name (GTK_FONT_BUTTON (item), font); bacon_video_widget_set_subtitle_font (totem->bvw, font); } g_free (font); g_signal_connect (totem->settings, "changed::subtitle-font", (GCallback) font_changed_cb, totem); /* Subtitle encoding selection */ item = POBJ ("subtitle_encoding_combo"); totem_subtitle_encoding_init (GTK_COMBO_BOX (item)); encoding = g_settings_get_string (totem->settings, "subtitle-encoding"); /* Make sure the default is UTF-8 */ if (*encoding == '\0') { g_free (encoding); encoding = g_strdup ("UTF-8"); } totem_subtitle_encoding_set (GTK_COMBO_BOX(item), encoding); if (encoding && strcasecmp (encoding, "") != 0) { bacon_video_widget_set_subtitle_encoding (totem->bvw, encoding); } g_free (encoding); g_signal_connect (totem->settings, "changed::subtitle-encoding", (GCallback) encoding_changed_cb, totem); /* Disable keyboard shortcuts */ totem->disable_kbd_shortcuts = g_settings_get_boolean (totem->settings, "disable-keyboard-shortcuts"); g_signal_connect (totem->settings, "changed::disable-keyboard-shortcuts", (GCallback) disable_kbd_shortcuts_changed_cb, totem); g_object_unref (bvw); }