[gimp] app: add gimp_tool_gui_set_description() and use it



commit 0afa7d30f0e79d2a5d3f0910de3a1e6bcf0c6159
Author: Michael Natterer <mitch gimp org>
Date:   Fri Jun 7 17:01:39 2013 +0200

    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 7005ec2..1638ba5 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);
@@ -202,6 +201,35 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
 }
 
 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 58b3d2e..d1db4d1 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 902d87b..1ebc39e 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));


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