[tepl/wip/edit-menu: 2/3] Edit menu: provide a TeplActionInfo for the select-all action



commit 86c43b3699dd33abefaee4dd98bd1a02b2fcf1ea
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Tue Jul 11 20:46:55 2017 +0200

    Edit menu: provide a TeplActionInfo for the select-all action

 docs/reference/tepl-3.0-sections.txt |    1 +
 tepl/tepl-application.c              |   55 ++++++++++++++++++++++++++++++++++
 tepl/tepl-application.h              |    2 +
 3 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/tepl-3.0-sections.txt b/docs/reference/tepl-3.0-sections.txt
index ccdec5c..2619540 100644
--- a/docs/reference/tepl-3.0-sections.txt
+++ b/docs/reference/tepl-3.0-sections.txt
@@ -75,6 +75,7 @@ tepl_application_get_from_gtk_application
 tepl_application_get_default
 tepl_application_get_application
 tepl_application_get_app_action_info_store
+tepl_application_get_tepl_action_info_store
 tepl_application_open_simple
 <SUBSECTION Standard>
 TEPL_APPLICATION
diff --git a/tepl/tepl-application.c b/tepl/tepl-application.c
index 3d9ae1b..ec529d5 100644
--- a/tepl/tepl-application.c
+++ b/tepl/tepl-application.c
@@ -17,7 +17,10 @@
  * along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "config.h"
 #include "tepl-application.h"
+#include <glib/gi18n-lib.h>
+#include "tepl-action-info.h"
 #include "tepl-action-info-store.h"
 
 /**
@@ -38,6 +41,7 @@ struct _TeplApplicationPrivate
 {
        GtkApplication *gtk_app;
        TeplActionInfoStore *app_action_info_store;
+       TeplActionInfoStore *tepl_action_info_store;
 };
 
 enum
@@ -63,6 +67,33 @@ init_app_action_info_store (TeplApplication *tepl_app)
 }
 
 static void
+init_tepl_action_info_store (TeplApplication *tepl_app)
+{
+       const TeplActionInfoEntry entries[] =
+       {
+               /* When adding an item to this array, do not forget to update
+                * the documentation of
+                * tepl_application_get_tepl_action_info_store().
+                */
+
+               /* action, icon, label, accel, tooltip */
+
+               { "win.tepl-select-all", "edit-select-all", N_("Select _All"), "<Control>a",
+                 N_("Select all the text") },
+       };
+
+       g_return_if_fail (tepl_app->priv->tepl_action_info_store == NULL);
+       g_assert (tepl_app->priv->gtk_app != NULL);
+
+       tepl_app->priv->tepl_action_info_store = tepl_action_info_store_new (tepl_app->priv->gtk_app);
+
+       tepl_action_info_store_add_entries (tepl_app->priv->tepl_action_info_store,
+                                           entries,
+                                           G_N_ELEMENTS (entries),
+                                           GETTEXT_PACKAGE);
+}
+
+static void
 tepl_application_get_property (GObject    *object,
                               guint       prop_id,
                               GValue     *value,
@@ -97,6 +128,7 @@ tepl_application_set_property (GObject      *object,
                        tepl_app->priv->gtk_app = g_value_get_object (value);
 
                        init_app_action_info_store (tepl_app);
+                       init_tepl_action_info_store (tepl_app);
                        break;
 
                default:
@@ -112,6 +144,7 @@ tepl_application_dispose (GObject *object)
 
        tepl_app->priv->gtk_app = NULL;
        g_clear_object (&tepl_app->priv->app_action_info_store);
+       g_clear_object (&tepl_app->priv->tepl_action_info_store);
 
        G_OBJECT_CLASS (tepl_application_parent_class)->dispose (object);
 }
@@ -243,6 +276,28 @@ tepl_application_get_app_action_info_store (TeplApplication *tepl_app)
 }
 
 /**
+ * tepl_application_get_tepl_action_info_store:
+ * @tepl_app: a #TeplApplication.
+ *
+ * The returned #TeplActionInfoStore contains #TeplActionInfo's for the
+ * following actions:
+ * - `"win.tepl-select-all"`
+ *
+ * To know what the #GAction's do, see the class description of
+ * #TeplApplicationWindow.
+ *
+ * Returns: (transfer none): the #TeplActionInfoStore of the Tepl library.
+ * Since: 3.0
+ */
+TeplActionInfoStore *
+tepl_application_get_tepl_action_info_store (TeplApplication *tepl_app)
+{
+       g_return_val_if_fail (TEPL_IS_APPLICATION (tepl_app), NULL);
+
+       return tepl_app->priv->tepl_action_info_store;
+}
+
+/**
  * tepl_application_open_simple:
  * @tepl_app: a #TeplApplication.
  * @file: a #GFile.
diff --git a/tepl/tepl-application.h b/tepl/tepl-application.h
index 98e5dee..c5621f5 100644
--- a/tepl/tepl-application.h
+++ b/tepl/tepl-application.h
@@ -63,6 +63,8 @@ GtkApplication *      tepl_application_get_application                (TeplApplication 
*tepl_app);
 
 TeplActionInfoStore *  tepl_application_get_app_action_info_store      (TeplApplication *tepl_app);
 
+TeplActionInfoStore *  tepl_application_get_tepl_action_info_store     (TeplApplication *tepl_app);
+
 void                   tepl_application_open_simple                    (TeplApplication *tepl_app,
                                                                         GFile           *file);
 


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