static GtkWidget * color_profile_combo_box_new (ProfileDialog *dialog) { GtkWidget *combo; GtkWidget *chooser; gchar *history; GimpColorProfile *profile; gboolean to_gray; gchar *label; GError *error = NULL; chooser = gimp_color_profile_chooser_dialog_new (_("Select Destination Profile"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN); history = gimp_personal_rc_file ("profilerc"); combo = gimp_color_profile_combo_box_new (chooser, history); g_free (history); switch (dialog->dialog_type) { case COLOR_PROFILE_DIALOG_ASSIGN_PROFILE: case COLOR_PROFILE_DIALOG_CONVERT_TO_PROFILE: to_gray = (gimp_image_get_base_type (dialog->image) == GIMP_GRAY); break; case COLOR_PROFILE_DIALOG_CONVERT_TO_RGB: to_gray = FALSE; break; case COLOR_PROFILE_DIALOG_CONVERT_TO_GRAY: to_gray = TRUE; break; default: g_return_val_if_reached (NULL); } profile = dialog->builtin_profile; if (to_gray) { label = g_strdup_printf (_("Built-in grayscale (%s)"), gimp_color_profile_get_label (profile)); profile = gimp_color_config_get_gray_color_profile (dialog->config, &error); } else { label = g_strdup_printf (_("Built-in RGB (%s)"), gimp_color_profile_get_label (profile)); profile = gimp_color_config_get_rgb_color_profile (dialog->config, &error); } gimp_color_profile_combo_box_add_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), NULL, label); g_free (label); if (profile) { GFile *file; if (to_gray) { file = g_file_new_for_path (dialog->config->gray_profile); label = g_strdup_printf (_("Preferred grayscale (%s)"), gimp_color_profile_get_label (profile)); } else { file = g_file_new_for_path (dialog->config->rgb_profile); label = g_strdup_printf (_("Preferred RGB (%s)"), gimp_color_profile_get_label (profile)); } g_object_unref (profile); gimp_color_profile_combo_box_add_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), file, label); g_object_unref (file); g_free (label); } else if (error) { gimp_message (dialog->image->gimp, G_OBJECT (dialog->dialog), GIMP_MESSAGE_ERROR, "%s", error->message); g_clear_error (&error); } gimp_color_profile_combo_box_set_active_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), NULL, NULL); return combo; }
static GtkWidget * color_profile_combo_box_new (ProfileDialog *dialog) { GtkWidget *combo; GtkWidget *chooser; gchar *history; GimpColorProfile *profile; gchar *label; GError *error = NULL; chooser = gimp_color_profile_chooser_dialog_new (_("Select destination profile")); history = gimp_personal_rc_file ("profilerc"); combo = gimp_color_profile_combo_box_new (chooser, history); g_free (history); profile = gimp_image_get_builtin_color_profile (dialog->image); if (gimp_image_get_base_type (dialog->image) == GIMP_GRAY) { label = g_strdup_printf (_("Built-in grayscale (%s)"), gimp_color_profile_get_label (profile)); profile = gimp_color_config_get_gray_color_profile (dialog->config, &error); } else { label = g_strdup_printf (_("Built-in RGB (%s)"), gimp_color_profile_get_label (profile)); profile = gimp_color_config_get_rgb_color_profile (dialog->config, &error); } gimp_color_profile_combo_box_add_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), NULL, label); g_free (label); if (profile) { GFile *file = g_file_new_for_path (dialog->config->rgb_profile); if (gimp_image_get_base_type (dialog->image) == GIMP_GRAY) { label = g_strdup_printf (_("Preferred grayscale (%s)"), gimp_color_profile_get_label (profile)); } else { label = g_strdup_printf (_("Preferred RGB (%s)"), gimp_color_profile_get_label (profile)); } g_object_unref (profile); gimp_color_profile_combo_box_add_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), file, label); g_object_unref (file); g_free (label); } else if (error) { gimp_message (dialog->image->gimp, G_OBJECT (dialog->dialog), GIMP_MESSAGE_ERROR, "%s", error->message); g_clear_error (&error); } gimp_color_profile_combo_box_set_active_file (GIMP_COLOR_PROFILE_COMBO_BOX (combo), NULL, NULL); return combo; }