gimp r28004 - in trunk: . app/config app/tools app/widgets



Author: mitch
Date: Sun Feb  8 23:19:12 2009
New Revision: 28004
URL: http://svn.gnome.org/viewvc/gimp?rev=28004&view=rev

Log:
2009-02-09  Michael Natterer  <mitch gimp org>

	Bug 569470 â pls, introduce an option 'how many latest presets for
	color curves should be saved'

	* app/config/gimprc-blurbs.h
	* app/config/gimpguiconfig.[ch]: add integer property
	"image-map-tool-max-recent" which defaults to ten. Adding a GUI
	for this IMO needs discussion, the value of ten seems appropriate.

	* app/widgets/gimpsettingsbox.[ch]
	(gimp_settings_box_add_current): add "gint max_recent" parameter
	and limit the number of recent settings to this number.

	* app/tools/gimpimagemaptool.c (gimp_image_map_tool_response):
	pass the new settings property to above function.



Modified:
   trunk/ChangeLog
   trunk/app/config/gimpguiconfig.c
   trunk/app/config/gimpguiconfig.h
   trunk/app/config/gimprc-blurbs.h
   trunk/app/tools/gimpimagemaptool.c
   trunk/app/widgets/gimpsettingsbox.c
   trunk/app/widgets/gimpsettingsbox.h

Modified: trunk/app/config/gimpguiconfig.c
==============================================================================
--- trunk/app/config/gimpguiconfig.c	(original)
+++ trunk/app/config/gimpguiconfig.c	Sun Feb  8 23:19:12 2009
@@ -53,6 +53,7 @@
   PROP_0,
   PROP_DEFAULT_THRESHOLD,
   PROP_MOVE_TOOL_CHANGES_ACTIVE,
+  PROP_IMAGE_MAP_TOOL_MAX_RECENT,
   PROP_TRUST_DIRTY_FLAG,
   PROP_SAVE_DEVICE_STATUS,
   PROP_SAVE_SESSION_INFO,
@@ -126,6 +127,11 @@
                                     MOVE_TOOL_CHANGES_ACTIVE_BLURB,
                                     FALSE,
                                     GIMP_PARAM_STATIC_STRINGS);
+  GIMP_CONFIG_INSTALL_PROP_INT (object_class, PROP_IMAGE_MAP_TOOL_MAX_RECENT,
+                                "image-map-tool-max-recent",
+                                IMAGE_MAP_TOOL_MAX_RECENT_BLURB,
+                                0, 255, 10,
+                                GIMP_PARAM_STATIC_STRINGS);
   GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_TRUST_DIRTY_FLAG,
                                     "trust-dirty-flag",
                                     TRUST_DIRTY_FLAG_BLURB,
@@ -327,6 +333,9 @@
     case PROP_MOVE_TOOL_CHANGES_ACTIVE:
       gui_config->move_tool_changes_active = g_value_get_boolean (value);
       break;
+    case PROP_IMAGE_MAP_TOOL_MAX_RECENT:
+      gui_config->image_map_tool_max_recent = g_value_get_int (value);
+      break;
     case PROP_TRUST_DIRTY_FLAG:
       gui_config->trust_dirty_flag = g_value_get_boolean (value);
       break;
@@ -451,6 +460,9 @@
     case PROP_MOVE_TOOL_CHANGES_ACTIVE:
       g_value_set_boolean (value, gui_config->move_tool_changes_active);
       break;
+    case PROP_IMAGE_MAP_TOOL_MAX_RECENT:
+      g_value_set_int (value, gui_config->image_map_tool_max_recent);
+      break;
     case PROP_TRUST_DIRTY_FLAG:
       g_value_set_boolean (value, gui_config->trust_dirty_flag);
       break;

Modified: trunk/app/config/gimpguiconfig.h
==============================================================================
--- trunk/app/config/gimpguiconfig.h	(original)
+++ trunk/app/config/gimpguiconfig.h	Sun Feb  8 23:19:12 2009
@@ -41,6 +41,7 @@
 
   gint                 default_threshold;
   gboolean             move_tool_changes_active;
+  gint                 image_map_tool_max_recent;
   gboolean             trust_dirty_flag;
   gboolean             save_device_status;
   gboolean             save_session_info;

