[libdazzle] example: start on some more examples



commit 8b56ae29f74e91cab0e066a780e29b5987383ee7
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jun 16 14:35:34 2017 -0700

    example: start on some more examples
    
    This doesn't fully work yet, but that needs to be fixed and this is a
    reasonable test case to ensure that happens.

 examples/app/example-window.c           |   46 +++++++++++++++++++++++++++++++
 examples/app/example.gresources.xml     |    1 +
 examples/app/shortcuts/default.keytheme |    8 +++++
 3 files changed, 55 insertions(+), 0 deletions(-)
---
diff --git a/examples/app/example-window.c b/examples/app/example-window.c
index 96af722..93756fb 100644
--- a/examples/app/example-window.c
+++ b/examples/app/example-window.c
@@ -1,4 +1,7 @@
+#include "config.h"
+
 #include <dazzle.h>
+#include <glib/gi18n.h>
 
 #include "example-window.h"
 
@@ -10,6 +13,27 @@ struct _ExampleWindow
 
 G_DEFINE_TYPE (ExampleWindow, example_window, GTK_TYPE_WINDOW)
 
+static const DzlShortcutEntry shortcuts[] = {
+  { "com.example.window.NewDoc", "<control>n", N_("Editing"), N_("Documents"), N_("New Document"), 
N_("Create a new document") },
+  { "com.example.window.CloseDoc", "<control>w", N_("Editing"), N_("Documents"), N_("Close Document"), 
N_("Close the current document") },
+};
+
+static void
+new_document_cb (ExampleWindow *self,
+                 gpointer       user_data)
+{
+  g_assert (EXAMPLE_IS_WINDOW (self));
+
+}
+
+static void
+close_document_cb (ExampleWindow *self,
+                   gpointer       user_data)
+{
+  g_assert (EXAMPLE_IS_WINDOW (self));
+
+}
+
 static void
 example_window_class_init (ExampleWindowClass *klass)
 {
@@ -22,7 +46,29 @@ example_window_class_init (ExampleWindowClass *klass)
 static void
 example_window_init (ExampleWindow *self)
 {
+  DzlShortcutController *controller;
+
   gtk_widget_init_template (GTK_WIDGET (self));
+  dzl_shortcut_manager_add_shortcut_entries (NULL, shortcuts, G_N_ELEMENTS (shortcuts), GETTEXT_PACKAGE);
+
+  controller = dzl_shortcut_controller_find (GTK_WIDGET (self));
+
+  dzl_shortcut_manager_set_theme_name (NULL, "default");
+
+  dzl_shortcut_controller_add_command_callback (controller,
+                                                "com.example.window.NewDoc",
+                                                "<control>n",
+                                                (GtkCallback) new_document_cb, NULL, NULL);
+
+  dzl_shortcut_controller_add_command_callback (controller,
+                                                "com.example.window.CloseDoc",
+                                                "<control>w",
+                                                (GtkCallback) close_document_cb, NULL, NULL);
+
+  g_signal_connect_swapped (self,
+                            "key-press-event",
+                            G_CALLBACK (dzl_shortcut_manager_handle_event),
+                            dzl_shortcut_manager_get_default ());
 }
 
 GtkWidget *
diff --git a/examples/app/example.gresources.xml b/examples/app/example.gresources.xml
index 297c1db..955a67d 100644
--- a/examples/app/example.gresources.xml
+++ b/examples/app/example.gresources.xml
@@ -6,6 +6,7 @@
 
   <gresource prefix="/org/gnome/example">
     <file>gtk/menus.ui</file>
+    <file>shortcuts/default.keytheme</file>
     <file>themes/shared.css</file>
   </gresource>
 </gresources>
diff --git a/examples/app/shortcuts/default.keytheme b/examples/app/shortcuts/default.keytheme
new file mode 100644
index 0000000..ca6ce0a
--- /dev/null
+++ b/examples/app/shortcuts/default.keytheme
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<keytheme name="default">
+  <property name="title" translatable="yes">Example Shortcuts</property>
+
+  <shortcut accelerator="<primary>n" command="com.example.window.NewDoc"/>
+  <shortcut accelerator="<primary>w" command="com.example.window.CloseDoc"/>
+
+</keytheme>


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