Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
selection.c File Reference
#include "common/collection.h"
#include "common/selection.h"
#include "common/darktable.h"
#include "control/signal.h"
#include "gui/gtk.h"
#include "views/view.h"
+ Include dependency graph for selection.c:

Data Structures

struct  dt_selection_t
 

Typedefs

typedef struct dt_selection_t dt_selection_t
 

Functions

static void _update_gui ()
 
int32_t dt_selection_get_first_id (struct dt_selection_t *selection)
 
static void _reset_ids_list (dt_selection_t *selection)
 
static void _update_last_ids (dt_selection_t *selection)
 
static void _clean_missing_ids (dt_selection_t *selection)
 
static GList * _selection_database_to_glist (dt_selection_t *selection)
 
void dt_selection_reload_from_database_real (dt_selection_t *selection)
 
static void _selection_update_collection (gpointer instance, dt_collection_change_t query_change, dt_collection_properties_t changed_property, gpointer imgs, uint32_t next, dt_selection_t *selection)
 
static void _remove_id_link (dt_selection_t *selection, int32_t imgid)
 
static void _add_id_link (dt_selection_t *selection, int32_t imgid)
 
GList * dt_selection_get_list (struct dt_selection_t *selection)
 
int dt_selection_get_length (struct dt_selection_t *selection)
 
static void _selection_select (dt_selection_t *selection, int32_t imgid)
 
static void _selection_deselect (dt_selection_t *selection, int32_t imgid)
 
void dt_selection_push (dt_selection_t *selection)
 
void dt_selection_pop (dt_selection_t *selection)
 
dt_selection_tdt_selection_new ()
 
void dt_selection_free (dt_selection_t *selection)
 
void dt_selection_clear (dt_selection_t *selection)
 
void dt_selection_select (dt_selection_t *selection, int32_t imgid)
 
void dt_selection_deselect (dt_selection_t *selection, int32_t imgid)
 
void dt_selection_select_single (dt_selection_t *selection, int32_t imgid)
 
void dt_selection_toggle (dt_selection_t *selection, int32_t imgid)
 
static int32_t _list_iterate (struct dt_selection_t *selection, GList **list, int *count, const gboolean add)
 
void dt_selection_select_list (struct dt_selection_t *selection, const GList *const l)
 
void dt_selection_deselect_list (struct dt_selection_t *selection, const GList *const l)
 
gchar * dt_selection_ids_to_string (struct dt_selection_t *selection)
 
gboolean dt_selection_is_id_selected (struct dt_selection_t *selection, int32_t imgid)
 

Typedef Documentation

◆ dt_selection_t

Function Documentation

◆ _add_id_link()

static void _add_id_link ( dt_selection_t selection,
int32_t  imgid 
)
static

◆ _clean_missing_ids()

static void _clean_missing_ids ( dt_selection_t selection)
static

◆ _list_iterate()

static int32_t _list_iterate ( struct dt_selection_t selection,
GList **  list,
int *  count,
const gboolean  add 
)
static

◆ _remove_id_link()

static void _remove_id_link ( dt_selection_t selection,
int32_t  imgid 
)
static

◆ _reset_ids_list()

◆ _selection_database_to_glist()

static GList * _selection_database_to_glist ( dt_selection_t selection)
static

◆ _selection_deselect()

static void _selection_deselect ( dt_selection_t selection,
int32_t  imgid 
)
static

◆ _selection_select()

static void _selection_select ( dt_selection_t selection,
int32_t  imgid 
)
static

◆ _selection_update_collection()

static void _selection_update_collection ( gpointer  instance,
dt_collection_change_t  query_change,
dt_collection_properties_t  changed_property,
gpointer  imgs,
uint32_t  next,
dt_selection_t selection 
)
static

◆ _update_gui()

◆ _update_last_ids()

static void _update_last_ids ( dt_selection_t selection)
static

◆ dt_selection_clear()

◆ dt_selection_deselect()

void dt_selection_deselect ( struct dt_selection_t selection,
int32_t  imgid 
)

removes a single imgid from the current selection. use the optimized dt_selection_deselect_list() to process batches.

References _remove_id_link(), _selection_deselect(), _update_gui(), and UNKNOWN_IMAGE.

Referenced by _dt_collection_lut(), and dt_selection_toggle().

◆ dt_selection_deselect_list()

void dt_selection_deselect_list ( struct dt_selection_t selection,
const GList *  list 
)

deselects a set of images from a list in a fast, optimized fashion. the list is unaltered

References _list_iterate(), _update_gui(), darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_EXEC, dt_util_dstrcat(), and FALSE.

Referenced by dt_thumbtable_invert_selection().

◆ dt_selection_free()

◆ dt_selection_get_first_id()

◆ dt_selection_get_length()

◆ dt_selection_get_list()

◆ dt_selection_ids_to_string()

gchar * dt_selection_ids_to_string ( struct dt_selection_t selection)

concatenate all image ids from the selection as a string, separated with coma, for SQL queries

References dt_selection_t::ids, and dt_selection_t::length.

Referenced by _concatenate_multiple_images(), _tag_get_tags(), _update(), and dt_tag_get_attached().

◆ dt_selection_is_id_selected()

gboolean dt_selection_is_id_selected ( struct dt_selection_t selection,
int32_t  imgid 
)

see if the imgid is known from the selection

References FALSE, and dt_selection_t::ids.

Referenced by _add_thumbnail_at_rowid(), _dt_selection_changed_callback(), and dt_thumbnail_new().

◆ dt_selection_new()

◆ dt_selection_pop()

void dt_selection_pop ( struct dt_selection_t selection)

◆ dt_selection_push()

void dt_selection_push ( struct dt_selection_t selection)

◆ dt_selection_reload_from_database_real()

void dt_selection_reload_from_database_real ( struct dt_selection_t selection)

call this right after the selection got changed directly in memory database, to resync the GList representation of the selection

References _reset_ids_list(), _selection_database_to_glist(), _update_last_ids(), dt_selection_t::ids, and dt_selection_t::length.

◆ dt_selection_select()

void dt_selection_select ( struct dt_selection_t selection,
int32_t  imgid 
)

adds a single imgid to the current selection. use the optimized dt_selection_select_list() to process batches.

References _add_id_link(), _selection_select(), _update_gui(), and UNKNOWN_IMAGE.

Referenced by dt_collection_load_filmroll(), dt_selection_select_single(), and dt_selection_toggle().

◆ dt_selection_select_list()

void dt_selection_select_list ( struct dt_selection_t selection,
const GList *  list 
)

selects a set of images from a list in a fast, optimized fashion. the list is unaltered

References _list_iterate(), _update_gui(), darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_EXEC, dt_util_dstrcat(), and TRUE.

Referenced by _selection_cb(), dt_thumbtable_select_all(), and dt_thumbtable_select_range().

◆ dt_selection_select_single()

void dt_selection_select_single ( struct dt_selection_t selection,
int32_t  imgid 
)

clears current selection and adds a single imgid

References dt_selection_clear(), dt_selection_select(), and UNKNOWN_IMAGE.

Referenced by _event_main_release(), _film_strip_activated(), dt_thumbtable_key_pressed_grid(), and leave().

◆ dt_selection_toggle()

void dt_selection_toggle ( struct dt_selection_t selection,
int32_t  imgid 
)

toggles selection of a single image in the current selection

References dt_selection_deselect(), dt_selection_select(), dt_selection_t::ids, and UNKNOWN_IMAGE.

Referenced by _event_main_release(), and dt_thumbtable_key_pressed_grid().