static void gth_slideshow_preferences_construct (GthSlideshowPreferences *self, const char *current_transition, gboolean automatic, int delay, gboolean wrap_around, gboolean random_order) { GtkListStore *model; GtkCellRenderer *renderer; GList *transitions; int i, i_active; GList *scan; GtkTreeIter iter; self->priv->builder = _gtk_builder_new_from_file ("slideshow-preferences.ui", "slideshow"); gtk_container_add (GTK_CONTAINER (self), _gtk_builder_get_widget (self->priv->builder, "preferences_page")); model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); self->priv->transition_combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (model)); g_object_unref (model); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (self->priv->transition_combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (self->priv->transition_combobox), renderer, "text", TRANSITION_COLUMN_DISPLAY_NAME, NULL); transitions = gth_main_get_registered_objects (GTH_TYPE_TRANSITION); for (i = 0, i_active = 0, scan = transitions; scan; scan = scan->next, i++) { GthTransition *transition = scan->data; if (g_strcmp0 (gth_transition_get_id (transition), current_transition) == 0) i_active = i; gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, TRANSITION_COLUMN_ID, gth_transition_get_id (transition), TRANSITION_COLUMN_DISPLAY_NAME, gth_transition_get_display_name (transition), -1); } if (g_strcmp0 ("random", current_transition) == 0) i_active = i; gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, TRANSITION_COLUMN_ID, "random", TRANSITION_COLUMN_DISPLAY_NAME, _("Random"), -1); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->transition_combobox), i_active); gtk_widget_show (self->priv->transition_combobox); gtk_box_pack_start (GTK_BOX (_gtk_builder_get_widget (self->priv->builder, "transition_box")), self->priv->transition_combobox, FALSE, FALSE, 0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_gtk_builder_get_widget (self->priv->builder, "automatic_checkbutton")), automatic); gtk_spin_button_set_value (GTK_SPIN_BUTTON (_gtk_builder_get_widget (self->priv->builder, "change_delay_spinbutton")), ((float) delay) / 1000.0); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_gtk_builder_get_widget (self->priv->builder, "wrap_around_checkbutton")), wrap_around); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (_gtk_builder_get_widget (self->priv->builder, "random_order_checkbutton")), random_order); /* signals */ g_signal_connect (_gtk_builder_get_widget (self->priv->builder, "personalize_checkbutton"), "toggled", G_CALLBACK (personalize_checkbutton_toggled_cb), self); g_signal_connect (_gtk_builder_get_widget (self->priv->builder, "automatic_checkbutton"), "toggled", G_CALLBACK (automatic_checkbutton_toggled_cb), self); g_signal_connect (_gtk_builder_get_widget (self->priv->builder, "remove_file_button"), "clicked", G_CALLBACK (remove_file_button_clicked_cb), self); g_signal_connect (_gtk_builder_get_widget (self->priv->builder, "add_file_button"), "clicked", G_CALLBACK (add_file_button_clicked_cb), self); }
void gth_browser_activate_action_view_slideshow (GtkAction *action, GthBrowser *browser) { GList *items; GList *file_list; GthProjector *projector; GtkWidget *slideshow; GthFileData *location; char *transition_id; GList *transitions = NULL; items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); if ((items == NULL) || (items->next == NULL)) file_list = gth_file_store_get_visibles (GTH_FILE_STORE (gth_browser_get_file_store (browser))); else file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); projector = NULL; #ifdef HAVE_CLUTTER if (ClutterInitResult == CLUTTER_INIT_SUCCESS) projector = &clutter_projector; #endif /* HAVE_CLUTTER */ if (projector == NULL) projector = &default_projector; slideshow = gth_slideshow_new (projector, browser, file_list); location = gth_browser_get_location_data (browser); if (g_file_info_get_attribute_boolean (location->info, "slideshow::personalize")) { gth_slideshow_set_delay (GTH_SLIDESHOW (slideshow), g_file_info_get_attribute_int32 (location->info, "slideshow::delay")); gth_slideshow_set_automatic (GTH_SLIDESHOW (slideshow), g_file_info_get_attribute_boolean (location->info, "slideshow::automatic")); gth_slideshow_set_wrap_around (GTH_SLIDESHOW (slideshow), g_file_info_get_attribute_boolean (location->info, "slideshow::wrap-around")); transition_id = g_strdup (g_file_info_get_attribute_string (location->info, "slideshow::transition")); } else { gth_slideshow_set_delay (GTH_SLIDESHOW (slideshow), (guint) (1000.0 * eel_gconf_get_float (PREF_SLIDESHOW_CHANGE_DELAY, 5.0))); gth_slideshow_set_automatic (GTH_SLIDESHOW (slideshow), eel_gconf_get_boolean (PREF_SLIDESHOW_AUTOMATIC, TRUE)); gth_slideshow_set_wrap_around (GTH_SLIDESHOW (slideshow), eel_gconf_get_boolean (PREF_SLIDESHOW_WRAP_AROUND, FALSE)); transition_id = eel_gconf_get_string (PREF_SLIDESHOW_TRANSITION, DEFAULT_TRANSITION); } if (g_file_info_get_attribute_status (location->info, "slideshow::playlist") == G_FILE_ATTRIBUTE_STATUS_SET) gth_slideshow_set_playlist (GTH_SLIDESHOW (slideshow), g_file_info_get_attribute_stringv (location->info, "slideshow::playlist")); if (strcmp (transition_id, "random") == 0) { GList *scan; transitions = gth_main_get_registered_objects (GTH_TYPE_TRANSITION); for (scan = transitions; scan; scan = scan->next) { GthTransition *transition = scan->data; if (strcmp (gth_transition_get_id (transition), "none") == 0) { transitions = g_list_remove_link (transitions, scan); _g_object_list_unref (scan); break; } } } else { GthTransition *transition = gth_main_get_registered_object (GTH_TYPE_TRANSITION, transition_id); if (transition != NULL) transitions = g_list_append (NULL, transition); else transitions = NULL; } gth_slideshow_set_transitions (GTH_SLIDESHOW (slideshow), transitions); gtk_window_fullscreen (GTK_WINDOW (slideshow)); /*gtk_window_set_default_size (GTK_WINDOW (slideshow), 700, 700);*/ gtk_window_present (GTK_WINDOW (slideshow)); _g_object_list_unref (transitions); g_free (transition_id); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }