42#ifndef DT_CONTROL_CONTROL_H
43#define DT_CONTROL_CONTROL_H
121#define dt_control_change_cursor(cursor) \
122 dt_control_change_cursor_EXT((cursor), __FILE__, __LINE__)
140#define dt_control_queue_cursor(cursor) \
141 dt_control_queue_cursor_EXT((cursor), __FILE__, __LINE__)
153#define dt_control_set_cursor_visible(visible) \
154 dt_control_set_cursor_visible_EXT((visible), __FILE__, __LINE__)
193#define DT_CTL_LOG_SIZE 10
194#define DT_CTL_LOG_MSG_SIZE 1000
195#define DT_CTL_LOG_TIMEOUT 8000
196#define DT_CTL_TOAST_SIZE 10
197#define DT_CTL_TOAST_MSG_SIZE 300
198#define DT_CTL_TOAST_TIMEOUT 5000
278 void *(*added)(
dt_lib_module_t *self, gboolean has_progress_bar,
const gchar *message);
284 const char *message);
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
struct _GtkWidget GtkWidget
GtkWidget, opaque, spelled exactly as GTK spells it.
void dt_ctl_switch_mode_to(const char *mode)
void dt_control_set_cursor_visible_EXT(gboolean visible, const char *file, int line)
Set whether the cursor should be visible or not.
void dt_control_expose(cairo_t *cr, int width, int height)
void dt_control_key_pressed(GdkEventKey *event)
void dt_control_init(dt_control_t *s)
int32_t dt_control_get_mouse_over_id()
void dt_control_draw_busy_msg(cairo_t *cr, int width, int height)
void dt_control_mouse_is_dragging(gboolean state)
void dt_control_button_pressed(double x, double y, double pressure, int which, int type, uint32_t state)
void dt_ctl_switch_mode_to_by_view(const dt_view_t *view)
void dt_control_queue_cursor_EXT(dt_cursor_t cursor, const char *file, int line)
void dt_control_get_pointer_input(dt_control_pointer_input_t *input)
void dt_control_set_mouse_over_id(int32_t value)
#define DT_CTL_TOAST_SIZE
void dt_control_forbid_change_cursor()
#define DT_CTL_TOAST_MSG_SIZE
void dt_control_write_sidecar_files()
void dt_control_mouse_leave()
void dt_control_shutdown(dt_control_t *s)
void dt_control_mouse_is_painting(gboolean state)
gboolean dt_control_configure(GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
void dt_control_change_cursor_by_name_and_flush(const char *curs_str)
Apply a GTK named cursor immediately and flush display updates.
void dt_control_cleanup(dt_control_t *s)
void dt_control_button_released(double x, double y, int which, uint32_t state)
void dt_control_commit_cursor()
void dt_control_set_pointer_input(const dt_control_pointer_input_t *input)
void dt_control_change_cursor_by_name(const char *curs_str)
Apply a GTK named cursor immediately without replacing the queued cursor state.
void dt_control_allow_change_cursor()
char * dt_get_main_message_copy(void)
void dt_control_save_xmp(const int32_t imgid)
void dt_ctl_open_image_in_darkroom(const int32_t imgid)
open one specific image in the darkroom, from any view and any thread.
void dt_control_mouse_moved(double x, double y, double pressure, int which)
#define DT_CTL_LOG_MSG_SIZE
void dt_control_delete_images()
void dt_control_queue_redraw_widget(GtkWidget *widget)
threadsafe request of redraw of specific widget. Use this function if you need to redraw a specific w...
void dt_control_hinter_message(const struct dt_control_t *s, const char *message)
struct dt_control_t * dt_control_get_global(void)
int32_t dt_control_get_keyboard_over_id()
void dt_control_mouse_enter()
void dt_control_change_cursor_EXT(dt_cursor_t cursor, const char *file, int line)
GdkCursorType dt_cursor_t
void dt_control_queue_cursor_by_name(const char *curs_str)
Queue a GTK named cursor for the next cursor commit.
void dt_set_main_message(char *message)
void dt_control_save_xmps(const GList *imgids, const gboolean check_history)
void dt_control_save_xmps_forced(const GList *imgids)
void dt_control_set_keyboard_over_id(int32_t value)
GtkWidget * view
the tree view
#define DT_CTL_WORKER_RESERVED
_lib_location_type_t type
Asking the interface to repaint itself.
static const dt_aligned_pixel_simd_t value
const float uint32_t state[4]
dt_pthread_mutex_t run_mutex
dt_pthread_mutex_t image_mutex
dt_lib_module_t *void(* set_message)(dt_lib_module_t *self, const gchar *message)
void(* destroyed)(dt_lib_module_t *self, struct dt_lib_backgroundjob_element_t *instance)
GList * queues[DT_JOB_QUEUE_MAX]
char toast_message[10][300]
gboolean export_scheduled
gchar * current_shape_str
void(* message_updated)(dt_lib_module_t *self, struct dt_lib_backgroundjob_element_t *instance, const char *message)
pthread_t thread_res[DT_CTL_WORKER_RESERVED]
dt_pthread_mutex_t log_mutex
void(* updated)(dt_lib_module_t *self, struct dt_lib_backgroundjob_element_t *instance, double value)
guint log_message_timeout_id
guint toast_message_timeout_id
dt_pthread_mutex_t res_mutex
dt_cursor_t current_shape
pthread_t kick_on_workers_thread
dt_pthread_mutex_t queue_mutex
uint8_t new_res[DT_CTL_WORKER_RESERVED]
dt_job_t * job_res[DT_CTL_WORKER_RESERVED]
struct dt_control_t::@7 cursor
dt_pthread_mutex_t toast_mutex
char log_message[10][1000]
struct dt_control_t::@9::@11 hinter
dt_pthread_mutex_t cond_mutex
dt_pthread_mutex_t global_mutex
ITaskbarList3 * taskbarlist
void(* cancellable)(dt_lib_module_t *self, struct dt_lib_backgroundjob_element_t *instance, dt_progress_t *progress)
size_t queue_length[DT_JOB_QUEUE_MAX]
struct dt_control_t::@8 progress_system
struct dt_control_t::@8::@10 proxy
Telling the user something happened.