[gimp] app: add new virtual function GimpProcedure::get_help_id()



commit 7c0d7c6311f59c36e1bce16e4294f220d590fb52
Author: Michael Natterer <mitch gimp org>
Date:   Sun Jan 17 17:15:27 2016 +0100

    app: add new virtual function GimpProcedure::get_help_id()
    
    Implement the new function in GimpPlugInProcedure and remove
    gimp_plug_in_procedure_get_help_id().

 app/actions/plug-in-actions.c     |    4 +--
 app/pdb/gimpprocedure.c           |   16 +++++++++++++++
 app/pdb/gimpprocedure.h           |    2 +
 app/plug-in/gimppluginprocedure.c |   38 +++++++++++++++++++++---------------
 app/plug-in/gimppluginprocedure.h |    3 +-
 app/widgets/gimpfileprocview.c    |    4 +--
 6 files changed, 43 insertions(+), 24 deletions(-)
---
diff --git a/app/actions/plug-in-actions.c b/app/actions/plug-in-actions.c
index e7d5f74..ced328f 100644
--- a/app/actions/plug-in-actions.c
+++ b/app/actions/plug-in-actions.c
@@ -332,13 +332,11 @@ plug_in_actions_add_proc (GimpActionGroup     *group,
   entry.accelerator = NULL;
   entry.tooltip     = gimp_procedure_get_blurb (GIMP_PROCEDURE (proc));
   entry.procedure   = GIMP_PROCEDURE (proc);
-  entry.help_id     = gimp_plug_in_procedure_get_help_id (proc);
+  entry.help_id     = gimp_procedure_get_help_id (GIMP_PROCEDURE (proc));
 
   gimp_action_group_add_procedure_actions (group, &entry, 1,
                                            G_CALLBACK (plug_in_run_cmd_callback));
 
-  g_free ((gchar *) entry.help_id);
-
   if (proc->menu_label)
     {
       GList *list;
diff --git a/app/pdb/gimpprocedure.c b/app/pdb/gimpprocedure.c
index 9c041cc..a4e0a36 100644
--- a/app/pdb/gimpprocedure.c
+++ b/app/pdb/gimpprocedure.c
@@ -51,6 +51,7 @@ static gint64        gimp_procedure_get_memsize         (GimpObject      *object
 static const gchar * gimp_procedure_real_get_label      (GimpProcedure   *procedure);
 static const gchar * gimp_procedure_real_get_menu_label (GimpProcedure   *procedure);
 static const gchar * gimp_procedure_real_get_blurb      (GimpProcedure   *procedure);
+static const gchar * gimp_procedure_real_get_help_id    (GimpProcedure   *procedure);
 static gboolean      gimp_procedure_real_get_sensitive  (GimpProcedure   *procedure,
                                                          GimpObject      *object);
 static GimpValueArray * gimp_procedure_real_execute     (GimpProcedure   *procedure,
@@ -93,6 +94,7 @@ gimp_procedure_class_init (GimpProcedureClass *klass)
   klass->get_label               = gimp_procedure_real_get_label;
   klass->get_menu_label          = gimp_procedure_real_get_menu_label;
   klass->get_blurb               = gimp_procedure_real_get_blurb;
+  klass->get_help_id             = gimp_procedure_real_get_help_id;
   klass->get_sensitive           = gimp_procedure_real_get_sensitive;
   klass->execute                 = gimp_procedure_real_execute;
   klass->execute_async           = gimp_procedure_real_execute_async;
@@ -184,6 +186,12 @@ gimp_procedure_real_get_blurb (GimpProcedure *procedure)
   return procedure->blurb;
 }
 
+static const gchar *
+gimp_procedure_real_get_help_id (GimpProcedure *procedure)
+{
+  return NULL;
+}
+
 static gboolean
 gimp_procedure_real_get_sensitive (GimpProcedure *procedure,
                                    GimpObject    *object)
@@ -353,6 +361,14 @@ gimp_procedure_get_blurb (GimpProcedure *procedure)
   return GIMP_PROCEDURE_GET_CLASS (procedure)->get_blurb (procedure);
 }
 
+const gchar *
+gimp_procedure_get_help_id (GimpProcedure *procedure)
+{
+  g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
+
+  return GIMP_PROCEDURE_GET_CLASS (procedure)->get_help_id (procedure);
+}
+
 gboolean
 gimp_procedure_get_sensitive (GimpProcedure *procedure,
                               GimpObject    *object)
diff --git a/app/pdb/gimpprocedure.h b/app/pdb/gimpprocedure.h
index 948386e..a7f5bbb 100644
--- a/app/pdb/gimpprocedure.h
+++ b/app/pdb/gimpprocedure.h
@@ -72,6 +72,7 @@ struct _GimpProcedureClass
   const gchar    * (* get_label)      (GimpProcedure   *procedure);
   const gchar    * (* get_menu_label) (GimpProcedure   *procedure);
   const gchar    * (* get_blurb)      (GimpProcedure   *procedure);
+  const gchar    * (* get_help_id)    (GimpProcedure   *procedure);
   gboolean         (* get_sensitive)  (GimpProcedure   *procedure,
                                        GimpObject      *object);
 
@@ -122,6 +123,7 @@ void             gimp_procedure_take_strings       (GimpProcedure    *procedure,
 const gchar    * gimp_procedure_get_label          (GimpProcedure    *procedure);
 const gchar    * gimp_procedure_get_menu_label     (GimpProcedure    *procedure);
 const gchar    * gimp_procedure_get_blurb          (GimpProcedure    *procedure);
+const gchar    * gimp_procedure_get_help_id        (GimpProcedure    *procedure);
 gboolean         gimp_procedure_get_sensitive      (GimpProcedure    *procedure,
                                                     GimpObject       *object);
 
diff --git a/app/plug-in/gimppluginprocedure.c b/app/plug-in/gimppluginprocedure.c
index 52829d3..da7886d 100644
--- a/app/plug-in/gimppluginprocedure.c
+++ b/app/plug-in/gimppluginprocedure.c
@@ -67,6 +67,7 @@ static const gchar * gimp_plug_in_procedure_get_label  (GimpProcedure  *procedur
 static const gchar * gimp_plug_in_procedure_get_menu_label
                                                        (GimpProcedure  *procedure);
 static const gchar * gimp_plug_in_procedure_get_blurb  (GimpProcedure  *procedure);
+static const gchar * gimp_plug_in_procedure_get_help_id(GimpProcedure  *procedure);
 static gboolean   gimp_plug_in_procedure_get_sensitive (GimpProcedure  *procedure,
                                                         GimpObject     *object);
 static GimpValueArray * gimp_plug_in_procedure_execute (GimpProcedure  *procedure,
@@ -126,6 +127,7 @@ gimp_plug_in_procedure_class_init (GimpPlugInProcedureClass *klass)
   proc_class->get_label             = gimp_plug_in_procedure_get_label;
   proc_class->get_menu_label        = gimp_plug_in_procedure_get_menu_label;
   proc_class->get_blurb             = gimp_plug_in_procedure_get_blurb;
+  proc_class->get_help_id           = gimp_plug_in_procedure_get_help_id;
   proc_class->get_sensitive         = gimp_plug_in_procedure_get_sensitive;
   proc_class->execute               = gimp_plug_in_procedure_execute;
   proc_class->execute_async         = gimp_plug_in_procedure_execute_async;
@@ -139,7 +141,6 @@ gimp_plug_in_procedure_init (GimpPlugInProcedure *proc)
 {
   GIMP_PROCEDURE (proc)->proc_type = GIMP_PLUGIN;
 
-  proc->label            = NULL;
   proc->icon_data_length = -1;
 }
 
@@ -154,6 +155,7 @@ gimp_plug_in_procedure_finalize (GObject *object)
   g_list_free_full (proc->menu_paths, (GDestroyNotify) g_free);
 
   g_free (proc->label);
+  g_free (proc->help_id);
 
   g_free (proc->icon_data);
   g_free (proc->image_types);
@@ -312,6 +314,25 @@ gimp_plug_in_procedure_get_blurb (GimpProcedure *procedure)
   return NULL;
 }
 
+static const gchar *
+gimp_plug_in_procedure_get_help_id (GimpProcedure *procedure)
+{
+  GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (procedure);
+  const gchar         *domain;
+
+  if (proc->help_id)
+    return proc->help_id;
+
+  domain = gimp_plug_in_procedure_get_help_domain (proc);
+
+  if (domain)
+    proc->help_id = g_strconcat (domain, "?", gimp_object_get_name (proc), NULL);
+  else
+    proc->help_id = g_strdup (gimp_object_get_name (proc));
+
+  return proc->help_id;
+}
+
 static gboolean
 gimp_plug_in_procedure_get_sensitive (GimpProcedure *procedure,
                                       GimpObject    *object)
@@ -861,21 +882,6 @@ gimp_plug_in_procedure_take_icon (GimpPlugInProcedure *proc,
     g_object_unref (icon_pixbuf);
 }
 
-gchar *
-gimp_plug_in_procedure_get_help_id (const GimpPlugInProcedure *proc)
-{
-  const gchar *domain;
-
-  g_return_val_if_fail (GIMP_IS_PLUG_IN_PROCEDURE (proc), NULL);
-
-  domain = gimp_plug_in_procedure_get_help_domain (proc);
-
-  if (domain)
-    return g_strconcat (domain, "?", gimp_object_get_name (proc), NULL);
-
-  return g_strdup (gimp_object_get_name (proc));
-}
-
 static GimpPlugInImageType
 image_types_parse (const gchar *name,
                    const gchar *image_types)
diff --git a/app/plug-in/gimppluginprocedure.h b/app/plug-in/gimppluginprocedure.h
index aa2ec3b..c2187e9 100644
--- a/app/plug-in/gimppluginprocedure.h
+++ b/app/plug-in/gimppluginprocedure.h
@@ -45,6 +45,7 @@ struct _GimpPlugInProcedure
   gchar               *menu_label;
   GList               *menu_paths;
   gchar               *label;
+  gchar               *help_id;
   GimpIconType         icon_type;
   gint                 icon_data_length;
   guint8              *icon_data;
@@ -110,8 +111,6 @@ void          gimp_plug_in_procedure_take_icon       (GimpPlugInProcedure
                                                       guint8                    *data,
                                                       gint                       data_length);
 
-gchar       * gimp_plug_in_procedure_get_help_id     (const GimpPlugInProcedure *proc);
-
 void          gimp_plug_in_procedure_set_image_types (GimpPlugInProcedure       *proc,
                                                       const gchar               *image_types);
 void          gimp_plug_in_procedure_set_file_proc   (GimpPlugInProcedure       *proc,
diff --git a/app/widgets/gimpfileprocview.c b/app/widgets/gimpfileprocview.c
index f720f8c..3fbae4c 100644
--- a/app/widgets/gimpfileprocview.c
+++ b/app/widgets/gimpfileprocview.c
@@ -139,7 +139,7 @@ gimp_file_proc_view_new (Gimp        *gimp,
       if (! proc->prefixes_list) /*  skip URL loaders  */
         {
           const gchar *label   = gimp_procedure_get_label (GIMP_PROCEDURE (proc));
-          gchar       *help_id = gimp_plug_in_procedure_get_help_id (proc);
+          const gchar *help_id = gimp_procedure_get_help_id (GIMP_PROCEDURE (proc));
           GSList      *list2;
 
           if (label)
@@ -153,8 +153,6 @@ gimp_file_proc_view_new (Gimp        *gimp,
                                   -1);
             }
 
-          g_free (help_id);
-
           for (list2 = proc->extensions_list;
                list2;
                list2 = g_slist_next (list2))


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