[gtk+] gtk-demo: Add a GtkShortcutsWindow demo
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gtk-demo: Add a GtkShortcutsWindow demo
- Date: Wed, 21 Oct 2015 19:49:00 +0000 (UTC)
commit 310781ecdd573c299e536ab0070910c484aa23d7
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Oct 11 16:48:08 2015 -0400
gtk-demo: Add a GtkShortcutsWindow demo
This example implements the mockups from the help overlay design,
showing off the various features of GtkShortcutsWindow.
demos/gtk-demo/Makefile.am | 1 +
demos/gtk-demo/demo.gresource.xml | 11 +
demos/gtk-demo/gesture-two-finger-swipe-left.svg | 173 ++++++++
demos/gtk-demo/gesture-two-finger-swipe-right.svg | 169 ++++++++
demos/gtk-demo/shortcuts-builder.ui | 454 +++++++++++++++++++++
demos/gtk-demo/shortcuts-clocks.ui | 148 +++++++
demos/gtk-demo/shortcuts-gedit.ui | 181 ++++++++
demos/gtk-demo/shortcuts.c | 92 +++++
demos/gtk-demo/shortcuts.ui | 44 ++
9 files changed, 1273 insertions(+), 0 deletions(-)
---
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index fc1cae4..e93a450 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -56,6 +56,7 @@ demos_base = \
scale.c \
search_entry.c \
search_entry2.c \
+ shortcuts.c \
sidebar.c \
sizegroup.c \
spinbutton.c \
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index a3a3455..a19028b 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -91,6 +91,12 @@
<gresource prefix="/stack">
<file>stack.ui</file>
</gresource>
+ <gresource prefix="/shortcuts">
+ <file>shortcuts.ui</file>
+ <file>shortcuts-builder.ui</file>
+ <file>shortcuts-gedit.ui</file>
+ <file>shortcuts-clocks.ui</file>
+ </gresource>
<gresource prefix="/revealer">
<file>revealer.ui</file>
</gresource>
@@ -163,6 +169,7 @@
<file>scale.c</file>
<file>search_entry.c</file>
<file>search_entry2.c</file>
+ <file>shortcuts.c</file>
<file>sizegroup.c</file>
<file>sidebar.c</file>
<file>stack.c</file>
@@ -213,4 +220,8 @@
<gresource prefix="/modelbutton">
<file>modelbutton.ui</file>
</gresource>
+ <gresource prefix="/icons">
+ <file>gesture-two-finger-swipe-right.svg</file>
+ <file>gesture-two-finger-swipe-left.svg</file>
+ </gresource>
</gresources>
diff --git a/demos/gtk-demo/gesture-two-finger-swipe-left.svg
b/demos/gtk-demo/gesture-two-finger-swipe-left.svg
new file mode 100644
index 0000000..d93af46
--- /dev/null
+++ b/demos/gtk-demo/gesture-two-finger-swipe-left.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="80"
+ height="54"
+ viewBox="0 0 80.000001 54"
+ id="svg6660"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="two-finger-swipe-left.svg"
+ inkscape:export-filename="/home/aday/Scratch/two-finger-swipe-left.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs6662" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="-26.486277"
+ inkscape:cy="27.97415"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:showpageshadow="false"
+ units="px"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata6665">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(1077.1429,-651.07582)">
+ <g
+ style="display:inline"
+ transform="translate(-753.14285,209.07579)"
+ id="g6613">
+ <g
+ id="g6615">
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6617"
+ width="7.99999"
+ height="24.999994"
+ x="-288"
+ y="471"
+ ry="4.1854858"
+ rx="3.999995" />
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="452.00003"
+ x="-279"
+ height="43.999989"
+ width="7.99999"
+ id="rect6619"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6621"
+ width="7.99999"
+ height="49.000015"
+ x="-270"
+ y="447"
+ ry="4.1854858"
+ rx="3.999995" />
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="460"
+ x="-261"
+ height="36.000011"
+ width="7.99999"
+ id="rect6623"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6625"
+ width="7.99999"
+ height="30.000006"
+ x="-252"
+ y="466"
+ ry="4.1854858"
+ rx="3.999995" />
+ <rect
+ y="483"
+ x="-288"
+ height="12.99999"
+ width="28.999994"
+ id="rect6627"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="475"
+ x="-279"
+ height="21"
+ width="34.999985"
+ id="rect6629"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <path
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="path6631"
+ sodipodi:type="arc"
+ sodipodi:cx="-266"
+ sodipodi:cy="451"
+ sodipodi:rx="7.4999938"
+ sodipodi:ry="7.5000024"
+ sodipodi:start="3.4953343"
+ sodipodi:end="1.8407347"
+ d="m -273.03562,448.40192 a 7.4999938,7.5000024 0 0 1 9.43617,-4.50737 7.4999938,7.5000024 0 0 1
4.76917,9.30661 7.4999938,7.5000024 0 0 1 -9.16976,5.02725"
+ sodipodi:open="true" />
+ <path
+ d="m -268.10552,458.34925 a 7.4999938,7.5000024 0 0 1 -9.38146,4.80209 7.4999938,7.5000024 0 0 1
-4.92078,-9.31976 7.4999938,7.5000024 0 0 1 9.25653,-5.03869"
+ sodipodi:end="4.9929531"
+ sodipodi:start="0.31864739"
+ sodipodi:ry="7.5000024"
+ sodipodi:rx="7.4999938"
+ sodipodi:cy="455.99963"
+ sodipodi:cx="-275.22797"
+ sodipodi:type="arc"
+ id="path6633"
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ sodipodi:open="true" />
+ <path
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;marker:none;enable-background:accumulate"
+ d="m -314,465 -10,-9.5 10,-9.5 z"
+ id="path6635"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <rect
+ transform="scale(-1,-1)"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6637"
+ width="31.999987"
+ height="4.99999"
+ x="283"
+ y="-458" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/gtk-demo/gesture-two-finger-swipe-right.svg
b/demos/gtk-demo/gesture-two-finger-swipe-right.svg
new file mode 100644
index 0000000..7586568
--- /dev/null
+++ b/demos/gtk-demo/gesture-two-finger-swipe-right.svg
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="80.000008"
+ height="55.000023"
+ viewBox="0 0 80.000008 55.000024"
+ id="svg6535"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="two-finger-swipe-right.svg">
+ <defs
+ id="defs6537" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="-59.169932"
+ inkscape:cy="48.63391"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="px"
+ inkscape:showpageshadow="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata6540">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(180,-479.14791)">
+ <g
+ style="display:inline"
+ transform="translate(144,118.14791)"
+ id="g6509">
+ <g
+ id="g6511">
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="391"
+ x="-324"
+ height="24.999994"
+ width="7.99999"
+ id="rect6513"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6515"
+ width="7.99999"
+ height="43.999989"
+ x="-315"
+ y="372.00003"
+ ry="4.1854858"
+ rx="3.999995" />
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="367"
+ x="-306"
+ height="49.000015"
+ width="7.99999"
+ id="rect6517"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6519"
+ width="7.99999"
+ height="36.000011"
+ x="-297"
+ y="380"
+ ry="4.1854858"
+ rx="3.999995" />
+ <rect
+ rx="3.999995"
+ ry="4.1854858"
+ y="386"
+ x="-288"
+ height="30.000006"
+ width="7.99999"
+ id="rect6521"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6523"
+ width="28.999994"
+ height="12.99999"
+ x="-324"
+ y="403" />
+ <rect
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect6525"
+ width="34.999985"
+ height="21"
+ x="-315"
+ y="395"
+ ry="4.1854858"
+ rx="3.999995" />
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="path6527"
+ d="m -254,361 10,9.5 -10,9.5 z"
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;marker:none;enable-background:accumulate"
/>
+ <path
+ sodipodi:open="true"
+ d="m -309.03562,368.40192 a 7.4999938,7.5000024 0 0 1 9.43617,-4.50737 7.4999938,7.5000024 0 0 1
4.76917,9.30661 7.4999938,7.5000024 0 0 1 -9.16976,5.02725"
+ sodipodi:end="1.8407347"
+ sodipodi:start="3.4953343"
+ sodipodi:ry="7.5000024"
+ sodipodi:rx="7.4999938"
+ sodipodi:cy="371"
+ sodipodi:cx="-302"
+ sodipodi:type="arc"
+ id="path6529"
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
/>
+ <path
+ sodipodi:open="true"
+
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="path6531"
+ sodipodi:type="arc"
+ sodipodi:cx="-311.22797"
+ sodipodi:cy="375.99963"
+ sodipodi:rx="7.4999938"
+ sodipodi:ry="7.5000024"
+ sodipodi:start="0.31864739"
+ sodipodi:end="4.9929531"
+ d="m -304.10552,378.34925 a 7.4999938,7.5000024 0 0 1 -9.38146,4.80209 7.4999938,7.5000024 0 0 1
-4.92078,-9.31976 7.4999938,7.5000024 0 0 1 9.25653,-5.03869" />
+ <rect
+ y="368"
+ x="-295"
+ height="4.99999"
+ width="41.999992"
+ id="rect6533"
+
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#4a90d9;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/gtk-demo/shortcuts-builder.ui b/demos/gtk-demo/shortcuts-builder.ui
new file mode 100644
index 0000000..f6777e2
--- /dev/null
+++ b/demos/gtk-demo/shortcuts-builder.ui
@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.17 -->
+
+ <object class="GFileIcon" id="left-swipe-icon">
+ <property name="file">resource:///icons/gesture-two-finger-swipe-left.svg</property>
+ </object>
+ <object class="GFileIcon" id="right-swipe-icon">
+ <property name="file">resource:///icons/gesture-two-finger-swipe-right.svg</property>
+ </object>
+
+ <object class="GtkShortcutsWindow" id="shortcuts-builder">
+ <property name="modal">1</property>
+ <child>
+ <object class="GtkShortcutsSection">
+ <property name="visible">1</property>
+ <property name="section-name">editor</property>
+ <property name="title" translatable="yes">Editor Shortcuts</property>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">General</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Global Search</property>
+ <property name="accelerator"><ctrl>period</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property name="accelerator"><ctrl>comma</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Command Bar</property>
+ <property name="accelerator"><ctrl>Return</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Terminal</property>
+ <property name="accelerator"><ctrl><shift>t</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Keyboard Shortcuts</property>
+ <property name="accelerator"><ctrl><shift>question</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Panels</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Toggle left panel</property>
+ <property name="accelerator">F9</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Toggle right panel</property>
+ <property name="accelerator"><shift>F9</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Toggle bottom panel</property>
+ <property name="accelerator"><ctrl>F9</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Touchpad gestures</property>
+ <child>
+ <object class="GtkShortcutsGesture">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Switch to the next document</property>
+ <property name="subtitle" translatable="yes">Two finger swipe right</property>
+ <property name="icon">right-swipe-icon</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGesture">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Switch to the previous document</property>
+ <property name="subtitle" translatable="yes">Two finger swipe left</property>
+ <property name="icon">left-swipe-icon</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Files</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>n</property>
+ <property name="title" translatable="yes">Create new document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>o</property>
+ <property name="title" translatable="yes">Open a document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>s</property>
+ <property name="title" translatable="yes">Save the document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>w</property>
+ <property name="title" translatable="yes">Close the document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><alt>Page_Down</property>
+ <property name="title" translatable="yes">Switch to the next document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><alt>Page_Up</property>
+ <property name="title" translatable="yes">Switch to the previous document</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Find and replace</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>f</property>
+ <property name="title" translatable="yes">Find</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>g</property>
+ <property name="title" translatable="yes">Find the next match</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>g</property>
+ <property name="title" translatable="yes">Find the previous match</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>k</property>
+ <property name="title" translatable="yes">Clear highlight</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Copy and Paste</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>c</property>
+ <property name="title" translatable="yes">Copy selected text to clipboard</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>x</property>
+ <property name="title" translatable="yes">Cut selected text to clipboard</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>v</property>
+ <property name="title" translatable="yes">Paste text from clipboard</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Undo and Redo</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>z</property>
+ <property name="title" translatable="yes">Undo previous command</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>z</property>
+ <property name="title" translatable="yes">Redo previous command</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Editing</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>a</property>
+ <property name="title" translatable="yes">Increment number at cursor</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>x</property>
+ <property name="title" translatable="yes">Decrement number at cursor</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>j</property>
+ <property name="title" translatable="yes">Join selected lines</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>space</property>
+ <property name="title" translatable="yes">Show completion window</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Insert</property>
+ <property name="title" translatable="yes">Toggle overwrite</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><alt>i</property>
+ <property name="title" translatable="yes">Reindent line</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Navigation</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt>n</property>
+ <property name="title" translatable="yes">Move to next error in file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt>p</property>
+ <property name="title" translatable="yes">Move to previous error in file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><shift><alt>Left</property>
+ <property name="title" translatable="yes">Move to previous edit location</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><shift><alt>Right</property>
+ <property name="title" translatable="yes">Move to next edit location</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt>period</property>
+ <property name="title" translatable="yes">Jump to definition of symbol</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt><shift>Up</property>
+ <property name="title" translatable="yes">Move sectionport up within the file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt><shift>Down</property>
+ <property name="title" translatable="yes">Move sectionport down within the file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt><shift>End</property>
+ <property name="title" translatable="yes">Move sectionport to end of file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt><shift>Home</property>
+ <property name="title" translatable="yes">Move sectionport to beginning of file</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>percent</property>
+ <property name="title" translatable="yes">Move to matching bracket</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Selections</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>a</property>
+ <property name="title" translatable="yes">Select all</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>backslash</property>
+ <property name="title" translatable="yes">Unselect all</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsSection">
+ <property name="visible">1</property>
+ <property name="section-name">terminal</property>
+ <property name="title" translatable="yes">Terminal Shortcuts</property>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">General</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Global Search</property>
+ <property name="accelerator"><ctrl>period</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Preferences</property>
+ <property name="accelerator"><ctrl>comma</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Command Bar</property>
+ <property name="accelerator"><ctrl>Return</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Terminal</property>
+ <property name="accelerator"><ctrl><shift>t</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Keyboard Shortcuts</property>
+ <property name="accelerator"><ctrl><shift>question</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Copy and Paste</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>c</property>
+ <property name="title" translatable="yes">Copy selected text to clipboard</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><shift>v</property>
+ <property name="title" translatable="yes">Paste text from clipboard</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+
+</interface>
diff --git a/demos/gtk-demo/shortcuts-clocks.ui b/demos/gtk-demo/shortcuts-clocks.ui
new file mode 100644
index 0000000..051a4c2
--- /dev/null
+++ b/demos/gtk-demo/shortcuts-clocks.ui
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.17 -->
+
+ <object class="GtkShortcutsWindow" id="shortcuts-clocks">
+ <property name="modal">1</property>
+ <child>
+ <object class="GtkShortcutsSection">
+ <property name="visible">1</property>
+ <property name="section-name">shortcuts</property>
+ <property name="max-height">10</property>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">General</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>Page_Down</property>
+ <property name="title" translatable="yes">Go to the next section</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>Page_Up</property>
+ <property name="title" translatable="yes">Go to the previous section</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt>Q</property>
+ <property name="title" translatable="yes">Quit</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><alt>Left</property>
+ <property name="title" translatable="yes">Forward</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>Right</property>
+ <property name="title" translatable="yes">Back</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="view">world</property>
+ <property name="title" translatable="yes">World Clocks</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>N</property>
+ <property name="title" translatable="yes">Add a world clock</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>S</property>
+ <property name="title" translatable="yes">Select world clocks</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="view">alarm</property>
+ <property name="title" translatable="yes">Alarm</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>N</property>
+ <property name="title" translatable="yes">Add an alarm</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>S</property>
+ <property name="title" translatable="yes">Select alarms</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="view">stopwatch</property>
+ <property name="title" translatable="yes">Stopwatch</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Return space</property>
+ <property name="title" translatable="yes">Start / Stop / Continue</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">L</property>
+ <property name="title" translatable="yes">Lap</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Delete</property>
+ <property name="title" translatable="yes">Reset</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="view">timer</property>
+ <property name="title" translatable="yes">Timer</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Return space</property>
+ <property name="title" translatable="yes">Start / Stop / Pause</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Delete</property>
+ <property name="title" translatable="yes">Reset</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+
+</interface>
diff --git a/demos/gtk-demo/shortcuts-gedit.ui b/demos/gtk-demo/shortcuts-gedit.ui
new file mode 100644
index 0000000..74bd2dc
--- /dev/null
+++ b/demos/gtk-demo/shortcuts-gedit.ui
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.17 -->
+
+ <object class="GFileIcon" id="left-swipe-icon">
+ <property name="file">resource:///icons/gesture-two-finger-swipe-left.svg</property>
+ </object>
+ <object class="GFileIcon" id="right-swipe-icon">
+ <property name="file">resource:///icons/gesture-two-finger-swipe-right.svg</property>
+ </object>
+
+ <object class="GtkShortcutsWindow" id="shortcuts-gedit">
+ <property name="modal">1</property>
+ <child>
+ <object class="GtkShortcutsSection">
+ <property name="visible">1</property>
+ <property name="section-name">shortcuts</property>
+ <property name="max-height">12</property>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Touchpad gestures</property>
+ <child>
+ <object class="GtkShortcutsGesture">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Switch to the next document</property>
+ <property name="subtitle" translatable="yes">Two finger swipe right</property>
+ <property name="icon">right-swipe-icon</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGesture">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Switch to the previous document</property>
+ <property name="subtitle" translatable="yes">Two finger swipe left</property>
+ <property name="icon">left-swipe-icon</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Documents</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>N</property>
+ <property name="title" translatable="yes">Create new document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>O</property>
+ <property name="title" translatable="yes">Open a document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>S</property>
+ <property name="title" translatable="yes">Save the document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>W</property>
+ <property name="title" translatable="yes">Close the document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><Alt>Page_Down</property>
+ <property name="title" translatable="yes">Switch to the next document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><Alt>Page_Up</property>
+ <property name="title" translatable="yes">Switch to the previous document</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Find and Replace</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>F</property>
+ <property name="title" translatable="yes">Find</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>G</property>
+ <property name="title" translatable="yes">Find the next match</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><Shift>G</property>
+ <property name="title" translatable="yes">Find the previous match</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>H</property>
+ <property name="title" translatable="yes">Find and Replace</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl><Shift>K</property>
+ <property name="title" translatable="yes">Clear highlight</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>I</property>
+ <property name="title" translatable="yes">Go to line</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Tools</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><shift>F7</property>
+ <property name="title" translatable="yes">Check spelling</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsGroup">
+ <property name="visible">1</property>
+ <property name="title" translatable="yes">Miscellaneous</property>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">F11</property>
+ <property name="title" translatable="yes">Fullscreen on / off</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator"><ctrl>P</property>
+ <property name="title" translatable="yes">Print the document</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkShortcutsShortcut">
+ <property name="visible">1</property>
+ <property name="accelerator">Insert</property>
+ <property name="title" translatable="yes">Toggle insert / overwrite</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+
+</interface>
diff --git a/demos/gtk-demo/shortcuts.c b/demos/gtk-demo/shortcuts.c
new file mode 100644
index 0000000..69f44c6
--- /dev/null
+++ b/demos/gtk-demo/shortcuts.c
@@ -0,0 +1,92 @@
+/* Shortcuts Window
+ *
+ * GtkShortcutsWindow is a window that provides a help overlay
+ * for shortcuts and gestures in an application.
+ */
+
+#include <gtk/gtk.h>
+
+static void
+show_shortcuts (GtkWidget *window,
+ const gchar *id,
+ const gchar *view)
+{
+ GtkBuilder *builder;
+ GtkWidget *overlay;
+ gchar *path;
+
+ path = g_strdup_printf ("/shortcuts/%s.ui", id);
+ builder = gtk_builder_new_from_resource (path);
+ g_free (path);
+ overlay = GTK_WIDGET (gtk_builder_get_object (builder, id));
+ gtk_window_set_transient_for (GTK_WINDOW (overlay), GTK_WINDOW (window));
+ g_object_set (overlay, "view-name", view, NULL);
+ gtk_widget_show (overlay);
+}
+
+static void
+builder_shortcuts (GtkWidget *window)
+{
+ show_shortcuts (window, "shortcuts-builder", NULL);
+}
+
+static void
+gedit_shortcuts (GtkWidget *window)
+{
+ show_shortcuts (window, "shortcuts-gedit", NULL);
+}
+
+static void
+clocks_shortcuts (GtkWidget *window)
+{
+ show_shortcuts (window, "shortcuts-clocks", NULL);
+}
+
+static void
+clocks_shortcuts_stopwatch (GtkWidget *window)
+{
+ show_shortcuts (window, "shortcuts-clocks", "stopwatch");
+}
+
+GtkWidget *
+do_shortcuts (GtkWidget *do_widget)
+{
+ static GtkWidget *window = NULL;
+ static gboolean icons_added = FALSE;
+
+ if (!icons_added)
+ {
+ icons_added = TRUE;
+ gtk_icon_theme_add_resource_path (gtk_icon_theme_get_default (), "/icons");
+ }
+
+ g_type_ensure (G_TYPE_FILE_ICON);
+
+ if (!window)
+ {
+ GtkBuilder *builder;
+
+ builder = gtk_builder_new_from_resource ("/shortcuts/shortcuts.ui");
+ gtk_builder_add_callback_symbols (builder,
+ "builder_shortcuts", G_CALLBACK (builder_shortcuts),
+ "gedit_shortcuts", G_CALLBACK (gedit_shortcuts),
+ "clocks_shortcuts", G_CALLBACK (clocks_shortcuts),
+ "clocks_shortcuts_stopwatch", G_CALLBACK
(clocks_shortcuts_stopwatch),
+ NULL);
+ gtk_builder_connect_signals (builder, NULL);
+ window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
+ gtk_window_set_screen (GTK_WINDOW (window),
+ gtk_widget_get_screen (do_widget));
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_widget_destroyed), &window);
+
+ g_object_unref (builder);
+ }
+
+ if (!gtk_widget_get_visible (window))
+ gtk_widget_show_all (window);
+ else
+ gtk_widget_destroy (window);
+
+ return window;
+}
diff --git a/demos/gtk-demo/shortcuts.ui b/demos/gtk-demo/shortcuts.ui
new file mode 100644
index 0000000..da480c7
--- /dev/null
+++ b/demos/gtk-demo/shortcuts.ui
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.17 -->
+
+ <object class="GtkWindow" id="window1">
+ <property name="title" translatable="yes">Shortcuts</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">1</property>
+ <property name="orientation">vertical</property>
+ <property name="margin">50</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">1</property>
+ <property name="label">Builder</property>
+ <signal name="clicked" handler="builder_shortcuts" swapped="1" object="window1"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">1</property>
+ <property name="label">GEdit</property>
+ <signal name="clicked" handler="gedit_shortcuts" swapped="1" object="window1"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">1</property>
+ <property name="label">Clocks - All</property>
+ <signal name="clicked" handler="clocks_shortcuts" swapped="1" object="window1"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">1</property>
+ <property name="label">Clocks - Stopwatch</property>
+ <signal name="clicked" handler="clocks_shortcuts_stopwatch" swapped="1" object="window1"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]