Modified: trunk/app/config/gimprc-blurbs.h
==============================================================================
--- trunk/app/config/gimprc-blurbs.h	(original)
+++ trunk/app/config/gimprc-blurbs.h	Sun Feb  8 23:19:12 2009
@@ -150,6 +150,9 @@
 "colon-separated list of language identifiers with decreasing priority. " \
 "If empty, the language is taken from the user's locale setting."
 
+#define IMAGE_MAP_TOOL_MAX_RECENT_BLURB \
+"How many recent settings to keep around in color correction tools"
+
 #define IMAGE_STATUS_FORMAT_BLURB \
 N_("Sets the text to appear in image window status bars.")
 

Modified: trunk/app/tools/gimpimagemaptool.c
==============================================================================
--- trunk/app/tools/gimpimagemaptool.c	(original)
+++ trunk/app/tools/gimpimagemaptool.c	Sun Feb  8 23:19:12 2009
@@ -29,6 +29,8 @@
 
 #include "tools-types.h"
 
+#include "config/gimpguiconfig.h"
+
 #include "core/gimp.h"
 #include "core/gimpdrawable.h"
 #include "core/gimpimage.h"
@@ -563,7 +565,8 @@
           gimp_image_flush (tool->display->image);
 
           if (image_map_tool->config)
-            gimp_settings_box_add_current (GIMP_SETTINGS_BOX (image_map_tool->settings_box));
+            gimp_settings_box_add_current (GIMP_SETTINGS_BOX (image_map_tool->settings_box),
+                                           GIMP_GUI_CONFIG (tool->tool_info->gimp->config)->image_map_tool_max_recent);
         }
 
       tool->display  = NULL;

Modified: trunk/app/widgets/gimpsettingsbox.c
==============================================================================
--- trunk/app/widgets/gimpsettingsbox.c	(original)
+++ trunk/app/widgets/gimpsettingsbox.c	Sun Feb  8 23:19:12 2009
@@ -113,6 +113,8 @@
                                                   GimpSettingsBox   *box);
 static void  gimp_settings_box_toplevel_unmap    (GtkWidget         *toplevel,
                                                   GtkWidget         *dialog);
+static void  gimp_settings_box_truncate_list     (GimpSettingsBox   *box,
+                                                  gint               max_recent);
 
 
 G_DEFINE_TYPE (GimpSettingsBox, gimp_settings_box, GTK_TYPE_HBOX)
@@ -828,6 +830,39 @@
   gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_DELETE_EVENT);
 }
 
+static void
+gimp_settings_box_truncate_list (GimpSettingsBox *box,
+                                 gint             max_recent)
+{
+  GList *list;
+  gint   n_recent = 0;
+
+  list = GIMP_LIST (box->container)->list;
+  while (list)
+    {
+      GimpConfig *config = list->data;
+      guint       t;
+
+      list = g_list_next (list);
+
+      g_object_get (config,
+                    "time", &t,
+                    NULL);
+
+      if (t > 0)
+        {
+          n_recent++;
+
+          if (n_recent > max_recent)
+            gimp_container_remove (box->container, GIMP_OBJECT (config));
+        }
+      else
+        {
+          break;
+        }
+    }
+}
+
 
 /*  public functions  */
 
@@ -866,7 +901,8 @@
 }
 
 void
-gimp_settings_box_add_current (GimpSettingsBox *box)
+gimp_settings_box_add_current (GimpSettingsBox *box,
+                               gint             max_recent)
 {
   GimpConfig *config = NULL;
   GList      *list;
@@ -903,5 +939,7 @@
       g_object_unref (config);
     }
 
+  gimp_settings_box_truncate_list (box, max_recent);
+
   gimp_settings_box_serialize (box);
 }

Modified: trunk/app/widgets/gimpsettingsbox.h
==============================================================================
--- trunk/app/widgets/gimpsettingsbox.h	(original)
+++ trunk/app/widgets/gimpsettingsbox.h	Sun Feb  8 23:19:12 2009
@@ -81,7 +81,8 @@
                                            const gchar     *default_folder,
                                            const gchar     *last_filename);
 
-void        gimp_settings_box_add_current (GimpSettingsBox *box);
+void        gimp_settings_box_add_current (GimpSettingsBox *box,
+                                           gint             max_recent);
 
 
 #endif  /*  __GIMP_SETTINGS_BOX_H__  */



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