[gimp] Bug 599573 - Remember dialog defaults between Gimp sessions
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 599573 - Remember dialog defaults between Gimp sessions
- Date: Tue, 27 Sep 2016 22:32:58 +0000 (UTC)
commit a6b6259b22feca3c637ca25e91a0a27fd9daf1fe
Author: Michael Natterer <mitch gimp org>
Date: Wed Sep 28 00:31:59 2016 +0200
Bug 599573 - Remember dialog defaults between Gimp sessions
Remember the 'Indexed Color Conversion' dialog settings in
GimpDialogConfig.
app/actions/image-commands.c | 67 ++++++++++++------------
app/config/gimpdialogconfig.c | 95 ++++++++++++++++++++++++++++++++++
app/config/gimpdialogconfig.h | 7 +++
app/config/gimprc-blurbs.h | 20 +++++++-
app/dialogs/convert-indexed-dialog.c | 4 +-
app/dialogs/preferences-dialog.c | 30 +++++++++++
6 files changed, 187 insertions(+), 36 deletions(-)
---
diff --git a/app/actions/image-commands.c b/app/actions/image-commands.c
index bd213a8..30ce89e 100644
--- a/app/actions/image-commands.c
+++ b/app/actions/image-commands.c
@@ -138,17 +138,11 @@ static void image_merge_layers_callback (GtkWidget *dialog,
/* private variables */
-static GimpUnit image_resize_unit = GIMP_UNIT_PIXEL;
-static GimpUnit image_scale_unit = GIMP_UNIT_PIXEL;
-static GimpInterpolationType image_scale_interp = -1;
-
-static GimpConvertPaletteType image_convert_indexed_palette_type = GIMP_MAKE_PALETTE;
-static gint image_convert_indexed_max_colors = 256;
-static gboolean image_convert_indexed_remove_duplicates = TRUE;
-static GimpConvertDitherType image_convert_indexed_dither_type = GIMP_NO_DITHER;
-static gboolean image_convert_indexed_dither_alpha = FALSE;
-static gboolean image_convert_indexed_dither_text_layers = FALSE;
-static GimpPalette *image_convert_indexed_custom_palette = NULL;
+static GimpUnit image_resize_unit = GIMP_UNIT_PIXEL;
+static GimpUnit image_scale_unit = GIMP_UNIT_PIXEL;
+static GimpInterpolationType image_scale_interp = -1;
+static GimpPalette *image_convert_indexed_custom_palette = NULL;
+
/* public functions */
@@ -207,6 +201,7 @@ image_convert_base_type_cmd_callback (GtkAction *action,
GimpImage *image;
GimpDisplay *display;
GtkWidget *widget;
+ GimpDialogConfig *config;
GtkWidget *dialog;
GimpImageBaseType value;
GError *error = NULL;
@@ -229,6 +224,8 @@ image_convert_base_type_cmd_callback (GtkAction *action,
dialog = NULL;
}
+ config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
switch (value)
{
case GIMP_RGB:
@@ -261,12 +258,12 @@ image_convert_base_type_cmd_callback (GtkAction *action,
dialog = convert_indexed_dialog_new (image,
action_data_get_context (data),
widget,
- image_convert_indexed_palette_type,
- image_convert_indexed_max_colors,
- image_convert_indexed_remove_duplicates,
- image_convert_indexed_dither_type,
- image_convert_indexed_dither_alpha,
- image_convert_indexed_dither_text_layers,
+ config->image_convert_indexed_palette_type,
+ config->image_convert_indexed_max_colors,
+ config->image_convert_indexed_remove_duplicates,
+ config->image_convert_indexed_dither_type,
+ config->image_convert_indexed_dither_alpha,
+ config->image_convert_indexed_dither_text_layers,
image_convert_indexed_custom_palette,
image_convert_indexed_callback,
display);
@@ -930,21 +927,25 @@ image_convert_indexed_callback (GtkWidget *dialog,
GimpPalette *custom_palette,
gpointer user_data)
{
- GimpDisplay *display = user_data;
- GimpProgress *progress;
- GError *error = NULL;
+ GimpDialogConfig *config = GIMP_DIALOG_CONFIG (image->gimp->config);
+ GimpDisplay *display = user_data;
+ GimpProgress *progress;
+ GError *error = NULL;
+
+ g_object_set (config,
+ "image-convert-indexed-palette-type", palette_type,
+ "image-convert-indexed-max-colors", max_colors,
+ "image-convert-indexed-remove-duplicates", remove_duplicates,
+ "image-convert-indexed-dither-type", dither_type,
+ "image-convert-indexed-dither-alpha", dither_alpha,
+ "image-convert-indexed-dither-text-layers", dither_text_layers,
+ NULL);
if (image_convert_indexed_custom_palette)
g_object_remove_weak_pointer (G_OBJECT (image_convert_indexed_custom_palette),
(gpointer) &image_convert_indexed_custom_palette);
- image_convert_indexed_palette_type = palette_type;
- image_convert_indexed_max_colors = max_colors;
- image_convert_indexed_remove_duplicates = remove_duplicates;
- image_convert_indexed_dither_type = dither_type;
- image_convert_indexed_dither_alpha = dither_alpha;
- image_convert_indexed_dither_text_layers = dither_text_layers;
- image_convert_indexed_custom_palette = custom_palette;
+ image_convert_indexed_custom_palette = custom_palette;
if (image_convert_indexed_custom_palette)
g_object_add_weak_pointer (G_OBJECT (image_convert_indexed_custom_palette),
@@ -954,12 +955,12 @@ image_convert_indexed_callback (GtkWidget *dialog,
_("Converting to indexed colors"));
if (! gimp_image_convert_indexed (image,
- image_convert_indexed_palette_type,
- image_convert_indexed_max_colors,
- image_convert_indexed_remove_duplicates,
- image_convert_indexed_dither_type,
- image_convert_indexed_dither_alpha,
- image_convert_indexed_dither_text_layers,
+ config->image_convert_indexed_palette_type,
+ config->image_convert_indexed_max_colors,
+ config->image_convert_indexed_remove_duplicates,
+ config->image_convert_indexed_dither_type,
+ config->image_convert_indexed_dither_alpha,
+ config->image_convert_indexed_dither_text_layers,
image_convert_indexed_custom_palette,
progress,
&error))
diff --git a/app/config/gimpdialogconfig.c b/app/config/gimpdialogconfig.c
index f9aceb8..f8b1763 100644
--- a/app/config/gimpdialogconfig.c
+++ b/app/config/gimpdialogconfig.c
@@ -55,6 +55,13 @@ enum
PROP_IMAGE_CONVERT_PRECISION_TEXT_LAYER_DITHER_METHOD,
PROP_IMAGE_CONVERT_PRECISION_CHANNEL_DITHER_METHOD,
+ PROP_IMAGE_CONVERT_INDEXED_PALETTE_TYPE,
+ PROP_IMAGE_CONVERT_INDEXED_MAX_COLORS,
+ PROP_IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_TYPE,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_ALPHA,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS,
+
PROP_LAYER_NEW_NAME,
PROP_LAYER_NEW_FILL_TYPE,
@@ -199,6 +206,56 @@ gimp_dialog_config_class_init (GimpDialogConfigClass *klass)
GEGL_DITHER_NONE,
GIMP_PARAM_STATIC_STRINGS);
+ GIMP_CONFIG_PROP_ENUM (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_PALETTE_TYPE,
+ "image-convert-indexed-palette-type",
+ "Default palette type for indexed conversion",
+ IMAGE_CONVERT_INDEXED_PALETTE_TYPE_BLURB,
+ GIMP_TYPE_CONVERT_PALETTE_TYPE,
+ GIMP_MAKE_PALETTE,
+ GIMP_PARAM_STATIC_STRINGS);
+
+ GIMP_CONFIG_PROP_INT (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_MAX_COLORS,
+ "image-convert-indexed-max-colors",
+ "Default maximum number of colors for indexed conversion",
+ IMAGE_CONVERT_INDEXED_MAX_COLORS_BLURB,
+ 2, 256, 256,
+ GIMP_PARAM_STATIC_STRINGS);
+
+ GIMP_CONFIG_PROP_BOOLEAN (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES,
+ "image-convert-indexed-remove-duplicates",
+ "Default remove duplicates for indexed conversion",
+ IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES_BLURB,
+ TRUE,
+ GIMP_PARAM_STATIC_STRINGS);
+
+ GIMP_CONFIG_PROP_ENUM (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_TYPE,
+ "image-convert-indexed-dither-type",
+ "Default dither type for indexed conversion",
+ IMAGE_CONVERT_INDEXED_DITHER_TYPE_BLURB,
+ GIMP_TYPE_CONVERT_DITHER_TYPE,
+ GIMP_NO_DITHER,
+ GIMP_PARAM_STATIC_STRINGS);
+
+ GIMP_CONFIG_PROP_BOOLEAN (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_ALPHA,
+ "image-convert-indexed-dither-alpha",
+ "Default dither alpha for indexed conversion",
+ IMAGE_CONVERT_INDEXED_DITHER_ALPHA_BLURB,
+ FALSE,
+ GIMP_PARAM_STATIC_STRINGS);
+
+ GIMP_CONFIG_PROP_BOOLEAN (object_class,
+ PROP_IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS,
+ "image-convert-indexed-dither-text-layers",
+ "Default dither text layers for indexed conversion",
+ IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS_BLURB,
+ FALSE,
+ GIMP_PARAM_STATIC_STRINGS);
+
GIMP_CONFIG_PROP_STRING (object_class, PROP_LAYER_NEW_NAME,
"layer-new-name",
"Default new layer name",
@@ -491,6 +548,25 @@ gimp_dialog_config_set_property (GObject *object,
g_value_get_enum (value);
break;
+ case PROP_IMAGE_CONVERT_INDEXED_PALETTE_TYPE:
+ config->image_convert_indexed_palette_type = g_value_get_enum (value);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_MAX_COLORS:
+ config->image_convert_indexed_max_colors = g_value_get_int (value);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES:
+ config->image_convert_indexed_remove_duplicates = g_value_get_boolean (value);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_TYPE:
+ config->image_convert_indexed_dither_type = g_value_get_enum (value);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_ALPHA:
+ config->image_convert_indexed_dither_alpha = g_value_get_boolean (value);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS:
+ config->image_convert_indexed_dither_text_layers = g_value_get_boolean (value);
+ break;
+
case PROP_LAYER_NEW_NAME:
if (config->layer_new_name)
g_free (config->layer_new_name);
@@ -634,6 +710,25 @@ gimp_dialog_config_get_property (GObject *object,
config->image_convert_precision_channel_dither_method);
break;
+ case PROP_IMAGE_CONVERT_INDEXED_PALETTE_TYPE:
+ g_value_set_enum (value, config->image_convert_indexed_palette_type);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_MAX_COLORS:
+ g_value_set_int (value, config->image_convert_indexed_max_colors);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES:
+ g_value_set_boolean (value, config->image_convert_indexed_remove_duplicates);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_TYPE:
+ g_value_set_enum (value, config->image_convert_indexed_dither_type);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_ALPHA:
+ g_value_set_boolean (value, config->image_convert_indexed_dither_alpha);
+ break;
+ case PROP_IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS:
+ g_value_set_boolean (value, config->image_convert_indexed_dither_text_layers);
+ break;
+
case PROP_LAYER_NEW_NAME:
g_value_set_string (value, config->layer_new_name);
break;
diff --git a/app/config/gimpdialogconfig.h b/app/config/gimpdialogconfig.h
index 02eae0b..304fc2d 100644
--- a/app/config/gimpdialogconfig.h
+++ b/app/config/gimpdialogconfig.h
@@ -53,6 +53,13 @@ struct _GimpDialogConfig
GeglDitherMethod image_convert_precision_text_layer_dither_method;
GeglDitherMethod image_convert_precision_channel_dither_method;
+ GimpConvertPaletteType image_convert_indexed_palette_type;
+ gint image_convert_indexed_max_colors;
+ gboolean image_convert_indexed_remove_duplicates;
+ GimpConvertDitherType image_convert_indexed_dither_type;
+ gboolean image_convert_indexed_dither_alpha;
+ gboolean image_convert_indexed_dither_text_layers;
+
gchar *layer_new_name;
GimpFillType layer_new_fill_type;
diff --git a/app/config/gimprc-blurbs.h b/app/config/gimprc-blurbs.h
index aa68025..fcd9699 100644
--- a/app/config/gimprc-blurbs.h
+++ b/app/config/gimprc-blurbs.h
@@ -436,7 +436,25 @@ _("Sets the default text layer dithering method for the 'Convert Precision' dial
#define IMAGE_CONVERT_PRECISION_CHANNEL_DITHER_METHOD_BLURB \
_("Sets the default channel dithering method for the 'Convert Precision' dialog.")
-#define LAYER_NEW_NAME_BLURB \
+#define IMAGE_CONVERT_INDEXED_PALETTE_TYPE_BLURB \
+_("Sets the default palette type for the 'Convert to Indexed' dialog.")
+
+#define IMAGE_CONVERT_INDEXED_MAX_COLORS_BLURB \
+_("Sets the default maximum number of colors for the 'Convert to Indexed' dialog.")
+
+#define IMAGE_CONVERT_INDEXED_REMOVE_DUPLICATES_BLURB \
+_("Sets the default 'Remove duplicate colors' state for the 'Convert to Indexed' dialog.")
+
+#define IMAGE_CONVERT_INDEXED_DITHER_TYPE_BLURB \
+_("Sets the default dithering type for the 'Convert to Indexed' dialog.")
+
+#define IMAGE_CONVERT_INDEXED_DITHER_ALPHA_BLURB \
+_("Sets the default 'Dither alpha' state for the 'Convert to Indexed' dialog.")
+
+#define IMAGE_CONVERT_INDEXED_DITHER_TEXT_LAYERS_BLURB \
+_("Sets the default 'Dither text layers' state for the 'Convert to Indexed' dialog.")
+
+#define LAYER_NEW_NAME_BLURB \
_("Sets the default layer name for the 'New Layer' dialog.")
#define LAYER_NEW_FILL_TYPE_BLURB \
diff --git a/app/dialogs/convert-indexed-dialog.c b/app/dialogs/convert-indexed-dialog.c
index f39c403..661b5dc 100644
--- a/app/dialogs/convert-indexed-dialog.c
+++ b/app/dialogs/convert-indexed-dialog.c
@@ -219,8 +219,8 @@ convert_indexed_dialog_new (GimpImage *image,
vbox = gtk_bin_get_child (GTK_BIN (frame));
- toggle = gtk_check_button_new_with_mnemonic (_("_Remove unused colors "
- "from colormap"));
+ toggle = gtk_check_button_new_with_mnemonic (_("_Remove unused and duplicate "
+ "colors from colormap"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
private->remove_duplicates);
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 3);
diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c
index 3b88e66..99b5eae 100644
--- a/app/dialogs/preferences-dialog.c
+++ b/app/dialogs/preferences-dialog.c
@@ -1859,6 +1859,36 @@ prefs_dialog_new (Gimp *gimp,
_("Dither channels/masks:"),
GTK_TABLE (table), 2, size_group);
+ /* Convert Indexed Dialog */
+ vbox2 = prefs_frame_new (_("Indexed Conversion Dialog"),
+ GTK_CONTAINER (vbox), FALSE);
+ table = prefs_table_new (2, GTK_CONTAINER (vbox2));
+
+ prefs_enum_combo_box_add (object, "image-convert-indexed-palette-type", 0, 0,
+ _("Colormap:"),
+ GTK_TABLE (table), 0, size_group);
+ prefs_spin_button_add (object, "image-convert-indexed-max-colors", 1.0, 8.0, 0,
+ _("Maximum number of colors:"),
+ GTK_TABLE (table), 1, size_group);
+
+ prefs_check_button_add (object, "image-convert-indexed-remove-duplicates",
+ _("Remove unused and duplicate colors "
+ "from colormap"),
+ GTK_BOX (vbox2));
+
+ table = prefs_table_new (1, GTK_CONTAINER (vbox2));
+ prefs_enum_combo_box_add (object, "image-convert-indexed-dither-type", 0, 0,
+ _("Color dithering:"),
+ GTK_TABLE (table), 0, size_group);
+
+ prefs_check_button_add (object, "image-convert-indexed-dither-alpha",
+ _("Enable dithering of transparency"),
+ GTK_BOX (vbox2));
+ prefs_check_button_add (object, "image-convert-indexed-dither-text-layers",
+ _("Enable dithering of text layers"),
+ GTK_BOX (vbox2));
+
+
/* New Layer Dialog */
vbox2 = prefs_frame_new (_("New Layer Dialog"),
GTK_CONTAINER (vbox), FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]