417 snprintf(title,
sizeof(title),
"%s \"%s\"", _(
"edit style"),
name);
418 sd->
duplicate = gtk_check_button_new_with_label(_(
"duplicate style"));
419 gtk_widget_set_tooltip_text(sd->
duplicate, _(
"creates a duplicate of the style before applying changes"));
423 g_strlcpy(title, _(
"create new style"),
sizeof(title));
427 GtkDialog *dialog = GTK_DIALOG(
428 gtk_dialog_new_with_buttons(title, GTK_WINDOW(
window), GTK_DIALOG_DESTROY_WITH_PARENT,
429 _(
"_cancel"), GTK_RESPONSE_REJECT,
430 _(
"select _all"), GTK_RESPONSE_YES,
431 _(
"select _none"), GTK_RESPONSE_NONE,
432 _(
"_save"), GTK_RESPONSE_ACCEPT, NULL));
433#ifdef GDK_WINDOWING_QUARTZ
437 GtkContainer *content_area = GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
442 GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
443 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
444 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scroll),
DT_PIXEL_APPLY_DPI(450));
453 gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(box),
TRUE,
TRUE, 0);
454 gtk_container_add(GTK_CONTAINER(scroll), GTK_WIDGET(sbox));
456 sd->
name = gtk_entry_new();
458 gtk_entry_set_placeholder_text(GTK_ENTRY(sd->
name), _(
"name"));
459 gtk_widget_set_tooltip_text(sd->
name, _(
"enter a name for the new style"));
463 gtk_entry_set_placeholder_text(GTK_ENTRY(sd->
description), _(
"description"));
465 _(
"enter a description for the new style, this description is searchable"));
471 gtk_entry_set_text(GTK_ENTRY(sd->
name),
name);
476 gtk_entry_set_text(GTK_ENTRY(sd->
description), desc);
481 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(sd->
name),
FALSE,
TRUE, 0);
483 gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(scroll),
TRUE,
TRUE, 0);
486 sd->
items = GTK_TREE_VIEW(gtk_tree_view_new());
488 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);
490 sd->
items_new = GTK_TREE_VIEW(gtk_tree_view_new());
492 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT);
495 GtkCellRenderer *renderer = gtk_cell_renderer_toggle_new();
496 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
500 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"include"), renderer,
"active",
505 renderer = gtk_cell_renderer_toggle_new();
506 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
509 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items_new), -1, _(
"include"), renderer,
516 renderer = gtk_cell_renderer_toggle_new();
517 gtk_cell_renderer_toggle_set_activatable(GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);
521 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"update"), renderer,
"active",
526 renderer = gtk_cell_renderer_pixbuf_new();
527 GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes(
"", renderer,
"pixbuf",
529 gtk_tree_view_append_column(GTK_TREE_VIEW(sd->
items), column);
530 gtk_tree_view_column_set_alignment(column, 0.5);
531 gtk_tree_view_column_set_clickable(column,
FALSE);
536 column = gtk_tree_view_column_new_with_attributes(
"", renderer,
"pixbuf",
538 gtk_tree_view_column_set_alignment(column, 0.5);
539 gtk_tree_view_column_set_clickable(column,
FALSE);
541 gtk_tree_view_append_column(GTK_TREE_VIEW(sd->
items_new), column);
545 renderer = gtk_cell_renderer_text_new();
547 g_object_set(renderer,
"xalign", 0.0, (gchar *)0);
548 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items), -1, _(
"item"), renderer,
"text",
553 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(sd->
items_new), -1, _(
"item"), renderer,
"text",
557 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(sd->
items)), GTK_SELECTION_SINGLE);
558 gtk_tree_view_set_model(GTK_TREE_VIEW(sd->
items), GTK_TREE_MODEL(liststore));
560 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(sd->
items_new)), GTK_SELECTION_SINGLE);
561 gtk_tree_view_set_model(GTK_TREE_VIEW(sd->
items_new), GTK_TREE_MODEL(liststore_new));
563 gboolean has_new_item =
FALSE, has_item =
FALSE;
565 GdkPixbuf *is_active_pb =
567 GdkPixbuf *is_inactive_pb =
574 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
575 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
585 for(
const GList *items_iter =
items; items_iter; items_iter = g_list_next(items_iter))
591 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
592 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
602 else if(item->
num != -1
605 gtk_list_store_append(GTK_LIST_STORE(liststore_new), &iter);
606 gtk_list_store_set(GTK_LIST_STORE(liststore_new), &iter,
624 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
625 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
636 for(
const GList *items_iter =
items; items_iter; items_iter = g_list_next(items_iter))
646 GList *result = g_list_find_custom(
650 module = (dt_iop_module_t *)(result->data);
651 enabled = (
module->flags() & IOP_FLAGS_INCLUDE_IN_STYLES) ? TRUE : FALSE;
655 gtk_list_store_append(GTK_LIST_STORE(liststore), &iter);
656 gtk_list_store_set(GTK_LIST_STORE(liststore), &iter,
675 if(has_item) gtk_box_pack_start(GTK_BOX(sbox), GTK_WIDGET(sd->
items),
TRUE,
TRUE, 0);
677 if(has_new_item) gtk_box_pack_start(GTK_BOX(sbox), GTK_WIDGET(sd->
items_new),
TRUE,
TRUE, 0);
679 if(edit) gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(sd->
duplicate),
FALSE,
TRUE, 0);
681 g_object_unref(liststore);
682 g_object_unref(liststore_new);
690 gtk_widget_show_all(GTK_WIDGET(dialog));
691 gtk_dialog_run(GTK_DIALOG(dialog));
693 g_object_unref(is_active_pb);
694 g_object_unref(is_inactive_pb);