Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
signal.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2011-2012 Henrik Andersson.
4 Copyright (C) 2011 johannes hanika.
5 Copyright (C) 2012 Ivan Tarozzi.
6 Copyright (C) 2012 José Carlos García Sogo.
7 Copyright (C) 2012-2015 Jérémy Rosen.
8 Copyright (C) 2012 Richard Wonka.
9 Copyright (C) 2012-2016 Tobias Ellinghaus.
10 Copyright (C) 2013 Simon Spannagel.
11 Copyright (C) 2014, 2016, 2019-2021 Pascal Obry.
12 Copyright (C) 2014 Ronny Kahl.
13 Copyright (C) 2018-2019 Edgardo Hoszowski.
14 Copyright (C) 2018 Rikard Öxler.
15 Copyright (C) 2019-2021 Aldric Renaudin.
16 Copyright (C) 2019 luzpaz.
17 Copyright (C) 2019 Ulrich Pegelow.
18 Copyright (C) 2020 Chris Elston.
19 Copyright (C) 2020 Hanno Schwalm.
20 Copyright (C) 2020 Hubert Kowalski.
21 Copyright (C) 2020-2021 Philippe Weyland.
22 Copyright (C) 2021 Dan Torop.
23 Copyright (C) 2022-2023, 2025 Aurélien PIERRE.
24 Copyright (C) 2022 Martin Bařinka.
25 Copyright (C) 2023 Luca Zulberti.
26 Copyright (C) 2025 Alynx Zhou.
27
28 darktable is free software: you can redistribute it and/or modify
29 it under the terms of the GNU General Public License as published by
30 the Free Software Foundation, either version 3 of the License, or
31 (at your option) any later version.
32
33 darktable is distributed in the hope that it will be useful,
34 but WITHOUT ANY WARRANTY; without even the implied warranty of
35 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36 GNU General Public License for more details.
37
38 You should have received a copy of the GNU General Public License
39 along with darktable. If not, see <http://www.gnu.org/licenses/>.
40*/
41
42#pragma once
43
44#include <glib-object.h>
45
46G_BEGIN_DECLS
47
53typedef enum dt_signal_t
54{
60
65
70
75
82
89
96
107
112
115
117 // when imgs <> NULL these images have some geotag changes
118 // when imgs == NULL locations have changed
119 // if locid <> 0 it the new selected location on map
121
124
127 // TODO check if tag and metadata could be included there
129
132
135
141
144
145 /* \brief This signal is raised when a preset is created/updated/deleted */
147
154
159
164
170
178
183
189
192
195
202
207
213
219
232
238
244
249
254
259
264
265 /* \brief This signal is raised when metadata view needs update */
267
268 /* \brief This signal is raised when the user choses a new location from map (module location)*/
270
271 /* Raised when a mask form is selected/deselected */
274
275 /* Raised when the focused darkroom module changes or its masks/blending GUI needs refresh */
277
286
287 /* do not touch !*/
290
299
300/* inititialize the signal framework */
302/* raises a signal */
303void dt_control_signal_raise(const struct dt_control_signal_t *ctlsig, const dt_signal_t signal, ...);
304/* connects a callback to a signal */
305void dt_control_signal_connect(const struct dt_control_signal_t *ctlsig, const dt_signal_t signal,
306 GCallback cb, gpointer user_data);
307/* disconnects a callback from a sink */
308void dt_control_signal_disconnect(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data);
309/* blocks a callback */
310void dt_control_signal_block_by_func(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data);
311/* unblocks a callback */
312void dt_control_signal_unblock_by_func(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data);
313
314#define DT_DEBUG_CONTROL_SIGNAL_RAISE(ctlsig, signal, ...) \
315 do \
316 { \
317 if((darktable.unmuted_signal_dbg_acts & DT_DEBUG_SIGNAL_ACT_RAISE) && darktable.unmuted_signal_dbg[signal]) \
318 { \
319 dt_print(DT_DEBUG_SIGNAL, "[signal] %s:%d, function %s(): raise signal %s\n", __FILE__, __LINE__, __FUNCTION__, #signal); \
320 } \
321 dt_control_signal_raise(ctlsig, signal, ##__VA_ARGS__); \
322 } while (0)
323
324#define DT_DEBUG_CONTROL_SIGNAL_CONNECT(ctlsig, signal, cb, user_data) \
325 do \
326 { \
327 if((darktable.unmuted_signal_dbg_acts & DT_DEBUG_SIGNAL_ACT_CONNECT) && darktable.unmuted_signal_dbg[signal]) \
328 { \
329 dt_print(DT_DEBUG_SIGNAL, "[signal] %s:%d, function: %s() connect handler %s to signal %s\n", __FILE__, __LINE__, \
330 __FUNCTION__, #cb, #signal); \
331 } \
332 dt_control_signal_connect(ctlsig, signal, cb, user_data); \
333 } while (0)
334
335#define DT_DEBUG_CONTROL_SIGNAL_DISCONNECT(ctlsig, cb, user_data) \
336 do \
337 { \
338 if(darktable.unmuted_signal_dbg_acts & DT_DEBUG_SIGNAL_ACT_DISCONNECT) \
339 { \
340 dt_print(DT_DEBUG_SIGNAL, "[signal] %s:%d, function: %s() disconnect handler %s\n", __FILE__, __LINE__, __FUNCTION__, #cb);\
341 } \
342 dt_control_signal_disconnect(ctlsig, cb, user_data); \
343 } while (0)
344
345G_END_DECLS
346
347// clang-format off
348// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
349// vim: shiftwidth=2 expandtab tabstop=2 cindent
350// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
351// clang-format on
struct dt_control_signal_t * dt_control_signal_init()
Definition signal.c:234
void dt_control_signal_connect(const struct dt_control_signal_t *ctlsig, const dt_signal_t signal, GCallback cb, gpointer user_data)
void dt_control_signal_unblock_by_func(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data)
Definition signal.c:438
dt_debug_signal_action_t
Definition signal.h:292
@ DT_DEBUG_SIGNAL_ACT_DISCONNECT
Definition signal.h:296
@ DT_DEBUG_SIGNAL_ACT_CONNECT
Definition signal.h:295
@ DT_DEBUG_SIGNAL_ACT_RAISE
Definition signal.h:294
@ DT_DEBUG_SIGNAL_ACT_PRINT_TRACE
Definition signal.h:297
void dt_control_signal_raise(const struct dt_control_signal_t *ctlsig, const dt_signal_t signal,...)
void dt_control_signal_disconnect(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data)
Definition signal.c:422
dt_signal_t
enum of signals to listen for in darktable.
Definition signal.h:54
@ DT_SIGNAL_DEVELOP_INITIALIZE
This signal is raised when darktable.develop is initialized.
Definition signal.h:153
@ DT_SIGNAL_METADATA_CHANGED
This signal is raised when metadata status (shown/hidden) or value has changed.
Definition signal.h:123
@ DT_SIGNAL_VIEWMANAGER_THUMBTABLE_ACTIVATE
Definition signal.h:95
@ DT_SIGNAL_FILELIST_CHANGED
Raised when the recursive file crawler returns. no params, return :
Definition signal.h:285
@ DT_SIGNAL_ACTIVE_IMAGES_CHANGE
This signal is raised when image shown in the main view change no param, no returned value.
Definition signal.h:64
@ DT_SIGNAL_CONTROL_REDRAW_ALL
This signal is raised when dt_control_queue_redraw() is called. no param, no returned value.
Definition signal.h:69
@ DT_SIGNAL_MASK_CHANGED
Definition signal.h:273
@ DT_SIGNAL_DEVELOP_HISTORY_CHANGE
This signal is raised when develop history is changed no param, no returned value.
Definition signal.h:182
@ DT_SIGNAL_DEVELOP_IMAGE_CHANGED
This signal is raised when image is changed in darkroom.
Definition signal.h:194
@ DT_SIGNAL_CONTROL_PROFILE_USER_CHANGED
This signal is raised when a profile is changed by the user 1 uint32_t : the profile type that has ch...
Definition signal.h:212
@ DT_SIGNAL_IMAGE_EXPORT_TMPFILE
This signal is raised after an image has been exported to a file, but before it is sent to facebook/p...
Definition signal.h:231
@ DT_SIGNAL_IMAGES_ORDER_CHANGE
This signal is raised to request image order change.
Definition signal.h:134
@ DT_SIGNAL_DEVELOP_PREVIEW_PIPE_FINISHED
This signal is raised when develop preview pipe process is finished no param, no returned value.
Definition signal.h:158
@ DT_SIGNAL_STYLE_CHANGED
This signal is raised when a style is added/deleted/changed
Definition signal.h:131
@ DT_SIGNAL_DEVELOP_UI_PIPE_FINISHED
This signal is raised when pipe is finished and the gui is attached no param, no returned value.
Definition signal.h:163
@ DT_SIGNAL_FILMROLLS_CHANGED
This signal is raised when a filmroll is deleted/changed but not imported.
Definition signal.h:140
@ DT_SIGNAL_GEOTAG_CHANGED
This signal is raised when a geotag is added/deleted/changed
Definition signal.h:120
@ DT_SIGNAL_MOUSE_OVER_IMAGE_CHANGE
This signal is raised when mouse hovers over image thumbs both on lighttable and in the filmstrip....
Definition signal.h:59
@ DT_SIGNAL_CONTROL_TOAST_REDRAW
This signal is raised when dt_control_toast_redraw() is called. no param, no returned value.
Definition signal.h:258
@ DT_SIGNAL_DEVELOP_MODULE_MOVED
This signal is raised when order of modules in pipeline is changed.
Definition signal.h:191
@ DT_SIGNAL_IMAGE_INFO_CHANGED
This signal is raised when any of image info has changed
Definition signal.h:128
@ DT_SIGNAL_PREFERENCES_CHANGE
This signal is raised after preferences have been changed no parameters no return.
Definition signal.h:243
@ DT_SIGNAL_CONTROL_REDRAW_CENTER
This signal is raised when dt_control_queue_redraw_center() is called. no param, no returned value.
Definition signal.h:74
@ DT_SIGNAL_DEVELOP_MODULEGROUPS_SET
This signal is raised to request a modulegroups update. 1 : dt_iop_module_t *module,...
Definition signal.h:169
@ DT_SIGNAL_FILMROLLS_REMOVED
This signal is raised only when a filmroll is removed.
Definition signal.h:143
@ DT_SIGNAL_TAG_CHANGED
This signal is raised when a tag is added/deleted/changed
Definition signal.h:114
@ DT_SIGNAL_IMAGEIO_STORAGE_CHANGE
This signal is raised when a new storage module is loaded noparameters no return.
Definition signal.h:237
@ DT_SIGNAL_DEVELOP_MODULE_REMOVE
This signal is raised when a module is removed from the history stack 1 module no returned value.
Definition signal.h:188
@ DT_SIGNAL_VIEWMANAGER_VIEW_CANNOT_CHANGE
This signal is raised by viewmanager when a view has changed. 1 : dt_view_t * the old view 2 : dt_vie...
Definition signal.h:88
@ DT_SIGNAL_IMAGE_LOADED
This signal is raised when an asynchronous darkroom image load finishes. 1 : uint32_t the load reques...
Definition signal.h:201
@ DT_SIGNAL_MASK_SELECTION_CHANGED
Definition signal.h:272
@ DT_SIGNAL_DEVELOP_MASKS_GUI_CHANGED
Definition signal.h:276
@ DT_SIGNAL_SELECTION_CHANGED
This signal is raised when the selection is changed no param, no returned value.
Definition signal.h:111
@ DT_SIGNAL_PRESETS_CHANGED
Definition signal.h:146
@ DT_SIGNAL_CONTROL_PICKERDATA_READY
This signal is raised when new color picker data are available in darkroom. no param,...
Definition signal.h:263
@ DT_SIGNAL_CONTROL_PROFILE_CHANGED
This signal is raised when the screen profile has changed no param, no returned value.
Definition signal.h:206
@ DT_SIGNAL_COUNT
Definition signal.h:288
@ DT_SIGNAL_IMAGE_IMPORT
This signal is raised when a new image is imported (not cloned) 1 uint32_t : the new image id no retu...
Definition signal.h:218
@ DT_SIGNAL_COLLECTION_CHANGED
This signal is raised when collection changed. To avoid leaking the list, dt_collection_t is connecte...
Definition signal.h:106
@ DT_SIGNAL_CONTROL_LOG_REDRAW
This signal is raised when dt_control_log_redraw() is called. no param, no returned value.
Definition signal.h:253
@ DT_SIGNAL_CONTROL_NAVIGATION_REDRAW
This signal is raised when dt_control_navigation_redraw() is called. no param, no returned value.
Definition signal.h:248
@ DT_SIGNAL_METADATA_UPDATE
Definition signal.h:266
@ DT_SIGNAL_DEVELOP_HISTORY_WILL_CHANGE
This signal is raised when develop history is about to be changed 1 : GList * the current history 2 :...
Definition signal.h:177
@ DT_SIGNAL_VIEWMANAGER_VIEW_CHANGED
This signal is raised by viewmanager when a view has changed. 1 : dt_view_t * the old view 2 : dt_vie...
Definition signal.h:81
@ DT_SIGNAL_LOCATION_CHANGED
Definition signal.h:269
void dt_control_signal_block_by_func(const struct dt_control_signal_t *ctlsig, GCallback cb, gpointer user_data)
Definition signal.c:433
Definition signal.c:50