[gnome-builder] terminal plugin: port to DzlShortcut classes



commit a744340b9d41eef50d52632b1d0bdba64a752ed0
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Wed Aug 16 21:20:02 2017 +0200

    terminal plugin: port to DzlShortcut classes

 plugins/terminal/gb-terminal-application-addin.c |   80 ----------------------
 plugins/terminal/gb-terminal-application-addin.h |   32 ---------
 plugins/terminal/gb-terminal-plugin.c            |    4 -
 plugins/terminal/gb-terminal-workbench-addin.c   |   46 ++++++++++++
 plugins/terminal/meson.build                     |    2 -
 5 files changed, 46 insertions(+), 118 deletions(-)
---
diff --git a/plugins/terminal/gb-terminal-plugin.c b/plugins/terminal/gb-terminal-plugin.c
index 8bb20fd..ce3b04b 100644
--- a/plugins/terminal/gb-terminal-plugin.c
+++ b/plugins/terminal/gb-terminal-plugin.c
@@ -19,7 +19,6 @@
 #include <libpeas/peas.h>
 #include <ide.h>
 
-#include "gb-terminal-application-addin.h"
 #include "gb-terminal-private.h"
 #include "gb-terminal-resources.h"
 #include "gb-terminal-workbench-addin.h"
@@ -28,9 +27,6 @@ void
 peas_register_types (PeasObjectModule *module)
 {
   peas_object_module_register_extension_type (module,
-                                              IDE_TYPE_APPLICATION_ADDIN,
-                                              GB_TYPE_TERMINAL_APPLICATION_ADDIN);
-  peas_object_module_register_extension_type (module,
                                               IDE_TYPE_WORKBENCH_ADDIN,
                                               GB_TYPE_TERMINAL_WORKBENCH_ADDIN);
 }
diff --git a/plugins/terminal/gb-terminal-workbench-addin.c b/plugins/terminal/gb-terminal-workbench-addin.c
index c713296..4ab8c5b 100644
--- a/plugins/terminal/gb-terminal-workbench-addin.c
+++ b/plugins/terminal/gb-terminal-workbench-addin.c
@@ -28,6 +28,8 @@
 #include "gb-terminal-view.h"
 #include "gb-terminal-workbench-addin.h"
 
+#define I_(s) g_intern_static_string(s)
+
 struct _GbTerminalWorkbenchAddin
 {
   GObject         parent_instance;
@@ -172,6 +174,49 @@ failure:
   IDE_EXIT;
 }
 
+static const DzlShortcutEntry gb_terminal_shortcut_entries[] = {
+  { "org.gnome.builder.workbench.new-terminal",
+    0, NULL,
+    NC_("shortcut winndow", "Workbench shortcuts"),
+    NC_("shortcut winndow", "General"),
+    NC_("shortcut winndow", "Terminal") },
+
+  { "org.gnome.builder.workbench.new-terminal-in-runtime",
+    0, NULL,
+    NC_("shortcut winndow", "Workbench shortcuts"),
+    NC_("shortcut winndow", "General"),
+    NC_("shortcut winndow", "Terminal in Build Runtime") },
+};
+
+static void
+gb_terminal_workbench_setup_shortcuts (GbTerminalWorkbenchAddin *self,
+                                       IdeWorkbench             *workbench)
+{
+  DzlShortcutController *controller;
+
+  g_assert (GB_IS_TERMINAL_WORKBENCH_ADDIN (self));
+  g_assert (IDE_IS_WORKBENCH (workbench));
+
+  controller = dzl_shortcut_controller_find (GTK_WIDGET (workbench));
+
+  dzl_shortcut_controller_add_command_action (controller,
+                                              "org.gnome.builder.workbench.new-terminal",
+                                              I_("<primary><shift>t"),
+                                              DZL_SHORTCUT_PHASE_DISPATCH,
+                                              "win.new-terminal");
+
+  dzl_shortcut_controller_add_command_action (controller,
+                                              "org.gnome.builder.workbench.new-terminal-in-runtime",
+                                              I_("<primary><alt><shift>t"),
+                                              DZL_SHORTCUT_PHASE_DISPATCH,
+                                              "win.new-terminal-in-runtime");
+
+  dzl_shortcut_manager_add_shortcut_entries (NULL,
+                                             gb_terminal_shortcut_entries,
+                                             G_N_ELEMENTS (gb_terminal_shortcut_entries),
+                                             GETTEXT_PACKAGE);
+}
+
 static void
 gb_terminal_workbench_addin_load (IdeWorkbenchAddin *addin,
                                   IdeWorkbench      *workbench)
@@ -194,6 +239,7 @@ gb_terminal_workbench_addin_load (IdeWorkbenchAddin *addin,
   ide_set_weak_pointer (&self->workbench, workbench);
 
   g_action_map_add_action_entries (G_ACTION_MAP (workbench), actions, G_N_ELEMENTS (actions), self);
+  gb_terminal_workbench_setup_shortcuts (self, workbench);
 
   if (self->panel_terminal == NULL)
     {
diff --git a/plugins/terminal/meson.build b/plugins/terminal/meson.build
index 699bc5d..f5720e7 100644
--- a/plugins/terminal/meson.build
+++ b/plugins/terminal/meson.build
@@ -10,8 +10,6 @@ terminal_sources = [
   terminal_resources,
   'gb-terminal.c',
   'gb-terminal.h',
-  'gb-terminal-application-addin.c',
-  'gb-terminal-application-addin.h',
   'gb-terminal-plugin.c',
   'gb-terminal-private.h',
   'gb-terminal-util.c',


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