[gimp] Bug 599573 - Remember dialog defaults between Gimp sessions



commit 2ae3393c3bc80b55e8fd509e3d692014942cec39
Author: Michael Natterer <mitch gimp org>
Date:   Wed Aug 24 19:49:59 2016 +0200

    Bug 599573 - Remember dialog defaults between Gimp sessions
    
    Remember the "New Path" dialog settings in GimpDialogConfig.

 app/actions/vectors-commands.c   |   42 ++++++++++++++++++++++---------------
 app/config/gimpdialogconfig.c    |   27 +++++++++++++++++++++++-
 app/config/gimpdialogconfig.h    |    2 +
 app/config/gimprc-blurbs.h       |    3 ++
 app/dialogs/preferences-dialog.c |   38 +++++++++++++++++++++------------
 5 files changed, 80 insertions(+), 32 deletions(-)
---
diff --git a/app/actions/vectors-commands.c b/app/actions/vectors-commands.c
index 7e010a3..038ed5e 100644
--- a/app/actions/vectors-commands.c
+++ b/app/actions/vectors-commands.c
@@ -27,6 +27,8 @@
 
 #include "actions-types.h"
 
+#include "config/gimpdialogconfig.h"
+
 #include "core/gimp.h"
 #include "core/gimp-utils.h"
 #include "core/gimpchannel.h"
