114#ifdef GDK_WINDOWING_QUARTZ
119 gtk_window_set_icon_name(GTK_WINDOW(
window),
"ansel");
120 gtk_window_set_title(GTK_WINDOW(
window), title);
121 gtk_window_set_resizable(GTK_WINDOW(
window),
FALSE);
131 if(GTK_IS_WINDOW(main_window)) gtk_window_set_transient_for(GTK_WINDOW(
window), GTK_WINDOW(main_window));
132 gtk_window_set_position(GTK_WINDOW(
window), GTK_WIN_POS_CENTER_ON_PARENT);
133 icon = gtk_image_new_from_icon_name(
"dialog-warning", GTK_ICON_SIZE_DIALOG);
137 if(GTK_IS_WINDOW(main_window)) gtk_window_set_transient_for(GTK_WINDOW(
window), GTK_WINDOW(main_window));
138 gtk_window_set_modal(GTK_WINDOW(
window),
TRUE);
139 gtk_window_set_position(GTK_WINDOW(
window), GTK_WIN_POS_CENTER_ON_PARENT);
140 icon = gtk_image_new_from_icon_name(
"dialog-warning", GTK_ICON_SIZE_DIALOG);
146 gtk_window_set_position(GTK_WINDOW(
window), GTK_WIN_POS_CENTER);
147 gtk_window_set_deletable(GTK_WINDOW(
window),
FALSE);
151 GtkWindowGroup *group = gtk_window_group_new();
152 gtk_window_group_add_window(group, GTK_WINDOW(
window));
153 g_object_unref(group);
154 icon = gtk_spinner_new();
155 gtk_spinner_start(GTK_SPINNER(icon));
166 gtk_container_add(GTK_CONTAINER(
window), box);
168 gtk_widget_set_valign(icon, GTK_ALIGN_START);
169 gtk_box_pack_start(GTK_BOX(box), icon,
FALSE,
FALSE, 0);
175 gchar *markup = g_markup_printf_escaped(
"<b>%s</b>", heading);
176 gtk_label_set_markup(GTK_LABEL(label), markup);
178 gtk_label_set_xalign(GTK_LABEL(label), 0.0);
213 alert->
buttons = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
214 gtk_button_box_set_layout(GTK_BUTTON_BOX(alert->
buttons), GTK_BUTTONBOX_END);
220 GtkWidget *button = gtk_button_new_with_label(label);
222 clicked->
alert = alert;
224 clicked->
data = data;
225 g_signal_connect_data(button,
"clicked", G_CALLBACK(
_alert_button_clicked), clicked, (GClosureNotify)g_free, 0);
226 gtk_container_add(GTK_CONTAINER(alert->
buttons), button);
301 GString *text = g_string_new(NULL);
302 GList *labels = gtk_container_get_children(GTK_CONTAINER(user_data));
303 for(GList *label = labels; label; label = g_list_next(label))
304 g_string_append(text, gtk_label_get_text(GTK_LABEL(label->data)));
307 GtkClipboard *clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
308 gtk_clipboard_set_text(clipboard, text->str, -1);
309 gtk_clipboard_store(clipboard);
310 g_string_free(text,
TRUE);
318 _alert_windows = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
319 _alert_closed = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
325 gchar *
key = g_strconcat(message->
title,
"\n", message->
message, NULL);
335 return G_SOURCE_REMOVE;
340 block = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
345 g_object_set_data_full(G_OBJECT(block),
"listed",
346 g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL),
347 (GDestroyNotify)g_hash_table_destroy);
351 (GClosureNotify)g_free, 0);
358 if(message->
once) g_object_set_data(G_OBJECT(block),
"once", GINT_TO_POINTER(
TRUE));
360 gboolean added =
FALSE;
362 && g_hash_table_add(g_object_get_data(G_OBJECT(block),
"listed"), g_strdup(message->
item)))
369 items = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
370 GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
372 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
373 gtk_scrolled_window_set_max_content_height(GTK_SCROLLED_WINDOW(scroll),
DT_PIXEL_APPLY_DPI(150));
374 gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scroll),
TRUE);
375 gtk_container_add(GTK_CONTAINER(scroll),
items);
377 GtkWidget *
copy = gtk_button_new_from_icon_name(
"edit-copy-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
378 gtk_widget_set_tooltip_text(
copy, _(
"copy to clipboard"));
379 gtk_widget_set_halign(
copy, GTK_ALIGN_END);
382 gtk_box_pack_start(GTK_BOX(block), scroll,
FALSE,
FALSE, 0);
383 g_object_set_data(G_OBJECT(block),
"items",
items);
387 gchar *text = g_strconcat(message->
item,
"\n", NULL);
390 gtk_label_set_xalign(GTK_LABEL(label), 0.0);
391 gtk_label_set_line_wrap(GTK_LABEL(label),
TRUE);
392 gtk_label_set_line_wrap_mode(GTK_LABEL(label), PANGO_WRAP_WORD_CHAR);
393 gtk_label_set_max_width_chars(GTK_LABEL(label), 60);
394 gtk_label_set_selectable(GTK_LABEL(label),
TRUE);
406 gtk_widget_show_all(block);
407 gtk_window_present(GTK_WINDOW(gtk_widget_get_toplevel(block)));
409 return G_SOURCE_REMOVE;
void copy(TYPE *dest, TYPE *source, size_t num_el)
Copy a flat buffer used to initialize test matrices.
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...