425 snprintf(title,
sizeof(title),
"%s \"%s\"", _(
"edit style"),
name);
426 sd->
duplicate = gtk_check_button_new_with_label(_(
"duplicate style"));
427 gtk_widget_set_tooltip_text(sd->
duplicate, _(
"creates a duplicate of the style before applying changes"));
431 g_strlcpy(title, _(
"create new style"),
sizeof(title));
435 GtkDialog *dialog = GTK_DIALOG(
436 gtk_dialog_new_with_buttons(title, GTK_WINDOW(window), GTK_DIALOG_DESTROY_WITH_PARENT,
437 _(
"_cancel"), GTK_RESPONSE_REJECT,
438 _(
"select _all"), GTK_RESPONSE_YES,
439 _(
"select _none"), GTK_RESPONSE_NONE,
440 _(
"_save"), GTK_RESPONSE_ACCEPT, NULL));
441#ifdef GDK_WINDOWING_QUARTZ
445 GtkContainer *content_area = GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
450 GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
451 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
452 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scroll),
DT_PIXEL_APPLY_DPI(450));
461 gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(box),
TRUE,
TRUE, 0);
462 gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(sbox));
464 sd->
name = gtk_entry_new();
466 gtk_entry_set_placeholder_text(GTK_ENTRY(sd->
name), _(
"name"));
467 gtk_widget_set_tooltip_text(sd->
name, _(
"enter a name for the new style"));
471 gtk_entry_set_placeholder_text(GTK_ENTRY(sd->
description), _(
"description"));
473 _(
"enter a description for the new style, this description is searchable"));
479 gtk_entry_set_text(GTK_ENTRY(sd->
name),
name);
484 gtk_entry_set_text(GTK_ENTRY(sd->
description), desc);
489 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(sd->
name),
FALSE,
TRUE, 0);
491 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(scroll),
TRUE,
TRUE, 0);
494 sd->
items = GTK_TREE_VIEW(gtk_tree_view_new());
496 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);
498 sd->
items_new = GTK_TREE_VIEW(gtk_tree_view_new());
500 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);
503 GtkCellRenderer *renderer = gtk_cell_renderer_toggle_new();
504 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
508 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"include"), renderer,
"active",
513 renderer = gtk_cell_renderer_toggle_new();
514 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
517 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items_new), -1, _(
"include"), renderer,
524 renderer = gtk_cell_renderer_toggle_new();
525 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
529 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"update"), renderer,
"active",
534 renderer = gtk_cell_renderer_pixbuf_new();
535 GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes(
"", renderer,
"pixbuf",
537 gtk_tree_view_append_column(GTK_TREE_VIEW(sd->
items), column);
538 gtk_tree_view_column_set_alignment(column, 0.5);
539 gtk_tree_view_column_set_clickable(column,
FALSE);
544 column = gtk_tree_view_column_new_with_attributes(
"", renderer,
"pixbuf",
546 gtk_tree_view_column_set_alignment(column, 0.5);
547 gtk_tree_view_column_set_clickable(column,
FALSE);
549 gtk_tree_view_append_column(GTK_TREE_VIEW(sd->
items_new), column);
553 renderer = gtk_cell_renderer_text_new();
555 g_object_set(renderer,
"xalign", 0.0, (gchar *)0);
556 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"item"), renderer,
"text",
561 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items_new), -1, _(
"item"), renderer,
"text",
565 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(sd->
items)), GTK_SELECTION_SINGLE);
566 gtk_tree_view_set_model(GTK_TREE_VIEW(sd->
items), GTK_TREE_MODEL(liststore));
568 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(sd->
items_new)), GTK_SELECTION_SINGLE);
569 gtk_tree_view_set_model(GTK_TREE_VIEW(sd->
items_new), GTK_TREE_MODEL(liststore_new));
571 gboolean has_new_item =
FALSE, has_item =
FALSE;
573 GdkPixbuf *is_active_pb =
575 GdkPixbuf *is_inactive_pb =
582 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
583 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
593 for(
const GList *items_iter =
items; items_iter; items_iter = g_list_next(items_iter))
599 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
600 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
610 else if(item->
num != -1
613 gtk_list_store_append(GTK_LIST_STORE(liststore_new), &iter);
614 gtk_list_store_set(GTK_LIST_STORE(liststore_new), &iter,
632 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
633 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
644 for(
const GList *items_iter =
items; items_iter; items_iter = g_list_next(items_iter))
649 gboolean enabled =
TRUE;
654 GList *result = g_list_find_custom(
658 module = (dt_iop_module_t *)(result->data);
659 enabled = (
module->flags() & IOP_FLAGS_INCLUDE_IN_STYLES) ? TRUE : FALSE;
663 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
664 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
683 if(has_item) gtk_box_pack_start(GTK_BOX(sbox), GTK_WIDGET(sd->
items),
TRUE,
TRUE, 0);
685 if(has_new_item) gtk_box_pack_start(GTK_BOX(sbox), GTK_WIDGET(sd->
items_new),
TRUE,
TRUE, 0);
687 if(edit) gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(sd->
duplicate),
FALSE,
TRUE, 0);
689 g_object_unref(liststore);
690 g_object_unref(liststore_new);
698 gtk_widget_show_all(GTK_WIDGET(dialog));
699 gtk_dialog_run(GTK_DIALOG(dialog));
701 g_object_unref(is_active_pb);
702 g_object_unref(is_inactive_pb);