Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
conf.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2010-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#ifdef HAVE_CONFIG_H
22#include "config.h"
23#endif
24
25#include "common/dtpthread.h"
26
27#include <glib.h>
28#include <gtk/gtk.h>
29#include <inttypes.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
45
56
57typedef struct dt_conf_t
58{
59 dt_pthread_mutex_t mutex;
61 GHashTable *table;
62 GHashTable *x_confgen;
63 GHashTable *override_entries;
65
71
79
80void dt_conf_set_int(const char *name, int val);
81void dt_conf_set_int64(const char *name, int64_t val);
82void dt_conf_set_float(const char *name, float val);
83void dt_conf_set_bool(const char *name, int val);
84void dt_conf_set_string(const char *name, const char *val);
85void dt_conf_set_folder_from_file_chooser(const char *name, GtkFileChooser *chooser);
86int dt_conf_get_int_fast(const char *name);
87int dt_conf_get_int(const char *name);
88int64_t dt_conf_get_int64_fast(const char *name);
89int64_t dt_conf_get_int64(const char *name);
90float dt_conf_get_float_fast(const char *name);
91float dt_conf_get_float(const char *name);
92int dt_conf_get_and_sanitize_int(const char *name, int min, int max);
93int64_t dt_conf_get_and_sanitize_int64(const char *name, int64_t min, int64_t max);
94float dt_conf_get_and_sanitize_float(const char *name, float min, float max);
95int dt_conf_get_bool(const char *name);
96// get the configuration string without duplicating it; the returned string will be invalidated by any
97// subsequent dt_conf_set_string call
98const char *dt_conf_get_string_const(const char *name);
99// get a freshly-allocated duplicate of the configuration string; safe to use even if calling dt_conf_set_string
100gchar *dt_conf_get_string(const char *name);
101gboolean dt_conf_get_folder_to_file_chooser(const char *name, GtkFileChooser *chooser);
102gboolean dt_conf_is_equal(const char *name, const char *value);
103void dt_conf_init(dt_conf_t *cf, const char *filename, GSList *override_entries);
104void dt_conf_cleanup(dt_conf_t *cf);
105void dt_conf_save(dt_conf_t *cf);
106int dt_conf_key_exists(const char *key);
107gboolean dt_conf_key_not_empty(const char *key);
108GSList *dt_conf_all_string_entries(const char *dir);
109void dt_conf_string_entry_free(gpointer data);
110
111#define DT_CONF_SET_SANITIZED_INT(name, val, min, max) dt_conf_set_int(name, CLAMPS(val, min,max));
112#define DT_CONF_SET_SANITIZED_INT6464(name, val, min, max) dt_conf_set_int(name, CLAMPS(val, min,max));
113#define DT_CONF_SET_SANITIZED_FLOAT(name, val, min, max) dt_conf_set_float(name, CLAMPS(val, min,max));
114
115// conf generated from darktable config XML
116
117gboolean dt_confgen_exists(const char *name);
119
120gboolean dt_confgen_value_exists(const char *name, dt_confgen_value_kind_t kind);
121
122int dt_confgen_get_int(const char *name, dt_confgen_value_kind_t kind);
123int64_t dt_confgen_get_int64(const char *name, dt_confgen_value_kind_t kind);
124gboolean dt_confgen_get_bool(const char *name, dt_confgen_value_kind_t kind);
125float dt_confgen_get_float(const char *name, dt_confgen_value_kind_t kind);
126const char *dt_confgen_get(const char *name, dt_confgen_value_kind_t kind);
127
128const char *dt_confgen_get_label(const char *name);
129const char *dt_confgen_get_tooltip(const char *name);
130
131gboolean dt_conf_is_default(const char *name);
132gchar* dt_conf_expand_default_dir(const char *dir);
133
134#ifdef __cplusplus
135}
136#endif
137
138// clang-format off
139// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
140// vim: shiftwidth=2 expandtab tabstop=2 cindent
141// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
142// clang-format on
143
char * key
Definition common/metadata.c:40
char * name
Definition common/metadata.c:41
void dt_conf_cleanup(dt_conf_t *cf)
Definition conf.c:832
void dt_conf_string_entry_free(gpointer data)
Definition conf.c:537
void dt_conf_set_bool(const char *name, int val)
Definition conf.c:125
int dt_conf_get_bool(const char *name)
Definition conf.c:313
gboolean dt_conf_key_not_empty(const char *key)
Definition conf.c:331
int dt_conf_key_exists(const char *key)
Definition conf.c:505
float dt_confgen_get_float(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:710
int64_t dt_conf_get_int64_fast(const char *name)
Definition conf.c:203
void dt_conf_init(dt_conf_t *cf, const char *filename, GSList *override_entries)
Definition conf.c:425
void dt_conf_set_float(const char *name, float val)
Definition conf.c:118
float dt_conf_get_float(const char *name)
Definition conf.c:274
const char * dt_confgen_get_tooltip(const char *name)
Definition conf.c:616
gchar * dt_conf_get_string(const char *name)
Definition conf.c:320
int dt_conf_get_int_fast(const char *name)
Definition conf.c:160
int dt_conf_get_and_sanitize_int(const char *name, int min, int max)
Definition conf.c:283
void dt_conf_set_int(const char *name, int val)
Definition conf.c:106
gboolean dt_confgen_get_bool(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:704
void dt_conf_set_int64(const char *name, int64_t val)
Definition conf.c:112
gchar * dt_conf_expand_default_dir(const char *dir)
Definition conf.c:781
GSList * dt_conf_all_string_entries(const char *dir)
Definition conf.c:526
gboolean dt_conf_is_default(const char *name)
Definition conf.c:749
dt_confgen_value_kind_t
Definition conf.h:73
@ DT_DEFAULT
Definition conf.h:74
@ DT_MAX
Definition conf.h:76
@ DT_MIN
Definition conf.h:75
@ DT_VALUES
Definition conf.h:77
int dt_conf_get_int(const char *name)
Definition conf.c:194
int64_t dt_conf_get_int64(const char *name)
Definition conf.c:237
gboolean dt_confgen_value_exists(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:562
int64_t dt_confgen_get_int64(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:666
gboolean dt_confgen_exists(const char *name)
Definition conf.c:547
int dt_confgen_get_int(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:628
void dt_conf_set_string(const char *name, const char *val)
Definition conf.c:131
float dt_conf_get_float_fast(const char *name)
Definition conf.c:246
const char * dt_conf_get_string_const(const char *name)
Definition conf.c:326
const char * dt_confgen_get(const char *name, dt_confgen_value_kind_t kind)
Definition conf.c:582
void dt_conf_save(dt_conf_t *cf)
Definition conf.c:813
int64_t dt_conf_get_and_sanitize_int64(const char *name, int64_t min, int64_t max)
Definition conf.c:293
void dt_conf_set_folder_from_file_chooser(const char *name, GtkFileChooser *chooser)
Definition conf.c:137
dt_confgen_type_t dt_confgen_type(const char *name)
Definition conf.c:552
gboolean dt_conf_is_equal(const char *name, const char *value)
Definition conf.c:350
const char * dt_confgen_get_label(const char *name)
Definition conf.c:604
gboolean dt_conf_get_folder_to_file_chooser(const char *name, GtkFileChooser *chooser)
Definition conf.c:339
float dt_conf_get_and_sanitize_float(const char *name, float min, float max)
Definition conf.c:303
dt_confgen_type_t
Definition conf.h:36
@ DT_BOOL
Definition conf.h:40
@ DT_STRING
Definition conf.h:42
@ DT_FLOAT
Definition conf.h:39
@ DT_INT64
Definition conf.h:38
@ DT_ENUM
Definition conf.h:43
@ DT_PATH
Definition conf.h:41
@ DT_INT
Definition conf.h:37
#define PATH_MAX
Definition darktable.h:824
Definition conf.h:67
char * key
Definition conf.h:68
char * value
Definition conf.h:69
Definition conf.h:58
GHashTable * override_entries
Definition conf.h:63
char filename[PATH_MAX]
Definition conf.h:60
dt_pthread_mutex_t mutex
Definition conf.h:59
GHashTable * x_confgen
Definition conf.h:62
GHashTable * table
Definition conf.h:61
Definition conf.h:47
char * def
Definition conf.h:49
char * enum_values
Definition conf.h:52
char * max
Definition conf.h:51
char * min
Definition conf.h:50
char * shortdesc
Definition conf.h:53
dt_confgen_type_t type
Definition conf.h:48
char * longdesc
Definition conf.h:54