From 0afa7d30f0e79d2a5d3f0910de3a1e6bcf0c6159 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 7 Jun 2013 17:01:39 +0200 Subject: [PATCH] app: add gimp_tool_gui_set_description() and use it --- app/display/gimptoolgui.c | 60 +++++++++++++++++++++++++---------- app/display/gimptoolgui.h | 5 ++- app/tools/gimpoperationtool.c | 11 +++---- 3 files changed, 53 insertions(+), 23 deletions(-) diff --git a/app/display/gimptoolgui.c b/app/display/gimptoolgui.c index 7005ec2000..1638ba5a16 100644 --- a/app/display/gimptoolgui.c +++ b/app/display/gimptoolgui.c @@ -44,7 +44,7 @@ typedef struct _GimpToolGuiPrivate GimpToolGuiPrivate; struct _GimpToolGuiPrivate { GimpToolInfo *tool_info; - gchar *desc; + gchar *description; gboolean overlay; @@ -124,10 +124,10 @@ gimp_tool_gui_finalize (GObject *object) { GimpToolGuiPrivate *private = GET_PRIVATE (object); - if (private->desc) + if (private->description) { - g_free (private->desc); - private->desc = NULL; + g_free (private->description); + private->description = NULL; } G_OBJECT_CLASS (gimp_tool_gui_parent_class)->finalize (object); @@ -136,11 +136,11 @@ gimp_tool_gui_finalize (GObject *object) /** * gimp_tool_gui_new: - * @tool_info: a #GimpToolInfo - * @desc: a string to use in the gui header or %NULL to use the help - * field from #GimpToolInfo - * @...: a %NULL-terminated valist of button parameters as described in - * gtk_gui_new_with_buttons(). + * @tool_info: a #GimpToolInfo + * @description: a string to use in the gui header or %NULL to use the help + * field from #GimpToolInfo + * @...: a %NULL-terminated valist of button parameters as described in + * gtk_gui_new_with_buttons(). * * This function creates a #GimpToolGui using the information stored * in @tool_info. @@ -149,7 +149,7 @@ gimp_tool_gui_finalize (GObject *object) **/ GimpToolGui * gimp_tool_gui_new (GimpToolInfo *tool_info, - const gchar *desc, + const gchar *description, gboolean overlay, ...) { @@ -163,14 +163,13 @@ gimp_tool_gui_new (GimpToolInfo *tool_info, private = GET_PRIVATE (gui); - private->tool_info = g_object_ref (tool_info); - private->desc = g_strdup (desc); - - private->overlay = overlay; + private->tool_info = g_object_ref (tool_info); + private->description = g_strdup (description); + private->overlay = overlay; if (overlay) { - private->dialog = gimp_overlay_dialog_new (tool_info, desc, NULL); + private->dialog = gimp_overlay_dialog_new (tool_info, description, NULL); g_object_ref_sink (private->dialog); va_start (args, overlay); @@ -186,7 +185,7 @@ gimp_tool_gui_new (GimpToolInfo *tool_info, } else { - private->dialog = gimp_tool_dialog_new (tool_info, desc, NULL); + private->dialog = gimp_tool_dialog_new (tool_info, description, NULL); va_start (args, overlay); gimp_dialog_add_buttons_valist (GIMP_DIALOG (private->dialog), args); @@ -201,6 +200,35 @@ gimp_tool_gui_new (GimpToolInfo *tool_info, return gui; } +void +gimp_tool_gui_set_description (GimpToolGui *gui, + const gchar *description) +{ + GimpToolGuiPrivate *private; + + g_return_if_fail (GIMP_IS_TOOL_GUI (gui)); + + private = GET_PRIVATE (gui); + + if (description == private->description) + return; + + g_free (private->description); + private->description = g_strdup (description); + + if (! description) + description = private->tool_info->help; + + if (private->overlay) + { + /* TODO */ + } + else + { + g_object_set (private->dialog, "description", description, NULL); + } +} + void gimp_tool_gui_set_shell (GimpToolGui *gui, GimpDisplayShell *shell) diff --git a/app/display/gimptoolgui.h b/app/display/gimptoolgui.h index 58b3d2e59a..d1db4d1519 100644 --- a/app/display/gimptoolgui.h +++ b/app/display/gimptoolgui.h @@ -49,10 +49,13 @@ struct _GimpToolGuiClass GType gimp_tool_gui_get_type (void) G_GNUC_CONST; GimpToolGui * gimp_tool_gui_new (GimpToolInfo *tool_info, - const gchar *desc, + const gchar *description, gboolean overlay, ...) G_GNUC_NULL_TERMINATED; +void gimp_tool_gui_set_description (GimpToolGui *gui, + const gchar *description); + void gimp_tool_gui_set_shell (GimpToolGui *gui, GimpDisplayShell *shell); void gimp_tool_gui_set_viewable (GimpToolGui *gui, diff --git a/app/tools/gimpoperationtool.c b/app/tools/gimpoperationtool.c index 902d87bd22..1ebc39ec4e 100644 --- a/app/tools/gimpoperationtool.c +++ b/app/tools/gimpoperationtool.c @@ -44,6 +44,7 @@ #include "widgets/gimpproptable.h" #include "display/gimpdisplay.h" +#include "display/gimptoolgui.h" #include "gimpcoloroptions.h" #include "gimpoperationtool.h" @@ -202,9 +203,8 @@ gimp_operation_tool_dialog (GimpImageMapTool *image_map_tool) } if (tool->undo_desc) - g_object_set (GIMP_IMAGE_MAP_TOOL (tool)->gui, - "description", tool->undo_desc, - NULL); + gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui, + tool->undo_desc); } static void @@ -448,9 +448,8 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool, } if (undo_desc && GIMP_IMAGE_MAP_TOOL (tool)->gui) - g_object_set (GIMP_IMAGE_MAP_TOOL (tool)->gui, - "description", undo_desc, - NULL); + gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui, + undo_desc); if (GIMP_TOOL (tool)->drawable) gimp_image_map_tool_preview (GIMP_IMAGE_MAP_TOOL (tool));