[gtk/matthiasc/for-master] gtk-demo: Add a shortcuts window



commit 1ae898bf0b18748efe49cb53a975fea3bba405b2
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Apr 26 22:14:10 2020 -0400

    gtk-demo: Add a shortcuts window
    
    Its not very impressive here, but still good to have.

 demos/gtk-demo/demo.gresource.xml |  3 +++
 demos/gtk-demo/help-overlay.ui    | 25 +++++++++++++++++++++++++
 demos/gtk-demo/main.c             | 11 +++++++++++
 demos/gtk-demo/main.ui            |  4 ++++
 4 files changed, 43 insertions(+)
---
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index 850750e5ef..19a2f8a168 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -309,4 +309,7 @@
     <file>icons/16x16/status/battery-caution-charging-symbolic.symbolic.png</file>
     <file>icons/16x16/categories/applications-other.png</file>
   </gresource>
+  <gresource prefix="/org/gtk/Demo4/gtk">
+    <file preprocess="xml-stripblanks">help-overlay.ui</file>
+  </gresource>
 </gresources>
diff --git a/demos/gtk-demo/help-overlay.ui b/demos/gtk-demo/help-overlay.ui
new file mode 100644
index 0000000000..ae172ee7a6
--- /dev/null
+++ b/demos/gtk-demo/help-overlay.ui
@@ -0,0 +1,25 @@
+<interface>
+  <object class="GtkShortcutsWindow" id="help_overlay">
+    <child>
+      <object class="GtkShortcutsSection">
+        <child>
+          <object class="GtkShortcutsGroup">
+            <property name="title">General</property>
+            <child>
+              <object class="GtkShortcutsShortcut">
+                <property name="accelerator">F1</property>
+                <property name="title">Show About Dialog</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkShortcutsShortcut">
+                <property name="accelerator">&lt;Control&gt;q</property>
+                <property name="title">Quit</property>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c
index 53f2f04d9b..a31036d916 100644
--- a/demos/gtk-demo/main.c
+++ b/demos/gtk-demo/main.c
@@ -1186,6 +1186,14 @@ main (int argc, char **argv)
     { "quit", activate_quit, NULL, NULL, NULL },
     { "inspector", activate_inspector, NULL, NULL, NULL },
   };
+  struct {
+    const gchar *action_and_target;
+    const gchar *accelerators[2];
+  } accels[] = {
+    { "app.about", { "F1", NULL } },
+    { "app.quit", { "<Control>q", NULL } },
+  };
+  int i;
 
   /* Most code in gtk-demo is intended to be exemplary, but not
    * these few lines, which are just a hack so gtk-demo will work
@@ -1203,6 +1211,9 @@ main (int argc, char **argv)
                                    app_entries, G_N_ELEMENTS (app_entries),
                                    app);
 
+  for (i = 0; i < G_N_ELEMENTS (accels); i++)
+    gtk_application_set_accels_for_action (app, accels[i].action_and_target, accels[i].accelerators);
+
   g_application_add_main_option (G_APPLICATION (app), "version", 0, 0, G_OPTION_ARG_NONE, "Show program 
version", NULL);
   g_application_add_main_option (G_APPLICATION (app), "run", 0, 0, G_OPTION_ARG_STRING, "Run an example", 
"EXAMPLE");
   g_application_add_main_option (G_APPLICATION (app), "list", 0, 0, G_OPTION_ARG_NONE, "List examples", 
NULL);
diff --git a/demos/gtk-demo/main.ui b/demos/gtk-demo/main.ui
index d4cc88a96f..5256095fc6 100644
--- a/demos/gtk-demo/main.ui
+++ b/demos/gtk-demo/main.ui
@@ -6,6 +6,10 @@
         <attribute name="label" translatable="yes">_Inspector</attribute>
         <attribute name="action">app.inspector</attribute>
       </item>
+      <item>
+        <attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
+        <attribute name="action">win.show-help-overlay</attribute>
+      </item>
       <item>
         <attribute name="label" translatable="yes">_About GTK Demo</attribute>
         <attribute name="action">app.about</attribute>


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