static void ok_clicked_cb (GtkWidget *widget, DialogData *data) { GList *file_list; GFile *destination; GError *error = NULL; gboolean import; file_list = get_selected_file_list (data); destination = gth_import_preferences_get_destination (); if (! gth_import_task_check_free_space (destination, file_list, &error)) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not import the files"), error); g_clear_error (&error); import = FALSE; } else import = TRUE; _g_object_unref (destination); _g_object_list_unref (file_list); if (! import) return; data->import = TRUE; close_dialog (NULL, data); }
static void gth_import_preferences_dialog_init (GthImportPreferencesDialog *self) { GtkWidget *content; GFile *destination; GthSubfolderType subfolder_type; char *custom_format; self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GTH_TYPE_IMPORT_PREFERENCES_DIALOG, GthImportPreferencesDialogPrivate); self->priv->builder = _gtk_builder_new_from_file ("import-preferences.ui", "importer"); self->priv->settings = g_settings_new (GTHUMB_IMPORTER_SCHEMA); self->priv->help_visible = FALSE; gtk_window_set_title (GTK_WINDOW (self), _("Preferences")); gtk_window_set_resizable (GTK_WINDOW (self), FALSE); gtk_window_set_modal (GTK_WINDOW (self), TRUE); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), 5); gtk_container_set_border_width (GTK_CONTAINER (self), 5); content = _gtk_builder_get_widget (self->priv->builder, "import_preferences"); gtk_container_set_border_width (GTK_CONTAINER (content), 5); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (self))), content, TRUE, TRUE, 0); /* subfolder type */ self->priv->subfolder_type_list = _gtk_combo_box_new_with_texts (_("File date"), _("Current date"), NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->subfolder_type_list), 0); gtk_widget_show (self->priv->subfolder_type_list); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("subfolder_type_box")), self->priv->subfolder_type_list, TRUE, TRUE, 0); /*gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("subfolder_label")), self->priv->subfolder_type_list);*/ /* subfolder format */ self->priv->subfolder_format_list = _gtk_combo_box_new_with_texts (_("year-month-day"), _("year-month"), _("year"), _("custom format"), NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->subfolder_format_list), 0); gtk_widget_show (self->priv->subfolder_format_list); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("subfolder_type_box")), self->priv->subfolder_format_list, TRUE, TRUE, 0); gtk_dialog_add_button (GTK_DIALOG (self), _GTK_LABEL_CLOSE, GTK_RESPONSE_CLOSE); /* set widget data */ destination = gth_import_preferences_get_destination (); gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (GET_WIDGET ("destination_filechooserbutton")), destination, NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("single_subfolder_checkbutton")), g_settings_get_boolean (self->priv->settings, PREF_IMPORTER_SUBFOLDER_SINGLE)); subfolder_type = g_settings_get_enum (self->priv->settings, PREF_IMPORTER_SUBFOLDER_TYPE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("autosubfolder_checkbutton")), subfolder_type != GTH_SUBFOLDER_TYPE_NONE); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->subfolder_type_list), (subfolder_type == 0) ? 0 : subfolder_type - 1); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->subfolder_format_list), g_settings_get_enum (self->priv->settings, PREF_IMPORTER_SUBFOLDER_FORMAT)); custom_format = g_settings_get_string (self->priv->settings, PREF_IMPORTER_SUBFOLDER_CUSTOM_FORMAT); if (custom_format != NULL) { gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("custom_format_entry")), custom_format); g_free (custom_format); } update_destination (self); g_signal_connect (self->priv->subfolder_type_list, "changed", G_CALLBACK (subfolder_type_list_changed_cb), self); g_signal_connect (self->priv->subfolder_format_list, "changed", G_CALLBACK (subfolder_format_list_changed_cb), self); g_signal_connect (GET_WIDGET ("destination_filechooserbutton"), "selection_changed", G_CALLBACK (destination_selection_changed_cb), self); g_signal_connect (GET_WIDGET ("single_subfolder_checkbutton"), "toggled", G_CALLBACK (subfolder_hierarchy_checkbutton_toggled_cb), self); g_signal_connect (self, "map-event", G_CALLBACK (preferences_dialog_map_event_cb), self); g_signal_connect (self, "delete-event", G_CALLBACK (preferences_dialog_delete_event_cb), self); g_signal_connect (GET_WIDGET ("autosubfolder_checkbutton"), "toggled", G_CALLBACK (autosubfolder_checkbutton_toggled_cb), self); g_signal_connect (GET_WIDGET ("custom_format_entry"), "changed", G_CALLBACK (custom_format_entry_changed_cb), self); g_signal_connect (GET_WIDGET ("custom_format_entry"), "icon-press", G_CALLBACK (custom_format_entry_icon_press_cb), self); g_signal_connect (self, "response", G_CALLBACK (dialog_response_cb), self); g_object_unref (destination); }
static void import_dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CANCEL: gth_file_list_cancel (GTH_FILE_LIST (data->file_list), (DataFunc) gtk_widget_destroy, data->dialog); break; case GTK_RESPONSE_OK: { GtkTreeIter iter; FlickrPhotoset *photoset; GList *file_list; if (! gtk_combo_box_get_active_iter (GTK_COMBO_BOX (GET_WIDGET ("photoset_combobox")), &iter)) { gtk_widget_set_sensitive (GET_WIDGET ("download_button"), FALSE); return; } gtk_tree_model_get (GTK_TREE_MODEL (GET_WIDGET ("photoset_liststore")), &iter, PHOTOSET_DATA_COLUMN, &photoset, -1); file_list = get_files_to_download (data); if (file_list != NULL) { GSettings *settings; GFile *destination; gboolean single_subfolder; GthSubfolderType subfolder_type; GthSubfolderFormat subfolder_format; char *custom_format; GthTask *task; settings = g_settings_new (GTHUMB_IMPORTER_SCHEMA); destination = gth_import_preferences_get_destination (); subfolder_type = g_settings_get_enum (settings, PREF_IMPORTER_SUBFOLDER_TYPE); subfolder_format = g_settings_get_enum (settings, PREF_IMPORTER_SUBFOLDER_FORMAT); single_subfolder = g_settings_get_boolean (settings, PREF_IMPORTER_SUBFOLDER_SINGLE); custom_format = g_settings_get_string (settings, PREF_IMPORTER_SUBFOLDER_CUSTOM_FORMAT); task = gth_import_task_new (data->browser, file_list, destination, subfolder_type, subfolder_format, single_subfolder, custom_format, (photoset->title != NULL ? photoset->title : ""), NULL, FALSE, FALSE, FALSE); gth_browser_exec_task (data->browser, task, FALSE); gtk_widget_destroy (data->dialog); g_object_unref (task); _g_object_unref (destination); g_object_unref (settings); } _g_object_list_unref (file_list); g_object_unref (photoset); } break; default: break; } }
static void import_dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) { DialogData *data = user_data; switch (response_id) { case GTK_RESPONSE_DELETE_EVENT: case GTK_RESPONSE_CANCEL: gth_file_list_cancel (GTH_FILE_LIST (data->file_list), (DataFunc) gtk_widget_destroy, data->dialog); break; case GTK_RESPONSE_OK: { GtkTreeIter iter; PicasaWebAlbum *album; GList *file_list; if (! gtk_combo_box_get_active_iter (GTK_COMBO_BOX (GET_WIDGET ("album_combobox")), &iter)) { gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, FALSE); return; } gtk_tree_model_get (GTK_TREE_MODEL (GET_WIDGET ("album_liststore")), &iter, ALBUM_DATA_COLUMN, &album, -1); file_list = get_files_to_download (data); if (file_list != NULL) { GFile *destination; GError *error = NULL; GSettings *settings; gboolean single_subfolder; GthSubfolderType subfolder_type; GthSubfolderFormat subfolder_format; char *custom_format; char **tags; int i; GthTask *task; destination = gth_import_preferences_get_destination (); if (! gth_import_task_check_free_space (destination, file_list, &error)) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not import the files"), error); g_clear_error (&error); _g_object_unref (destination); _g_object_list_unref (file_list); g_object_unref (album); return; } settings = g_settings_new (GTHUMB_IMPORTER_SCHEMA); subfolder_type = g_settings_get_enum (settings, PREF_IMPORTER_SUBFOLDER_TYPE); subfolder_format = g_settings_get_enum (settings, PREF_IMPORTER_SUBFOLDER_FORMAT); single_subfolder = g_settings_get_boolean (settings, PREF_IMPORTER_SUBFOLDER_SINGLE); custom_format = g_settings_get_string (settings, PREF_IMPORTER_SUBFOLDER_CUSTOM_FORMAT); tags = g_strsplit ((album->keywords != NULL ? album->keywords : ""), ",", -1); for (i = 0; tags[i] != NULL; i++) tags[i] = g_strstrip (tags[i]); task = gth_import_task_new (data->browser, file_list, destination, subfolder_type, subfolder_format, single_subfolder, custom_format, (album->title != NULL ? album->title : ""), tags, FALSE, FALSE, FALSE); gth_browser_exec_task (data->browser, task, GTH_TASK_FLAGS_DEFAULT); gtk_widget_destroy (data->dialog); g_object_unref (task); g_strfreev (tags); g_object_unref (settings); _g_object_unref (destination); } _g_object_list_unref (file_list); g_object_unref (album); } break; default: break; } }
static void destroy_dialog (gpointer user_data) { DialogData *data = user_data; gboolean delete_imported; g_signal_handler_disconnect (gth_main_get_default_monitor (), data->entry_points_changed_id); delete_imported = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("delete_checkbutton"))); g_settings_set_boolean (data->settings, PREF_PHOTO_IMPORTER_DELETE_FROM_DEVICE, delete_imported); if (data->import) { GSettings *importer_settings; GFile *destination; gboolean single_subfolder; GthSubfolderType subfolder_type; GthSubfolderFormat subfolder_format; char *custom_format; GList *file_list; importer_settings = g_settings_new (GTHUMB_IMPORTER_SCHEMA); destination = gth_import_preferences_get_destination (); single_subfolder = g_settings_get_boolean (importer_settings, PREF_IMPORTER_SUBFOLDER_SINGLE); subfolder_type = g_settings_get_enum (importer_settings, PREF_IMPORTER_SUBFOLDER_TYPE); subfolder_format = g_settings_get_enum (importer_settings, PREF_IMPORTER_SUBFOLDER_FORMAT); custom_format = g_settings_get_string (importer_settings, PREF_IMPORTER_SUBFOLDER_CUSTOM_FORMAT); file_list = get_selected_file_list (data); if (file_list != NULL) { char **tags; GthTask *task; tags = gth_tags_entry_get_tags (GTH_TAGS_ENTRY (data->tags_entry), TRUE); task = gth_import_task_new (data->browser, file_list, destination, subfolder_type, subfolder_format, single_subfolder, custom_format, gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("event_entry"))), tags, delete_imported, FALSE, g_settings_get_boolean (data->settings, PREF_PHOTO_IMPORTER_ADJUST_ORIENTATION)); gth_browser_exec_task (data->browser, task, FALSE); g_strfreev (tags); g_object_unref (task); } _g_object_list_unref (file_list); g_free (custom_format); _g_object_unref (destination); g_object_unref (importer_settings); } gtk_widget_destroy (data->dialog); gth_browser_set_dialog (data->browser, "photo_importer", NULL); g_object_unref (data->vfs_source); g_object_unref (data->settings); g_object_unref (data->builder); _g_object_unref (data->source); _g_object_unref (data->last_source); _g_object_unref (data->cancellable); _g_object_list_unref (data->files); _g_string_list_free (data->general_tests); if (! data->import && gth_browser_get_close_with_task (data->browser)) gth_window_close (GTH_WINDOW (data->browser)); g_free (data); }