![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "common/film.h"#include "caches/pixelpipe_cache_alloc.h"#include "common/file_location.h"#include "common/exif.h"#include "gui/import.h"#include "common/image.h"#include "caches/image_cache.h"#include "common/image_extensions.h"#include "imageio/imageio_core.h"#include "common/metadata.h"#include "common/datetime.h"#include "common/conf.h"#include "control/control.h"#include "control/signal.h"#include "control/jobs/import_jobs.h"#include "widgets/gtkentry.h"#include <gio/gio.h>#include <librsvg/rsvg.h>#include "common/utility.h"#include "common/logging.h"#include "gui/application.h"#include "widgets/accelerators.h"#include "widgets/popup.h"#include "widgets/widget_settings.h"#include "widgets/widget_style.h"#include <librsvg/rsvg-cairo.h>
Include dependency graph for import.c:Go to the source code of this file.
Data Structures | |
| struct | dt_import_scan_state_t |
| struct | dt_import_t |
| struct | dt_lib_import_t |
Typedefs | |
| typedef struct dt_import_scan_state_t | dt_import_scan_state_t |
| typedef enum dt_import_filter_type_t | dt_import_filter_type_t |
| typedef struct dt_import_t | dt_import_t |
| typedef enum exif_fields_t | exif_fields_t |
| typedef struct dt_lib_import_t | dt_lib_import_t |
Enumerations | |
| enum | dt_import_filter_type_t { DT_IMPORT_FILTER_ALL = 0 , DT_IMPORT_FILTER_RAW , DT_IMPORT_FILTER_RASTER } |
| enum | exif_fields_t { EXIF_DATETIME_FIELD = 0 , EXIF_SEPARATOR1_FIELD , EXIF_MODEL_FIELD , EXIF_MAKER_FIELD , EXIF_LENS_FIELD , EXIF_FOCAL_LENS_FIELD , EXIF_SEPARATOR2_FIELD , EXIF_EXPOSURE_FIELD , EXIF_SEPARATOR3_FIELD , EXIF_INLIB_FIELD , EXIF_PATH_FIELD , EXIF_LAST_FIELD } |
Functions | |
| static dt_import_t * | dt_import_init (dt_lib_import_t *d, const uint32_t generation) |
| static void | dt_import_cleanup (void *import) |
| static dt_lib_import_t * | _init () |
| static void | _cleanup (dt_lib_import_t *d) |
| static void | gui_init (dt_lib_import_t *d) |
| static void | gui_cleanup (dt_lib_import_t *d) |
| static void | _set_test_path (dt_lib_import_t *d, dt_image_t *img) |
| static void | _do_select_all (dt_lib_import_t *d) |
| static void | _do_select_none (dt_lib_import_t *d) |
| static void | _do_select_new (dt_lib_import_t *d) |
| static gboolean | _selection_changed_scan_trigger (gpointer user_data) |
| Trigger recursive import candidate detection after selection settle time. | |
| static void | _recurse_folder (GVfs *vfs, GFile *folder, dt_import_t *const import) |
| static gboolean | _scan_still_valid (dt_import_t *const import) |
| static void | _gtk_label_set_and_free (GtkWidget *widget, gchar *label) |
| static gboolean | _import_passes_filter (const dt_import_filter_type_t filter_type, const gchar *pathname) |
| static void | _filter_document (GVfs *vfs, GFile *document, dt_import_t *import) |
| static void | _report_scan_error (dt_import_t *const import, GFile *folder, GError *error) |
| static void | _recurse_selection (GSList *selection, dt_import_t *const import) |
| static int32_t | dt_get_selected_files (dt_import_t *import) |
| static int32_t | _get_selected_files_job (dt_job_t *job) |
| void | dt_control_get_selected_files (dt_lib_import_t *d, gboolean destroy_window) |
| static GdkPixbuf * | _import_get_thumbnail (const gchar *filename, const int width, const int height, const gboolean valid_exif, dt_image_t *img) |
| void | _dt_check_basedir () |
| static void | _do_select_all_clicked (GtkWidget *widget, dt_lib_import_t *d) |
| static void | _do_select_none_clicked (GtkWidget *widget, dt_lib_import_t *d) |
| static void | _do_select_new_clicked (GtkWidget *widget, dt_lib_import_t *d) |
| static void | _resize_dialog (GtkWidget *widget) |
| static void | _build_filter (GtkFileFilter *filter, const gchar *extension) |
| static void | _file_filters (dt_lib_import_t *d) |
| static GtkWidget * | _attach_aligned_grid_item (GtkWidget *grid, const int row, const int column, const char *label, const GtkAlign align, const gboolean fixed_width, const gboolean full_width) |
| static GtkWidget * | _attach_grid_separator (GtkWidget *grid, const int row, const int length) |
| static int | _is_in_library_by_path (const gchar *folder, const char *filename) |
| static int | _is_in_library_by_metadata (GFile *file) |
| static void | _exif_text_set_and_free (dt_lib_import_t *d, exif_fields_t field, gchar *label) |
| static void | update_preview_cb (GtkFileChooser *file_chooser, gpointer userdata) |
| static void | _update_directory (GtkWidget *file_chooser, dt_lib_import_t *d) |
| static void | _set_help_string (dt_lib_import_t *d, gboolean copy) |
| static void | _set_selected_files_label (dt_lib_import_t *d, const guint elements, const guint scan_errors) |
| static void | _filelist_changed_callback (gpointer instance, GList *files, guint elements, guint finished, guint scan_errors, gpointer user_data) |
| static void | _selection_changed (GtkWidget *filechooser, dt_lib_import_t *d) |
| static void | _copy_toggled_callback (GtkWidget *combobox, dt_lib_import_t *d) |
| static void | _jobcode_changed (GtkFileChooserButton *widget, dt_lib_import_t *d) |
| static void | _base_dir_changed (GtkFileChooserButton *self, dt_lib_import_t *d) |
| static void | _project_dir_changed (GtkWidget *widget, dt_lib_import_t *d) |
| static void | _filename_changed (GtkWidget *widget, dt_lib_import_t *d) |
| static void | _update_date (GtkCalendar *calendar, GtkWidget *entry) |
| static void | _datetime_changed_callback (GtkEntry *entry, dt_lib_import_t *d) |
| static void | _file_activated (GtkFileChooser *chooser, GtkDialog *dialog) |
| static void | _process_file_list (gpointer instance, GList *files, int elements, gboolean finished, guint scan_errors, gpointer user_data) |
| Import a list of file by copying them or not, and adding them to database. | |
| void | _file_chooser_response (GtkDialog *dialog, gint response_id, dt_lib_import_t *d) |
| void | dt_images_import () |
| typedef enum dt_import_filter_type_t dt_import_filter_type_t |
| typedef struct dt_import_scan_state_t dt_import_scan_state_t |
| typedef struct dt_import_t dt_import_t |
| typedef struct dt_lib_import_t dt_lib_import_t |
| typedef enum exif_fields_t exif_fields_t |
| enum exif_fields_t |
|
static |
Definition at line 649 of file import.c.
References dt_gui_add_class(), and row.
Referenced by gui_init().
|
static |
Definition at line 1038 of file import.c.
References _set_test_path(), d, and dt_conf_set_string().
Referenced by gui_init().
|
static |
Definition at line 575 of file import.c.
References dt_free, and extension().
Referenced by _file_filters().
|
static |
Definition at line 1617 of file import.c.
References _filelist_changed_callback(), _process_file_list(), d, dt_control_signal_get_global(), DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, dt_free, dt_pthread_mutex_destroy(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), FALSE, IS_NULL_PTR, and TRUE.
Referenced by _file_chooser_response(), and _process_file_list().
|
static |
Definition at line 1022 of file import.c.
References _set_help_string(), _set_test_path(), d, dt_conf_set_bool(), and state.
Referenced by gui_init().
|
static |
Definition at line 1072 of file import.c.
References _set_test_path(), d, dt_datetime_entry_to_exif(), and DT_DATETIME_LENGTH.
Referenced by gui_init().
|
static |
Definition at line 1483 of file import.c.
References d.
Referenced by _do_select_all_clicked(), and _do_select_new().
|
static |
Definition at line 551 of file import.c.
References _do_select_all(), and d.
Referenced by gui_init().
|
static |
Definition at line 1488 of file import.c.
References _do_select_all(), _is_in_library_by_metadata(), _is_in_library_by_path(), d, dt_free, and IS_NULL_PTR.
Referenced by _do_select_new_clicked().
|
static |
Definition at line 561 of file import.c.
References _do_select_new(), and d.
Referenced by gui_init().
|
static |
|
static |
Definition at line 556 of file import.c.
References _do_select_none(), and d.
Referenced by gui_init().
| void _dt_check_basedir | ( | ) |
Definition at line 527 of file import.c.
References dt_conf_get_string_const(), dt_conf_set_string(), dt_free, dt_get_user_pictures_dir(), dt_loc_get_home_dir(), dt_variables_expand(), dt_variables_params_destroy(), dt_variables_params_init(), FALSE, and PATH_MAX.
Referenced by gui_init().
|
static |
Definition at line 685 of file import.c.
References _gtk_label_set_and_free(), and d.
Referenced by update_preview_cb().
|
static |
Definition at line 1100 of file import.c.
References dt_conf_get_bool().
Referenced by gui_cleanup(), and gui_init().
| void _file_chooser_response | ( | GtkDialog * | dialog, |
| gint | response_id, | ||
| dt_lib_import_t * | d | ||
| ) |
Definition at line 1158 of file import.c.
References _cleanup(), _filelist_changed_callback(), _process_file_list(), d, dt_control_get_selected_files(), dt_control_signal_get_global(), DT_DEBUG_CONTROL_SIGNAL_CONNECT, DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, DT_SIGNAL_FILELIST_CHANGED, gui_cleanup(), and TRUE.
Referenced by gui_init().
|
static |
Definition at line 589 of file import.c.
References _build_filter(), d, dt_image_ext_hdr_list(), dt_image_ext_is_gui_raster(), dt_image_ext_is_gui_raw(), dt_image_ext_ldr_list(), dt_image_ext_raw_list(), and i.
Referenced by gui_init().
|
static |
Definition at line 959 of file import.c.
References _gtk_label_set_and_free(), _set_selected_files_label(), d, DT_IMPORT_FILTER_RASTER, DT_IMPORT_FILTER_RAW, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and IS_NULL_PTR.
Referenced by _cleanup(), _file_chooser_response(), and gui_init().
|
static |
Definition at line 1050 of file import.c.
References _set_test_path(), d, and dt_conf_set_string().
Referenced by gui_init().
|
static |
Definition at line 217 of file import.c.
References _import_passes_filter(), _recurse_folder(), _scan_still_valid(), and dt_free.
Referenced by _recurse_folder(), and _recurse_selection().
|
static |
Definition at line 373 of file import.c.
References dt_control_job_get_params(), and dt_get_selected_files().
Referenced by dt_control_get_selected_files().
Definition at line 196 of file import.c.
References dt_free.
Referenced by _exif_text_set_and_free(), _filelist_changed_callback(), _set_selected_files_label(), and _set_test_path().
|
static |
Definition at line 408 of file import.c.
References __OMP_PARALLEL_FOR__, dt_mipmap_buffer_t::buf, CLAMPF, color_space, dt_free, dt_image_get_usercrop(), dt_image_is_hdr(), DT_IMAGE_RAW, dt_imageio_close_standalone(), dt_imageio_crop_thumbnail(), dt_imageio_get_type_from_extension(), dt_imageio_large_thumbnail(), DT_IMAGEIO_OK, dt_imageio_open_standalone(), dt_pixelpipe_cache_alloc_align_cache, dt_pixelpipe_cache_free_align, extension(), FALSE, height, dt_mipmap_buffer_t::height, IS_NULL_PTR, k, dt_image_t::orientation, ORIENTATION_ROTATE_180_DEG, ORIENTATION_ROTATE_CCW_90_DEG, ORIENTATION_ROTATE_CW_90_DEG, rgb, width, and dt_mipmap_buffer_t::width.
Referenced by update_preview_cb().
|
static |
Definition at line 204 of file import.c.
References dt_image_ext_is_gui_raster(), dt_image_ext_is_gui_raw(), DT_IMPORT_FILTER_ALL, DT_IMPORT_FILTER_RAW, dt_supported_image(), extension(), FALSE, IS_NULL_PTR, and TRUE.
Referenced by _filter_document().
|
static |
Definition at line 1601 of file import.c.
References d, dt_pthread_mutex_init(), and FALSE.
Referenced by dt_images_import().
|
static |
Definition at line 664 of file import.c.
References DT_DATETIME_EXIF_LENGTH, dt_datetime_unix_to_exif(), dt_metadata_already_imported(), error(), and IS_NULL_PTR.
Referenced by _do_select_new(), and update_preview_cb().
|
static |
Definition at line 657 of file import.c.
References dt_film_get_id(), and dt_image_get_id().
Referenced by _do_select_new(), and update_preview_cb().
|
static |
Definition at line 1032 of file import.c.
References _set_test_path(), d, and dt_conf_set_string().
Referenced by gui_init().
|
static |
Import a list of file by copying them or not, and adding them to database.
| instance | not used here. |
| files | the GList of files. |
| elements | number of files to import. |
| finished | |
| user_data | data from the module. |
Definition at line 1121 of file import.c.
References _cleanup(), _process_file_list(), d, dt_conf_get_bool(), dt_conf_get_string(), dt_control_import(), dt_control_log(), dt_control_signal_get_global(), DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, dt_gui_refocus_center(), dt_string_to_datetime(), gui_cleanup(), dt_control_import_t::imgs, and IS_NULL_PTR.
Referenced by _cleanup(), _file_chooser_response(), and _process_file_list().
|
static |
Definition at line 1044 of file import.c.
References _set_test_path(), d, and dt_conf_set_string().
Referenced by gui_init().
|
static |
Definition at line 253 of file import.c.
References _filter_document(), _report_scan_error(), _scan_still_valid(), error(), and IS_NULL_PTR.
Referenced by _filter_document().
|
static |
Definition at line 298 of file import.c.
References _filter_document(), _scan_still_valid(), dt_conf_set_int(), dt_conf_set_string(), dt_free, and IS_NULL_PTR.
Referenced by dt_get_selected_files().
|
static |
Definition at line 243 of file import.c.
References DT_DEBUG_IMPORT, dt_free, dt_print(), and error().
Referenced by _recurse_folder().
|
static |
Definition at line 186 of file import.c.
References dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and FALSE.
Referenced by _filter_document(), _recurse_folder(), _recurse_selection(), and dt_get_selected_files().
|
static |
Definition at line 991 of file import.c.
References _selection_changed_scan_trigger(), and d.
Referenced by gui_cleanup(), and gui_init().
|
static |
Trigger recursive import candidate detection after selection settle time.
Gtk emits many selection changes while keyboard/mouse navigation moves across entries. Running a full recursive scan for each transient state floods the job queue and wastes CPU. This callback coalesces those changes into one asynchronous scan job.
| user_data | pointer to the import module state. |
G_SOURCE_REMOVE to run once. Definition at line 1013 of file import.c.
References d, dt_control_get_selected_files(), FALSE, and dt_lib_import_t::selection_scan_timeout_id.
Referenced by _selection_changed().
|
static |
Definition at line 815 of file import.c.
Referenced by _copy_toggled_callback(), and gui_init().
|
static |
Definition at line 910 of file import.c.
References _gtk_label_set_and_free(), d, dt_free, DT_IMPORT_FILTER_RASTER, and DT_IMPORT_FILTER_RAW.
Referenced by _filelist_changed_callback().
|
static |
Definition at line 827 of file import.c.
References _gtk_label_set_and_free(), d, dt_build_filename_from_pattern(), dt_conf_get_bool(), dt_conf_get_string(), dt_control_import_data_free(), dt_control_log(), dt_datetime_entry_to_exif(), DT_DATETIME_LENGTH, dt_exif_read(), dt_free, dt_image_init(), dt_string_to_datetime(), dt_supported_image(), FALSE, dt_control_import_t::imgs, IS_NULL_PTR, dt_control_import_t::target_file_pattern, dt_control_import_t::target_subfolder_pattern, and TRUE.
Referenced by _base_dir_changed(), _copy_toggled_callback(), _datetime_changed_callback(), _filename_changed(), _jobcode_changed(), _project_dir_changed(), gui_init(), and update_preview_cb().
|
static |
Definition at line 808 of file import.c.
References dt_conf_set_string(), and dt_free.
Referenced by gui_cleanup(), and gui_init().
| void dt_control_get_selected_files | ( | dt_lib_import_t * | d, |
| gboolean | destroy_window | ||
| ) |
Definition at line 378 of file import.c.
References _get_selected_files_job(), d, dt_control_add_job(), dt_control_get_global(), dt_control_job_create(), dt_control_job_dispose(), dt_control_job_set_params(), dt_import_cleanup(), DT_JOB_QUEUE_USER_BG, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and IS_NULL_PTR.
Referenced by _file_chooser_response(), and _selection_changed_scan_trigger().
|
static |
Definition at line 328 of file import.c.
References _recurse_selection(), _scan_still_valid(), dt_control_signal_get_global(), DT_DEBUG_CONTROL_SIGNAL_RAISE, dt_free_gpointer(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), and DT_SIGNAL_FILELIST_CHANGED.
Referenced by _get_selected_files_job().
| void dt_images_import | ( | ) |
Definition at line 1646 of file import.c.
References _init(), d, and gui_init().
Referenced by append_file().
Definition at line 1689 of file import.c.
References dt_free, dt_free_gpointer(), dt_pthread_mutex_destroy(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), FALSE, and IS_NULL_PTR.
Referenced by dt_control_get_selected_files().
|
static |
Definition at line 1652 of file import.c.
References d, DT_IMPORT_FILTER_ALL, DT_IMPORT_FILTER_RASTER, DT_IMPORT_FILTER_RAW, dt_pthread_mutex_init(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_import_t::generation, and IS_NULL_PTR.
|
static |
Definition at line 1561 of file import.c.
References _file_activated(), _selection_changed(), _update_directory(), d, dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), EXIF_LAST_FIELD, IS_NULL_PTR, k, TRUE, and update_preview_cb().
Referenced by _file_chooser_response(), and _process_file_list().
|
static |
Definition at line 1194 of file import.c.
References _attach_aligned_grid_item(), _attach_grid_separator(), _base_dir_changed(), _copy_toggled_callback(), _datetime_changed_callback(), _do_select_all_clicked(), _do_select_new_clicked(), _do_select_none_clicked(), _dt_check_basedir(), _file_activated(), _file_chooser_response(), _file_filters(), _filelist_changed_callback(), _filename_changed(), _jobcode_changed(), _project_dir_changed(), _resize_dialog(), _selection_changed(), _set_help_string(), _set_test_path(), _update_date(), _update_directory(), attach_help_popover(), attach_popover(), copy(), d, day, dt_accels_disconnect_on_text_input(), dt_conf_get_bool(), dt_conf_get_int(), dt_conf_get_string_const(), dt_control_signal_get_global(), DT_DEBUG_CONTROL_SIGNAL_CONNECT, dt_free, dt_gtkentry_get_default_path_compl_list(), dt_gtkentry_setup_completion(), dt_gui_add_class(), DT_GUI_BOX_SPACING, dt_gui_main_window(), dt_osx_disallow_fullscreen(), DT_PIXEL_APPLY_DPI, DT_SIGNAL_FILELIST_CHANGED, EXIF_DATETIME_FIELD, EXIF_EXPOSURE_FIELD, EXIF_FOCAL_LENS_FIELD, EXIF_INLIB_FIELD, EXIF_LENS_FIELD, EXIF_MAKER_FIELD, EXIF_MODEL_FIELD, EXIF_PATH_FIELD, FALSE, row, TRUE, and update_preview_cb().
Referenced by dt_images_import().
|
static |
Definition at line 690 of file import.c.
References _exif_text_set_and_free(), _import_get_thumbnail(), _is_in_library_by_metadata(), _is_in_library_by_path(), _set_test_path(), d, dt_conf_get_bool(), dt_datetime_img_to_local(), dt_exif_read(), dt_free, dt_image_cache_get(), dt_image_cache_read_release(), dt_image_film_roll_directory(), DT_IMAGE_HDR, dt_image_init(), dt_imageio_get_type_from_extension(), DT_PIXEL_APPLY_DPI, dt_util_format_exposure(), dt_util_path_get_dirname(), dt_image_t::exif_aperture, EXIF_DATETIME_FIELD, dt_image_t::exif_exposure, EXIF_EXPOSURE_FIELD, dt_image_t::exif_focal_length, EXIF_FOCAL_LENS_FIELD, EXIF_INLIB_FIELD, dt_image_t::exif_iso, dt_image_t::exif_lens, EXIF_LENS_FIELD, dt_image_t::exif_maker, EXIF_MAKER_FIELD, dt_image_t::exif_model, EXIF_MODEL_FIELD, EXIF_PATH_FIELD, extension(), FALSE, IS_NULL_PTR, and UNKNOWN_IMAGE.
Referenced by gui_cleanup(), and gui_init().