From 38ee6068131cba1077dc84c9307a5b6c5aa3f821 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Tue, 20 May 2008 15:03:03 +0000 Subject: [PATCH] unref the new settings object after adding it to the recent container. 2008-05-20 Michael Natterer * app/tools/gimpimagemaptool.c (gimp_image_map_tool_add_recent): unref the new settings object after adding it to the recent container. * app/tools/gimpimagemaptool-settings.c: add a "Save to Favorites" button which pops a string entry dialog and saves the current settings to the recent container. svn path=/trunk/; revision=25719 --- ChangeLog | 10 ++++ app/tools/gimpimagemaptool-settings.c | 77 +++++++++++++++++++++------ app/tools/gimpimagemaptool.c | 1 + 3 files changed, 73 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1962588831..74d92c2b7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2008-05-20 Michael Natterer + + * app/tools/gimpimagemaptool.c (gimp_image_map_tool_add_recent): + unref the new settings object after adding it to the recent + container. + + * app/tools/gimpimagemaptool-settings.c: add a "Save to Favorites" + button which pops a string entry dialog and saves the current + settings to the recent container. + 2008-05-20 Michael Natterer * app/tools/Makefile.am diff --git a/app/tools/gimpimagemaptool-settings.c b/app/tools/gimpimagemaptool-settings.c index 8b907a99dc..4c8402cdae 100644 --- a/app/tools/gimpimagemaptool-settings.c +++ b/app/tools/gimpimagemaptool-settings.c @@ -49,24 +49,29 @@ /* local function prototypes */ -static void gimp_image_map_tool_recent_selected (GimpContainerView *view, - GimpViewable *object, - gpointer insert_data, - GimpImageMapTool *tool); +static void gimp_image_map_tool_recent_selected (GimpContainerView *view, + GimpViewable *object, + gpointer insert_data, + GimpImageMapTool *tool); -static void gimp_image_map_tool_load_clicked (GtkWidget *widget, - GimpImageMapTool *tool); -static void gimp_image_map_tool_save_clicked (GtkWidget *widget, - GimpImageMapTool *tool); +static void gimp_image_map_tool_favorite_clicked (GtkWidget *widget, + GimpImageMapTool *tool); +static void gimp_image_map_tool_load_clicked (GtkWidget *widget, + GimpImageMapTool *tool); +static void gimp_image_map_tool_save_clicked (GtkWidget *widget, + GimpImageMapTool *tool); -static void gimp_image_map_tool_settings_dialog (GimpImageMapTool *im_tool, - const gchar *title, - gboolean save); +static void gimp_image_map_tool_settings_dialog (GimpImageMapTool *im_tool, + const gchar *title, + gboolean save); -static gboolean gimp_image_map_tool_settings_load (GimpImageMapTool *tool, - const gchar *filename); -static gboolean gimp_image_map_tool_settings_save (GimpImageMapTool *tool, - const gchar *filename); +static void gimp_image_map_tool_favorite_callback (GtkWidget *query_box, + const gchar *string, + gpointer data); +static gboolean gimp_image_map_tool_settings_load (GimpImageMapTool *tool, + const gchar *filename); +static gboolean gimp_image_map_tool_settings_save (GimpImageMapTool *tool, + const gchar *filename); /* public functions */ @@ -79,6 +84,7 @@ gimp_image_map_tool_dialog_add_settings (GimpImageMapTool *image_map_tool) GtkWidget *hbox; GtkWidget *label; GtkWidget *combo; + GtkWidget *button; klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (image_map_tool); @@ -140,6 +146,15 @@ gimp_image_map_tool_dialog_add_settings (GimpImageMapTool *image_map_tool) FALSE, FALSE, 0); gtk_widget_show (hbox); + button = gtk_button_new_with_mnemonic (_("Save to _Favorites")); + gtk_box_pack_start (GTK_BOX (hbox), button, + FALSE, FALSE, 0); + gtk_widget_show (button); + + g_signal_connect (button, "clicked", + G_CALLBACK (gimp_image_map_tool_favorite_clicked), + image_map_tool); + image_map_tool->load_button = g_object_new (GIMP_TYPE_BUTTON, "label", GTK_STOCK_OPEN, "use-stock", TRUE, @@ -239,6 +254,23 @@ gimp_image_map_tool_recent_selected (GimpContainerView *view, } } +static void +gimp_image_map_tool_favorite_clicked (GtkWidget *widget, + GimpImageMapTool *tool) +{ + GtkWidget *dialog; + + dialog = gimp_query_string_box (_("Save Settings to Favorites"), + tool->shell, + gimp_standard_help_func, + NULL, /*GIMP_HELP_TOOL_OPTIONS_DIALOG, */ + _("Enter a name for the saved settings"), + _("Saved Settings"), + G_OBJECT (tool->shell), "hide", + gimp_image_map_tool_favorite_callback, tool); + gtk_widget_show (dialog); +} + static void gimp_image_map_tool_load_clicked (GtkWidget *widget, GimpImageMapTool *tool) @@ -374,6 +406,21 @@ gimp_image_map_tool_settings_dialog (GimpImageMapTool *tool, gtk_widget_show (tool->settings_dialog); } +static void +gimp_image_map_tool_favorite_callback (GtkWidget *query_box, + const gchar *string, + gpointer data) +{ + GimpImageMapTool *tool = GIMP_IMAGE_MAP_TOOL (data); + GimpConfig *config; + + config = gimp_config_duplicate (GIMP_CONFIG (tool->config)); + gimp_object_set_name (GIMP_OBJECT (config), string); + gimp_container_insert (GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool)->recent_settings, + GIMP_OBJECT (config), 0); + g_object_unref (config); +} + static gboolean gimp_image_map_tool_settings_load (GimpImageMapTool *tool, const gchar *filename) diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c index 737e1766d3..61b60c6ff0 100644 --- a/app/tools/gimpimagemaptool.c +++ b/app/tools/gimpimagemaptool.c @@ -544,6 +544,7 @@ gimp_image_map_tool_add_recent (GimpImageMapTool *image_map_tool) { config = gimp_config_duplicate (current); gimp_container_insert (recent, GIMP_OBJECT (config), 0); + g_object_unref (config); } now = time (NULL);