[gimp] app: bring dialog titles and help IDs to GEGL filter dialogs



commit 06a5b2fa3f872def5273bb6e7b61745053b05080
Author: Michael Natterer <mitch gimp org>
Date:   Sun Jan 17 20:08:25 2016 +0100

    app: bring dialog titles and help IDs to GEGL filter dialogs
    
    Add "title" and "help_id" parameters and members/properties to
    GimpToolDialog, GimpToolGui, GimpOperationTool. Also make the order of
    parameters more consistent.

 app/actions/filters-commands.c  |    5 ++-
 app/actions/gimpgeglprocedure.c |   33 +++++++++++++-----
 app/actions/gimpgeglprocedure.h |    4 ++-
 app/display/gimptooldialog.c    |   35 +++++++++++++------
 app/display/gimptooldialog.h    |    5 ++-
 app/display/gimptoolgui.c       |   71 +++++++++++++++++++++++++++++++++++++++
 app/display/gimptoolgui.h       |    4 ++
 app/tools/gimpgegltool.c        |    6 +++-
 app/tools/gimpoperationtool.c   |   42 ++++++++++++++++++++---
 app/tools/gimpoperationtool.h   |    6 +++-
 10 files changed, 181 insertions(+), 30 deletions(-)
---
diff --git a/app/actions/filters-commands.c b/app/actions/filters-commands.c
index 25f6ef5..fb2f85a 100644
--- a/app/actions/filters-commands.c
+++ b/app/actions/filters-commands.c
@@ -21,6 +21,7 @@
 #include <gtk/gtk.h>
 
 #include "libgimpbase/gimpbase.h"
+#include "libgimpwidgets/gimpwidgets.h"
 
 #include "actions-types.h"
 
@@ -49,8 +50,10 @@ filters_filter_cmd_callback (GtkAction   *action,
                                        operation,
                                        gtk_action_get_name (action),
                                        gtk_action_get_label (action),
+                                       gtk_action_get_tooltip (action),
                                        gtk_action_get_icon_name (action),
-                                       gtk_action_get_tooltip (action));
+                                       g_object_get_qdata (G_OBJECT (action),
+                                                           GIMP_HELP_ID));
 
   gimp_filter_history_add (action_data_get_gimp (data), procedure);
   filters_history_cmd_callback (NULL, procedure, data);
