grim/glibre

Convert the menu to use actions

2021-09-20, Gary Kramlich
e657370b2b59
Parents 8f4139abc381
Children 267ec7f57bc0
Convert the menu to use actions
--- a/src/glibre-application.c Mon Sep 20 22:05:43 2021 -0500
+++ b/src/glibre-application.c Mon Sep 20 22:46:39 2021 -0500
@@ -19,6 +19,7 @@
#include "glibre-application.h"
#include "glibre.h"
+#include "glibre-about-window.h"
struct _GlibreApplication {
GtkApplication parent;
@@ -27,6 +28,30 @@
G_DEFINE_TYPE(GlibreApplication, glibre_application, GTK_TYPE_APPLICATION)
/******************************************************************************
+ * GActions
+ *****************************************************************************/
+static void
+glibre_application_about(GSimpleAction *action, GVariant *parameter,
+ gpointer data)
+{
+ GtkWidget *about = glibre_about_window_new();
+
+ gtk_window_present(GTK_WINDOW(about));
+}
+
+static void
+glibre_application_quit(GSimpleAction *action, GVariant *parameter,
+ gpointer data)
+{
+ g_application_quit(G_APPLICATION(data));
+}
+
+static GActionEntry app_entries[] = {
+ { "about", glibre_application_about, NULL, NULL, NULL },
+ { "quit", glibre_application_quit, NULL, NULL, NULL }
+};
+
+/******************************************************************************
* GApplication Implementation
*****************************************************************************/
static void
@@ -43,7 +68,9 @@
* GObject Impelementation
*****************************************************************************/
static void
-glibre_application_init(GlibreApplication *application) {
+glibre_application_init(GlibreApplication *app) {
+ g_action_map_add_action_entries(G_ACTION_MAP(app), app_entries,
+ G_N_ELEMENTS (app_entries), app);
}
static void
--- a/src/glibre.c Mon Sep 20 22:05:43 2021 -0500
+++ b/src/glibre.c Mon Sep 20 22:46:39 2021 -0500
@@ -21,8 +21,6 @@
#include "glibre.h"
-#include "glibre-about-window.h"
-
typedef struct {
GtkWidget *window;
@@ -603,18 +601,6 @@
}
static void
-glibre_quit_cb(GtkMenuItem *w, gpointer d) {
- glibre_quit();
-}
-
-static void
-glibre_about_cb(GtkMenuItem *w, gpointer d) {
- GtkWidget *about = glibre_about_window_new();
-
- gtk_widget_show_all(about);
-}
-
-static void
glibre_clear_cb(GtkMenuItem *w, gpointer d) {
glibre_set_entry_text(window.regex_entry, "");
glibre_set_entry_text(window.data_entry, "");
@@ -645,10 +631,6 @@
}
static void
-glibre_view_edit_cb(GtkMenuItem *w, gpointer d) {
-}
-
-static void
glibre_entry_changed_cb(GtkTextBuffer *buffer, gpointer d) {
if(loaded)
glibre_update();
@@ -708,9 +690,8 @@
menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, ag);
- g_signal_connect(item, "activate",
- G_CALLBACK(glibre_quit_cb), NULL);
+ item = gtk_menu_item_new_with_mnemonic("_Quit");
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(item), "app.quit");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
/* Edit Menu */
@@ -720,19 +701,8 @@
menu = gtk_menu_new();
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, ag);
- g_signal_connect(item, "activate", G_CALLBACK(glibre_clear_cb), NULL);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
- /* View Menu */
- item = gtk_menu_item_new_with_mnemonic("_View");
- gtk_menu_shell_append(GTK_MENU_SHELL(menubar), item);
-
- menu = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
-
- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_EDIT, ag);
- g_signal_connect(item, "activate", G_CALLBACK(glibre_view_edit_cb), NULL);
+ item = gtk_menu_item_new_with_mnemonic("_Clear");
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(item), "win.clear");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
/* Help Menu */
@@ -743,7 +713,7 @@
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);
item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, ag);
- g_signal_connect(item, "activate", G_CALLBACK(glibre_about_cb), NULL);
+ gtk_actionable_set_action_name(GTK_ACTIONABLE(item), "app.about");
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
/**************************************************************************