@@ -86,7 +88,6 @@ static void   vectors_export_response       (GtkWidget            *widget,
 
 /*  private variables  */
 
-static gchar    *vectors_name               = NULL;
 static gboolean  vectors_import_merge       = FALSE;
 static gboolean  vectors_import_scale       = FALSE;
 static gboolean  vectors_export_active_only = TRUE;
@@ -156,14 +157,16 @@ vectors_new_cmd_callback (GtkAction *action,
   VectorsOptionsDialog *options;
   GimpImage            *image;
   GtkWidget            *widget;
+  GimpDialogConfig     *config;
   return_if_no_image (image, data);
   return_if_no_widget (widget, data);
 
+  config = GIMP_DIALOG_CONFIG (image->gimp->config);
+
   options = vectors_options_dialog_new (image, NULL,
                                         action_data_get_context (data),
                                         widget,
-                                        vectors_name ? vectors_name :
-                                        _("Path"),
+                                        config->vectors_new_name,
                                         _("New Path"),
                                         "gimp-vectors-new",
                                         GIMP_STOCK_PATH,
@@ -181,13 +184,16 @@ void
 vectors_new_last_vals_cmd_callback (GtkAction *action,
                                     gpointer   data)
 {
-  GimpImage   *image;
-  GimpVectors *new_vectors;
+  GimpImage        *image;
+  GimpVectors      *vectors;
+  GimpDialogConfig *config;
   return_if_no_image (image, data);
 
-  new_vectors = gimp_vectors_new (image, vectors_name);
+  config = GIMP_DIALOG_CONFIG (image->gimp->config);
 
-  gimp_image_add_vectors (image, new_vectors,
+  vectors = gimp_vectors_new (image, config->vectors_new_name);
+
+  gimp_image_add_vectors (image, vectors,
                           GIMP_IMAGE_ACTIVE_PARENT, -1, TRUE);
 
   gimp_image_flush (image);
@@ -752,27 +758,29 @@ vectors_lock_position_cmd_callback (GtkAction *action,
 static void
 vectors_new_vectors_response (GtkWidget            *widget,
                               gint                  response_id,
-                              VectorsOptionsDialog *options)
+                              VectorsOptionsDialog *dialog)
 {
   if (response_id == GTK_RESPONSE_OK)
     {
-      GimpVectors *new_vectors;
+      GimpDialogConfig *config;
+      GimpVectors      *vectors;
 
-      if (vectors_name)
-        g_free (vectors_name);
+      config = GIMP_DIALOG_CONFIG (dialog->image->gimp->config);
 
-      vectors_name =
-        g_strdup (gtk_entry_get_text (GTK_ENTRY (options->name_entry)));
+      g_object_set (config,
+                    "path-new-name",
+                    gtk_entry_get_text (GTK_ENTRY (dialog->name_entry)),
+                    NULL);
 
-      new_vectors = gimp_vectors_new (options->image, vectors_name);
+      vectors = gimp_vectors_new (dialog->image, config->vectors_new_name);
 
-      gimp_image_add_vectors (options->image, new_vectors,
+      gimp_image_add_vectors (dialog->image, vectors,
                               GIMP_IMAGE_ACTIVE_PARENT, -1, TRUE);
 
-      gimp_image_flush (options->image);
+      gimp_image_flush (dialog->image);
     }
 
-  gtk_widget_destroy (options->dialog);
+  gtk_widget_destroy (dialog->dialog);
 }
 
 static void
diff --git a/app/config/gimpdialogconfig.c b/app/config/gimpdialogconfig.c
index c89d81c..1b0d7c9 100644
--- a/app/config/gimpdialogconfig.c
+++ b/app/config/gimpdialogconfig.c
@@ -48,7 +48,9 @@ enum
   PROP_LAYER_ADD_MASK_INVERT,
 
   PROP_CHANNEL_NEW_NAME,
-  PROP_CHANNEL_NEW_COLOR
+  PROP_CHANNEL_NEW_COLOR,
+
+  PROP_VECTORS_NEW_NAME
 };
 
 
@@ -130,6 +132,13 @@ gimp_dialog_config_class_init (GimpDialogConfigClass *klass)
                         TRUE,
                         &half_transparent,
                         GIMP_PARAM_STATIC_STRINGS);
+
+  GIMP_CONFIG_PROP_STRING (object_class, PROP_VECTORS_NEW_NAME,
+                           "path-new-name",
+                           "Default new path name",
+                           VECTORS_NEW_NAME_BLURB,
+                           _("Path"),
+                           GIMP_PARAM_STATIC_STRINGS);
 }
 
 static void
@@ -154,6 +163,12 @@ gimp_dialog_config_finalize (GObject *object)
       config->channel_new_name = NULL;
     }
 
+  if (config->vectors_new_name)
+    {
+      g_free (config->vectors_new_name);
+      config->vectors_new_name = NULL;
+    }
+
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -196,6 +211,12 @@ gimp_dialog_config_set_property (GObject      *object,
       gimp_value_get_rgb (value, &config->channel_new_color);
       break;
 
+    case PROP_VECTORS_NEW_NAME:
+      if (config->vectors_new_name)
+        g_free (config->vectors_new_name);
+      config->vectors_new_name = g_value_dup_string (value);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -237,6 +258,10 @@ gimp_dialog_config_get_property (GObject    *object,
       gimp_value_set_rgb (value, &config->channel_new_color);
       break;
 
+    case PROP_VECTORS_NEW_NAME:
+      g_value_set_string (value, config->vectors_new_name);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
diff --git a/app/config/gimpdialogconfig.h b/app/config/gimpdialogconfig.h
index b9360c2..87ddadc 100644
--- a/app/config/gimpdialogconfig.h
+++ b/app/config/gimpdialogconfig.h
@@ -47,6 +47,8 @@ struct _GimpDialogConfig
 
   gchar                  *channel_new_name;
   GimpRGB                 channel_new_color;
+
+  gchar                  *vectors_new_name;
 };
 
 struct _GimpDialogConfigClass
diff --git a/app/config/gimprc-blurbs.h b/app/config/gimprc-blurbs.h
index 1017e69..1e505a8 100644
--- a/app/config/gimprc-blurbs.h
+++ b/app/config/gimprc-blurbs.h
@@ -438,6 +438,9 @@ _("Sets the default channel name for the 'New Channel' dialog.")
 #define CHANNEL_NEW_COLOR_BLURB \
 _("Sets the default color and opacity for the 'New Channel' dialog.")
 
+#define VECTORS_NEW_NAME_BLURB \
+_("Sets the default path name for the 'New Path' dialog.")
+
 #define THUMBNAIL_SIZE_BLURB \
 _("Sets the size of the thumbnail shown in the Open dialog.")
 
diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c
index 2804557..01cdd26 100644
--- a/app/dialogs/preferences-dialog.c
+++ b/app/dialogs/preferences-dialog.c
@@ -1650,16 +1650,13 @@ prefs_dialog_new (Gimp       *gimp,
   /*  Quick Mask Color */
   vbox2 = prefs_frame_new (_("Quick Mask"), GTK_CONTAINER (vbox), FALSE);
   table = prefs_table_new (1, GTK_CONTAINER (vbox2));
-  button = gimp_prop_color_button_new (object, "quick-mask-color",
-                                       _("Set the default Quick Mask color"),
-                                       COLOR_BUTTON_WIDTH,
-                                       COLOR_BUTTON_HEIGHT,
-                                       GIMP_COLOR_AREA_SMALL_CHECKS);
+
+  button = prefs_color_button_add (object, "quick-mask-color",
+                                   _("Quick Mask color:"),
+                                   _("Set the default Quick Mask color"),
+                                   GTK_TABLE (table), 0, NULL);
   gimp_color_panel_set_context (GIMP_COLOR_PANEL (button),
                                 gimp_get_user_context (gimp));
-  prefs_widget_add_aligned (button, _("Quick Mask color:"),
-                            GTK_TABLE (table), 0, TRUE, NULL);
-
 
 
   /**********************************/
@@ -2052,9 +2049,10 @@ prefs_dialog_new (Gimp       *gimp,
   table = prefs_table_new (2, GTK_CONTAINER (vbox2));
 
   entry = gimp_prop_entry_new (object, "layer-new-name", -1);
-  gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
-                             _("Layer name:"), 0.0, 0.5,
-                             entry, 1, FALSE);
+  prefs_widget_add_aligned (entry,
+                            _("Layer name:"),
+                            GTK_WIDGET (table), 0, FALSE,
+                            size_group);
 
   prefs_enum_combo_box_add (object, "layer-new-fill-type", 0, 0,
                             _("Fill type:"),
@@ -2079,9 +2077,10 @@ prefs_dialog_new (Gimp       *gimp,
   table = prefs_table_new (2, GTK_CONTAINER (vbox2));
 
   entry = gimp_prop_entry_new (object, "channel-new-name", -1);
-  gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
-                             _("Channel name:"), 0.0, 0.5,
-                             entry, 1, FALSE);
+  prefs_widget_add_aligned (entry,
+                            _("Channel name:"),
+                            GTK_WIDGET (table), 0, FALSE,
+                            size_group);
 
   button = prefs_color_button_add (object, "channel-new-color",
                                    _("Color and opacity:"),
@@ -2090,6 +2089,17 @@ prefs_dialog_new (Gimp       *gimp,
   gimp_color_panel_set_context (GIMP_COLOR_PANEL (button),
                                 gimp_get_user_context (gimp));
 
+  /*  New Path Dialog  */
+  vbox2 = prefs_frame_new (_("New Path Dialog"),
+                           GTK_CONTAINER (vbox), FALSE);
+  table = prefs_table_new (1, GTK_CONTAINER (vbox2));
+
+  entry = gimp_prop_entry_new (object, "path-new-name", -1);
+  prefs_widget_add_aligned (entry,
+                            _("Path name:"),
+                            GTK_WIDGET (table), 0, FALSE,
+                            size_group);
+
   g_object_unref (size_group);
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]