[gnome-builder] plugins/buildui: use action groups for workspace actions



commit 77b13595b7e7e02675e2bd8342c7111242aad0b0
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 29 15:22:03 2022 -0700

    plugins/buildui: use action groups for workspace actions

 src/plugins/buildui/gbp-buildui-workspace-addin.c | 46 ++++++++---------------
 src/plugins/buildui/gtk/keybindings.json          | 10 ++---
 src/plugins/buildui/gtk/menus.ui                  |  4 +-
 3 files changed, 22 insertions(+), 38 deletions(-)
---
diff --git a/src/plugins/buildui/gbp-buildui-workspace-addin.c 
b/src/plugins/buildui/gbp-buildui-workspace-addin.c
index 113691add..08306f3e9 100644
--- a/src/plugins/buildui/gbp-buildui-workspace-addin.c
+++ b/src/plugins/buildui/gbp-buildui-workspace-addin.c
@@ -168,14 +168,10 @@ gbp_buildui_workspace_addin_bind_build_manager (GbpBuilduiWorkspaceAddin *self,
 }
 
 static void
-on_view_output_cb (GSimpleAction *action,
-                   GVariant      *param,
-                   gpointer       user_data)
+on_view_output_cb (GbpBuilduiWorkspaceAddin *self,
+                   GVariant                 *param)
 {
-  GbpBuilduiWorkspaceAddin *self = user_data;
-
   g_assert (IDE_IS_MAIN_THREAD ());
-  g_assert (G_IS_SIMPLE_ACTION (action));
   g_assert (GBP_IS_BUILDUI_WORKSPACE_ADDIN (self));
 
   panel_widget_raise (PANEL_WIDGET (self->log_pane));
@@ -183,15 +179,13 @@ on_view_output_cb (GSimpleAction *action,
 }
 
 static void
-select_build_target_action (GSimpleAction *action,
-                            GVariant      *param,
-                            gpointer       user_data)
+select_build_target_action (GbpBuilduiWorkspaceAddin *self,
+                            GVariant                 *param)
 {
-  GbpBuilduiWorkspaceAddin *self = user_data;
   GbpBuilduiTargetsDialog *dialog;
   IdeContext *context;
 
-  g_assert (G_IS_SIMPLE_ACTION (action));
+  g_assert (GBP_IS_BUILDUI_WORKSPACE_ADDIN (self));
 
   context = ide_workspace_get_context (self->workspace);
   dialog = g_object_new (GBP_TYPE_BUILDUI_TARGETS_DIALOG,
@@ -204,18 +198,15 @@ select_build_target_action (GSimpleAction *action,
 }
 
 static void
-show_status_popover (GSimpleAction *action,
-                     GVariant      *param,
-                     gpointer       user_data)
+show_status_popover (GbpBuilduiWorkspaceAddin *self,
+                     GVariant                 *param)
 {
-  GbpBuilduiWorkspaceAddin *self = user_data;
   GtkPopover *popover;
 
   IDE_ENTRY;
 
-  g_assert (G_IS_SIMPLE_ACTION (action));
-  g_assert (g_variant_is_of_type (param, G_VARIANT_TYPE_STRING));
   g_assert (GBP_IS_BUILDUI_WORKSPACE_ADDIN (self));
+  g_assert (g_variant_is_of_type (param, G_VARIANT_TYPE_STRING));
 
   popover = gtk_menu_button_get_popover (self->status_button);
   gbp_buildui_status_popover_set_page (GBP_BUILDUI_STATUS_POPOVER (popover),
@@ -225,11 +216,11 @@ show_status_popover (GSimpleAction *action,
   IDE_EXIT;
 }
 
-static const GActionEntry actions[] = {
-  { "show-build-log", on_view_output_cb },
-  { "select-build-target", select_build_target_action },
-  { "show-build-status-popover", show_status_popover, "s" },
-};
+IDE_DEFINE_ACTION_GROUP (GbpBuilduiWorkspaceAddin, gbp_buildui_workspace_addin, {
+  { "build-target.select", select_build_target_action },
+  { "log.show", on_view_output_cb },
+  { "status.show", show_status_popover, "s" },
+})
 
 static void
 gbp_buildui_workspace_addin_build_started (GbpBuilduiWorkspaceAddin *self,
@@ -279,11 +270,6 @@ gbp_buildui_workspace_addin_load (IdeWorkspaceAddin *addin,
 
   self->workspace = workspace;
 
-  g_action_map_add_action_entries (G_ACTION_MAP (workspace),
-                                   actions,
-                                   G_N_ELEMENTS (actions),
-                                   self);
-
   omnibar = ide_primary_workspace_get_omni_bar (IDE_PRIMARY_WORKSPACE (workspace));
   workbench = ide_widget_get_workbench (GTK_WIDGET (workspace));
   context = ide_workbench_get_context (workbench);
@@ -420,9 +406,6 @@ gbp_buildui_workspace_addin_unload (IdeWorkspaceAddin *addin,
   panel_statusbar_remove (statusbar, GTK_WIDGET (self->status_button));
   self->status_button = NULL;
 
-  for (guint i = 0; i < G_N_ELEMENTS (actions); i++)
-    g_action_map_remove_action (G_ACTION_MAP (workspace), actions[i].name);
-
   if (self->omni_bar_section)
     gtk_widget_unparent (GTK_WIDGET (self->omni_bar_section));
 
@@ -443,7 +426,8 @@ workspace_addin_iface_init (IdeWorkspaceAddinInterface *iface)
 }
 
 G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBuilduiWorkspaceAddin, gbp_buildui_workspace_addin, G_TYPE_OBJECT,
-                         G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
+                               G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, 
gbp_buildui_workspace_addin_init_action_group)
+                               G_IMPLEMENT_INTERFACE (IDE_TYPE_WORKSPACE_ADDIN, workspace_addin_iface_init))
 
 static void
 gbp_buildui_workspace_addin_class_init (GbpBuilduiWorkspaceAddinClass *klass)
diff --git a/src/plugins/buildui/gtk/keybindings.json b/src/plugins/buildui/gtk/keybindings.json
index b3232e0d2..ab5b4aedb 100644
--- a/src/plugins/buildui/gtk/keybindings.json
+++ b/src/plugins/buildui/gtk/keybindings.json
@@ -1,11 +1,11 @@
 /* Build Actions */
-{ "trigger" : "<Control><Shift>l", "action" : "win.show-build-log", "when" : "hasProject()", "phase" : 
"capture" },
-{ "trigger" : "<Control><Alt><Shift>b", "action" : "build-manager.build", "when" : "hasProject()", "phase" : 
"capture" },
+{ "trigger" : "<Control><Shift>l", "action" : "workspace.buildui.log.show", "when" : "hasProject()", "phase" 
: "capture" },
+{ "trigger" : "<Control><Alt><Shift>b", "action" : "context.build-manager.build", "when" : "hasProject()", 
"phase" : "capture" },
 
 /* Run Actions */
-{ "trigger" : "<Control><Shift>space", "action" : "run-manager.run", "when" : "hasProject()", "phase" : 
"capture" },
+{ "trigger" : "<Control><Shift>space", "action" : "context.run-manager.run", "when" : "hasProject()", 
"phase" : "capture" },
 
 /* Errors and Warnings Popover */
-{ "trigger" : "<Control><Shift>e", "action" : "win.show-build-status-popover", "args" : "'errors'", "when" : 
"hasErrors() || hasWarnings()", "phase" : "capture" },
-{ "trigger" : "<Control><Shift>w", "action" : "win.show-build-status-popover", "args" : "'warnings'", "when" 
: "hasErrors() || hasWarnings()", "phase" : "capture" },
+{ "trigger" : "<Control><Shift>e", "action" : "workspace.buildui.status.show", "args" : "'errors'", "when" : 
"hasErrors() || hasWarnings()", "phase" : "capture" },
+{ "trigger" : "<Control><Shift>w", "action" : "workspace.buildui.status.show", "args" : "'warnings'", "when" 
: "hasErrors() || hasWarnings()", "phase" : "capture" },
 
diff --git a/src/plugins/buildui/gtk/menus.ui b/src/plugins/buildui/gtk/menus.ui
index 55e60630c..89d99fb72 100644
--- a/src/plugins/buildui/gtk/menus.ui
+++ b/src/plugins/buildui/gtk/menus.ui
@@ -39,7 +39,7 @@
     <section id="build-menu-target">
       <item>
         <attribute name="label" translatable="yes">Select Build Target…</attribute>
-        <attribute name="action">win.select-build-target</attribute>
+        <attribute name="action">workspace.buildui.build-target.select</attribute>
         <attribute name="description" translatable="yes">Change default build target</attribute>
       </item>
     </section>
@@ -100,7 +100,7 @@
     <section id="build-output">
       <item>
         <attribute name="label" translatable="yes">Show Build _Log</attribute>
-        <attribute name="action">win.show-build-log</attribute>
+        <attribute name="action">workspace.buildui.log.show</attribute>
         <attribute name="accel">&lt;ctrl&gt;&lt;shift&gt;l</attribute>
         <attribute name="description" translatable="yes">Display panel containing the build log</attribute>
         <attribute name="verb-icon">builder-terminal-symbolic</attribute>


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