[gimp] app: Make Alt-Click on layer thumbnail in Layers dockable discoverable



commit 9bd423994dec49366388a6d448def80b6a82e7cf
Author: Martin Nordholts <martinn src gnome org>
Date:   Tue Aug 17 18:48:05 2010 +0200

    app: Make Alt-Click on layer thumbnail in Layers dockable discoverable
    
    Make Alt-Click on layer thumbnail in Layers dockable discoverable, at
    least in theory, by adding this info to the menu item tooltips.

 app/actions/layers-actions.c  |   44 +++++++++++++++++++++++++++++++
 app/widgets/gimpactiongroup.c |   22 +++++++++++++++
 app/widgets/gimpactiongroup.h |   58 +++++++++++++++++++++-------------------
 3 files changed, 96 insertions(+), 28 deletions(-)
---
diff --git a/app/actions/layers-actions.c b/app/actions/layers-actions.c
index d9e1bac..dcc089c 100644
--- a/app/actions/layers-actions.c
+++ b/app/actions/layers-actions.c
@@ -33,6 +33,7 @@
 
 #include "widgets/gimphelp-ids.h"
 #include "widgets/gimpactiongroup.h"
+#include "widgets/gimpwidgets-utils.h"
 
 #include "actions.h"
 #include "image-commands.h"
@@ -414,6 +415,41 @@ static const GimpEnumActionEntry layers_mode_actions[] =
     GIMP_HELP_LAYER_MODE }
 };
 
+/**
+ * layers_actions_fix_tooltip:
+ * @group:
+ * @action:
+ * @modifiers:
+ *
+ * Make layer alpha to selection click-shortcuts discoverable, at
+ * least in theory.
+ **/
+static void
+layers_actions_fix_tooltip (GimpActionGroup *group,
+                            const gchar     *action,
+                            GdkModifierType  modifiers)
+{
+  const gchar *old_hint;
+  gchar       *new_hint;
+
+  old_hint = gimp_action_group_get_action_tooltip (group,
+                                                   action);
+  new_hint = g_strconcat (old_hint,
+                          "\n",
+                          /* Will be followed with e.g. "Shift-Click
+                             on thumbnail"
+                           */
+                          _("Shortcut: "),
+                          gimp_get_mod_string (modifiers),
+                          /* Will be prepended with a modifier key
+                             string, e.g. "Shift"
+                           */
+                          _("-Click on thumbnail in Layers dockable"),
+                          NULL);
+
+  gimp_action_group_set_action_tooltip (group, action, new_hint);
+  g_free (new_hint);
+}
 
 void
 layers_actions_setup (GimpActionGroup *group)
@@ -440,6 +476,14 @@ layers_actions_setup (GimpActionGroup *group)
                                       layers_alpha_to_selection_actions,
                                       G_N_ELEMENTS (layers_alpha_to_selection_actions),
                                       G_CALLBACK (layers_alpha_to_selection_cmd_callback));
+  layers_actions_fix_tooltip (group, "layers-alpha-selection-replace",
+                              GDK_MOD1_MASK);
+  layers_actions_fix_tooltip (group, "layers-alpha-selection-add",
+                              GDK_SHIFT_MASK | GDK_MOD1_MASK);
+  layers_actions_fix_tooltip (group, "layers-alpha-selection-subtract",
+                              GDK_CONTROL_MASK | GDK_MOD1_MASK);
+  layers_actions_fix_tooltip (group, "layers-alpha-selection-intersect",
+                              GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK);
 
   gimp_action_group_add_enum_actions (group, "layers-action",
                                       layers_select_actions,
diff --git a/app/widgets/gimpactiongroup.c b/app/widgets/gimpactiongroup.c
index 2450792..8aaeffe 100644
--- a/app/widgets/gimpactiongroup.c
+++ b/app/widgets/gimpactiongroup.c
@@ -808,6 +808,28 @@ gimp_action_group_set_action_tooltip (GimpActionGroup     *group,
   gtk_action_set_tooltip (action, tooltip);
 }
 
+const gchar *
+gimp_action_group_get_action_tooltip (GimpActionGroup     *group,
+                                      const gchar         *action_name)
+{
+  GtkAction *action;
+
+  g_return_val_if_fail (GIMP_IS_ACTION_GROUP (group), NULL);
+  g_return_val_if_fail (action_name != NULL, NULL);
+
+  action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name);
+
+  if (! action)
+    {
+      g_warning ("%s: Unable to get tooltip of action "
+                 "which doesn't exist: %s",
+                 G_STRFUNC, action_name);
+      return NULL;
+    }
+
+  return gtk_action_get_tooltip (action);
+}
+
 void
 gimp_action_group_set_action_color (GimpActionGroup *group,
                                     const gchar     *action_name,
diff --git a/app/widgets/gimpactiongroup.h b/app/widgets/gimpactiongroup.h
index 487c6d5..b9ddd74 100644
--- a/app/widgets/gimpactiongroup.h
+++ b/app/widgets/gimpactiongroup.h
@@ -171,34 +171,36 @@ void   gimp_action_group_add_plug_in_actions  (GimpActionGroup             *grou
                                                guint                        n_entries,
                                                GCallback                    callback);
 
-void   gimp_action_group_activate_action      (GimpActionGroup     *group,
-                                               const gchar         *action_name);
-
-void   gimp_action_group_set_action_visible   (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               gboolean             visible);
-void   gimp_action_group_set_action_sensitive (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               gboolean             sensitive);
-void   gimp_action_group_set_action_active    (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               gboolean             active);
-void   gimp_action_group_set_action_label     (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               const gchar         *label);
-void   gimp_action_group_set_action_tooltip   (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               const gchar         *tooltip);
-void   gimp_action_group_set_action_color     (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               const GimpRGB       *color,
-                                               gboolean             set_label);
-void   gimp_action_group_set_action_viewable  (GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               GimpViewable        *viewable);
-void   gimp_action_group_set_action_hide_empty(GimpActionGroup     *group,
-                                               const gchar         *action_name,
-                                               gboolean             hide_empty);
+void          gimp_action_group_activate_action       (GimpActionGroup *group,
+                                                       const gchar     *action_name);
+void          gimp_action_group_set_action_visible    (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       gboolean         visible);
+void          gimp_action_group_set_action_sensitive  (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       gboolean         sensitive);
+void          gimp_action_group_set_action_active     (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       gboolean         active);
+void          gimp_action_group_set_action_label      (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       const gchar     *label);
+void          gimp_action_group_set_action_tooltip    (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       const gchar     *tooltip);
+const gchar * gimp_action_group_get_action_tooltip    (GimpActionGroup *group,
+                                                       const gchar     *action_name);
+void          gimp_action_group_set_action_color      (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       const GimpRGB   *color,
+                                                       gboolean         set_label);
+void          gimp_action_group_set_action_viewable   (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       GimpViewable    *viewable);
+void          gimp_action_group_set_action_hide_empty (GimpActionGroup *group,
+                                                       const gchar     *action_name,
+                                                       gboolean         hide_empty);
+
 
 
 #endif  /* __GIMP_ACTION_GROUP_H__ */



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