From b51ee77ec01ec141d12586d9375d970123ecc772 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sun, 23 Aug 2015 10:51:31 +0200 Subject: [PATCH] app: implement the "Convert to RGB Working Space" import dialog in the core Add gimp_image_import_color_profile(), a GUI vtable entry query_profile_policy() and a new dialog which returns the profile policy and the profile to convert to. Get rid of the wrapper that calls the lcms plug-in for that dialog, the plug-in is now completely unused. This commit doesn't add any new features, it's just the former lcms plug-in dialog implemented in app/ (except the little fix that it is now aware of linear vs. gamma images). --- app/core/gimp-gui.c | 20 +++ app/core/gimp-gui.h | 20 ++- app/core/gimpimage-color-profile.c | 78 +++++++++ app/core/gimpimage-color-profile.h | 5 + app/dialogs/Makefile.am | 2 + app/dialogs/color-profile-import-dialog.c | 151 ++++++++++++++++++ .../color-profile-import-dialog.h} | 21 +-- app/file/file-open.c | 85 +--------- app/gui/gui-vtable.c | 24 ++- app/plug-in/Makefile.am | 5 +- app/plug-in/plug-in-icc-profile.c | 138 ---------------- app/widgets/gimphelp-ids.h | 1 + po/POTFILES.in | 2 +- 13 files changed, 314 insertions(+), 238 deletions(-) create mode 100644 app/dialogs/color-profile-import-dialog.c rename app/{plug-in/plug-in-icc-profile.h => dialogs/color-profile-import-dialog.h} (56%) delete mode 100644 app/plug-in/plug-in-icc-profile.c diff --git a/app/core/gimp-gui.c b/app/core/gimp-gui.c index 7903ba8802..7ef7b5e706 100644 --- a/app/core/gimp-gui.c +++ b/app/core/gimp-gui.c @@ -65,6 +65,7 @@ gimp_gui_init (Gimp *gimp) gimp->gui.recent_list_add_file = NULL; gimp->gui.recent_list_load = NULL; gimp->gui.get_mount_operation = NULL; + gimp->gui.query_profile_policy = NULL; } void @@ -506,3 +507,22 @@ gimp_get_mount_operation (Gimp *gimp, return g_mount_operation_new (); } + +GimpColorProfilePolicy +gimp_query_profile_policy (Gimp *gimp, + GimpImage *image, + GimpContext *context, + GimpColorProfile **dest_profile, + gboolean *dont_ask) +{ + g_return_val_if_fail (GIMP_IS_GIMP (gimp), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (GIMP_IS_IMAGE (image), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (dest_profile != NULL, GIMP_COLOR_PROFILE_POLICY_KEEP); + + if (gimp->gui.query_profile_policy) + return gimp->gui.query_profile_policy (gimp, image, context, + dest_profile, dont_ask); + + return GIMP_COLOR_PROFILE_POLICY_KEEP; +} diff --git a/app/core/gimp-gui.h b/app/core/gimp-gui.h index 7150f36abe..0f056a0eab 100644 --- a/app/core/gimp-gui.h +++ b/app/core/gimp-gui.h @@ -93,8 +93,16 @@ struct _GimpGui const gchar *mime_type); void (* recent_list_load) (Gimp *gimp); - GMountOperation * (* get_mount_operation) (Gimp *gimp, + GMountOperation + * (* get_mount_operation) (Gimp *gimp, GimpProgress *progress); + + GimpColorProfilePolicy + (* query_profile_policy) (Gimp *gimp, + GimpImage *image, + GimpContext *context, + GimpColorProfile **dest_profile, + gboolean *dont_ask); }; @@ -173,8 +181,16 @@ gboolean gimp_recent_list_add_file (Gimp *gimp, const gchar *mime_type); void gimp_recent_list_load (Gimp *gimp); -GMountOperation * gimp_get_mount_operation (Gimp *gimp, +GMountOperation + * gimp_get_mount_operation (Gimp *gimp, GimpProgress *progress); +GimpColorProfilePolicy + gimp_query_profile_policy (Gimp *gimp, + GimpImage *image, + GimpContext *context, + GimpColorProfile **dest_profile, + gboolean *dont_ask); + #endif /* __GIMP_GUI_H__ */ diff --git a/app/core/gimpimage-color-profile.c b/app/core/gimpimage-color-profile.c index eee93d30df..de6cb29271 100644 --- a/app/core/gimpimage-color-profile.c +++ b/app/core/gimpimage-color-profile.c @@ -38,6 +38,7 @@ #include "gegl/gimp-babl.h" #include "gimp.h" +#include "gimpcontext.h" #include "gimpdrawable.h" #include "gimperror.h" #include "gimpimage.h" @@ -406,6 +407,83 @@ gimp_image_convert_color_profile (GimpImage *image, return TRUE; } +void +gimp_image_import_color_profile (GimpImage *image, + GimpContext *context, + GimpProgress *progress, + gboolean interactive) +{ + GimpColorConfig *config = image->gimp->config->color_management; + + g_return_if_fail (GIMP_IS_IMAGE (image)); + g_return_if_fail (GIMP_IS_CONTEXT (context)); + g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress)); + + config = image->gimp->config->color_management; + + if (gimp_image_get_base_type (image) == GIMP_GRAY) + return; + + if (config->mode == GIMP_COLOR_MANAGEMENT_OFF) + return; + + if (gimp_image_get_color_profile (image)) + { + GimpColorProfilePolicy policy; + GimpColorProfile *dest_profile = NULL; + + policy = image->gimp->config->color_profile_policy; + + if (policy == GIMP_COLOR_PROFILE_POLICY_ASK) + { + if (interactive) + { + gboolean dont_ask = FALSE; + + policy = gimp_query_profile_policy (image->gimp, image, context, + &dest_profile, &dont_ask); + + if (dont_ask) + { + g_object_set (G_OBJECT (image->gimp->config), + "color-profile-policy", policy, + NULL); + } + } + else + { + policy = GIMP_COLOR_PROFILE_POLICY_KEEP; + } + } + + if (policy == GIMP_COLOR_PROFILE_POLICY_CONVERT) + { + GimpColorRenderingIntent intent; + gboolean bpc; + + if (! dest_profile) + { + dest_profile = gimp_image_get_builtin_color_profile (image); + g_object_ref (dest_profile); + } + + intent = config->display_intent; + bpc = (intent == GIMP_COLOR_RENDERING_INTENT_RELATIVE_COLORIMETRIC); + + gimp_image_undo_disable (image); + + gimp_image_convert_color_profile (image, dest_profile, + intent, bpc, + progress, NULL); + + gimp_image_clean_all (image); + gimp_image_undo_enable (image); + + g_object_unref (dest_profile); + } + } +} + /* private functions */ diff --git a/app/core/gimpimage-color-profile.h b/app/core/gimpimage-color-profile.h index 89ad0e54cc..d525a4207b 100644 --- a/app/core/gimpimage-color-profile.h +++ b/app/core/gimpimage-color-profile.h @@ -64,5 +64,10 @@ gboolean gimp_image_convert_color_profile (GimpImage GimpProgress *progress, GError **error); +void gimp_image_import_color_profile (GimpImage *image, + GimpContext *context, + GimpProgress *progress, + gboolean interactive); + #endif /* __GIMP_IMAGE_COLOR_PROFILE_H__ */ diff --git a/app/dialogs/Makefile.am b/app/dialogs/Makefile.am index 1e198cc8f8..0ac82dd678 100644 --- a/app/dialogs/Makefile.am +++ b/app/dialogs/Makefile.am @@ -28,6 +28,8 @@ libappdialogs_a_sources = \ channel-options-dialog.h \ color-profile-dialog.c \ color-profile-dialog.h \ + color-profile-import-dialog.c \ + color-profile-import-dialog.h \ convert-precision-dialog.c \ convert-precision-dialog.h \ convert-type-dialog.c \ diff --git a/app/dialogs/color-profile-import-dialog.c b/app/dialogs/color-profile-import-dialog.c new file mode 100644 index 0000000000..30ee6761c8 --- /dev/null +++ b/app/dialogs/color-profile-import-dialog.c @@ -0,0 +1,151 @@ +/* GIMP - The GNU Image Manipulation Program + * Copyright (C) 1995 Spencer Kimball and Peter Mattis + * + * color-profile-import-dialog.h + * Copyright (C) 2015 Michael Natterer + * + * Partly based on the lcms plug-in + * Copyright (C) 2006, 2007 Sven Neumann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "config.h" + +#include +#include + +#include "libgimpbase/gimpbase.h" +#include "libgimpcolor/gimpcolor.h" +#include "libgimpwidgets/gimpwidgets.h" + +#include "dialogs-types.h" + +#include "core/gimp.h" +#include "core/gimpcontext.h" +#include "core/gimpimage.h" +#include "core/gimpimage-color-profile.h" + +#include "widgets/gimphelp-ids.h" +#include "widgets/gimpviewabledialog.h" +#include "widgets/gimpwidgets-constructors.h" + +#include "color-profile-import-dialog.h" + +#include "gimp-intl.h" + + +/* public functions */ + +GimpColorProfilePolicy +color_profile_import_dialog_run (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile **dest_profile, + gboolean *dont_ask) +{ + GtkWidget *dialog; + GtkWidget *main_vbox; + GtkWidget *frame; + GtkWidget *label; + GtkWidget *toggle; + GimpColorProfile *src_profile; + GimpColorProfilePolicy policy; + gchar *text; + + g_return_val_if_fail (GIMP_IS_IMAGE (image), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (GIMP_IS_CONTEXT (context), GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), + GIMP_COLOR_PROFILE_POLICY_KEEP); + g_return_val_if_fail (dest_profile != NULL, GIMP_COLOR_PROFILE_POLICY_KEEP); + + src_profile = gimp_image_get_color_profile (image); + *dest_profile = gimp_image_get_builtin_color_profile (image); + + dialog = + gimp_viewable_dialog_new (GIMP_VIEWABLE (image), context, + _("Convert to RGB Working Space?"), + "gimp-image-color-profile-import", + NULL, + _("Import the image from a color profile"), + parent, + gimp_standard_help_func, + GIMP_HELP_IMAGE_COLOR_PROFILE_IMPORT, + + _("Keep"), GTK_RESPONSE_CANCEL, + _("Convert"), GTK_RESPONSE_OK, + + NULL); + + gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), + GTK_RESPONSE_OK, + GTK_RESPONSE_CANCEL, + -1); + + gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); + + main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); + gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12); + gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), + main_vbox, TRUE, TRUE, 0); + gtk_widget_show (main_vbox); + + text = g_strdup_printf (_("The image '%s' has an embedded color profile"), + gimp_image_get_display_name (image)); + frame = gimp_frame_new (text); + g_free (text); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + label = gimp_color_profile_label_new (src_profile); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + + frame = gimp_frame_new (_("Convert the image to the RGB working space?")); + gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); + gtk_widget_show (frame); + + label = gimp_color_profile_label_new (*dest_profile); + gtk_container_add (GTK_CONTAINER (frame), label); + gtk_widget_show (label); + + if (dont_ask) + { + toggle = gtk_check_button_new_with_mnemonic (_("_Don't ask me again")); + gtk_box_pack_end (GTK_BOX (main_vbox), toggle, FALSE, FALSE, 0); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), FALSE); + gtk_widget_show (toggle); + } + + switch (gtk_dialog_run (GTK_DIALOG (dialog))) + { + case GTK_RESPONSE_OK: + policy = GIMP_COLOR_PROFILE_POLICY_CONVERT; + g_object_ref (*dest_profile); + break; + + default: + policy = GIMP_COLOR_PROFILE_POLICY_KEEP; + break; + } + + if (dont_ask) + { + *dont_ask = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle)); + } + + gtk_widget_destroy (dialog); + + return policy; +} diff --git a/app/plug-in/plug-in-icc-profile.h b/app/dialogs/color-profile-import-dialog.h similarity index 56% rename from app/plug-in/plug-in-icc-profile.h rename to app/dialogs/color-profile-import-dialog.h index 19585c8077..0daa880e7d 100644 --- a/app/plug-in/plug-in-icc-profile.h +++ b/app/dialogs/color-profile-import-dialog.h @@ -1,8 +1,8 @@ /* GIMP - The GNU Image Manipulation Program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * - * plug-in-icc-profile.h - * Copyright (C) 2006 Sven Neumann + * color-profile-import-dialog.h + * Copyright (C) 2015 Michael Natterer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,15 +18,16 @@ * along with this program. If not, see . */ -#ifndef __PLUG_IN_ICC_PROFILE_H__ -#define __PLUG_IN_ICC_PROFILE_H__ +#ifndef __COLOR_PROFILE_IMPORT_DIALOG_H__ +#define __COLOR_PROFILE_IMPORT_DIALOG_H__ -gboolean plug_in_icc_profile_apply_rgb (GimpImage *image, - GimpContext *context, - GimpProgress *progress, - GimpRunMode run_mode, - GError **error); +GimpColorProfilePolicy + color_profile_import_dialog_run (GimpImage *image, + GimpContext *context, + GtkWidget *parent, + GimpColorProfile **dest_profile, + gboolean *dont_ask); -#endif /* __PLUG_IN_ICC_PROFILE_H__ */ +#endif /* __COLOR_PROFILE_IMPORT_DIALOG_H__ */ diff --git a/app/file/file-open.c b/app/file/file-open.c index f86e40178f..06edbc614f 100644 --- a/app/file/file-open.c +++ b/app/file/file-open.c @@ -48,8 +48,6 @@ #include "plug-in/gimppluginmanager.h" #include "plug-in/gimppluginprocedure.h" -#include "plug-in/gimppluginerror.h" -#include "plug-in/plug-in-icc-profile.h" #include "file-open.h" #include "file-procedure.h" @@ -65,10 +63,6 @@ static void file_open_sanitize_image (GimpImage *image static void file_open_convert_items (GimpImage *dest_image, const gchar *basename, GList *items); -static void file_open_handle_color_profile (GimpImage *image, - GimpContext *context, - GimpProgress *progress, - GimpRunMode run_mode); static GList * file_open_get_layers (const GimpImage *image, gboolean merge_visible, gint *n_visible); @@ -255,7 +249,9 @@ file_open_image (Gimp *gimp, if (image) { - file_open_handle_color_profile (image, context, progress, run_mode); + gimp_image_import_color_profile (image, context, progress, + run_mode == GIMP_RUN_INTERACTIVE ? + TRUE : FALSE); if (file_open_file_proc_is_import (file_proc)) { @@ -775,81 +771,6 @@ file_open_convert_items (GimpImage *dest_image, } } -static void -file_open_profile_apply_rgb (GimpImage *image, - GimpContext *context, - GimpProgress *progress, - GimpRunMode run_mode) -{ - GimpColorConfig *config = image->gimp->config->color_management; - GError *error = NULL; - - if (gimp_image_get_base_type (image) == GIMP_GRAY) - return; - - if (config->mode == GIMP_COLOR_MANAGEMENT_OFF) - return; - - if (! plug_in_icc_profile_apply_rgb (image, context, progress, run_mode, - &error)) - { - if (error->domain == GIMP_PLUG_IN_ERROR && - error->code == GIMP_PLUG_IN_NOT_FOUND) - { - gchar *msg = g_strdup_printf ("%s\n\n%s", - error->message, - _("Color management has been disabled. " - "It can be enabled again in the " - "Preferences dialog.")); - - g_object_set (config, "mode", GIMP_COLOR_MANAGEMENT_OFF, NULL); - - gimp_message_literal (image->gimp, G_OBJECT (progress), - GIMP_MESSAGE_WARNING, msg); - g_free (msg); - } - else - { - gimp_message_literal (image->gimp, G_OBJECT (progress), - GIMP_MESSAGE_ERROR, error->message); - } - - g_error_free (error); - } -} - -static void -file_open_handle_color_profile (GimpImage *image, - GimpContext *context, - GimpProgress *progress, - GimpRunMode run_mode) -{ - if (gimp_image_get_color_profile (image)) - { - gimp_image_undo_disable (image); - - switch (image->gimp->config->color_profile_policy) - { - case GIMP_COLOR_PROFILE_POLICY_ASK: - if (run_mode == GIMP_RUN_INTERACTIVE) - file_open_profile_apply_rgb (image, context, progress, - GIMP_RUN_INTERACTIVE); - break; - - case GIMP_COLOR_PROFILE_POLICY_KEEP: - break; - - case GIMP_COLOR_PROFILE_POLICY_CONVERT: - file_open_profile_apply_rgb (image, context, progress, - GIMP_RUN_NONINTERACTIVE); - break; - } - - gimp_image_clean_all (image); - gimp_image_undo_enable (image); - } -} - static GList * file_open_get_layers (const GimpImage *image, gboolean merge_visible, diff --git a/app/gui/gui-vtable.c b/app/gui/gui-vtable.c index 70dca10f38..9a16bdc971 100644 --- a/app/gui/gui-vtable.c +++ b/app/gui/gui-vtable.c @@ -76,6 +76,8 @@ #include "menus/menus.h" +#include "dialogs/color-profile-import-dialog.h" + #include "gui.h" #include "gui-message.h" #include "gui-vtable.h" @@ -144,9 +146,17 @@ static gboolean gui_recent_list_add_file (Gimp *gimp, const gchar *mime_type); static void gui_recent_list_load (Gimp *gimp); -static GMountOperation * gui_get_mount_operation (Gimp *gimp, +static GMountOperation + * gui_get_mount_operation (Gimp *gimp, GimpProgress *progress); +static GimpColorProfilePolicy + gui_query_profile_policy (Gimp *gimp, + GimpImage *image, + GimpContext *context, + GimpColorProfile **dest_profile, + gboolean *dont_ask); + /* public functions */ @@ -182,6 +192,7 @@ gui_vtable_init (Gimp *gimp) gimp->gui.recent_list_add_file = gui_recent_list_add_file; gimp->gui.recent_list_load = gui_recent_list_load; gimp->gui.get_mount_operation = gui_get_mount_operation; + gimp->gui.query_profile_policy = gui_query_profile_policy; } @@ -750,3 +761,14 @@ gui_get_mount_operation (Gimp *gimp, return gtk_mount_operation_new (GTK_WINDOW (toplevel)); } + +static GimpColorProfilePolicy +gui_query_profile_policy (Gimp *gimp, + GimpImage *image, + GimpContext *context, + GimpColorProfile **dest_profile, + gboolean *dont_ask) +{ + return color_profile_import_dialog_run (image, context, NULL, + dest_profile, dont_ask); +} diff --git a/app/plug-in/Makefile.am b/app/plug-in/Makefile.am index 8e94be68f6..b28fec5dda 100644 --- a/app/plug-in/Makefile.am +++ b/app/plug-in/Makefile.am @@ -72,10 +72,7 @@ libappplug_in_a_SOURCES = \ plug-in-params.c \ plug-in-params.h \ plug-in-rc.c \ - plug-in-rc.h \ - \ - plug-in-icc-profile.c \ - plug-in-icc-profile.h + plug-in-rc.h # # rules to generate built sources diff --git a/app/plug-in/plug-in-icc-profile.c b/app/plug-in/plug-in-icc-profile.c deleted file mode 100644 index 5d8159e406..0000000000 --- a/app/plug-in/plug-in-icc-profile.c +++ /dev/null @@ -1,138 +0,0 @@ -/* GIMP - The GNU Image Manipulation Program - * Copyright (C) 1995 Spencer Kimball and Peter Mattis - * - * plug-in-icc-profile.c - * Copyright (C) 2006 Sven Neumann - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "config.h" - -#include -#include - -#include "libgimpbase/gimpbase.h" - -#include "core/core-types.h" - -#include "core/gimp.h" -#include "core/gimpcontext.h" -#include "core/gimpimage.h" -#include "core/gimpparamspecs.h" -#include "core/gimpprogress.h" - -#include "pdb/gimppdb.h" -#include "pdb/gimpprocedure.h" - -#include "gimppluginerror.h" -#include "plug-in-icc-profile.h" - -#include "gimp-intl.h" - - -#define ICC_PROFILE_APPLY_RGB_PROC "plug-in-icc-profile-apply-rgb" - - -gboolean -plug_in_icc_profile_apply_rgb (GimpImage *image, - GimpContext *context, - GimpProgress *progress, - GimpRunMode run_mode, - GError **error) -{ - Gimp *gimp; - GimpProcedure *procedure; - - g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE); - g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); - g_return_val_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress), FALSE); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - - gimp = image->gimp; - - if (gimp_image_get_base_type (image) == GIMP_GRAY) - { - g_set_error (error, GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_EXECUTION_FAILED, - _("Can't apply color profile to grayscale image (%s)"), - ICC_PROFILE_APPLY_RGB_PROC); - return FALSE; - } - - procedure = gimp_pdb_lookup_procedure (gimp->pdb, ICC_PROFILE_APPLY_RGB_PROC); - - if (procedure && - procedure->num_args >= 2 && - GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) && - GIMP_IS_PARAM_SPEC_IMAGE_ID (procedure->args[1])) - { - GimpValueArray *return_vals; - GimpPDBStatusType status; - GimpColorProfilePolicy policy = GIMP_COLOR_PROFILE_POLICY_ASK; - gboolean success; - - return_vals = - gimp_pdb_execute_procedure_by_name (gimp->pdb, context, progress, error, - ICC_PROFILE_APPLY_RGB_PROC, - GIMP_TYPE_INT32, run_mode, - GIMP_TYPE_IMAGE_ID, - gimp_image_get_ID (image), - G_TYPE_NONE); - - status = g_value_get_enum (gimp_value_array_index (return_vals, 0)); - - switch (status) - { - case GIMP_PDB_SUCCESS: - policy = GIMP_COLOR_PROFILE_POLICY_CONVERT; - success = TRUE; - break; - - case GIMP_PDB_CANCEL: - policy = GIMP_COLOR_PROFILE_POLICY_KEEP; - success = TRUE; - break; - - default: - if (error && *error == NULL) - g_set_error (error, - GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_EXECUTION_FAILED, - _("Error running '%s'"), ICC_PROFILE_APPLY_RGB_PROC); - success = FALSE; - break; - } - - if (success && gimp_value_array_length (return_vals) > 1) - { - GValue *value = gimp_value_array_index (return_vals, 1); - - if (GIMP_VALUE_HOLDS_INT32 (value) && g_value_get_int (value)) - { - g_object_set (G_OBJECT (gimp->config), - "color-profile-policy", policy, - NULL); - } - } - - gimp_value_array_unref (return_vals); - - return success; - } - - g_set_error (error, - GIMP_PLUG_IN_ERROR, GIMP_PLUG_IN_NOT_FOUND, - _("Plug-In missing (%s)"), ICC_PROFILE_APPLY_RGB_PROC); - - return FALSE; -} diff --git a/app/widgets/gimphelp-ids.h b/app/widgets/gimphelp-ids.h index cec8900dc3..e1fd38af6e 100644 --- a/app/widgets/gimphelp-ids.h +++ b/app/widgets/gimphelp-ids.h @@ -150,6 +150,7 @@ #define GIMP_HELP_IMAGE_COLOR_PROFILE_ASSIGN "gimp-image-color-profile-assign" #define GIMP_HELP_IMAGE_COLOR_PROFILE_CONVERT "gimp-image-color-profile-convert" #define GIMP_HELP_IMAGE_COLOR_PROFILE_DISCARD "gimp-image-color-profile-discard" +#define GIMP_HELP_IMAGE_COLOR_PROFILE_IMPORT "gimp-image-color-profile-import" #define GIMP_HELP_IMAGE_GRID "gimp-image-grid" #define GIMP_HELP_IMAGE_PROPERTIES "gimp-image-properties" diff --git a/po/POTFILES.in b/po/POTFILES.in index e382fe5e84..98f6625854 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -180,6 +180,7 @@ app/dialogs/about-dialog.c app/dialogs/action-search-dialog.c app/dialogs/channel-options-dialog.c app/dialogs/color-profile-dialog.c +app/dialogs/color-profile-import-dialog.c app/dialogs/convert-precision-dialog.c app/dialogs/convert-type-dialog.c app/dialogs/data-delete-dialog.c @@ -326,7 +327,6 @@ app/plug-in/gimppluginprocedure.c app/plug-in/gimppluginprocframe.c app/plug-in/gimptemporaryprocedure.c app/plug-in/plug-in-enums.c -app/plug-in/plug-in-icc-profile.c app/plug-in/plug-in-rc.c app/text/gimpfont.c