diff --git a/app/actions/gimpgeglprocedure.c b/app/actions/gimpgeglprocedure.c
index 34cf6d1..2e4bfeb 100644
--- a/app/actions/gimpgeglprocedure.c
+++ b/app/actions/gimpgeglprocedure.c
@@ -62,6 +62,7 @@ static gchar  * gimp_gegl_procedure_get_description     (GimpViewable   *viewabl
 
 static const gchar * gimp_gegl_procedure_get_label      (GimpProcedure  *procedure);
 static const gchar * gimp_gegl_procedure_get_menu_label (GimpProcedure  *procedure);
+static const gchar * gimp_gegl_procedure_get_help_id    (GimpProcedure  *procedure);
 static gboolean      gimp_gegl_procedure_get_sensitive  (GimpProcedure  *procedure,
                                                          GimpObject     *object);
 static GimpValueArray * gimp_gegl_procedure_execute     (GimpProcedure  *procedure,
@@ -101,6 +102,7 @@ gimp_gegl_procedure_class_init (GimpGeglProcedureClass *klass)
 
   proc_class->get_label             = gimp_gegl_procedure_get_label;
   proc_class->get_menu_label        = gimp_gegl_procedure_get_menu_label;
+  proc_class->get_help_id           = gimp_gegl_procedure_get_help_id;
   proc_class->get_sensitive         = gimp_gegl_procedure_get_sensitive;
   proc_class->execute               = gimp_gegl_procedure_execute;
   proc_class->execute_async         = gimp_gegl_procedure_execute_async;
@@ -118,6 +120,7 @@ gimp_gegl_procedure_finalize (GObject *object)
 
   g_free (proc->menu_label);
   g_free (proc->label);
+  g_free (proc->help_id);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -184,6 +187,14 @@ gimp_gegl_procedure_get_menu_label (GimpProcedure *procedure)
   return GIMP_PROCEDURE_CLASS (parent_class)->get_menu_label (procedure);
 }
 
+static const gchar *
+gimp_gegl_procedure_get_help_id (GimpProcedure *procedure)
+{
+  GimpGeglProcedure *proc = GIMP_GEGL_PROCEDURE (procedure);
+
+  return proc->help_id;
+}
+
 static gboolean
 gimp_gegl_procedure_get_sensitive (GimpProcedure *procedure,
                                    GimpObject    *object)
@@ -214,12 +225,12 @@ gimp_gegl_procedure_get_sensitive (GimpProcedure *procedure,
 }
 
 static GimpValueArray *
-gimp_gegl_procedure_execute (GimpProcedure  *procedure,
-                             Gimp           *gimp,
-                             GimpContext    *context,
-                             GimpProgress   *progress,
-                             GimpValueArray *args,
-                             GError        **error)
+gimp_gegl_procedure_execute (GimpProcedure   *procedure,
+                             Gimp            *gimp,
+                             GimpContext     *context,
+                             GimpProgress    *progress,
+                             GimpValueArray  *args,
+                             GError         **error)
 {
   return GIMP_PROCEDURE_CLASS (parent_class)->execute (procedure, gimp,
                                                        context, progress,
@@ -311,7 +322,9 @@ gimp_gegl_procedure_execute_async (GimpProcedure  *procedure,
       gimp_operation_tool_set_operation (GIMP_OPERATION_TOOL (active_tool),
                                          procedure->original_name,
                                          gimp_procedure_get_label (procedure),
-                                         gimp_viewable_get_icon_name (GIMP_VIEWABLE (procedure)));
+                                         gimp_procedure_get_label (procedure),
+                                         gimp_viewable_get_icon_name (GIMP_VIEWABLE (procedure)),
+                                         gimp_procedure_get_help_id (procedure));
 
       tool_manager_initialize_active (gimp, GIMP_DISPLAY (display));
     }
@@ -325,8 +338,9 @@ gimp_gegl_procedure_new (Gimp        *gimp,
                          const gchar *operation,
                          const gchar *name,
                          const gchar *menu_label,
+                         const gchar *tooltip,
                          const gchar *icon_name,
-                         const gchar *tooltip)
+                         const gchar *help_id)
 {
   GimpProcedure *procedure;
 
@@ -338,13 +352,14 @@ gimp_gegl_procedure_new (Gimp        *gimp,
   procedure = g_object_new (GIMP_TYPE_GEGL_PROCEDURE, NULL);
 
   GIMP_GEGL_PROCEDURE (procedure)->menu_label = g_strdup (menu_label);
+  GIMP_GEGL_PROCEDURE (procedure)->help_id    = g_strdup (help_id);
 
   gimp_object_set_name (GIMP_OBJECT (procedure), name);
   gimp_viewable_set_icon_name (GIMP_VIEWABLE (procedure), icon_name);
   gimp_procedure_set_strings (procedure,
                               operation,
                               tooltip,
-                              "help",
+                              tooltip,
                               "author", "copyright", "date",
                               NULL);
 
diff --git a/app/actions/gimpgeglprocedure.h b/app/actions/gimpgeglprocedure.h
index 36a128e..c510b92 100644
--- a/app/actions/gimpgeglprocedure.h
+++ b/app/actions/gimpgeglprocedure.h
@@ -42,6 +42,7 @@ struct _GimpGeglProcedure
 
   gchar         *menu_label;
   gchar         *label;
+  gchar         *help_id;
 };
 
 struct _GimpGeglProcedureClass
@@ -56,8 +57,9 @@ GimpProcedure * gimp_gegl_procedure_new      (Gimp        *gimp,
                                               const gchar *operation,
                                               const gchar *name,
                                               const gchar *menu_label,
+                                              const gchar *tooltip,
                                               const gchar *icon_name,
-                                              const gchar *tooltip);
+                                              const gchar *help_id);
 
 
 #endif /* __GIMP_GEGL_PROCEDURE_H__ */
diff --git a/app/display/gimptooldialog.c b/app/display/gimptooldialog.c
index 9adefbb..96768a3 100644
--- a/app/display/gimptooldialog.c
+++ b/app/display/gimptooldialog.c
@@ -56,6 +56,7 @@ static void   gimp_tool_dialog_shell_unmap (GimpDisplayShell *shell,
 
 G_DEFINE_TYPE (GimpToolDialog, gimp_tool_dialog, GIMP_TYPE_VIEWABLE_DIALOG)
 
+
 static void
 gimp_tool_dialog_class_init (GimpToolDialogClass *klass)
 {
@@ -105,28 +106,40 @@ GtkWidget *
 gimp_tool_dialog_new (GimpToolInfo *tool_info,
                       GdkScreen    *screen,
                       gint          monitor,
-                      const gchar  *desc,
+                      const gchar  *title,
+                      const gchar  *description,
+                      const gchar  *icon_name,
+                      const gchar  *help_id,
                       ...)
 {
-  GtkWidget   *dialog;
-  const gchar *icon_name;
-  gchar       *identifier;
-  va_list      args;
+  GtkWidget *dialog;
+  gchar     *identifier;
+  va_list    args;
 
   g_return_val_if_fail (GIMP_IS_TOOL_INFO (tool_info), NULL);
 
-  icon_name = gimp_viewable_get_icon_name (GIMP_VIEWABLE (tool_info));
+  if (! title)
+    title = tool_info->blurb;
+
+  if (! description)
+    description = tool_info->help;
+
+  if (! help_id)
+    help_id = tool_info->help_id;
+
+  if (! icon_name)
+    icon_name = gimp_viewable_get_icon_name (GIMP_VIEWABLE (tool_info));
 
   dialog = g_object_new (GIMP_TYPE_TOOL_DIALOG,
-                         "title",        tool_info->blurb,
+                         "title",        title,
                          "role",         gimp_object_get_name (tool_info),
-                         "help-func",    gimp_standard_help_func,
-                         "help-id",      tool_info->help_id,
+                         "description",  description,
                          "icon-name",    icon_name,
-                         "description",  desc ? desc : tool_info->help,
+                         "help-func",    gimp_standard_help_func,
+                         "help-id",      help_id,
                          NULL);
 
-  va_start (args, desc);
+  va_start (args, help_id);
   gimp_dialog_add_buttons_valist (GIMP_DIALOG (dialog), args);
   va_end (args);
 
diff --git a/app/display/gimptooldialog.h b/app/display/gimptooldialog.h
index c97e24c..74c64fe 100644
--- a/app/display/gimptooldialog.h
+++ b/app/display/gimptooldialog.h
@@ -45,7 +45,10 @@ GType       gimp_tool_dialog_get_type (void) G_GNUC_CONST;
 GtkWidget * gimp_tool_dialog_new       (GimpToolInfo     *tool_info,
                                         GdkScreen        *screen,
                                         gint              monitor,
-                                        const gchar      *desc,
+                                        const gchar      *title,
+                                        const gchar      *description,
+                                        const gchar      *icon_name,
+                                        const gchar      *help_id,
                                         ...) G_GNUC_NULL_TERMINATED;
 
 void        gimp_tool_dialog_set_shell (GimpToolDialog   *tool_dialog,
diff --git a/app/display/gimptoolgui.c b/app/display/gimptoolgui.c
index 2298d8b..00b6fe5 100644
--- a/app/display/gimptoolgui.c
+++ b/app/display/gimptoolgui.c
@@ -63,8 +63,10 @@ typedef struct _GimpToolGuiPrivate GimpToolGuiPrivate;
 struct _GimpToolGuiPrivate
 {
   GimpToolInfo     *tool_info;
+  gchar            *title;
   gchar            *description;
   gchar            *icon_name;
+  gchar            *help_id;
   GList            *response_entries;
   gint              default_response;
   gboolean          focus_on_map;
@@ -189,6 +191,12 @@ gimp_tool_gui_finalize (GObject *object)
 {
   GimpToolGuiPrivate *private = GET_PRIVATE (object);
 
+  if (private->title)
+    {
+      g_free (private->title);
+      private->title = NULL;
+    }
+
   if (private->description)
     {
       g_free (private->description);
@@ -201,6 +209,12 @@ gimp_tool_gui_finalize (GObject *object)
       private->icon_name = NULL;
     }
 
+  if (private->help_id)
+    {
+      g_free (private->help_id);
+      private->help_id = NULL;
+    }
+
   if (private->response_entries)
     {
       g_list_free_full (private->response_entries,
@@ -245,7 +259,10 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
   private = GET_PRIVATE (gui);
 
   private->tool_info   = g_object_ref (tool_info);
+  private->title       = g_strdup (tool_info->blurb);
   private->description = g_strdup (description);
+  private->icon_name   = g_strdup (gimp_viewable_get_icon_name (GIMP_VIEWABLE (tool_info)));
+  private->help_id     = g_strdup (tool_info->help_id);
   private->overlay     = overlay;
 
   va_start (args, overlay);
@@ -269,6 +286,28 @@ gimp_tool_gui_new (GimpToolInfo *tool_info,
 }
 
 void
+gimp_tool_gui_set_title (GimpToolGui *gui,
+                         const gchar *title)
+{
+  GimpToolGuiPrivate *private;
+
+  g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
+
+  private = GET_PRIVATE (gui);
+
+  if (title == private->title)
+    return;
+
+  g_free (private->title);
+  private->title = g_strdup (title);
+
+  if (! title)
+    title = private->tool_info->blurb;
+
+  g_object_set (private->dialog, "title", title, NULL);
+}
+
+void
 gimp_tool_gui_set_description (GimpToolGui *gui,
                                const gchar *description)
 {
@@ -320,6 +359,35 @@ gimp_tool_gui_set_icon_name (GimpToolGui *gui,
 }
 
 void
+gimp_tool_gui_set_help_id (GimpToolGui *gui,
+                           const gchar *help_id)
+{
+  GimpToolGuiPrivate *private;
+
+  g_return_if_fail (GIMP_IS_TOOL_GUI (gui));
+
+  private = GET_PRIVATE (gui);
+
+  if (help_id == private->help_id)
+    return;
+
+  g_free (private->help_id);
+  private->help_id = g_strdup (help_id);
+
+  if (! help_id)
+    help_id = private->tool_info->help_id;
+
+  if (private->overlay)
+    {
+      /* TODO */
+    }
+  else
+    {
+      g_object_set (private->dialog, "help-id", help_id, NULL);
+    }
+}
+
+void
 gimp_tool_gui_set_shell (GimpToolGui      *gui,
                          GimpDisplayShell *shell)
 {
@@ -708,7 +776,10 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui,
     {
       private->dialog = gimp_tool_dialog_new (private->tool_info,
                                               screen, monitor,
+                                              private->title,
                                               private->description,
+                                              private->icon_name,
+                                              private->help_id,
                                               NULL);
 
       for (list = private->response_entries; list; list = g_list_next (list))
diff --git a/app/display/gimptoolgui.h b/app/display/gimptoolgui.h
index fe6867d..007a598 100644
--- a/app/display/gimptoolgui.h
+++ b/app/display/gimptoolgui.h
@@ -59,10 +59,14 @@ GimpToolGui * gimp_tool_gui_new                    (GimpToolInfo     *tool_info,
                                                     gboolean          overlay,
                                                     ...) G_GNUC_NULL_TERMINATED;
 
+void          gimp_tool_gui_set_title              (GimpToolGui      *gui,
+                                                    const gchar      *title);
 void          gimp_tool_gui_set_description        (GimpToolGui      *gui,
                                                     const gchar      *description);
 void          gimp_tool_gui_set_icon_name          (GimpToolGui      *gui,
                                                     const gchar      *icon_name);
+void          gimp_tool_gui_set_help_id            (GimpToolGui      *gui,
+                                                    const gchar      *help_id);
 
 void          gimp_tool_gui_set_shell              (GimpToolGui      *gui,
                                                     GimpDisplayShell *shell);
diff --git a/app/tools/gimpgegltool.c b/app/tools/gimpgegltool.c
index 2b64620..b2f21c4 100644
--- a/app/tools/gimpgegltool.c
+++ b/app/tools/gimpgegltool.c
@@ -461,7 +461,11 @@ gimp_gegl_tool_operation_changed (GtkWidget    *widget,
         }
 
       gimp_operation_tool_set_operation (GIMP_OPERATION_TOOL (tool),
-                                         operation, NULL, NULL);
+                                         operation,
+                                         _("GEGL Operation"),
+                                         NULL,
+                                         GIMP_STOCK_GEGL,
+                                         GIMP_HELP_TOOL_GEGL);
       g_free (operation);
     }
 }
diff --git a/app/tools/gimpoperationtool.c b/app/tools/gimpoperationtool.c
index 16c1252..cf6121e 100644
--- a/app/tools/gimpoperationtool.c
+++ b/app/tools/gimpoperationtool.c
@@ -173,6 +173,12 @@ gimp_operation_tool_finalize (GObject *object)
       tool->operation = NULL;
     }
 
+  if (tool->title)
+    {
+      g_free (tool->title);
+      tool->title = NULL;
+    }
+
   if (tool->undo_desc)
     {
       g_free (tool->undo_desc);
@@ -185,6 +191,12 @@ gimp_operation_tool_finalize (GObject *object)
       tool->icon_name = NULL;
     }
 
+  if (tool->help_id)
+    {
+      g_free (tool->help_id);
+      tool->help_id = NULL;
+    }
+
   g_list_free_full (tool->aux_inputs,
                     (GDestroyNotify) gimp_operation_tool_aux_input_free);
   tool->aux_inputs = NULL;
@@ -302,13 +314,17 @@ gimp_operation_tool_dialog (GimpImageMapTool *im_tool)
       gtk_widget_show (tool->options_gui);
     }
 
+  if (tool->title)
+    gimp_tool_gui_set_title (im_tool->gui, tool->title);
+
   if (tool->undo_desc)
-    gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui,
-                                   tool->undo_desc);
+    gimp_tool_gui_set_description (im_tool->gui, tool->undo_desc);
 
   if (tool->icon_name)
-    gimp_tool_gui_set_icon_name (GIMP_IMAGE_MAP_TOOL (tool)->gui,
-                                 tool->icon_name);
+    gimp_tool_gui_set_icon_name (im_tool->gui, tool->icon_name);
+
+  if (tool->help_id)
+    gimp_tool_gui_set_help_id (im_tool->gui, tool->help_id);
 }
 
 static void
@@ -621,8 +637,10 @@ gimp_operation_tool_aux_input_free (AuxInput *input)
 void
 gimp_operation_tool_set_operation (GimpOperationTool *tool,
                                    const gchar       *operation,
+                                   const gchar       *title,
                                    const gchar       *undo_desc,
-                                   const gchar       *icon_name)
+                                   const gchar       *icon_name,
+                                   const gchar       *help_id)
 {
   GimpImageMapTool *im_tool;
   GtkSizeGroup     *size_group = NULL;
@@ -636,15 +654,23 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool,
   if (tool->operation)
     g_free (tool->operation);
 
+  if (tool->title)
+    g_free (tool->title);
+
   if (tool->undo_desc)
     g_free (tool->undo_desc);
 
   if (tool->icon_name)
     g_free (tool->icon_name);
 
+  if (tool->help_id)
+    g_free (tool->help_id);
+
   tool->operation = g_strdup (operation);
+  tool->title     = g_strdup (title);
   tool->undo_desc = g_strdup (undo_desc);
   tool->icon_name = g_strdup (icon_name);
+  tool->help_id   = g_strdup (help_id);
 
   g_list_free_full (tool->aux_inputs,
                     (GDestroyNotify) gimp_operation_tool_aux_input_free);
@@ -737,11 +763,17 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool,
 
   if (im_tool->gui)
     {
+      if (title)
+        gimp_tool_gui_set_title (im_tool->gui, title);
+
       if (undo_desc)
         gimp_tool_gui_set_description (im_tool->gui, undo_desc);
 
       if (icon_name)
         gimp_tool_gui_set_icon_name (im_tool->gui, icon_name);
+
+      if (help_id)
+        gimp_tool_gui_set_help_id (im_tool->gui, help_id);
     }
 
   if (GIMP_TOOL (tool)->drawable)
diff --git a/app/tools/gimpoperationtool.h b/app/tools/gimpoperationtool.h
index 52a1481..9e24769 100644
--- a/app/tools/gimpoperationtool.h
+++ b/app/tools/gimpoperationtool.h
@@ -38,8 +38,10 @@ struct _GimpOperationTool
   GimpImageMapTool  parent_instance;
 
   gchar            *operation;
+  gchar            *title;
   gchar            *undo_desc;
   gchar            *icon_name;
+  gchar            *help_id;
 
   GList            *aux_inputs;
 
@@ -61,8 +63,10 @@ GType   gimp_operation_tool_get_type      (void) G_GNUC_CONST;
 
 void    gimp_operation_tool_set_operation (GimpOperationTool        *tool,
                                            const gchar              *operation,
+                                           const gchar              *title,
                                            const gchar              *undo_desc,
-                                           const gchar              *icon_name);
+                                           const gchar              *icon_name,
+                                           const gchar              *help_id);
 
 
 #endif  /*  __GIMP_OPERATION_TOOL_H__  */


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