[gimp] app: add GimpProcedure::get_menu_label()



commit 78f5dbeac3e34df8f3d1496f83fc044ed47cb0c5
Author: Michael Natterer <mitch gimp org>
Date:   Fri Jan 1 22:41:42 2016 +0100

    app: add GimpProcedure::get_menu_label()
    
    which returns a procedure's *menu* label (not stripped of mnemonics
    and ellipses). Use it to further reduce dependencies on
    GimpPlugInProcedure.

 app/actions/filters-actions.c     |   11 +-----
 app/actions/plug-in-actions.c     |   16 +-------
 app/pdb/gimpprocedure.c           |   70 ++++++++++++++++++++++--------------
 app/pdb/gimpprocedure.h           |   32 +++++++++--------
 app/plug-in/gimppluginprocedure.c |   33 ++++++++++++++++-
 5 files changed, 94 insertions(+), 68 deletions(-)
---
diff --git a/app/actions/filters-actions.c b/app/actions/filters-actions.c
index d21d091..913f8c7 100644
--- a/app/actions/filters-actions.c
+++ b/app/actions/filters-actions.c
@@ -839,16 +839,7 @@ filters_actions_history_changed (Gimp            *gimp,
 
       proc = gimp_filter_history_nth (gimp, i);
 
-      /* FIXME history */
-      if (GIMP_PLUG_IN_PROCEDURE (proc)->menu_label)
-        {
-          label = dgettext (gimp_plug_in_procedure_get_locale_domain (GIMP_PLUG_IN_PROCEDURE (proc)),
-                            GIMP_PLUG_IN_PROCEDURE (proc)->menu_label);
-        }
-      else
-        {
-          label = gimp_procedure_get_label (proc);
-        }
+      label = gimp_procedure_get_menu_label (proc);
 
       /*  see comment above  */
       if (plug_in_group)
diff --git a/app/actions/plug-in-actions.c b/app/actions/plug-in-actions.c
index 665fa96..a2f042b 100644
--- a/app/actions/plug-in-actions.c
+++ b/app/actions/plug-in-actions.c
@@ -286,17 +286,12 @@ plug_in_actions_add_proc (GimpActionGroup     *group,
 {
   GimpProcedureActionEntry  entry;
   const gchar              *locale_domain;
-  const gchar              *label;
   gchar                    *path_original    = NULL;
   gchar                    *path_translated  = NULL;
 
   locale_domain = gimp_plug_in_procedure_get_locale_domain (proc);
 
-  if (proc->menu_label)
-    {
-      label = dgettext (locale_domain, proc->menu_label);
-    }
-  else
+  if (! proc->menu_label)
     {
       gchar *p1, *p2;
 
@@ -317,8 +312,6 @@ plug_in_actions_add_proc (GimpActionGroup     *group,
         {
           *p1 = '\0';
           *p2 = '\0';
-
-          label = p2 + 1;
         }
       else
         {
@@ -334,17 +327,12 @@ plug_in_actions_add_proc (GimpActionGroup     *group,
 
   entry.name        = gimp_object_get_name (proc);
   entry.icon_name   = gimp_viewable_get_icon_name (GIMP_VIEWABLE (proc));
-  entry.label       = label;
+  entry.label       = gimp_procedure_get_menu_label (GIMP_PROCEDURE (proc));
   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);
 
-#if 0
-  g_print ("adding plug-in action '%s' (%s)\n",
-           gimp_object_get_name (proc), label);
-#endif
-
   gimp_action_group_add_procedure_actions (group, &entry, 1,
                                            G_CALLBACK (plug_in_run_cmd_callback));
 
diff --git a/app/pdb/gimpprocedure.c b/app/pdb/gimpprocedure.c
index 204b510..b68db38 100644
--- a/app/pdb/gimpprocedure.c
+++ b/app/pdb/gimpprocedure.c
@@ -43,33 +43,34 @@
 #include "gimp-intl.h"
 
 
-static void             gimp_procedure_finalize       (GObject         *object);
-
-static gint64           gimp_procedure_get_memsize    (GimpObject      *object,
-                                                       gint64          *gui_size);
-
-static const gchar    * gimp_procedure_real_get_label (GimpProcedure   *procedure);
-static const gchar    * gimp_procedure_real_get_blurb (GimpProcedure   *procedure);
-static GimpValueArray * gimp_procedure_real_execute   (GimpProcedure   *procedure,
-                                                       Gimp            *gimp,
-                                                       GimpContext     *context,
-                                                       GimpProgress    *progress,
-                                                       GimpValueArray  *args,
-                                                       GError         **error);
-static void        gimp_procedure_real_execute_async  (GimpProcedure   *procedure,
-                                                       Gimp            *gimp,
-                                                       GimpContext     *context,
-                                                       GimpProgress    *progress,
-                                                       GimpValueArray  *args,
-                                                       GimpObject      *display);
-
-static void             gimp_procedure_free_strings   (GimpProcedure   *procedure);
-static gboolean         gimp_procedure_validate_args  (GimpProcedure   *procedure,
-                                                       GParamSpec     **param_specs,
-                                                       gint             n_param_specs,
-                                                       GimpValueArray  *args,
-                                                       gboolean         return_vals,
-                                                       GError         **error);
+static void          gimp_procedure_finalize            (GObject         *object);
+
+static gint64        gimp_procedure_get_memsize         (GimpObject      *object,
+                                                         gint64          *gui_size);
+
+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 GimpValueArray * gimp_procedure_real_execute     (GimpProcedure   *procedure,
+                                                         Gimp            *gimp,
+                                                         GimpContext     *context,
+                                                         GimpProgress    *progress,
+                                                         GimpValueArray  *args,
+                                                         GError         **error);
+static void        gimp_procedure_real_execute_async    (GimpProcedure   *procedure,
+                                                         Gimp            *gimp,
+                                                         GimpContext     *context,
+                                                         GimpProgress    *progress,
+                                                         GimpValueArray  *args,
+                                                         GimpObject      *display);
+
+static void          gimp_procedure_free_strings        (GimpProcedure   *procedure);
+static gboolean      gimp_procedure_validate_args       (GimpProcedure   *procedure,
+                                                         GParamSpec     **param_specs,
+                                                         gint             n_param_specs,
+                                                         GimpValueArray  *args,
+                                                         gboolean         return_vals,
+                                                         GError         **error);
 
 
 G_DEFINE_TYPE (GimpProcedure, gimp_procedure, GIMP_TYPE_VIEWABLE)
@@ -88,6 +89,7 @@ gimp_procedure_class_init (GimpProcedureClass *klass)
   gimp_object_class->get_memsize = gimp_procedure_get_memsize;
 
   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->execute                 = gimp_procedure_real_execute;
   klass->execute_async           = gimp_procedure_real_execute_async;
@@ -168,6 +170,12 @@ gimp_procedure_real_get_label (GimpProcedure *procedure)
 }
 
 static const gchar *
+gimp_procedure_real_get_menu_label (GimpProcedure *procedure)
+{
+  return gimp_procedure_get_label (procedure);
+}
+
+static const gchar *
 gimp_procedure_real_get_blurb (GimpProcedure *procedure)
 {
   return procedure->blurb;
@@ -320,6 +328,14 @@ gimp_procedure_get_label (GimpProcedure *procedure)
 }
 
 const gchar *
+gimp_procedure_get_menu_label (GimpProcedure *procedure)
+{
+  g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
+
+  return GIMP_PROCEDURE_GET_CLASS (procedure)->get_menu_label (procedure);
+}
+
+const gchar *
 gimp_procedure_get_blurb (GimpProcedure *procedure)
 {
   g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
diff --git a/app/pdb/gimpprocedure.h b/app/pdb/gimpprocedure.h
index d3cc5dc..6602dd3 100644
--- a/app/pdb/gimpprocedure.h
+++ b/app/pdb/gimpprocedure.h
@@ -69,21 +69,22 @@ struct _GimpProcedureClass
 {
   GimpViewableClass parent_class;
 
-  const gchar    * (* get_label)     (GimpProcedure   *procedure);
-  const gchar    * (* get_blurb)     (GimpProcedure   *procedure);
-
-  GimpValueArray * (* execute)       (GimpProcedure   *procedure,
-                                      Gimp            *gimp,
-                                      GimpContext     *context,
-                                      GimpProgress    *progress,
-                                      GimpValueArray  *args,
-                                      GError         **error);
-  void             (* execute_async) (GimpProcedure   *procedure,
-                                      Gimp            *gimp,
-                                      GimpContext     *context,
-                                      GimpProgress    *progress,
-                                      GimpValueArray  *args,
-                                      GimpObject      *display);
+  const gchar    * (* get_label)      (GimpProcedure   *procedure);
+  const gchar    * (* get_menu_label) (GimpProcedure   *procedure);
+  const gchar    * (* get_blurb)      (GimpProcedure   *procedure);
+
+  GimpValueArray * (* execute)        (GimpProcedure   *procedure,
+                                       Gimp            *gimp,
+                                       GimpContext     *context,
+                                       GimpProgress    *progress,
+                                       GimpValueArray  *args,
+                                       GError         **error);
+  void             (* execute_async)  (GimpProcedure   *procedure,
+                                       Gimp            *gimp,
+                                       GimpContext     *context,
+                                       GimpProgress    *progress,
+                                       GimpValueArray  *args,
+                                       GimpObject      *display);
 };
 
 
@@ -117,6 +118,7 @@ void             gimp_procedure_take_strings       (GimpProcedure    *procedure,
                                                     gchar            *deprecated);
 
 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);
 
 void             gimp_procedure_add_argument       (GimpProcedure    *procedure,
diff --git a/app/plug-in/gimppluginprocedure.c b/app/plug-in/gimppluginprocedure.c
index 7b9e4fb..4c3c04f 100644
--- a/app/plug-in/gimppluginprocedure.c
+++ b/app/plug-in/gimppluginprocedure.c
@@ -61,8 +61,10 @@ static gint64   gimp_plug_in_procedure_get_memsize     (GimpObject     *object,
 static gchar  * gimp_plug_in_procedure_get_description (GimpViewable   *viewable,
                                                         gchar         **tooltip);
 
-static const gchar  * gimp_plug_in_procedure_get_label (GimpProcedure  *procedure);
-static const gchar  * gimp_plug_in_procedure_get_blurb (GimpProcedure  *procedure);
+static const gchar * gimp_plug_in_procedure_get_label  (GimpProcedure  *procedure);
+static const gchar * gimp_plug_in_procedure_get_menu_label
+                                                       (GimpProcedure  *procedure);
+static const gchar * gimp_plug_in_procedure_get_blurb  (GimpProcedure  *procedure);
 static GimpValueArray * gimp_plug_in_procedure_execute (GimpProcedure  *procedure,
                                                         Gimp           *gimp,
                                                         GimpContext    *context,
@@ -113,6 +115,7 @@ gimp_plug_in_procedure_class_init (GimpPlugInProcedureClass *klass)
   viewable_class->get_description   = gimp_plug_in_procedure_get_description;
 
   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->execute               = gimp_plug_in_procedure_execute;
   proc_class->execute_async         = gimp_plug_in_procedure_execute_async;
@@ -261,6 +264,32 @@ gimp_plug_in_procedure_get_label (GimpProcedure *procedure)
 }
 
 static const gchar *
+gimp_plug_in_procedure_get_menu_label (GimpProcedure *procedure)
+{
+  GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (procedure);
+
+  if (proc->menu_label)
+    {
+      return dgettext (gimp_plug_in_procedure_get_locale_domain (proc),
+                       proc->menu_label);
+    }
+  else if (proc->menu_paths)
+    {
+      const gchar *translated;
+
+      translated = dgettext (gimp_plug_in_procedure_get_locale_domain (proc),
+                             proc->menu_paths->data);
+
+      translated = strrchr (translated, '/');
+
+      if (translated)
+        return translated + 1;
+    }
+
+  return GIMP_PROCEDURE_CLASS (parent_class)->get_menu_label (procedure);
+}
+
+static const gchar *
 gimp_plug_in_procedure_get_blurb (GimpProcedure *procedure)
 {
   GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (procedure);


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