32#include <glib/gi18n.h>
35#ifdef GDK_WINDOWING_QUARTZ
40#define DT_CLOSING_NOTICE_DELAY (G_USEC_PER_SEC)
42#define DT_CLOSING_POLL_INTERVAL 100
45#define DT_CLOSING_KIND_DARKROOM DT_JOB_QUEUE_MAX
127#ifdef GDK_WINDOWING_QUARTZ
179 :
_(
"Ansel is finishing its work before closing"));
196 "closes once the running ones are done.")
197 :
_(
"This window closes by itself as soon as it is done."));
272#ifdef GDK_WINDOWING_QUARTZ
292 return C_(
"job type",
"Image operation");
294 return C_(
"job type",
"Thumbnail");
296 return C_(
"job type",
"Background task");
298 return C_(
"job type",
"Export");
300 return C_(
"job type",
"Maintenance");
302 return C_(
"job type",
"Darkroom rendering");
334 for(guint
i = running->len;
i > 0;
i--)
339 for(guint
i = 0;
i < running->len;
i++)
348 for(guint
i = 0;
i < running->len;
i++)
361 if(queued != closing->
queued)
365 "%d other tasks, not started, would be dropped", queued),
368 "%d other tasks, not started, are dropped", queued),
389 (*(int32_t *)data)++;
405 const int32_t running
GtkWidget * dt_gui_main_window(void)
const char ** description(struct dt_iop_module_t *self)
static const dt_adaptation_t kind
static void _closing_details_update(dt_closing_t *closing)
#define DT_CLOSING_KIND_DARKROOM
static gboolean _closing_nothing_pending(void)
static gboolean _closing_confirm_delete(GtkWidget *widget __attribute__((unused)), GdkEvent *event __attribute__((unused)), gpointer user_data)
static void _closing_refresh(dt_closing_t *closing)
static gboolean _closing_confirm_key(GtkWidget *widget __attribute__((unused)), const GdkEventKey *event, gpointer user_data)
void dt_gui_closing_quit(void)
static void _closing_job_clear(gpointer data)
@ DT_CLOSING_COL_DESCRIPTION
static gboolean _closing_refuse_delete(GtkWidget *widget __attribute__((unused)), GdkEvent *event __attribute__((unused)), gpointer user_data __attribute__((unused)))
static void _closing_append_name(const gchar *message, void *data)
static gboolean _closing_confirm(void)
static void _closing_window_new(dt_closing_t *closing)
void dt_gui_closing_wait(void)
static gboolean _closing_poll(gpointer user_data)
static void _closing_count_job(const char *description __attribute__((unused)), const dt_job_queue_t queue __attribute__((unused)), const gboolean reserved, void *data)
#define DT_CLOSING_NOTICE_DELAY
static gboolean _closing_confirm_poll(gpointer user_data)
static void _closing_back_clicked(GtkButton *button __attribute__((unused)), gpointer user_data)
static void _closing_answer(dt_closing_t *closing, const gboolean quit)
static const char * _closing_kind_name(const int kind)
static int32_t _closing_running_jobs(void)
static void _closing_quit_clicked(GtkButton *button __attribute__((unused)), gpointer user_data)
static void _closing_collect_job(const char *description, const dt_job_queue_t queue, const gboolean reserved, void *data)
#define DT_CLOSING_POLL_INTERVAL
struct _GtkWidget GtkWidget
GtkWidget, opaque, spelled exactly as GTK spells it.
struct dt_control_t * dt_control_get_global(void)
void dt_gui_refocus_parent(GtkWindow *parent)
GHashTable * names
GtkWidget* -> the name the application knows it by.
GtkWidget * view
the tree view
void dt_control_running_jobs_foreach(dt_control_t *control, dt_control_running_jobs_foreach_callback_t callback, void *data)
int32_t dt_control_queued_jobs_count(dt_control_t *control)
int32_t dt_control_workers_alive(void)
@ DT_JOB_QUEUE_USER_EXPORT
void dt_print(dt_debug_thread_t thread, const char *msg,...) __attribute__((format(printf
Print to stdout when thread is enabled, prefixed with seconds since startup.
#define IS_NULL_PTR(p)
C is way too permissive with !=, == and if(var) checks, which can mean too many things depending on w...
#define dt_free(ptr)
g_free() ptr and set it to NULL, skipping both if it is already NULL.
void dt_osx_focus_window()
void dt_osx_disallow_fullscreen(GtkWidget *widget)
void dt_control_progress_foreach(dt_control_t *control, dt_progress_foreach_callback_t callback, void *data)
float dt_aligned_pixel_simd_t __attribute__((vector_size(16), aligned(16)))
Apply one channel's tone curve to each of the three colour channels, or pass the channel through unto...