diff options
author | David Pirotte <david@altosw.be> | 2023-08-31 02:22:09 -0300 |
---|---|---|
committer | David Pirotte <david@altosw.be> | 2023-08-31 02:22:09 -0300 |
commit | 9fe24520b46cdf007c226fc42140f67608a76e4d (patch) | |
tree | f7f77688c3d32ea3778a44d6809b68ff5de0f05c | |
parent | 5d7c6a5da116302cc0d8c4f1ab19a2bb2085ea10 (diff) | |
parent | a9d452cf328156caf01f6076ac43a20d1742bc71 (diff) |
Prepare 0.8.0-a.5v0.8.0-a.5
* Merge branch 'devel'.
134 files changed, 9877 insertions, 460 deletions
@@ -33,8 +33,8 @@ G-Golf needs the following software to run: [[http://www.gnu.org/software/guile][Guile]] >= 2.0.14 [allows 2.2, 3.0 (>= 3.0.7)] [[http://www.nongnu.org/guile-lib/][Guile-Lib]] >= 0.2.5 - Glib-2.0 >= 2.48.0 - Gobject-2.0 >= 2.48.0 + Glib-2.0 >= 2.73.0 + Gobject-2.0 >= 2.73.0 GObject-Introspection-1.0 >= 1.72.0 *** Test-Suite Dependencies @@ -47,8 +47,8 @@ software to run its test-suite: *** Examples Dependencies -G-Golf currently needs the following additional software to run its -examples: +Gtk-4.0 examples: G-Golf currently needs the following additional +software to run its Gtk-4.0 examples: Gtk-4.0 >= 4.10.0 Guile-Cairo > 1.11.2 @@ -57,12 +57,17 @@ examples: contains the following new interface (which is not in guile-cairo 1.11.2): cairo-pointer->context +Adwaita examples: G-Golf currently needs the following additional +software to run its Adw-1 examples: + + Adw-1 >= 1.2.2 + ** Install from the tarball G-Golf release are [[http://ftp.gnu.org/gnu/g-golf/][here]]. The latest tarballs are: - g-golf-0.8.0-a.4.tar.gz - g-golf-0.8.0-a.4.tar.gz.sig + g-golf-0.8.0-a.5.tar.gz + g-golf-0.8.0-a.5.tar.gz.sig [ GPG Key: A3057AD7 [ gpg --keyserver keys.gnupg.net --recv-keys A3057AD7 @@ -71,8 +76,8 @@ Assuming you have satisfied the dependencies, open a terminal and proceed with the following steps: cd <download-path> - tar zxf g-golf-0.8.0-a.4.tar.gz - cd g-golf-0.8.0-a.4 + tar zxf g-golf-0.8.0-a.5.tar.gz + cd g-golf-0.8.0-a.5 ./configure [--prefix=/your/prefix] [--with-guile-site=yes] make make install diff --git a/Makefile.am b/Makefile.am index b0c0d26..835c2e9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ #### -#### Copyright (C) 2016 - 2022 +#### Copyright (C) 2016 - 2023 #### Free Software Foundation, Inc. #### This file is part of GNU G-Golf @@ -42,8 +42,10 @@ SOURCES = \ g-golf/support/union.scm \ g-golf/support/bytevector.scm \ g-golf/support/ffi.scm \ + g-golf/support/sxml.scm \ g-golf/support.scm \ g-golf/init.scm \ + g-golf/glib/version-information.scm \ g-golf/glib/mem-alloc.scm \ g-golf/glib/main-event-loop.scm \ g-golf/glib/io-channels.scm \ @@ -51,6 +53,7 @@ SOURCES = \ g-golf/glib/unix-utils.scm \ g-golf/glib/glist.scm \ g-golf/glib/gslist.scm \ + g-golf/glib/byte-arrays.scm \ g-golf/glib/quarks.scm \ g-golf/glib.scm \ g-golf/gobject/type-info.scm \ @@ -92,6 +95,7 @@ SOURCES = \ g-golf/gdk.scm \ g-golf/hl-api/n-decl.scm \ g-golf/hl-api/gtype.scm \ + g-golf/hl-api/gparam.scm \ g-golf/hl-api/iface.scm \ g-golf/hl-api/gobject.scm \ g-golf/hl-api/events.scm \ @@ -26,6 +26,90 @@ warranty. * Latest News +** August 2023 + +[[http://www.gnu.org/software/g-golf][GNU G-Golf]] version 0.8.0-a.5 is released. + +This is the fifth release of the upcoming 0.8.0 release, now available +for testing. + +*** Changes since 0.8.0-a.4 + +Here is a summary of the noteworthy changes since version 0.8.0-a.4. See +G-Golf [[http://git.savannah.gnu.org/cgit/g-golf.git][git summary]] and [[http://git.savannah.gnu.org/cgit/g-golf.git/log/][git log]] for a complete list and description. + +**** Dependencies + + Glib-2.0 >= 2.73.0 + Gobject-2.0 >= 2.73.0 + +G-Golf requires GObject-Introspection >= 1.72.0. This actually imposes +Glib-2.0 >= 2.73.0, which itself imposes Gobject-2.0 >= 2.73.0 + +**** New features + +Derived class +GObject properties and signals + + Derived classes now support a mechanism that allow users to expose + slots as gobject properties and define new signals. + +Templates + + This release adds support for templates, a mechanism and facilities + exposed by GtkWidget to automate the procedure of creating composite + widgets with GtkBuilder XML. + +Template and GtkBuilder ui files +SXML support + + [ currently in the examples/adw-1/adw1-demo/ui directory ] + + sxml-ui.el + + Emacs users should import this file in their .emacs file. + + This is an attempt to provide both indentation and font-lock support, + so ui files editing becomes a more pleasant exprerience. It is a first + draft, better then nothing (much better imo), but suggestions to + improve would be welcome. + + Makefile + + Offered as an example of the simplest possible way to convert all + *.scm files of a directory to their corresponding *.ui files. + +**** Examples + +Adwaita Demo + +A G-Golf port of the Adwaita 1 demo. This is a work in progress, +currently implementing the Adwaita 1 demo window, header bars, +primary-menu (the inspector, preferences and about actions and windows) +as well as the Welcome and Leaflet pages: + +Note: Adwaita 1.4 (unavailable in distros at the time of this release) +deprecates the AdwLeaflet* classes, in favor of the AdwNavigationView +and AdwNavigationPage classes. We'll move the demo to use those when +Adwaita 1.4 becomes available in dostros. + +**** Bug fixing + +A few G-Golf core bugs have been fixed, but none that we could expose +here as 'user visible'. If you're nonetheless interested to find out +what progress we made on that front, search the git logs for 'Fixing' +or 'Bug fixing'. + +The peg-solitaire example + +An ABI change was made, by the Gtk team, in Gtk 4.10.0, to the +gtk-css-provider-load-from-data function second argument, wHich is no +longer defined as an array, but a utf8, and hence g-golf would fail, +when using Gtk 4.10.0, to detect, compute and supply the third argument, +which is the css string length - fixed. + +* Older News + ** April 2023 [[http://www.gnu.org/software/g-golf][GNU G-Golf]] version 0.8.0-a.4 is released. @@ -66,9 +150,6 @@ Missing <gobject> g-struct-fields completed: retreive the class-struct and fill the <gobject> g-struct-fields slot - used by the vfunc mechanism. - -* Older News - ** February 2023 [[http://www.gnu.org/software/g-golf][GNU G-Golf]] version 0.8.0-a.3 is released. @@ -81,9 +81,9 @@ points to its source code, in the G-Golf sources [[http://git.savannah.gnu.org/c ** Latest News -April 2023 +August 2023 -GNU G-Golf version 0.8.0-a.4 is released. +GNU G-Golf version 0.8.0-a.5 is released. Visit the NEWS file or see the [[http://git.savannah.gnu.org/cgit/g-golf.git/tree/NEWS][News]] page for the list of visible changes since the last release, as well as older news. diff --git a/configure.ac b/configure.ac index 6a40cf0..7f59f8d 100644 --- a/configure.ac +++ b/configure.ac @@ -31,7 +31,7 @@ AC_PREREQ(2.69) AC_INIT( [g-golf], - [0.8.0-a.4], + [0.8.0-a.5], [bug-g-golf@gnu.org]) AC_CONFIG_AUX_DIR([build-aux]) @@ -39,7 +39,7 @@ AC_CONFIG_MACRO_DIR([m4]) dnl Use `serial-tests' so the output `check-guile' is not hidden dnl (`parallel-tests' is the default in Automake 1.13.) dnl `serial-tests' was introduced in Automake 1.12. -AM_INIT_AUTOMAKE([1.14 gnu -Wall -Werror -Wno-portability -Wno-syntax \ +AM_INIT_AUTOMAKE([1.14 gnu tar-ustar -Wall -Werror -Wno-portability -Wno-syntax \ color-tests serial-tests foreign]) AM_MAINTAINER_MODE([enable]) AM_SILENT_RULES([yes]) @@ -91,11 +91,13 @@ PKG_CHECK_MODULES(GOBJECT_INTROSPECTION, gobject-introspection-1.0 >= 1.72.0) AC_SUBST(GOBJECT_INTROSPECTION_CFLAGS) AC_SUBST(GOBJECT_INTROSPECTION_LIBS) -PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.48.0) +# imposed by the gobject-introspection dependency +PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.73.0) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) -PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.48.0) +# imposed by the glib dependency +PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.73.0) AC_SUBST(GOBJECT_CFLAGS) AC_SUBST(GOBJECT_LIBS) @@ -104,6 +106,7 @@ AC_SUBST(GOBJECT_LIBS) # AC_SUBST(GTK_LIBS) PKG_CHECK_MODULES(GUILE_LIB, guile-lib-1.0 >= 0.2.5) +PKG_CHECK_MODULES(FFI, libffi >= 3.3.0) AC_CONFIG_FILES( @@ -118,6 +121,7 @@ AC_CONFIG_FILES([ test-suite/Makefile examples/Makefile examples/gtk-4/Makefile + examples/adw-1/Makefile ]) AC_OUTPUT diff --git a/doc/Makefile.am b/doc/Makefile.am index a8f1a3e..e7194c9 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,6 +1,6 @@ #### -#### Copyright (C) 2016 - 2022 +#### Copyright (C) 2016 - 2023 #### Free Software Foundation, Inc. #### This file is part of GNU G-Golf @@ -43,6 +43,7 @@ g_golf_TEXINFOS = \ ug-bys-goops-notes-and-conventions.texi \ ug-bys-configuring-guile-for-g-golf.texi \ ug-bys-customizing-g-golf.texi \ + ug-bys-sxml-supprt-emacs-users.texi \ ug-gswg.texi \ ug-gswg-hello-world.texi \ ug-gswg-selective-import.texi \ @@ -60,6 +61,7 @@ g_golf_TEXINFOS = \ cr-overview.texi \ cr-ov-structure-and-naming-conventions.texi \ cr-glib.texi \ + cr-glib-version-information.texi \ cr-glib-mem-alloc.texi \ cr-glib-main-event-loop.texi \ cr-glib-io-channels.texi \ @@ -67,6 +69,7 @@ g_golf_TEXINFOS = \ cr-glib-unix-utils.texi \ cr-glib-glist.texi \ cr-glib-gslist.texi \ + cr-glib-byte-arrays.texi \ cr-glib-quarks.texi \ cr-gobject.texi \ cr-gobject-type-info.texi \ diff --git a/doc/cr-gi-object-info.texi b/doc/cr-gi-object-info.texi index 98acc69..bc4d2f6 100644 --- a/doc/cr-gi-object-info.texi +++ b/doc/cr-gi-object-info.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2021 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -45,6 +45,10 @@ GIObjectInfo — Structs representing a GObject. @item @ref{g-object-info-get-n-vfuncs} @item @ref{g-object-info-get-vfunc} @item @ref{g-object-info-get-class-struct} +@item @ref{g-object-info-get-set-value-function} +@item @ref{g-object-info-get-set-value-function-pointer} +@item @ref{g-object-info-get-get-value-function} +@item @ref{g-object-info-get-get-value-function-pointer} @end table @end indentedblock @@ -69,12 +73,15 @@ GIBaseInfo @* @subheading Description -@code{GIObjectInfo} represents a @uref{@value{UGOBJECT-GObject-struct}, -GObject}. This doesn't represent a specific instance of a GObject, -instead this represent the object type (eg class). +@code{GIObjectInfo} represents a classed type. -A GObject has methods, fields, properties, signals, interfaces, -constants and virtual functions. +Classed types in GType inherit from +@uref{@value{UGOBJECT-Class-Hierarchy}, GTypeInstance}. The most common +type is GObject. This doesn't represent a specific instance of a +GObject, instead this represent the object type (eg class). + +A @code{GIObjectInfo} has methods, fields, properties, signals, +interfaces, constants and virtual functions. @subheading Procedures @@ -382,4 +389,51 @@ the data. @end deffn +@anchor{g-object-info-get-set-value-function} +@deffn Procedure g-object-info-get-set-value-function info + +Returns a string. + +Obtain the symbol name (within the GI context, a symbol name is a +string) of the function that should be called to set a GValue giving an +object instance pointer of this object type. +@end deffn + + +@anchor{g-object-info-get-set-value-function-pointer} +@deffn Procedure g-object-info-get-set-value-function-pointer info + +Returns a pointer. + +Obtain a pointer to a function which can be used to set a GValue giving +an object instance pointer of this object type. This takes derivation +into account and will reversely traverse the base classes of this type, +starting at the top type. +@end deffn + + +@anchor{g-object-info-get-get-value-function} +@deffn Procedure g-object-info-get-get-value-function info + +Returns a string. + +Obtain the symbol name (within the GI context, a symbol name is a +string) of the function that should be called to get a GValue instance +pointer of this object type giving an object instance pointer of this +object type. +@end deffn + + +@anchor{g-object-info-get-get-value-function-pointer} +@deffn Procedure g-object-info-get-get-value-function-pointer info + +Returns a pointer. + +Obtain a pointer to a function which can be used to get a GValue +instance pointer giving an object instance pointer of this object +type. This takes derivation into account and will reversely traverse the +base classes of this type, starting at the top type. +@end deffn + + @c @subheading Types and Values diff --git a/doc/cr-gi-version.texi b/doc/cr-gi-version.texi index 3e75da0..1b8b78a 100644 --- a/doc/cr-gi-version.texi +++ b/doc/cr-gi-version.texi @@ -7,8 +7,8 @@ @c @defindex tl -@node Version Information -@subsection Version Information +@node Version Information (2) +@subsection Version Information (2) G-Golf GIRepository Version Informatrion low level API.@* Version Information - Procedures to check the GIRepository version. diff --git a/doc/cr-gi.texi b/doc/cr-gi.texi index bd18f02..53be3f4 100644 --- a/doc/cr-gi.texi +++ b/doc/cr-gi.texi @@ -25,7 +25,7 @@ Intropection (manual) section, but there are some exceptions, such as @menu * Repository:: GObject Introspection repository manager. * Typelib:: Layout and accessors for typelib. -* Version Information:: Procedures to check the GIRepository version. +* Version Information (2):: Procedures to check the GIRepository version. * Common Types:: GObject Introspection common types. * Base Info:: Base struct for all GITypelib structs. * Callable Info:: Struct representing a callable. diff --git a/doc/cr-glib-byte-arrays.texi b/doc/cr-glib-byte-arrays.texi new file mode 100644 index 0000000..cfb7a4c --- /dev/null +++ b/doc/cr-glib-byte-arrays.texi @@ -0,0 +1,45 @@ +@c -*-texinfo-*- +@c This is part of the GNU G-Golf Reference Manual. +@c Copyright (C) 2023 Free Software Foundation, Inc. +@c See the file g-golf.texi for copying conditions. + + +@c @defindex tl + + +@node Byte Arrays +@subsection Byte Arrays + +G-Golf Glib Byte Arrays low level API.@* +Byte Arrays — Arrays of bytes. + + +@subheading Procedures + +@indentedblock +@table @code +@item @ref{g-bytes-new} +@end table +@end indentedblock + + +@subheading Description + +FIXME + + +@subheading Procedures + + +@anchor{g-bytes-new} +@deffn Procedure g-bytes-new data size + +Returns a pointer. + +Create a new @code{GBytes}@footnote{A simple refcounted data type +representing an immutable sequence of zero or more bytes from an +unspecified origin.} from @code{data}. + +@code{data} is copied. If @code{size} is 0, @code{data} may be NULL. + +@end deffn diff --git a/doc/cr-glib-misc-util-funcs.texi b/doc/cr-glib-misc-util-funcs.texi index 3279c3c..98e33ac 100644 --- a/doc/cr-glib-misc-util-funcs.texi +++ b/doc/cr-glib-misc-util-funcs.texi @@ -22,6 +22,7 @@ Miscellaneous Utility Functions - a selection of portable utility functions @item @ref{g-set-prgname} @item @ref{g-get-system-data-dirs} @item @ref{g-get-system-config-dirs} +@item @ref{g-get-os-info} @end table @end indentedblock @@ -148,4 +149,20 @@ available to anyone using the computer. @end deffn +@anchor{g-get-os-info} +@deffn Procedure g-get-os-info key-name + +Returns a string or #f. + +Obtains and returns information about the operating system. + +On Linux this comes from the @file{/etc/os-release} file. On other +systems, it may come from a variety of sources. You can pass any UTF-8 +string key name. + +The associated value for the requested @var{key-name} is returned or +@code{#f} if this information is not provided. +@end deffn + + @c @subheading Types and Values diff --git a/doc/cr-glib-version-information.texi b/doc/cr-glib-version-information.texi new file mode 100644 index 0000000..66226c7 --- /dev/null +++ b/doc/cr-glib-version-information.texi @@ -0,0 +1,47 @@ +@c -*-texinfo-*- +@c This is part of the GNU G-Golf Reference Manual. +@c Copyright (C) 2023 Free Software Foundation, Inc. +@c See the file g-golf.texi for copying conditions. + + +@c @defindex tl + + +@node Version Information (1) +@subsection Version Information (1) + +G-Golf Glib Version Information low level API.@* +Version Information — variables and functions to check the GLib version. + + +@subheading Procedures + +@indentedblock +@table @code +@item @ref{glib-get-major-version} +@item @ref{glib-get-minor-version} +@item @ref{glib-get-micro-version} +@end table +@end indentedblock + + +@subheading Description + +GLib version information variables and functions. + + +@subheading Procedures + + +@anchor{glib-get-major-version} +@anchor{glib-get-minor-version} +@anchor{glib-get-micro-version} +@deffn Procedure glib-get-major-version +@deffnx Procedure glib-get-minor-version +@deffnx Procedure glib-get-micro-version + +Returns an integer. + +Obtains and returns the GLib runtime library @var{major}, @var{minor} +and @var{micro} version number. +@end deffn diff --git a/doc/cr-glib.texi b/doc/cr-glib.texi index a4bd76c..5709e20 100644 --- a/doc/cr-glib.texi +++ b/doc/cr-glib.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2020 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -22,6 +22,7 @@ though they might be some exception in the future. @menu +* Version Information (1):: Version Information. * Memory Allocation:: General memory handling. * The Main Event Loop:: Manages all available sources of events. * IO Channels:: Portable support for using files, pipes and sockets. @@ -29,10 +30,11 @@ though they might be some exception in the future. * UNIX-specific utilities and integration:: Pipes, signal handling. * Doubly-Linked Lists:: Linked lists that can be iterated in both directions * Singly-Linked Lists:: Linked lists that can be iterated in one direction +* Byte Arrays:: Arrays of bytes. * Quarks:: a2-way association between a string and a unique integer identifier @end menu - +@include cr-glib-version-information.texi @include cr-glib-mem-alloc.texi @include cr-glib-main-event-loop.texi @include cr-glib-io-channels.texi @@ -40,4 +42,5 @@ though they might be some exception in the future. @include cr-glib-unix-utils.texi @include cr-glib-glist.texi @include cr-glib-gslist.texi +@include cr-glib-byte-arrays.texi @include cr-glib-quarks.texi diff --git a/doc/cr-gobject-gobject.texi b/doc/cr-gobject-gobject.texi index f88848d..35755ae 100644 --- a/doc/cr-gobject-gobject.texi +++ b/doc/cr-gobject-gobject.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2022 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -15,6 +15,7 @@ GObject — The base object type @indentedblock @table @code +@item @ref{g-object-class-install-property} @item @ref{g-object-class-find-property} @item @ref{g-object-new} @item @ref{g-object-new-with-properties} @@ -70,6 +71,28 @@ Note: in this section, unless otherwise specified, the @var{object} argument is [must be] a pointer to a @code{GObject} (instance). +@anchor{g-object-class-install-property} +@deffn Procedure g-object-class-install-property g-class p-id p-spec + +Returns nothing. + +Installs a new property. + +The arguments are @var{g-class} a (pointer to a) @code{GObjectClass}), + @var{p-id} the id for the new property, and @var{p-spec} the (a pointer + to the) @code{GParamSpec} for the new property. + +All properties should be installed during the class initializer. It is +possible to install properties after that, but doing so is not +recommend, and specifically, is not guaranteed to be thread-safe vs. use +of properties on the same type on other threads. + +Note that it is possible to redefine a property in a derived class, by +installing a property with the same name. This can be useful at times, +e.g. to change the range of allowed values or the default value. +@end deffn + + @anchor{g-object-class-find-property} @deffn Procedure g-object-class-find-property g-class name diff --git a/doc/cr-gobject-params-vals.texi b/doc/cr-gobject-params-vals.texi index 9339ced..ba1abae 100644 --- a/doc/cr-gobject-params-vals.texi +++ b/doc/cr-gobject-params-vals.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2022 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -11,7 +11,7 @@ G-Golf GObject Parameters and Values low level API.@* Parameters and Values — Standard Parameter and Value Types -@subheading Procedures +@subheading Procedures and Methods @indentedblock @table @code @@ -22,6 +22,7 @@ Parameters and Values — Standard Parameter and Value Types @item @ref{g-value-set!} @item @ref{g-value-get-boolean} @item @ref{g-value-set-boolean} +@item @ref{g-param-spec-int} @item @ref{g-value-get-int} @item @ref{g-value-set-int} @item @ref{g-value-get-uint} @@ -30,6 +31,7 @@ Parameters and Values — Standard Parameter and Value Types @item @ref{g-value-set-float} @item @ref{g-value-get-double} @item @ref{g-value-set-double} +@item @ref{g-param-spec-enum} @item @ref{g-value-get-enum} @item @ref{g-value-set-enum} @item @ref{g-value-get-flags} @@ -49,13 +51,34 @@ Parameters and Values — Standard Parameter and Value Types @end indentedblock -@c @subheading Types and Values +@subheading Types and Values -@c @indentedblock -@c @table @code -@c @item @ref{%g-type-fundamental-flags} -@c @end table -@c @end indentedblock +@indentedblock +@table @code +@item @ref{g-type-param-boolean} +@item @ref{g-type-param-char} +@item @ref{g-type-param-uchar} +@item @ref{g-type-param-int} +@item @ref{g-type-param-uint} +@item @ref{g-type-param-long} +@item @ref{g-type-param-ulong} +@item @ref{g-type-param-int64} +@item @ref{g-type-param-uint64} +@item @ref{g-type-param-float} +@item @ref{g-type-param-double} +@item @ref{g-type-param-enum} +@item @ref{g-type-param-flags} +@item @ref{g-type-param-string} +@item @ref{g-type-param-param} +@item @ref{g-type-param-boxed} +@item @ref{g-type-param-pointer} +@item @ref{g-type-param-object} +@item @ref{g-type-param-unichar} +@item @ref{g-type-param-override} +@item @ref{g-type-param-gtype} +@item @ref{g-type-param-variant} +@end table +@end indentedblock @subheading Description @@ -143,6 +166,22 @@ Sets the content of @var{g-value} to @code{0} if @var{val} is @end deffn +@anchor{g-param-spec-int} +@deffn Procedure g-param-spec-int name nick blurb @ + minimum maximum default flags + +Returns a pointer. + +Creates and returns a pointer to a new @code{GParamSpecEnum} instance +specifying a @code{G_TYPE_INT} property. + +The @var{name} is the canonical name of the property specified, +@var{nick} its nick name, @var{blurb} its description, @var{minimum} the +minimum value, @var{maximum} the maximum value, @var{default} the +default value and @var{flags} the flags - for the property specified. +@end deffn + + @anchor{g-value-get-int} @deffn Procedure g-value-get-int g-value @@ -215,6 +254,22 @@ Sets the content of @var{g-value} to @var{double}. @end deffn +@anchor{g-param-spec-enum} +@deffn Procedure g-param-spec-enum name nick blurb type @ + default flags + +Returns a pointer. + +Creates and returns a pointer to a new @code{GParamSpecEnum} instance +specifying a @code{G_TYPE_ENUM} property. + +The @var{name} is the canonical name of the property specified, +@var{nick} its nick name, @var{blurb} its description, @var{type} a +@code{<gi-enum>} instance, @var{default} the default value and +@var{flags} the flags - for the property specified. +@end deffn + + @anchor{g-value-get-enum} @deffn Procedure g-value-get-enum g-value @@ -373,5 +428,63 @@ NULL). @end deffn -@c @subheading Types and Values +@subheading Types and Values + +Note: in GObject, G_TYPE_PARAM_BOOLEAN, G_TYPE_PARAM_CHAR, etc., are +defined as macros. In G-Golf, we define a procedure for each of those +types, which binds a libg-golf function which merely invoques the macro, +the expansion of which returns the corresponding (dynamic - runtime) +GType value. + + +@anchor{g-type-param-boolean} +@anchor{g-type-param-char} +@anchor{g-type-param-uchar} +@anchor{g-type-param-int} +@anchor{g-type-param-uint} +@anchor{g-type-param-long} +@anchor{g-type-param-ulong} +@anchor{g-type-param-int64} +@anchor{g-type-param-uint64} +@anchor{g-type-param-float} +@anchor{g-type-param-double} +@anchor{g-type-param-enum} +@anchor{g-type-param-flags} +@anchor{g-type-param-string} +@anchor{g-type-param-param} +@anchor{g-type-param-boxed} +@anchor{g-type-param-pointer} +@anchor{g-type-param-object} +@anchor{g-type-param-unichar} +@anchor{g-type-param-override} +@anchor{g-type-param-gtype} +@anchor{g-type-param-variant} +@deffn Procedure g-type-param-boolean +@deffnx Procedure g-type-param-char +@deffnx Procedure g-type-param-uchar +@deffnx Procedure g-type-param-int +@deffnx Procedure g-type-param-uint +@deffnx Procedure g-type-param-long +@deffnx Procedure g-type-param-ulong +@deffnx Procedure g-type-param-int64 +@deffnx Procedure g-type-param-uint64 +@deffnx Procedure g-type-param-float +@deffnx Procedure g-type-param-double +@deffnx Procedure g-type-param-enum +@deffnx Procedure g-type-param-flags +@deffnx Procedure g-type-param-string +@deffnx Procedure g-type-param-param +@deffnx Procedure g-type-param-boxed +@deffnx Procedure g-type-param-pointer +@deffnx Procedure g-type-param-object +@deffnx Procedure g-type-param-unichar +@deffnx Procedure g-type-param-override +@deffnx Procedure g-type-param-gtype +@deffnx Procedure g-type-param-variant + +Returns a GType. + +Obtains and returns the GType of @code{GParamSpecBoolean}, +@code{GParamSpecChar}, etc. +@end deffn diff --git a/doc/cr-gobject-signals.texi b/doc/cr-gobject-signals.texi index 3d78785..013d8fd 100644 --- a/doc/cr-gobject-signals.texi +++ b/doc/cr-gobject-signals.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2019 - 2021 Free Software Foundation, Inc. +@c Copyright (C) 2019 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -17,9 +17,12 @@ purpose notification mechanism @indentedblock @table @code +@item @ref{g-signal-newv} @item @ref{g-signal-query} @item @ref{g-signal-lookup} @item @ref{g-signal-list-ids} +@item @ref{g-signal-emitv} +@item @ref{g-signal-connect-closure-by-id} @item @ref{g-signal-parse-name} @end table @end indentedblock @@ -49,6 +52,60 @@ the GObject reference manual for a complete description. @subheading Procedures +@anchor{g-signal-newv} +@deffn Procedure g-signal-newv name iface-type flags class-closure @ + accumulator accu-data c-marshaller return-type @ + n-param param-types + +Returns the signal id. + +Creates a new signal. The arguments are: + +@indentedblock +@table @var + +@item name +The name for the signal. + +@item iface-type +The type this signal pertains to. It will also pertain to types which +are derived from this type. + +@item flags +A list of @ref{%g-signal-flags}, specifying detail of when the default +handler is to be invoked. It should at least specify @code{run-first} +or @code{run-last}. + +@item class-closure +The closure to invoke on signal emission, may be #f. + +@item accumulator +The accumulator for this signal; may be #f. + +@item accu-data +User data for the accumulator. + +@item c-marshaller +The function to translate arrays of parameter values to signal emissions +into C language callback invocations or #f. + +@item return-type +The GType of the signal returned value. The caller may obtain the GType, +given a scheme object (or @code{'none} for a signal without a return +value), by calling @ref{scm->g-type}. + +@item n-param +The length of @var{param-types}. + +@item param-types +An list of types, one for each parameter (may be @code{'()} if +@var{n-param} is zero). +@end table +@end indentedblock + +@end deffn + + @anchor{g-signal-query} @deffn Procedure g-signal-query id @@ -111,6 +168,46 @@ integers for a given @var{g-type}). @end deffn +@anchor{g-signal-emitv} +@deffn Procedure g-signal-emitv params id detail return-value + +Returns nothing. + +Emits a signal. Signal emission is done synchronously. The method will +only return control after all handlers are called or signal emission was +stopped. + +Note that @ref{g-signal-emitv} doesn't change @var{return-value} if no +handlers are connected. + +The @var{params} points to the argument list for the signal +emission. The first element in the array is a GValue for the instance +the signal is being emitted on. The rest are any arguments to be passed +to the signal. The @var{id} is the signal id, @var{detail} the detail (a +g-quark and @var{return-value} the location to store the return value of +the signal emission (it must be provided if the specified signal returns +a value, but may be ignored otherwise). +@end deffn + + +@anchor{g-signal-connect-closure-by-id} +@deffn Procedure g-signal-connect-closure-by-id instance id detail closure after + +Returns the handler ID (always greater than 0 for successful +connections). + +Connects a closure to a signal for a particular object. + +If @var{closure} is a floating reference (see @ref{g-closure-sink}), +this function takes ownership of closure. + +The @var{instance} is the instance to connect to, the @var{id} the id of +the signal, @var{detail} the detail (a g-quark). @var{closure} the +closure to connect, @var{after} (a boolean) whether the handler should +be called before or after the default handler of the signal. +@end deffn + + @anchor{g-signal-parse-name} @deffn Procedure g-signal-parse-name detailed-signal g-type @ [force-detail-quark #t] diff --git a/doc/cr-gobject-type-info.texi b/doc/cr-gobject-type-info.texi index f467c78..65f2586 100644 --- a/doc/cr-gobject-type-info.texi +++ b/doc/cr-gobject-type-info.texi @@ -17,6 +17,7 @@ Type Information — The GLib Runtime type identification and management system @table @code @item @ref{g-type->symbol} @item @ref{symbol->g-type} +@item @ref{g-type-from-class} @item @ref{g-type-name} @item @ref{g-type-from-name} @item @ref{g-type-parent} @@ -91,6 +92,16 @@ passed in and will most likely lead to a crash. @end deffn +@anchor{g-type-from-class} +@deffn Procedure g-type-from-class g-class + +Returns a GType. + +Obtains and returns the GType for @var{g-class} (a pointer to a valid +GTypeClass structure). +@end deffn + + @anchor{g-type-name} @deffn Procedure g-type-name g-type diff --git a/doc/cr-support-goops.texi b/doc/cr-support-goops.texi index 17cbe2e..95cf2e8 100644 --- a/doc/cr-support-goops.texi +++ b/doc/cr-support-goops.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2019 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -16,6 +16,10 @@ @item @ref{class-virtual-slots} @item @ref{class-direct-g-property-slots} @item @ref{class-g-property-slots} +@item @ref{class-direct-child-id-slots} +@item @ref{class-child-id-slots} +@item @ref{class-direct-g-param-slots} +@item @ref{class-g-param-slots} @item @ref{mslot-set!} @item @ref{generic?} @end table @@ -66,6 +70,46 @@ predicate. @end deffn +@anchor{class-direct-child-id-slots} +@deffn Method class-direct-child-id-slots (self <class>) + +Returns a list. + +Obtains and returns the list of the class direct slots for @var{self} +that contain a @code{#:child-id} slot definition option. +@end deffn + + +@anchor{class-child-id-slots} +@deffn Method class-child-id-slots (self <class>) + +Returns a list. + +Obtains and returns the list of the class slots for @var{self} that +contain a @code{#:child-id} slot definition option. +@end deffn + + +@anchor{class-direct-g-param-slots} +@deffn Method class-direct-g-param-slots (self <class>) + +Returns a list. + +Obtains and returns the list of the class direct slots for @var{self} +that contain a @code{#:g-param} slot definition option. +@end deffn + + +@anchor{class-g-param-slots} +@deffn Method class-g-param-slots (self <class>) + +Returns a list. + +Obtains and returns the list of the class slots for @var{self} that +contain a @code{#:g-param} slot definition option. +@end deffn + + @anchor{mslot-set!} @deffn Procedure mslot-set! inst s1 v1 s2 v2 s3 v3 @dots{} diff --git a/doc/cr-support-struct.texi b/doc/cr-support-struct.texi index 20a413f..6b68977 100644 --- a/doc/cr-support-struct.texi +++ b/doc/cr-support-struct.texi @@ -165,7 +165,6 @@ field types is @code{void}, @code{interface} or if the total size of the Returns an integer. Obtain and returns the @var{field-name} offset for @var{inst}, It is an -error to call this method if there is no such @var -{field-name} defined +error to call this method if there is no such @var{field-name} defined for @var{inst}. @end deffn diff --git a/doc/introduction.texi b/doc/introduction.texi index 4565ea6..c176735 100644 --- a/doc/introduction.texi +++ b/doc/introduction.texi @@ -126,10 +126,10 @@ Makeinfo @geq{} 6.6 @uref{@value{UGUILE-LIB}, Guile-Lib} @geq{} 0.2.5 @item -@uref{@value{UGLIB}, Glib-2.0} @geq{} 2.48.0 +@uref{@value{UGLIB}, Glib-2.0} @geq{} 2.73.0 @item -@uref{@value{UGOBJECT}, Gobject-2.0} @geq{} 2.48.0 +@uref{@value{UGOBJECT}, Gobject-2.0} @geq{} 2.73.0 @item @uref{@value{UGI}, GObject-Introspection-1.0} @geq{} 1.72.0 @@ -152,8 +152,8 @@ test-suite: @strong{-- Examples Dependencies} -G-Golf currently needs the following additional software to run its -examples: +@emph{Gtk-4.0 examples:} G-Golf currently needs the following additional +software to run its Gtk-4.0 examples: @itemize @bullet @item @@ -161,6 +161,18 @@ examples: @item @uref{@value{UGUILE-CAIRO}, Guile-Cairo} > 1.11.2 + +G-Golf actually requires a patched version of guile-cairo that contains +the following new interface (which is not in guile-cairo 1.11.2): +@code{cairo-pointer->context}. +@end itemize + +@emph{Adwaita examples:} G-Golf currently needs the following additional +software to run its Adw-1 examples: + +@itemize @bullet +@item +@uref{@value{UADW1}, Adw-1} @geq{} 1.2.2 @end itemize diff --git a/doc/ug-bys-sxml-supprt-emacs-users.texi b/doc/ug-bys-sxml-supprt-emacs-users.texi new file mode 100644 index 0000000..335757e --- /dev/null +++ b/doc/ug-bys-sxml-supprt-emacs-users.texi @@ -0,0 +1,28 @@ +@c -*-texinfo-*- +@c This is part of the GNU G-Golf Reference Manual. +@c Copyright (C) 2023 Free Software Foundation, Inc. +@c See the file g-golf.texi for copying conditions. + + +@node SXML Support - Emacs users +@subsection SXML Support - Emacs users + +G-Golf offers two files to support editing and maintaining GtkWidget +template and GtkBuilder ui (xml) files as sxml files instead. Currently, +these files are in the @file{examples/adw-1/adw1-demo/ui} directory. + +@file{sxml-ui.el} + +Emacs users should import this file in their @file{.emacs} file. + +This is an attempt to provide both indentation and font-lock support, so +ui files editing becomes a more pleasant experience. It is a first draft +and definitely an experimental attempt. Better then nothing (much better +imo), but suggestions to improve this first and quite 'naive' draft +would be welcome. + +@file{Makefile} + +Offered as an example of the simplest possible way to convert all +@file{*.scm} files of a directory to their corresponding @file{*.ui} +files. diff --git a/doc/ug-bys.texi b/doc/ug-bys.texi index 470c3fc..c3b6594 100644 --- a/doc/ug-bys.texi +++ b/doc/ug-bys.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2016 - 2021 Free Software Foundation, Inc. +@c Copyright (C) 2016 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -13,6 +13,7 @@ * GOOPS Notes and Conventions:: * Configuring Guile for G-Golf:: * Customizing G-Golf:: +* SXML Support - Emacs users:: @end menu @@ -20,3 +21,4 @@ @include ug-bys-goops-notes-and-conventions.texi @include ug-bys-configuring-guile-for-g-golf.texi @include ug-bys-customizing-g-golf.texi +@include ug-bys-sxml-supprt-emacs-users.texi diff --git a/doc/ug-ggv-utils.texi b/doc/ug-ggv-utils.texi index cf770ea..0121d59 100644 --- a/doc/ug-ggv-utils.texi +++ b/doc/ug-ggv-utils.texi @@ -14,6 +14,7 @@ Utils Arcade. G-Golf utilities. @indentedblock @table @code +@item @ref{scm->g-type} @item @ref{allocate-c-struct} @end table @end indentedblock @@ -26,6 +27,18 @@ Welcome to the G-Golf Utils Arcade. @subheading Syntax + +@anchor{scm->g-type} +@deffn Procedure scm->g-type value + +Returns a GType. + +Obtains and returns the GType for @var{value}, which may be a number +(then assumed to be a valid GType), a string, a symbol (a +@ref{%g-type-fundamental-types} member) or a <gobject-class>. +@end deffn + + @anchor{allocate-c-struct} @deffn Syntax allocate-c-struct name . fields diff --git a/doc/ug-ggv.texi b/doc/ug-ggv.texi index 4150500..200f780 100644 --- a/doc/ug-ggv.texi +++ b/doc/ug-ggv.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU G-Golf Reference Manual. -@c Copyright (C) 2022 Free Software Foundation, Inc. +@c Copyright (C) 2022 - 2023 Free Software Foundation, Inc. @c See the file g-golf.texi for copying conditions. @@ -12,6 +12,7 @@ * Cache Park:: Accessing G-Golf caches. * Customization Square:: G-Golf customization functionality. * VFunc Alley:: VFunc G-Golf support. +@c * Template Avenue:: Template G-Golf support. * Utils Arcade:: G-Golf utilities. @end menu diff --git a/doc/variables.texi b/doc/variables.texi index cc14ac8..f805319 100644 --- a/doc/variables.texi +++ b/doc/variables.texi @@ -85,6 +85,7 @@ @set UGOBJECT-Concepts-GType https://developer.gnome.org/gobject/stable/chapter-gtype.html @set UGOBJECT-Concepts-GObject https://developer.gnome.org/gobject/stable/chapter-gobject.html @set UGOBJECT-Concepts-Signals https://developer.gnome.org/gobject/stable/chapter-signal.html +@set UGOBJECT-Class-Hierarchy https://docs.gtk.org/gobject/classes_hierarchy.html @set UGOBJECT-Type-Info https://developer.gnome.org/gobject/stable/gobject-Type-Information.html @set UGOBJECT-GType-Module https://developer.gnome.org/gobject/stable/GTypeModule.html @@ -123,13 +124,17 @@ @set UGTK-MIGRATING-3-TO-4 https://developer.gnome.org/gtk4/stable/gtk-migrating-3-to-4.html @set UGTK-WEB https://gtk.org/ -@set UGTK4 https://developer.gnome.org/gtk4/stable/ -@set UGTK4-APPLICATION https://developer.gnome.org/gtk4/stable/GtkApplication.html +@set UGTK4 https://docs.gtk.org/gtk4/index.html +@set UGTK4-APPLICATION https://docs.gtk.org/gtk4/class.Application.html +@set UGDK4 https://docs.gtk.org/gdk4/index.html +@set UGSK4 https://docs.gtk.org/gsk4/index.html -@set UGDK4 https://developer.gnome.org/gdk4/stable/ -@set UGSK4 https://developer.gnome.org/gsk4/stable/ +@c +@c Adw-1 +@c +@set UADW1 https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/ @c @c Gio diff --git a/examples/Makefile.am b/examples/Makefile.am index 80bf7a5..9a799f6 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,6 +1,6 @@ #### -#### Copyright (C) 2021 +#### Copyright (C) 2021 - 2023 #### Free Software Foundation, Inc. #### This file is part of GNU G-Golf @@ -22,4 +22,5 @@ SUBDIRS = \ - gtk-4 + gtk-4 \ + adw-1 diff --git a/examples/adw-1/Makefile.am b/examples/adw-1/Makefile.am new file mode 100644 index 0000000..f3c7509 --- /dev/null +++ b/examples/adw-1/Makefile.am @@ -0,0 +1,36 @@ + +#### +#### Copyright (C) 2023 +#### Free Software Foundation, Inc. + +#### This file is part of GNU G-Golf + +#### GNU G-Golf is free software; you can redistribute it and/or modify +#### it under the terms of the GNU Lesser General Public License as +#### published by the Free Software Foundation; either version 3 of the +#### License, or (at your option) any later version. + +#### GNU G-Golf is distributed in the hope that it will be useful, but +#### WITHOUT ANY WARRANTY; without even the implied warranty of +#### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#### Lesser General Public License for more details. + +#### You should have received a copy of the GNU Lesser General Public +#### License along with GNU G-Golf. If not, see +#### <https://www.gnu.org/licenses/lgpl.html>. +#### + + +EXTRA_DIST = \ + $(wildcard *.scm) \ + $(wildcard *.png) \ + $(wildcard adw1-demo/*.scm) \ + $(wildcard adw1-demo/*.css) \ + $(wildcard adw1-demo/icons/*) \ + $(wildcard adw1-demo/ui/*.scm) \ + $(wildcard adw1-demo/ui/*.ui) \ + adw1-demo/ui/sxml-ui.el \ + adw1-demo/ui/Makefile + +# currently empty +# $(wildcard adw1-demo/images/*) diff --git a/examples/adw-1/adw1-demo.scm b/examples/adw-1/adw1-demo.scm new file mode 100755 index 0000000..279aa4d --- /dev/null +++ b/examples/adw-1/adw1-demo.scm @@ -0,0 +1,66 @@ +#! /bin/sh +# -*- mode: scheme; coding: utf-8 -*- +exec guile -e main -s "$0" "$@" +!# + + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(eval-when (expand load eval) + (use-modules (oop goops)) + + (default-duplicate-binding-handler + '(merge-generics replace warn-override-core warn last)) + + (use-modules (g-golf)) + + (for-each (lambda (name) + (gi-import-by-name "Gio" name)) + '("Action" + "SimpleAction" + "ActionMap" + "Settings" + "SettingsSchemaSource")) + + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("Application"))) + + +(add-to-load-path + (dirname (current-filename))) + +(use-modules (adw1-demo window)) + + +(define (main args) + (let ((app (make <adw-application> + #:application-id "org.gnu.g-golf.adw1.demo"))) + (connect app 'activate show-window) + (let ((status (g-application-run app args))) + (exit status)))) diff --git a/examples/adw-1/adw1-demo/debug-info.scm b/examples/adw-1/adw1-demo/debug-info.scm new file mode 100644 index 0000000..9bb82ab --- /dev/null +++ b/examples/adw-1/adw1-demo/debug-info.scm @@ -0,0 +1,211 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (adw1-demo debug-info) + #:use-module (ice-9 format) + #:use-module (ice-9 match) + #:use-module (oop goops) + #:use-module (g-golf) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (adw-version + debug-info)) + + +#;(g-export ) + + +(eval-when (expand load eval) + (g-irepository-require "Gtk" #:version "4.0") + (for-each (lambda (name) + (gi-import-by-name "Gdk" name)) + '("Display")) + (for-each (lambda (name) + (gi-import-by-name "Gsk" name)) + '("Renderer")) + (for-each (lambda (name) + (gi-import-by-name "Gtk" name)) + '("get_major_version" + "get_minor_version" + "get_micro_version")) + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("get_major_version" + "get_minor_version" + "get_micro_version"))) + + +(define (glib-header-version) + (match (map gi-import-constant + (map (lambda (item) + (g-irepository-find-by-name "GLib" item)) + (list "MAJOR_VERSION" + "MINOR_VERSION" + "MICRO_VERSION"))) + ((major minor micro) + (format #f "~A.~A.~A" major minor micro)))) + +(define (glib-runtime-version) + (format #f "~A.~A.~A" + (glib-get-major-version) + (glib-get-minor-version) + (glib-get-micro-version))) + +(define (gtk-version) + (format #f "~A.~A.~A" + (gtk-get-major-version) + (gtk-get-minor-version) + (gtk-get-micro-version))) + +(define (adw-version) + (format #f "~A.~A.~A" + (adw-get-major-version) + (adw-get-minor-version) + (adw-get-micro-version))) + +(define (get-gtk-backend-info) + (let* ((display (gdk-display-get-default)) + (class (class-of display))) + (case (class-name class) + ((<gdk-x11-display>) "X11") + ((<gdk-wayland-display>) "Wayland") + ((<gdk-broadway-display>) "Broadway") + ((<gdk-win32-display>) "Windows") + ((<gdk-macos-display>) "MacOS") + (else + (g-type-name (!g-type class)))))) + +(define (get-gtk-renderer-info) + (let* ((display (gdk-display-get-default)) + (surface (gdk-surface-new-toplevel display)) + (renderer (gsk-renderer-new-for-surface surface)) + (class (class-of renderer))) + (case (class-name class) + ((<gsk-vulkan-renderer>) "Vulkan") + ((<gsk-gl-renderer>) "GL") + ((<gsk-cairo-renderer>) "Cairo") + (else + (g-type-name (!g-type class)))))) + + +(define %debug-info-fmt + "Adwaita Demo - G-Golf port + +Guile: +- Version: ~A + +Running against: +- Libadwaita: ~A +- GLib: ~A +- GTK: ~A + +System: +- Name: ~A +- Version: ~A +- Code name: ~A + +GTK: +- GDK backend: ~A +- GSK renderer: ~A + +Environment: +- Desktop: ~A +- Session: ~A (~A) +- Language: ~A +") + + +(define* (debug-info #:optional (port #f)) + (format port "~?" %debug-info-fmt + (list (version) + (adw-version) + (glib-runtime-version) + (gtk-version) + (g-get-os-info "NAME") + (or (g-get-os-info "VERSION") + " - not available - ") + (or (g-get-os-info "VERSION_CODENAME") + " - not available - ") + (get-gtk-backend-info) + (get-gtk-renderer-info) + (getenv "XDG_CURRENT_DESKTOP") + (getenv "XDG_SESSION_DESKTOP") + (getenv "XDG_SESSION_TYPE") + (getenv "LANG")))) + + +#! + +(call-with-output-file + "/tmp/debug-info.txt" + (lambda (port) (debug-info port))) + +cat /tmp/debug-info.txt +=> ... + +;;; +;;; surface renderer test +;;; + +,use (g-golf) +(add-to-load-path "/home/david/gnu/g-golf/git/examples/adw-1") +,use (adw1-demo debug-info) +(gi-import-by-name "Adw" "init") +$3 = #<<function> 7fc7d131c5a0> + +(adw-init) +(gdk-display-get-default) +$4 = #<<gdk-wayland-display> 7fc7d4cb6a20> + +(gdk-surface-new-toplevel $4) +$5 = #<<gdk-wayland-toplevel> 7fc7d29741d0> + +(class-precedence-list (class-of $5)) +$6 = (#<<gobject-class> <gdk-wayland-toplevel> 7fc7cef72b40> #<<gobject-class> …> …) + +(for-each dimfi $6) +;; #<<gobject-class> <gdk-wayland-toplevel> 7fc7cef72b40> +;; #<<gobject-class> <gdk-wayland-surface> 7fc7cef72d20> +;; #<<gobject-class> <gdk-surface> 7fc7d10ec960> +;; #<<gobject-class> <gobject> 7fc7d2977e10> +;; #<<gobject-class> <gdk-toplevel> 7fc7cef72c30> +;; #<<gobject-class> <ginterface> 7fc7d2977d20> +;; #<<gtype-class> <gtype-instance> 7fc7d2977f00> +;; #<<class> <object> 7fc7dc13f380> +;; #<<class> <top> 7fc7dc13f400> + +(gsk-renderer-new-for-surface $5) +$7 = #<<gsk-gl-renderer> 7fc7d1c29490> + +!# diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-delete-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-delete-symbolic.svg new file mode 100644 index 0000000..47075b8 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-delete-symbolic.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <path d="m 7.96875 1 c -3.851562 0 -6.96875 3.117188 -6.96875 6.96875 s 3.117188 6.96875 6.96875 6.96875 s 6.96875 -3.117188 6.96875 -6.96875 s -3.117188 -6.96875 -6.96875 -6.96875 z m -3 3.96875 h 1 h 0.03125 c 0.253906 0.011719 0.511719 0.128906 0.6875 0.3125 l 1.28125 1.28125 l 1.3125 -1.28125 c 0.265625 -0.230469 0.445312 -0.304688 0.6875 -0.3125 h 1 v 1 c 0 0.285156 -0.035156 0.550781 -0.25 0.75 l -1.28125 1.28125 l 1.25 1.25 c 0.1875 0.1875 0.28125 0.453125 0.28125 0.71875 v 1 h -1 c -0.265625 0 -0.53125 -0.09375 -0.71875 -0.28125 l -1.28125 -1.28125 l -1.28125 1.28125 c -0.1875 0.1875 -0.453125 0.28125 -0.71875 0.28125 h -1 v -1 c 0 -0.265625 0.09375 -0.53125 0.28125 -0.71875 l 1.28125 -1.25 l -1.28125 -1.28125 c -0.210938 -0.195312 -0.304688 -0.46875 -0.28125 -0.75 z m 0 0" fill="#2e3436"/> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-save-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-save-symbolic.svg new file mode 100644 index 0000000..eafcfcb --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/avatar-save-symbolic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 7.007812 0 v 9.5625 l -2.28125 -2.28125 c -0.191406 -0.1875 -0.457031 -0.28125 -0.71875 -0.28125 h -1 v 1 c 0 0.265625 0.089844 0.53125 0.28125 0.71875 l 4.28125 4.28125 h 0.875 l 4.28125 -4.28125 c 0.1875 -0.1875 0.277344 -0.453125 0.28125 -0.71875 v -1 h -1 c -0.265624 0 -0.53125 0.09375 -0.71875 0.28125 l -2.28125 2.28125 v -9.5625 z m 0 0"/> + <path d="m 2 14 l 0.007812 2 h 12 l -0.007812 -2 z m 0 0" fill-rule="evenodd"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-alarm-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-alarm-symbolic.svg new file mode 100644 index 0000000..b7b6504 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-alarm-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.011"><g fill="#2e3436"><path d="M7.492 5.993A.5.5 0 007 6.501V9H5.5a.5.5 0 100 1h2a.5.5 0 00.5-.5v-3a.5.5 0 00-.508-.508z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M7.5 3C3.922 3 1 5.924 1 9.5 1 13.08 3.922 16 7.5 16S14 13.08 14 9.5C14 5.924 11.078 3 7.5 3zm0 2C9.997 5 12 7.005 12 9.5c0 2.498-2.003 4.5-4.5 4.5A4.485 4.485 0 013 9.5C3 7.005 5.003 5 7.5 5z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M4.12 12.897a1 1 0 00-.692.291l-1.125 1.094a1 1 0 101.394 1.436l1.125-1.094a1 1 0 00-.703-1.727zm6.913.094a1 1 0 00-.68 1.68l.907 1a1 1 0 101.48-1.342l-.906-1a1 1 0 00-.8-.338z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M2.111 1.421a2.5 2.5 0 00-.69 3.468L5.58 2.11a2.5 2.5 0 00-3.468-.69zm10.778 0a2.5 2.5 0 01.69 3.468L9.42 2.11a2.5 2.5 0 013.468-.69z"/></g></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-stopwatch-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-stopwatch-symbolic.svg new file mode 100644 index 0000000..3e567db --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-stopwatch-symbolic.svg @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + 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" + width="16" + viewBox="0 0 16 16.007912" + version="1.1" + id="svg7384" + height="16.007912"> + <metadata + id="metadata90"> + <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>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386"> + <linearGradient + osb:paint="solid" + id="linearGradient7212"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop7214" /> + </linearGradient> + </defs> + <g + transform="translate(-720.98275,226.99542)" + style="display:inline" + id="layer9" /> + <g + transform="translate(-720.98275,226.99542)" + style="display:inline" + id="g7628"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00000024;stroke-linecap:round;stroke-linejoin:round;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:new" + id="circle8105" + d="m 728.5002,-223.98751 c -3.57801,0 -6.5,2.92199 -6.5,6.5 0,3.57801 2.92199,6.5 6.5,6.5 3.57801,0 6.5,-2.92199 6.5,-6.5 0,-3.57801 -2.92199,-6.5 -6.5,-6.5 z m 0,2 c 2.49713,0 4.5,2.00287 4.5,4.5 0,2.49713 -2.00287,4.5 -4.5,4.5 -2.49713,0 -4.5,-2.00287 -4.5,-4.5 0,-2.49713 2.00287,-4.5 4.5,-4.5 z" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path8109" + d="m 725.88106,-226.99532 a 1.0001,1.0001 0 1 0 0,2 h 5.23828 a 1.0001,1.0001 0 1 0 0,-2 z" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;stroke-linecap:butt;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="path7749" + d="m 733.82637,-224.21875 -2.52929,2.50781 1.40625,1.42188 2.53125,-2.50977 z" /> + <path + style="display:inline;opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="path7751" + d="m 728.0002,-217 h 1 v -4 h -1 z" /> + </g> + <g + transform="translate(-479.98255,-140.00458)" + style="display:inline" + id="layer1" /> + <g + transform="translate(-479.98255,-140.00458)" + style="display:inline" + id="layer10" /> + <g + transform="translate(-479.98255,-140.00458)" + style="display:inline" + id="g6387" /> + <g + transform="translate(-479.98255,-140.00458)" + style="display:inline" + id="layer11" /> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-timer-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-timer-symbolic.svg new file mode 100644 index 0000000..f95aed6 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-timer-symbolic.svg @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + 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" + width="16" + viewBox="0 0 16 16" + version="1.1" + id="svg7384" + height="16"> + <metadata + id="metadata90"> + <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>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386"> + <linearGradient + osb:paint="solid" + id="linearGradient7212"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop7214" /> + </linearGradient> + </defs> + <g + transform="translate(-760.98275,226.99542)" + style="display:inline" + id="layer9" /> + <g + transform="translate(-760.98275,226.99542)" + style="display:inline" + id="g7628"> + <path + d="m 761.0002,-214 h 15 v 2 l -15,0.0625 z" + id="path7984" + style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + <path + id="path7986" + d="m 772.03516,-224.36523 v 1.52929 l -3.07032,3.07227 v 1.60156 l 3.02539,3.02734 v 1.59766 h 2 v -2.42383 l -2.99804,-3.00195 3.04297,-3.04297 v -2.35937 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;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 + id="path7990" + d="m 762.96484,-224.36523 v 2.35937 l 3.04297,3.04297 -2.99609,3.00195 v 2.42383 h 2 v -1.59766 l 3.02344,-3.02734 v -1.60156 l -3.07032,-3.07227 v -1.52929 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;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 + d="m 761.0002,-224 h 15 v -2 h -15 z" + id="path7992" + style="opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + <path + d="m 768.47979,-216.04195 -2.47957,2.55243 h 5 z" + id="path7996" + style="display:inline;opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + <path + d="m 768.46776,-220.65203 -1.32395,-1.36285 2.66013,0.01 z" + id="path7998" + style="display:inline;opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" /> + </g> + <g + transform="translate(-519.98255,-140.00458)" + style="display:inline" + id="layer1" /> + <g + transform="translate(-519.98255,-140.00458)" + style="display:inline" + id="layer10" /> + <g + transform="translate(-519.98255,-140.00458)" + style="display:inline" + id="g6387" /> + <g + transform="translate(-519.98255,-140.00458)" + style="display:inline" + id="layer11" /> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-world-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-world-symbolic.svg new file mode 100644 index 0000000..1274462 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/clock-world-symbolic.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + 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" + width="16" + viewBox="0 0 16 16.004578" + version="1.1" + id="svg7384" + height="16.004578"> + <metadata + id="metadata90"> + <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>Gnome Symbolic Icon Theme</dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <title + id="title9167">Gnome Symbolic Icon Theme</title> + <defs + id="defs7386"> + <linearGradient + osb:paint="solid" + id="linearGradient7212"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop7214" /> + </linearGradient> + </defs> + <g + transform="translate(-519.98255,160)" + style="display:inline" + id="layer1" /> + <g + transform="translate(-760.98275,527)" + style="display:inline" + id="layer9" /> + <g + transform="translate(-760.98275,527)" + style="display:inline" + id="g7628"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path832" + d="m 762.0002,-520 v 1 h 13 v -1 z" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path834" + d="m 762.0002,-523 v 1 h 13 v -1 z" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path836" + d="m 762.0002,-517 v 1 h 13 v -1 z" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="path838" + d="m 768.5002,-527 c -4.13029,0 -7.5,3.36971 -7.5,7.5 0,4.13029 3.36971,7.5 7.5,7.5 4.13029,0 7.5,-3.36971 7.5,-7.5 0,-4.13029 -3.36971,-7.5 -7.5,-7.5 z m 0,2 c 0.25596,0 0.50553,0.0232 0.75195,0.0566 0.19059,0.26016 0.38153,0.59041 0.54883,1.02539 0.42182,1.09678 0.69922,2.67505 0.69922,4.41801 0,1.74296 -0.2774,3.31928 -0.69922,4.41602 -0.16776,0.43617 -0.35967,0.767 -0.55078,1.02734 -0.24581,0.0333 -0.49471,0.0566 -0.75,0.0566 -0.25529,0 -0.50419,-0.0234 -0.75,-0.0566 -0.19111,-0.26034 -0.38302,-0.59117 -0.55078,-1.02734 -0.42182,-1.09674 -0.69922,-2.67306 -0.69922,-4.41602 0,-1.74296 0.2774,-3.32123 0.69922,-4.41797 0.1673,-0.43498 0.35824,-0.76523 0.54883,-1.02539 0.24642,-0.0334 0.49599,-0.0566 0.75195,-0.0566 z m -2.08789,0.4082 c -0.0474,0.10764 -0.10239,0.1998 -0.14649,0.31446 -0.483,1.2558 -0.76562,2.93045 -0.76562,4.77734 0,1.84689 0.28262,3.51959 0.76562,4.77539 0.0443,0.11525 0.0988,0.20826 0.14649,0.31641 -2.00637,-0.81832 -3.41211,-2.78264 -3.41211,-5.0918 0,-2.30916 1.40574,-4.27348 3.41211,-5.0918 z m 4.17578,0 c 2.00637,0.81832 3.41211,2.78264 3.41211,5.0918 0,2.30916 -1.40574,4.27348 -3.41211,5.0918 0.0477,-0.10815 0.10216,-0.20116 0.14649,-0.31641 0.483,-1.2558 0.76562,-2.9285 0.76562,-4.77539 0,-1.84689 -0.28263,-3.52154 -0.76562,-4.77734 -0.0441,-0.11466 -0.0991,-0.20682 -0.14649,-0.31446 z" /> + </g> + <g + transform="translate(-519.98255,-40)" + id="layer13" /> + <g + transform="translate(-519.98255,160)" + style="display:inline" + id="g6387" /> + <g + transform="translate(-519.98255,160)" + style="display:inline" + id="layer10" /> + <g + transform="translate(-519.98255,160)" + id="layer12" /> + <g + transform="translate(-519.98255,160)" + style="display:inline" + id="layer11" /> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic-rtl.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic-rtl.svg new file mode 100644 index 0000000..e25947c --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic-rtl.svg @@ -0,0 +1,179 @@ +<?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="64" + height="64" + viewBox="0 0 64 64.000001" + id="svg6535" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="two-finger-swipe-left.svg"> + <defs + id="defs6537" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="0.8190337" + inkscape:cy="13.44962" + 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="2560" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid7931" /> + </sodipodi:namedview> + <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,-470.14793)"> + <path + 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" + d="M 38.271484 6.0039062 C 37.981892 5.9956378 37.692703 6.0019094 37.40625 6.0214844 C 34.246377 6.2374271 31.332975 8.1249345 29.902344 11.082031 C 29.173793 10.990041 28.447857 10.978702 27.738281 11.0625 C 24.36672 11.460668 21.373919 13.762084 20.242188 17.148438 L 12 17.148438 L 12 10.148438 L 2 19.648438 L 12 29.148438 L 12 22.148438 L 20.048828 22.148438 C 20.694441 24.742195 22.473591 26.994506 25 28.162109 L 25 47 L 24 47 L 24 39.185547 C 24 36.866788 22.215997 35 20 35 C 17.784003 35 16 36.866788 16 39.185547 L 16 47 L 16 55.814453 L 16 60 L 20 60 L 45 60 L 56 60 C 58.215997 60 60 58.133212 60 55.814453 L 60 43.185547 L 60 34.185547 C 60 31.866788 58.215997 30 56 30 C 53.784003 30 52 31.866788 52 34.185547 L 52 39 L 51 39 L 51 28.185547 C 51 25.866788 49.215997 24 47 24 C 44.784003 24 43 25.866788 43 28.185547 L 43 39 L 42 39 L 42 23.042969 C 44.136586 21.978813 45.853243 20.084457 46.603516 17.640625 C 48.028796 12.998095 45.481769 8.0270562 40.880859 6.4726562 C 40.018187 6.1812063 39.140263 6.0287116 38.271484 6.0039062 z M 38.171875 8.9980469 C 38.752124 9.0164906 39.339992 9.1204781 39.919922 9.3164062 C 43.012882 10.361346 44.694478 13.640769 43.736328 16.761719 C 43.402083 17.85044 42.787396 18.769252 42 19.474609 L 42 15.185547 C 42 12.866788 40.215997 11 38 11 C 35.784003 11 34 12.866788 34 15.185547 L 34 22.945312 C 33.72503 23.436938 33.386634 23.876948 33 24.261719 L 33 20.185547 C 33 17.866788 31.215997 16 29 16 C 26.784003 16 25 17.866788 25 20.185547 L 25 24.666016 C 23.150282 23.179661 22.297135 20.683826 23.027344 18.265625 C 23.981604 15.105485 27.261604 13.320305 30.433594 14.234375 A 1.50015 1.50015 0 0 0 32.361328 12.945312 A 1.50015 1.50015 0 0 0 32.371094 12.921875 C 33.289974 10.433529 35.657461 8.9181241 38.171875 8.9980469 z M 34 27.302734 L 34 39 L 33 39 L 33 27.925781 C 33.346618 27.7409 33.679606 27.531269 34 27.302734 z " + transform="translate(-180,470.14793)" + id="rect7308" /> + <g + style="display:inline" + transform="translate(80,114.14791)" + id="g7391"> + <g + id="g7393"> + <rect + rx="3.999995" + ry="4.1854858" + y="391" + x="-324" + height="24.999994" + width="7.99999" + id="rect7395" + 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="rect7397" + 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="rect7399" + 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="rect7401" + 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="rect7403" + 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="rect7405" + 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="rect7407" + width="34.999985" + height="21" + x="-315" + y="395" + ry="4.1854858" + rx="3.999995" /> + <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="path7409" + 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="path7411" + 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" /> + </g> + </g> + <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 -248,499.29695 -10,-9.5 10,-9.5 z" + id="path7413" + 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="rect7415" + width="13.061281" + height="4.9999938" + x="238.62494" + y="-492.29697" /> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic.svg new file mode 100644 index 0000000..e27b4b1 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchpad-swipe-back-symbolic.svg @@ -0,0 +1,179 @@ +<?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="64" + height="64" + viewBox="0 0 64 64.000001" + 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="1" + inkscape:cx="15.562966" + inkscape:cy="0.15090121" + 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="2560" + inkscape:window-height="1376" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid7931" /> + </sodipodi:namedview> + <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,-470.14793)"> + <path + 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" + d="m -129,475.29637 0,7 -14.48047,0 c -0.8685,-2.58098 -2.88029,-4.74387 -5.63867,-5.67578 -1.15023,-0.3886 -2.3288,-0.52948 -3.47461,-0.45118 -3.16004,0.21596 -6.07335,2.10345 -7.50391,5.06055 -0.72859,-0.0926 -1.45444,-0.10529 -2.16406,-0.0215 -3.45482,0.40801 -6.51775,2.81143 -7.58203,6.33594 -1.30748,4.32992 0.83762,8.91584 4.84375,10.76757 l 0,18.83594 -1,0 0,-7.81445 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,7.81445 0,8.81445 0,4.18555 4,0 25,0 11,0 c 2.216,0 4,-1.86679 4,-4.18555 l 0,-12.6289 0,-9 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,4.81445 -1,0 0,-10.81445 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,10.81445 -1,0 0,-15.95703 c 2.13659,-1.06416 3.85324,-2.95852 4.60352,-5.40235 0.0502,-0.16362 0.0846,-0.32791 0.125,-0.49218 l 14.27148,0 0,7 10,-9.5 -10,-9.5 z m -22.82812,3.84961 c 0.58024,0.0183 1.16811,0.12047 1.74804,0.3164 2.47175,0.83508 4.03799,3.09857 4.08008,5.56641 l 0,0.23242 c -0.012,0.54544 -0.0952,1.09784 -0.26367,1.64649 -0.33419,1.08853 -0.94913,2.00757 -1.73633,2.71289 l 0,-4.28711 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,7.75976 c -0.27497,0.49163 -0.61337,0.93164 -1,1.31641 l 0,-4.07617 c 0,-2.31876 -1.784,-4.18555 -4,-4.18555 -2.216,0 -4,1.86679 -4,4.18555 l 0,4.48242 c -1.84972,-1.48636 -2.70286,-3.98414 -1.97266,-6.40235 0.95426,-3.16014 4.23426,-4.94531 7.40625,-4.03125 a 1.50015,1.50015 0 0 0 1.92774,-1.28906 1.5004025,1.5004025 0 0 0 0.01,-0.0234 c 0.91888,-2.48834 3.28636,-4.00326 5.80078,-3.92383 z M -156,497.45066 l 0,11.69727 -1,0 0,-11.07227 c 0.34667,-0.1849 0.67956,-0.39643 1,-0.625 z" + id="rect6513" + inkscape:connector-curvature="0" /> + <g + id="g7304" + transform="translate(18,114.14791)" + style="display:inline"> + <g + id="g7306"> + <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="rect7308" + width="7.99999" + height="24.999994" + x="-324" + y="391" + ry="4.1854858" + rx="3.999995" /> + <rect + rx="3.999995" + ry="4.1854858" + y="372.00003" + x="-315" + height="43.999989" + width="7.99999" + id="rect7310" + 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="rect7312" + width="7.99999" + height="49.000015" + x="-306" + y="367" + ry="4.1854858" + rx="3.999995" /> + <rect + rx="3.999995" + ry="4.1854858" + y="380" + x="-297" + height="36.000011" + width="7.99999" + id="rect7314" + 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="rect7316" + width="7.99999" + height="30.000006" + x="-288" + y="386" + ry="4.1854858" + rx="3.999995" /> + <rect + y="403" + x="-324" + height="12.99999" + width="28.999994" + id="rect7318" + 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="395" + x="-315" + height="21" + width="34.999985" + id="rect7320" + 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="path7322" + sodipodi:type="arc" + sodipodi:cx="-302" + sodipodi:cy="371" + sodipodi:rx="7.4999938" + sodipodi:ry="7.5000024" + sodipodi:start="3.4953343" + sodipodi:end="1.8407347" + 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:open="true" /> + <path + 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" + sodipodi:end="4.9929531" + sodipodi:start="0.31864739" + sodipodi:ry="7.5000024" + sodipodi:rx="7.4999938" + sodipodi:cy="375.99963" + sodipodi:cx="-311.22797" + sodipodi:type="arc" + id="path7324" + 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" /> + </g> + </g> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path7326" + d="m -260.99992,494.29695 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" /> + <rect + y="-487.29697" + x="-278" + height="4.9999919" + width="20.686279" + id="rect7328" + 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" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic-rtl.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic-rtl.svg new file mode 100644 index 0000000..a395bf5 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic-rtl.svg @@ -0,0 +1,187 @@ +<?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="64" + height="64" + viewBox="0 0 64 64.000001" + id="svg6535" + version="1.1" + inkscape:version="0.92.4 5da689c313, 2019-01-14" + sodipodi:docname="gesture-palm-swipe-right-rtl-symbolic.svg"> + <defs + id="defs6537" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="6.7670154" + inkscape:cx="32.723254" + inkscape:cy="14.119354" + 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="1280" + inkscape:window-height="1376" + inkscape:window-x="1280" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:object-nodes="true" + inkscape:snap-nodes="true" + inkscape:snap-bbox="false" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid4193" /> + </sodipodi:namedview> + <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,-470.14793)"> + <path + 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" + d="M 9.6542969 6.9921875 C 8.6081142 6.96848 7.5705827 7.347386 6.7871094 8.1308594 C 5.2201627 9.697806 5.2783584 12.278358 6.9179688 13.917969 L 10 17 L 10 7.0332031 C 9.8847052 7.0208034 9.7697279 6.9948033 9.6542969 6.9921875 z M 6.1171875 16.185547 C 5.0710043 16.16184 4.0354273 16.538791 3.2519531 17.322266 C 1.6850047 18.889214 1.7432022 21.471718 3.3828125 23.111328 L 10 29.728516 L 10 18.414062 L 9.0390625 17.453125 C 8.2192573 16.63332 7.1633707 16.209254 6.1171875 16.185547 z M 6.8242188 29.621094 C 5.778036 29.597386 4.7424577 29.974339 3.9589844 30.757812 C 2.3920377 32.324759 2.4502333 34.905312 4.0898438 36.544922 L 10 42.455078 L 10 31.142578 L 9.7460938 30.888672 C 8.9262885 30.068867 7.8704014 29.644801 6.8242188 29.621094 z " + transform="translate(-180,470.14793)" + id="rect7306" /> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00000656px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 54 10 L 54 49 L 62 49 L 62 34 L 54 10 z " + transform="translate(-180,470.14793)" + id="path838" /> + <path + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.95433986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="M 10 7 L 10 57 L 12 57 L 12 7 L 10 7 z M 52 7 L 52 57 L 54 57 L 54 7 L 52 7 z " + transform="translate(-180,470.14793)" + id="rect869" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;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" + d="m -148,493.14844 c -4.95279,0 -9,4.0472 -9,9 0,4.95279 4.04721,9 9,9 4.95279,0 9,-4.04721 9,-9 0,-4.9528 -4.04721,-9 -9,-9 z m 0,3 c 3.33147,0 6,2.66852 6,6 0,3.33148 -2.66853,6 -6,6 -3.33147,0 -6,-2.66852 -6,-6 0,-3.33148 2.66853,-6 6,-6 z" + id="ellipse7314" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="m -148,498.14793 c -2.20914,0 -4,1.79086 -4,4 0.001,1.06041 0.42341,2.07695 1.17383,2.82617 l -0.002,0.002 22.17192,22.17183 H -122 c 2.216,0 4,-1.784 4,-4 v -8 c 0,-2.216 -1.784,-4 -4,-4 h -11.34375 l -11.78711,-11.78711 -0.041,-0.041 -0.002,0.002 c -0.74917,-0.75046 -1.76571,-1.17267 -2.82612,-1.17387 z" + id="path831" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccsscccccc" /> + <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 -159,494.64792 -8,7.5 8,7.5 v -5 h 3.5 v -5 h -3.5 z" + id="path7413" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <g + id="g1107" + transform="translate(-64)"> + <g + id="g1080" + transform="rotate(-45,-191.43501,474.81355)" + style="fill:#000000;fill-opacity:1"> + <rect + rx="3.999995" + ry="4.1854858" + y="490.14792" + x="-185" + height="34" + width="7.99999" + id="rect1074" + 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="rect1076" + width="7.999999" + height="30" + x="-194" + y="494.14792" + ry="4.1854858" + rx="3.9999995" /> + <rect + rx="3.999995" + ry="4.1854858" + y="504.14792" + x="-203" + height="20" + width="7.99999" + id="rect1078" + 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> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00000656px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -134,480.14793 v 39 h 16.00021 v -15 l -8.00013,-24 z" + id="path1082" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <rect + style="opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:1.95433986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + id="rect1084" + width="44" + height="50" + x="-170" + y="477.14792" /> + <rect + y="477.14792" + x="-168" + height="50" + width="40" + id="rect1086" + style="opacity:1;fill:#26a269;fill-opacity:1;stroke:none;stroke-width:1.86338997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" /> + <ellipse + cx="-148" + cy="502.14792" + rx="7.4999938" + ry="7.5000024" + id="ellipse1088" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;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 + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="m -148,498.14793 c -2.20914,0 -4,1.79086 -4,4 0.001,1.06041 0.42341,2.07695 1.17383,2.82617 l -0.002,0.002 22.17192,22.17183 H -122 c 2.216,0 4,-1.784 4,-4 v -8 c 0,-2.216 -1.784,-4 -4,-4 h -11.34375 l -11.78711,-11.78711 -0.041,-0.041 -0.002,0.002 c -0.74917,-0.75046 -1.76571,-1.17267 -2.82612,-1.17387 z" + id="path1090" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccsscccccc" /> + <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 -159,494.64792 -8,7.5 8,7.5 v -5 h 3.5 v -5 h -3.5 z" + id="path1092" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <path + inkscape:connector-curvature="0" + id="path1094" + d="m -137,494.64792 8,7.5 -8,7.5 v -5 h -3.5 v -5 h 3.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" + sodipodi:nodetypes="cccccccc" /> + </g> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic.svg new file mode 100644 index 0000000..74b3e39 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/gesture-touchscreen-swipe-back-symbolic.svg @@ -0,0 +1,187 @@ +<?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="64" + height="64" + viewBox="0 0 64 64.000001" + id="svg6535" + version="1.1" + inkscape:version="0.92.4 5da689c313, 2019-01-14" + sodipodi:docname="gesture-palm-swipe-right-symbolic.svg"> + <defs + id="defs6537" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="6.7670154" + inkscape:cx="32.723254" + inkscape:cy="14.119354" + 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="1280" + inkscape:window-height="1376" + inkscape:window-x="1280" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:object-nodes="true" + inkscape:snap-nodes="true" + inkscape:snap-bbox="false" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid4193" /> + </sodipodi:namedview> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(180,-470.14793)"> + <path + 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" + d="M 9.6542969 6.9921875 C 8.6081142 6.96848 7.5705827 7.347386 6.7871094 8.1308594 C 5.2201627 9.697806 5.2783584 12.278358 6.9179688 13.917969 L 10 17 L 10 7.0332031 C 9.8847052 7.0208034 9.7697279 6.9948033 9.6542969 6.9921875 z M 6.1171875 16.185547 C 5.0710043 16.16184 4.0354273 16.538791 3.2519531 17.322266 C 1.6850047 18.889214 1.7432022 21.471718 3.3828125 23.111328 L 10 29.728516 L 10 18.414062 L 9.0390625 17.453125 C 8.2192573 16.63332 7.1633707 16.209254 6.1171875 16.185547 z M 6.8242188 29.621094 C 5.778036 29.597386 4.7424577 29.974339 3.9589844 30.757812 C 2.3920377 32.324759 2.4502333 34.905312 4.0898438 36.544922 L 10 42.455078 L 10 31.142578 L 9.7460938 30.888672 C 8.9262885 30.068867 7.8704014 29.644801 6.8242188 29.621094 z " + transform="translate(-180,470.14793)" + id="rect7306" /> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00000656px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 54 10 L 54 49 L 62 49 L 62 34 L 54 10 z " + transform="translate(-180,470.14793)" + id="path838" /> + <path + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.95433986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="M 10 7 L 10 57 L 12 57 L 12 7 L 10 7 z M 52 7 L 52 57 L 54 57 L 54 7 L 52 7 z " + transform="translate(-180,470.14793)" + id="rect869" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;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" + d="m -148,493.14844 c -4.95279,0 -9,4.0472 -9,9 0,4.95279 4.04721,9 9,9 4.95279,0 9,-4.04721 9,-9 0,-4.9528 -4.04721,-9 -9,-9 z m 0,3 c 3.33147,0 6,2.66852 6,6 0,3.33148 -2.66853,6 -6,6 -3.33147,0 -6,-2.66852 -6,-6 0,-3.33148 2.66853,-6 6,-6 z" + id="ellipse7314" + inkscape:connector-curvature="0" /> + <path + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="m -148,498.14793 c -2.20914,0 -4,1.79086 -4,4 0.001,1.06041 0.42341,2.07695 1.17383,2.82617 l -0.002,0.002 22.17192,22.17183 H -122 c 2.216,0 4,-1.784 4,-4 v -8 c 0,-2.216 -1.784,-4 -4,-4 h -11.34375 l -11.78711,-11.78711 -0.041,-0.041 -0.002,0.002 c -0.74917,-0.75046 -1.76571,-1.17267 -2.82612,-1.17387 z" + id="path831" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccsscccccc" /> + <path + inkscape:connector-curvature="0" + id="path906" + d="m -137,494.64792 8,7.5 -8,7.5 v -5 h -3.5 v -5 h 3.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" + sodipodi:nodetypes="cccccccc" /> + <g + id="g1107" + transform="translate(-64)"> + <g + id="g1080" + transform="rotate(-45,-191.43501,474.81355)" + style="fill:#000000;fill-opacity:1"> + <rect + rx="3.999995" + ry="4.1854858" + y="490.14792" + x="-185" + height="34" + width="7.99999" + id="rect1074" + 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="rect1076" + width="7.999999" + height="30" + x="-194" + y="494.14792" + ry="4.1854858" + rx="3.9999995" /> + <rect + rx="3.999995" + ry="4.1854858" + y="504.14792" + x="-203" + height="20" + width="7.99999" + id="rect1078" + 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> + <path + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00000656px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m -134,480.14793 v 39 h 16.00021 v -15 l -8.00013,-24 z" + id="path1082" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <rect + style="opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:1.95433986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + id="rect1084" + width="44" + height="50" + x="-170" + y="477.14792" /> + <rect + y="477.14792" + x="-168" + height="50" + width="40" + id="rect1086" + style="opacity:1;fill:#26a269;fill-opacity:1;stroke:none;stroke-width:1.86338997;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" /> + <ellipse + cx="-148" + cy="502.14792" + rx="7.4999938" + ry="7.5000024" + id="ellipse1088" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;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 + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" + d="m -148,498.14793 c -2.20914,0 -4,1.79086 -4,4 0.001,1.06041 0.42341,2.07695 1.17383,2.82617 l -0.002,0.002 22.17192,22.17183 H -122 c 2.216,0 4,-1.784 4,-4 v -8 c 0,-2.216 -1.784,-4 -4,-4 h -11.34375 l -11.78711,-11.78711 -0.041,-0.041 -0.002,0.002 c -0.74917,-0.75046 -1.76571,-1.17267 -2.82612,-1.17387 z" + id="path1090" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccsscccccc" /> + <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 -159,494.64792 -8,7.5 8,7.5 v -5 h 3.5 v -5 h -3.5 z" + id="path1092" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <path + inkscape:connector-curvature="0" + id="path1094" + d="m -137,494.64792 8,7.5 -8,7.5 v -5 h -3.5 v -5 h 3.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" + sodipodi:nodetypes="cccccccc" /> + </g> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-layout-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-layout-symbolic.svg new file mode 100644 index 0000000..97dc5a8 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-layout-symbolic.svg @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <filter id="a" height="100%" width="100%" x="0%" y="0%"> + <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> + </filter> + <mask id="b"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> + </g> + </mask> + <clipPath id="c"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="d"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="e"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="f"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="g"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="h"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="i"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="j"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="k"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="l"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="m"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="n"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="o"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="p"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> + </g> + </mask> + <clipPath id="q"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="r"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="s"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="t"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> + </g> + </mask> + <clipPath id="u"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="v"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> + </g> + </mask> + <clipPath id="w"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="x"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="y"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="z"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="A"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <g fill="#2e3436"> + <path d="m 3 9 h 4.015625 v 4 h -4.015625 z m 0 0"/> + <path d="m 8 9 h 5 v 4 h -5 z m 0 0"/> + <path d="m 0.988281 0.96875 v 14.03125 h 14.011719 v -14.03125 z m 1 1 h 12.011719 v 5.03125 h -12.011719 z m 0 6.03125 h 12.011719 v 6 h -12.011719 z m 0 0" fill-opacity="0.35"/> + <path d="m 3 3 h 10 v 3 h -10 z m 0 0"/> + </g> + <g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 16 632 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 17 631 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 18 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 16 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#m)" mask="url(#l)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 17 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#o)" mask="url(#n)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 19 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#q)" mask="url(#p)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 136 660 v 7 h 7 v -7 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#s)" mask="url(#r)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 199 642 h 3 v 12 h -3 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#u)" mask="url(#t)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#w)" mask="url(#v)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#y)" mask="url(#x)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#A)" mask="url(#z)" transform="matrix(1 0 0 1 -640 -604)"> + <path d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v -0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0" fill="#2e3436"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-search-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-search-symbolic.svg new file mode 100644 index 0000000..2a3770e --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/preferences-window-search-symbolic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 10.804688 10 c -0.8125 0.144531 -1.105469 1.15625 -0.5 1.71875 l 3 3 c 0.957031 0.9375 2.363281 -0.5 1.40625 -1.4375 l -3 -3 c -0.238282 -0.242188 -0.578126 -0.347656 -0.90625 -0.28125 z m 0 0"/> + <path d="m 6.5 0 c -3.578125 0 -6.5 2.921875 -6.5 6.5 s 2.921875 6.496094 6.5 6.496094 s 6.5 -2.917969 6.5 -6.496094 s -2.921875 -6.5 -6.5 -6.5 z m 0 2 c 2.496094 0 4.5 2.003906 4.5 4.5 s -2.003906 4.496094 -4.5 4.496094 s -4.5 -2 -4.5 -4.496094 s 2.003906 -4.5 4.5 -4.5 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-copy-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-copy-symbolic.svg new file mode 100644 index 0000000..de2f772 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-copy-symbolic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 6 16 h 6 l 3 -3 v -7 c 0 -0.550781 -0.449219 -1 -1 -1 h -8 c -0.550781 0 -1 0.449219 -1 1 v 9 c 0 0.550781 0.449219 1 1 1 z m 0 0"/> + <path d="m 2 12 h 2 v -6 c 0 -1.105469 0.894531 -2 2 -2 h 5 v -2 c 0 -0.550781 -0.449219 -1 -1 -1 h -8 c -0.550781 0 -0.996094 0.445312 -0.996094 0.996094 l -0.003906 9.003906 c 0 0.550781 0.449219 1 1 1 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-forbidden-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-forbidden-symbolic.svg new file mode 100644 index 0000000..df9133c --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-forbidden-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1c3.863 0 7 3.137 7 7s-3.137 7-7 7-7-3.137-7-7 3.137-7 7-7zm0 2a4.93 4.93 0 00-2.75.813l6.937 6.937A4.93 4.93 0 0013 8c0-2.76-2.24-5-5-5zM3.812 5.25A4.93 4.93 0 003 8c0 2.76 2.24 5 5 5a4.93 4.93 0 002.75-.813z" style="line-height:normal;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#000" font-weight="400" font-family="Sans" overflow="visible" fill="#2e3436"/></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-preferences-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-preferences-symbolic.svg new file mode 100644 index 0000000..0a8de2d --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-preferences-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8 1c-.22 0-.44.011-.656.031l-.406 2.094a5.012 5.012 0 00-.969.312L4.438 1.97c-.389.23-.727.514-1.063.812l.906 1.906a5.057 5.057 0 00-.593.813L1.594 5.22a6.91 6.91 0 00-.406 1.28l1.843 1a4.826 4.826 0 00-.03.5c0 .173.013.332.03.5l-1.843 1c.097.445.228.872.406 1.281l2.094-.281c.17.29.371.563.593.812l-.906 1.907c.336.298.674.582 1.063.812l1.531-1.469c.306.137.634.24.969.313l.406 2.094a7.118 7.118 0 001.312 0l.407-2.094c.334-.073.663-.176.968-.313l1.532 1.47c.388-.23.727-.515 1.062-.813l-.906-1.907a5.11 5.11 0 00.594-.812l2.093.281a6.91 6.91 0 00.407-1.281l-1.844-1c.017-.168.031-.327.031-.5s-.014-.332-.031-.5l1.844-1a6.908 6.908 0 00-.407-1.281l-2.093.281a5.057 5.057 0 00-.594-.813l.906-1.906c-.335-.298-.674-.582-1.062-.812L10.03 3.437a5.015 5.015 0 00-.968-.312l-.407-2.094A7.118 7.118 0 008 1zm0 4a3 3 0 110 6 3 3 0 010-6z" style="marker:none" color="#000" overflow="visible" fill="#474747"/></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-shutdown-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-shutdown-symbolic.svg new file mode 100644 index 0000000..129fbcb --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/row-shutdown-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16.014"><g color="#000" font-weight="400" font-family="sans-serif" fill="#474747"><path d="M5.04 1.815a1 1 0 00-.546.14 7.009 7.009 0 00-3.254 7.87 7.006 7.006 0 006.75 5.19 7.007 7.007 0 006.766-5.17 7.01 7.01 0 00-3.233-7.88 1 1 0 10-1.007 1.729 4.991 4.991 0 012.308 5.627 4.99 4.99 0 01-4.832 3.693 4.989 4.989 0 01-4.82-3.707 4.992 4.992 0 012.324-5.62 1 1 0 00-.457-1.872z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" overflow="visible"/><path d="M7.984 0A1 1 0 007 1.015v5a1 1 0 102 0v-5A1 1 0 007.984.001z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal" overflow="visible"/></g></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/style-classes-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/style-classes-symbolic.svg new file mode 100644 index 0000000..d53b10c --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/style-classes-symbolic.svg @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <filter id="a" height="100%" width="100%" x="0%" y="0%"> + <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> + </filter> + <mask id="b"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> + </g> + </mask> + <clipPath id="c"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="d"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="e"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="f"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="g"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="h"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="i"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="j"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="k"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="l"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="m"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="n"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.05"/> + </g> + </mask> + <clipPath id="o"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="p"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.3"/> + </g> + </mask> + <clipPath id="q"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="r"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="s"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="t"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> + </g> + </mask> + <clipPath id="u"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="v"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.4"/> + </g> + </mask> + <clipPath id="w"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="x"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="y"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <mask id="z"> + <g filter="url(#a)"> + <path d="m 0 0 h 16 v 16 h -16 z" fill-opacity="0.5"/> + </g> + </mask> + <clipPath id="A"> + <path d="m 0 0 h 1024 v 800 h -1024 z"/> + </clipPath> + <g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 16 632 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 17 631 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 18 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#k)" mask="url(#j)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 16 634 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#m)" mask="url(#l)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 17 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#o)" mask="url(#n)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 19 635 h 1 v 1 h -1 z m 0 0" fill="#2e3436" fill-rule="evenodd"/> + </g> + <g clip-path="url(#q)" mask="url(#p)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 136 660 v 7 h 7 v -7 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#s)" mask="url(#r)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 199 642 h 3 v 12 h -3 z m 0 0" fill="#2e3436"/> + </g> + <path d="m 7.996094 0 c -1.109375 0 -2 0.890625 -2 2 v 3.003906 c 0 0.632813 -0.480469 0.996094 -1 0.996094 h -1 c -1.109375 0 -2 0.890625 -2 2 v 1 h 12 v -1 c 0 -1.109375 -0.894532 -2 -2 -2 h -0.976563 c -0.53125 0 -1.023437 -0.359375 -1.023437 -1 v -3 c 0 -1.109375 -0.894532 -2 -2 -2 z m 0 1.40625 c 0.324218 0 0.59375 0.265625 0.59375 0.59375 s -0.269532 0.59375 -0.59375 0.59375 c -0.328125 0 -0.59375 -0.265625 -0.59375 -0.59375 s 0.265625 -0.59375 0.59375 -0.59375 z m 0 0" fill="#2e3436"/> + <path d="m 2 10 h 12 l -0.800781 4.003906 c -0.199219 0.820313 -0.699219 0.996094 -1.246094 0.996094 h -1.953125 v -2 l -1.125 2 h -1.847656 l -0.027344 -2 l -1.035156 2 h -0.964844 v -1.5 l -1 1.5 h -3 l 0.210938 -1.046875 z m 0 0" fill="#2e3436"/> + <path d="m 134.9375 529.0625 l -5.625 -3.3125" fill="none" stroke="#2e3436" stroke-linecap="round" stroke-width="2" transform="matrix(0 -1 1 0 -538 136)"/> + <g clip-path="url(#u)" mask="url(#t)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#w)" mask="url(#v)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#y)" mask="url(#x)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#A)" mask="url(#z)" transform="matrix(1 0 0 1 -256 -660)"> + <path d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v -0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0" fill="#2e3436"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/tab-new-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/tab-new-symbolic.svg new file mode 100644 index 0000000..3d2119d --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/tab-new-symbolic.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 3 0 c -1.644531 0 -3 1.355469 -3 3 v 10 c 0 1.644531 1.355469 3 3 3 h 10 c 1.644531 0 3 -1.355469 3 -3 v -10 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 10 c 0.570312 0 1 0.429688 1 1 v 10 c 0 0.570312 -0.429688 1 -1 1 h -10 c -0.570312 0 -1 -0.429688 -1 -1 v -10 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/> + <path d="m 4 7 h 8 v 2 h -8 z m 0 0"/> + <path d="m 9 4 v 8 h -2 v -8 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic-rtl.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic-rtl.svg new file mode 100644 index 0000000..2d8bbec --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic-rtl.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 6.5 14 v -12 h -5 v 12 z m 0 0" fill-opacity="0.35"/> + <path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 10 c 1.644531 0 3 -1.355469 3 -3 v -8 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 10 c 0.570312 0 1 0.429688 1 1 v 8 c 0 0.570312 -0.429688 1 -1 1 h -10 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/> + <path d="m 6 2 h 1 v 12 h -1 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic.svg new file mode 100644 index 0000000..3b6b6d4 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-end-symbolic.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 9.5 14 v -12 h 5 v 12 z m 0 0" fill-opacity="0.35"/> + <path d="m 13 1 c 1.644531 0 3 1.355469 3 3 v 8 c 0 1.644531 -1.355469 3 -3 3 h -10 c -1.644531 0 -3 -1.355469 -3 -3 v -8 c 0 -1.644531 1.355469 -3 3 -3 z m 0 2 h -10 c -0.570312 0 -1 0.429688 -1 1 v 8 c 0 0.570312 0.429688 1 1 1 h 10 c 0.570312 0 1 -0.429688 1 -1 v -8 c 0 -0.570312 -0.429688 -1 -1 -1 z m 0 0"/> + <path d="m 10 2 h -1 v 12 h 1 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic-rtl.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic-rtl.svg new file mode 100644 index 0000000..3b6b6d4 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic-rtl.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 9.5 14 v -12 h 5 v 12 z m 0 0" fill-opacity="0.35"/> + <path d="m 13 1 c 1.644531 0 3 1.355469 3 3 v 8 c 0 1.644531 -1.355469 3 -3 3 h -10 c -1.644531 0 -3 -1.355469 -3 -3 v -8 c 0 -1.644531 1.355469 -3 3 -3 z m 0 2 h -10 c -0.570312 0 -1 0.429688 -1 1 v 8 c 0 0.570312 0.429688 1 1 1 h 10 c 0.570312 0 1 -0.429688 1 -1 v -8 c 0 -0.570312 -0.429688 -1 -1 -1 z m 0 0"/> + <path d="m 10 2 h -1 v 12 h 1 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic.svg new file mode 100644 index 0000000..2d8bbec --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/view-sidebar-start-symbolic.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#2e3436"> + <path d="m 6.5 14 v -12 h -5 v 12 z m 0 0" fill-opacity="0.35"/> + <path d="m 3 1 c -1.644531 0 -3 1.355469 -3 3 v 8 c 0 1.644531 1.355469 3 3 3 h 10 c 1.644531 0 3 -1.355469 3 -3 v -8 c 0 -1.644531 -1.355469 -3 -3 -3 z m 0 2 h 10 c 0.570312 0 1 0.429688 1 1 v 8 c 0 0.570312 -0.429688 1 -1 1 h -10 c -0.570312 0 -1 -0.429688 -1 -1 v -8 c 0 -0.570312 0.429688 -1 1 -1 z m 0 0"/> + <path d="m 6 2 h 1 v 12 h -1 z m 0 0"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-about-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-about-symbolic.svg new file mode 100644 index 0000000..1232984 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-about-symbolic.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <path d="m 8 0 c -4.410156 0 -8 3.589844 -8 8 s 3.589844 8 8 8 s 8 -3.589844 8 -8 s -3.589844 -8 -8 -8 z m 0 2 c 3.332031 0 6 2.667969 6 6 s -2.667969 6 -6 6 s -6 -2.667969 -6 -6 s 2.667969 -6 6 -6 z m 0 1.875 c -0.621094 0 -1.125 0.503906 -1.125 1.125 s 0.503906 1.125 1.125 1.125 s 1.125 -0.503906 1.125 -1.125 s -0.503906 -1.125 -1.125 -1.125 z m -1.523438 3.125 c -0.265624 0.011719 -0.476562 0.230469 -0.476562 0.5 c 0 0.277344 0.222656 0.5 0.5 0.5 h 0.5 v 3 h -0.5 c -0.277344 0 -0.5 0.222656 -0.5 0.5 s 0.222656 0.5 0.5 0.5 h 3 c 0.277344 0 0.5 -0.222656 0.5 -0.5 s -0.222656 -0.5 -0.5 -0.5 h -0.5 v -4 h -2.5 c -0.007812 0 -0.015625 0 -0.023438 0 z m 0 0" fill="#2e3436"/> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-banner-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-banner-symbolic.svg new file mode 100644 index 0000000..ccf6446 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-banner-symbolic.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg"> + <g fill="#222222"> + <path d="m 0 0.972656 v 2 h 0.0117188 v 4.035156 h 13.9921872 l 0.007813 9 h 2 l -0.011719 -11.988281 c 0 -1.644531 -1.355469 -3.046875 -3 -3.046875 z m 12.457031 2.027344 c 0.828125 0 1.5 0.675781 1.5 1.507812 c 0 0.832032 -0.671875 1.503907 -1.5 1.503907 s -1.5 -0.671875 -1.5 -1.503907 c 0 -0.832031 0.671875 -1.507812 1.5 -1.507812 z m 0 0" /> + <path d="m 15 12 h -14.9882812 v -5.980469 h 14.9882812 z m 0 0" fill-opacity="0.34902" /> + <path d="m -0.0351562 12 v 1 h 15.0351562 v -1 z m 0 0" /> + </g> + <path d="m 7 8 h 4 c 0.550781 0 1 0.449219 1 1 v 1 c 0 0.550781 -0.449219 1 -1 1 h -4 c -0.550781 0 -1 -0.449219 -1 -1 v -1 c 0 -0.550781 0.449219 -1 1 -1 z m 0 0" fill="#212121" /> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-carousel-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-carousel-symbolic.svg new file mode 100644 index 0000000..d700fdf --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-carousel-symbolic.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1"> +<g id="surface390543"> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 6 13 C 6 13.550781 5.550781 14 5 14 C 4.449219 14 4 13.550781 4 13 C 4 12.449219 4.449219 12 5 12 C 5.550781 12 6 12.449219 6 13 Z M 6 13 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 9 13 C 9 13.550781 8.550781 14 8 14 C 7.449219 14 7 13.550781 7 13 C 7 12.449219 7.449219 12 8 12 C 8.550781 12 9 12.449219 9 13 Z M 9 13 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 12 13 C 12 13.550781 11.550781 14 11 14 C 10.449219 14 10 13.550781 10 13 C 10 12.449219 10.449219 12 11 12 C 11.550781 12 12 12.449219 12 13 Z M 12 13 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 5 2 C 3.910156 2 3 2.910156 3 4 L 3 9 C 3 10.089844 3.910156 11 5 11 L 11 11 C 12.089844 11 13 10.089844 13 9 L 13 4 C 13 2.910156 12.089844 2 11 2 Z M 5 4 L 11 4 L 11 9 L 5 9 Z M 5 4 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 2 3 C 0.910156 3 0 3.910156 0 5 L 0 8 C 0 9.089844 0.910156 10 2 10 Z M 2 3 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 14 3 C 15.089844 3 16 3.910156 16 5 L 16 8 C 16 9.089844 15.089844 10 14 10 Z M 14 3 "/> +</g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-clamp-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-clamp-symbolic.svg new file mode 100644 index 0000000..9269c40 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-clamp-symbolic.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#474747"><path d="M12.293 5.293L9.586 8l2.707 2.707 1.414-1.414L12.414 8l1.293-1.293z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M13 10h1v1h-1zm0-5h1v1h-1z" style="marker:none" overflow="visible"/><path d="M13 5c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1zm0 4c.554 0 1 .446 1 1s-.446 1-1 1-1-.446-1-1 .446-1 1-1z" style="marker:none" overflow="visible"/><path d="M3.707 5.293L2.293 6.707 3.586 8 2.293 9.293l1.414 1.414L6.414 8z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/><path d="M3 10H2v1h1zm0-5H2v1h1z" style="marker:none" overflow="visible"/><path d="M3 5c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1zm0 4c-.554 0-1 .446-1 1s.446 1 1 1 1-.446 1-1-.446-1-1-1z" style="marker:none" overflow="visible"/></g></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-dialog-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-dialog-symbolic.svg new file mode 100644 index 0000000..3d31e02 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-dialog-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 2 1.007812 c -0.550781 0 -1 0.449219 -1 1 v 1.984376 h 2 v -0.984376 h 9 v 0.992188 h 2 v -1.992188 c 0 -0.550781 -0.449219 -1 -1 -1 z m 10 12 v 0.992188 h -9 v -0.984375 h -2 v 1.984375 c 0 0.550781 0.449219 1 1 1 h 11 c 0.550781 0 1 -0.449219 1 -1 v -1.992188 z m 0 0" fill-opacity="0.34902"/><path d="m 4 4 c -0.550781 0 -1 0.449219 -1 1 v 7.007812 c 0 0.550782 0.449219 1 1 1 h 7 c 0.550781 0 1 -0.449218 1 -1 v -7.007812 c 0 -0.550781 -0.449219 -1 -1 -1 z m 0 2 h 7 v 3.992188 h -7 z m 0 4.992188 h 3 v 1.007812 h -3 z m 4 0 h 3 v 1.007812 h -3 z m 0 0"/></g></svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-flap-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-flap-symbolic.svg new file mode 100644 index 0000000..08600fa --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-flap-symbolic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1"> +<g id="surface390549"> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:0.35;" d="M 6 11.972656 L 6 3.972656 L 3 3.972656 L 3 11.972656 Z M 6 11.972656 "/> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 8 2 L 9 2 L 9 14 L 8 14 Z M 3 1.996094 C 1.910156 1.996094 1 2.90625 1 3.996094 L 1 11.972656 C 1 13.0625 1.910156 13.972656 3 13.972656 L 7 13.972656 L 7 1.996094 Z M 10 1.996094 L 10 13.972656 L 11 13.972656 L 11 1.996094 Z M 11.96875 1.996094 L 11.96875 3.996094 L 13 3.996094 L 13 11.972656 L 11.96875 11.972656 L 11.96875 13.972656 L 13 13.972656 C 13.96875 13.972656 15 13.046875 15 11.972656 L 15 3.996094 C 15 2.90625 14.089844 1.996094 13 1.996094 Z M 3 3.996094 L 6 3.996094 L 6 11.972656 L 3 11.972656 Z M 3 3.996094 "/> +</g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-leaflet-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-leaflet-symbolic.svg new file mode 100644 index 0000000..fdd9935 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-leaflet-symbolic.svg @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + width="16px" + height="16px" + viewBox="0 0 16 16" + version="1.1" + id="svg7" + sodipodi:docname="widget-leaflet-symbolic.svg" + inkscape:version="1.1 (c68e22c387, 2021-05-23)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs11" /> + <sodipodi:namedview + id="namedview9" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="54.5625" + inkscape:cx="8" + inkscape:cy="8.0091638" + inkscape:window-width="1920" + inkscape:window-height="1011" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg7" /> + <g + id="surface390556"> + <path + style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" + d="M 3 1.996094 C 1.910156 1.996094 1 2.90625 1 3.996094 L 1 11.972656 C 1 13.0625 1.910156 13.972656 3 13.972656 L 9 13.972656 L 9 1.996094 Z M 10 1.996094 L 10 3.996094 L 13 3.996094 L 13 11.972656 L 10 11.972656 L 10 13.972656 L 13 13.972656 C 13.96875 13.972656 15 13.046875 15 11.972656 L 15 3.996094 C 15 2.90625 14.089844 1.996094 13 1.996094 Z M 3 3.996094 L 8 3.996094 L 8 11.972656 L 3 11.972656 Z M 3 3.996094 " + id="path2" /> + <path + style="color:#000000;fill:#2e3335;stroke-linecap:round;-inkscape-stroke:none" + d="m 25.638672,304.95898 a 0.5,0.5 0 0 0 0,0.70704 l 2.353515,2.35351 2.353516,-2.35351 a 0.5,0.5 0 0 0 0,-0.70704 0.5,0.5 0 0 0 -0.707031,0 l -1.646485,1.64649 -1.646484,-1.64649 a 0.5,0.5 0 0 0 -0.707031,0 z" + id="path4" + transform="matrix(0.000000000000000061,1,-1,0.000000000000000061,311.999939,-19.992126)" /> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-list-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-list-symbolic.svg new file mode 100644 index 0000000..ad353a4 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-list-symbolic.svg @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<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="16px" + height="16px" + viewBox="0 0 16 16" + version="1.1" + id="svg13" + sodipodi:docname="list-view-symbolic.svg" + inkscape:version="1.0.2 (e86c870879, 2021-01-15)"> + <sodipodi:namedview + pagecolor="#7b7b7b" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1011" + id="namedview7" + showgrid="false" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-midpoints="true" + inkscape:zoom="20.377255" + inkscape:cx="6.5128986" + inkscape:cy="14.575443" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg13" + inkscape:document-rotation="0" /> + <metadata + id="metadata19"> + <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> + <defs + id="defs17" /> + <g + id="g862"> + <path + id="path6793" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;marker:none" + d="m 2.999921,1.000281 c -1.0907,0 -2,0.9093 -2,2 v 10 c 0,1.0907 0.9093,2 2,2 h 10 c 1.0907,0 2,-0.9093 2,-2 v -10 c 0,-1.0907 -0.9093,-2 -2,-2 z m 0,2 h 10 v 10 h -10 z" + sodipodi:nodetypes="sssssssssccccc" /> + <rect + style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:8, 8" + id="rect6856" + width="12" + height="2" + x="1.99992" + y="5.0002441" /> + <rect + style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:8, 8" + id="rect6858" + width="12" + height="2" + x="1.99992" + y="9.0002441" /> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-tab-view-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-tab-view-symbolic.svg new file mode 100644 index 0000000..9bbebbe --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-tab-view-symbolic.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1"> +<g id="surface543414"> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 3.992188 3 C 3.992188 3 3.285156 2.988281 2.546875 3.355469 C 1.808594 3.726562 0.992188 4.667969 0.992188 6 L 0.992188 13 L -0.0078125 13 L -0.0117188 15 L -0.0078125 15 L 2.992188 15.011719 L 2.992188 15 L 15.992188 15 L 15.992188 13 L 16.003906 13 L 16.003906 5.691406 C 16.003906 4.261719 14.832031 3.058594 13.378906 3.042969 L 11 3.023438 C 11 3.023438 12 3.847656 12 4.988281 L 13.046875 5.03125 C 13.585938 5.054688 13.988281 5.527344 13.988281 6.007812 L 13.988281 13 L 11 13 L 11 6 C 11 6 11.011719 5.289062 10.644531 4.550781 C 10.273438 3.8125 9.332031 3 8 3 Z M 3.992188 3 "/> +</g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-toast-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-toast-symbolic.svg new file mode 100644 index 0000000..6302ff5 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-toast-symbolic.svg @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#2e3436"><path d="m 13 6.5 c 0 2.761719 -2.238281 5 -5 5 s -5 -2.238281 -5 -5 s 2.238281 -5 5 -5 s 5 2.238281 5 5 z m 0 0"/><path d="m 3 6.5 h 10 v 6 h -10 z m 0 0"/><path d="m 2.5 13 h 11 c 0.550781 0 1 -0.449219 1 -1 s -0.449219 -1 -1 -1 h -11 c -0.550781 0 -1 0.449219 -1 1 s 0.449219 1 1 1 z m 0 0"/><path d="m 10 14 c 0 0.714844 -0.382812 1.375 -1 1.730469 c -0.617188 0.359375 -1.382812 0.359375 -2 0 c -0.617188 -0.355469 -1 -1.015625 -1 -1.730469"/><path d="m 9.5 1.5 c 0 0.828125 -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 s 1.5 0.671875 1.5 1.5 z m 0 0"/></g></svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-view-switcher-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-view-switcher-symbolic.svg new file mode 100644 index 0000000..f3823ac --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/actions/widget-view-switcher-symbolic.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1"> +<g id="surface390564"> +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(18.039216%,20.392157%,21.176471%);fill-opacity:1;" d="M 3 1 C 1.910156 1 1 1.910156 1 3 L 1 13 C 1 14.089844 1.910156 15 3 15 L 13 15 C 14.089844 15 15 14.089844 15 13 L 15 3 C 15 1.910156 14.089844 1 13 1 Z M 4.976562 2 C 5.53125 2 5.984375 2.453125 5.984375 3.007812 C 5.984375 3.566406 5.535156 4.015625 4.976562 4.019531 C 4.417969 4.015625 3.96875 3.566406 3.96875 3.007812 C 3.96875 2.453125 4.421875 2 4.976562 2 Z M 7.957031 2 C 8.511719 2 8.964844 2.453125 8.964844 3.007812 C 8.964844 3.566406 8.515625 4.015625 7.957031 4.019531 C 7.398438 4.015625 6.949219 3.566406 6.949219 3.007812 C 6.949219 2.453125 7.402344 2 7.957031 2 Z M 11 2 C 11.558594 2 12.011719 2.449219 12.011719 3.007812 C 12.011719 3.277344 11.90625 3.53125 11.714844 3.722656 C 11.527344 3.910156 11.269531 4.019531 11 4.019531 C 10.445312 4.015625 9.992188 3.566406 9.992188 3.007812 C 9.996094 2.453125 10.445312 2 11 2 Z M 3 5 L 13 5 L 13 13 L 3 13 Z M 3 5 "/> +</g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.example.Typeset.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.example.Typeset.svg new file mode 100644 index 0000000..b93b5b8 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.example.Typeset.svg @@ -0,0 +1 @@ +<svg height="128" width="128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#63452c"/><stop offset=".038" stop-color="#865e3c"/><stop offset=".077" stop-color="#63452c"/><stop offset=".923" stop-color="#63452c"/><stop offset=".962" stop-color="#865e3c"/><stop offset="1" stop-color="#63452c"/></linearGradient><linearGradient id="d" gradientTransform="matrix(.23214 0 0 .20395 -8.567 207.653)" x1="88.596" x2="536.596" xlink:href="#a" y1="-449.394" y2="-449.394"/><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="30" x2="104" y1="84" y2="98"><stop offset="0" stop-color="#deddda"/><stop offset="1" stop-color="#c0bfbc"/></linearGradient><linearGradient id="f" gradientTransform="matrix(.23214 0 0 .125 -8.567 146.174)" x1="88.596" x2="536.596" xlink:href="#a" y1="-449.394" y2="-449.394"/><linearGradient id="g" gradientTransform="matrix(.23214 0 0 .20395 -8.567 207.653)" gradientUnits="userSpaceOnUse" x1="88.596" x2="536.596" y1="-449.394" y2="-449.394"><stop offset="0" stop-color="#3d3846"/><stop offset=".038" stop-color="#77767b"/><stop offset=".077" stop-color="#3d3846"/><stop offset=".923" stop-color="#3d3846"/><stop offset=".962" stop-color="#77767b"/><stop offset="1" stop-color="#3d3846"/></linearGradient><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="30" x2="104" y1="88" y2="102"><stop offset="0" stop-color="#f6f5f4"/><stop offset="1" stop-color="#deddda"/></linearGradient><filter id="b" height="100%" width="100%" x="0%" y="0%"><feColorMatrix in="SourceGraphic" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="j"><g filter="url(#b)"><path fill-opacity=".4" d="M0 0h128v128H0z"/></g></mask><clipPath id="i"><path d="M0 0h192v152H0z"/></clipPath><mask id="l"><g filter="url(#b)"><path fill-opacity=".2" d="M0 0h128v128H0z"/></g></mask><clipPath id="k"><path d="M0 0h192v152H0z"/></clipPath><clipPath id="m"><path d="M12 76h104v8H12zm0 0"/></clipPath><mask id="o"><g filter="url(#b)"><path fill-opacity=".2" d="M0 0h128v128H0z"/></g></mask><clipPath id="n"><path d="M0 0h192v152H0z"/></clipPath><linearGradient id="p" gradientTransform="matrix(.25 0 0 .125 -14.149 136.174)" gradientUnits="userSpaceOnUse" x1="88.596" x2="536.596" y1="-449.394" y2="-449.394"><stop offset="0" stop-color="#1a5fb4"/><stop offset=".038" stop-color="#3584e4"/><stop offset=".077" stop-color="#1a5fb4"/><stop offset=".923" stop-color="#1a5fb4"/><stop offset=".962" stop-color="#3584e4"/><stop offset="1" stop-color="#1a5fb4"/></linearGradient><linearGradient id="q" gradientTransform="rotate(60 83.053 209)" gradientUnits="userSpaceOnUse" x1="61" x2="67" y1="220" y2="220"><stop offset="0" stop-color="#5e5c64"/><stop offset=".5" stop-color="#9a9996"/><stop offset="1" stop-color="#3d3846"/></linearGradient><linearGradient id="r" gradientTransform="matrix(2.66662 0 0 -2.66662 -106.664 -514.657)" gradientUnits="userSpaceOnUse" x1="58" x2="70" y1="-211" y2="-211"><stop offset="0" stop-color="#77767b"/><stop offset=".5" stop-color="#9a9996"/><stop offset="1" stop-color="#77767b"/></linearGradient><linearGradient id="s" gradientUnits="userSpaceOnUse" x1="58" x2="70" y1="39.5" y2="39.5"><stop offset="0" stop-color="#5e5c64"/><stop offset=".5" stop-color="#c0bfbc"/><stop offset="1" stop-color="#3d3846"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#77767b"/><stop offset=".5" stop-color="#c0bfbc"/><stop offset="1" stop-color="#77767b"/></linearGradient><linearGradient id="t" gradientTransform="matrix(1.99998 0 0 -1.99998 -63.998 -393.995)" x1="58" x2="70" xlink:href="#c" y1="-211" y2="-211"/><radialGradient id="u" cx="-194.837" cy="-64" gradientTransform="matrix(0 -.7747 -.7747 0 14.42 -130.439)" gradientUnits="userSpaceOnUse" r="8"><stop offset="0" stop-color="#deddda"/><stop offset="1" stop-color="#77767b"/></radialGradient><linearGradient id="v" gradientTransform="rotate(60 83.053 209)" x1="61" x2="67" xlink:href="#c" y1="220" y2="220"/><path d="M20 54h88a8 8 0 0 1 8 8v46a8 8 0 0 1-8 8H20a8 8 0 0 1-8-8V62a8 8 0 0 1 8-8zm0 0" fill="url(#d)"/><path d="M20 54h88v46H20zm0 0" fill="url(#e)"/><path d="M20 28h88v66H20zm0 0" fill="#f6f5f4"/><path d="M20 52h88a8 8 0 0 1 8 8v22a8 8 0 0 1-8 8H20a8 8 0 0 1-8-8V60a8 8 0 0 1 8-8zm0 0" fill="url(#f)"/><path d="M20 54h88a8 8 0 0 1 8 8v46a8 8 0 0 1-8 8H20a8 8 0 0 1-8-8V62a8 8 0 0 1 8-8zm0 0" fill="url(#g)"/><path d="M21.453 52h85.094c5.219 0 9.453 3.582 9.453 8v44c0 4.418-4.234 8-9.453 8H21.453c-5.219 0-9.453-3.582-9.453-8V60c0-4.418 4.234-8 9.453-8zm0 0" fill="#5e5c64"/><path d="M20 58h88v46H20zm0 0" fill="url(#h)"/><g fill-opacity=".137"><path d="M108 102h-.5v1h.5zm-44.508 0 44 1v-1zm0 0"/><path d="M108 102h-.5v1h.5zm-44.508 0 44 1v-1zM108 100h-.5v1h.5zm-47.508 0 47 1v-1zM108 98h-.5v1h.5zm-50.508 0 50 1v-1zm0 0"/><path d="M20 96h88v8H20zm0 0"/></g><g clip-path="url(#i)" mask="url(#j)" transform="translate(-8 -16)"><path d="M34 94h4v14h-4zm0 0" fill="#241f31"/></g><g clip-path="url(#k)" fill="#241f31" mask="url(#l)" transform="translate(-8 -16)"><path d="M48.535 99H58v9h-9.465zm0 0"/><path d="M44 94h10v14H44zM64 94h18v14H64zm0 0"/><path d="M80 102h6v6h-6zM92 94h6v14h-6zm0 0"/></g><g clip-path="url(#m)"><g clip-path="url(#n)" mask="url(#o)" transform="translate(-8 -16)"><path d="M25.453 44h93.094c5.219 0 9.453 3.582 9.453 8v40c0 4.418-4.234 8-9.453 8H25.453C20.234 100 16 96.418 16 92V52c0-4.418 4.234-8 9.453-8zm0 0"/></g></g><path d="M16 42h96a8 8 0 0 1 8 8v22a8 8 0 0 1-8 8H16a8 8 0 0 1-8-8V50a8 8 0 0 1 8-8zm0 0" fill="url(#p)"/><path d="M17.453 20h93.094c5.219 0 9.453 3.582 9.453 8v40c0 4.418-4.234 8-9.453 8H17.453C12.234 76 8 72.418 8 68V28c0-4.418 4.234-8 9.453-8zm0 0" fill="#3584e4"/><path d="m32.824 216 62.352-36" fill="none" stroke="url(#q)" stroke-linecap="round" stroke-width="6" transform="translate(0 -172)"/><path d="M80 48c0-8.836-7.164-16-16-16s-16 7.164-16 16 7.164 16 16 16 16-7.164 16-16zm0 0" fill="url(#r)"/><path d="M64 30c-8.836 0-16 7.164-16 16s7.164 16 16 16 16-7.164 16-16-7.164-16-16-16zm0 0" fill="#deddda"/><path d="m59 27-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1 2-1 2v1a5.998 5.998 0 0 0 9 5.195c1.855-1.07 3-3.05 3-5.195v-3l-1-2 1-2-1-2 1-2-1-2 1-2-1-2 1-2-1-2zm0 0" fill="url(#s)"/><path d="M69 29s-1.352 3.656-4.91 4.016C60.527 33.375 59 31 59 31l-1 2s2.094 2.781 6.09 2.55c3.996-.234 5.785-4.51 5.91-4.55zm0 0" fill="#fff" fill-opacity=".38"/><path d="M70 31c-.125.04-1.914 4.316-5.91 4.55C60.094 35.782 58 33 58 33l1 2s1.527 2.375 5.09 2.016C67.648 36.656 69 33 69 33l.043.086zm0 0" fill="#241f31" fill-opacity=".337"/><path d="M69 37s-1.352 3.656-4.91 4.016C60.527 41.375 59 39 59 39l-1 2s2.094 2.781 6.09 2.55c3.996-.234 5.785-4.51 5.91-4.55zm0 0" fill="#fff" fill-opacity=".38"/><path d="M69 41s-1.441 3.656-5 4.016S59 43 59 43l-1 2s2.004 2.781 6 2.55c3.996-.234 5.875-4.51 6-4.55zM69 33s-1.352 3.656-4.91 4.016C60.527 37.375 59 35 59 35l-1 2s2.094 2.781 6.09 2.55c3.996-.234 5.785-4.51 5.91-4.55zm0 0" fill="#fff" fill-opacity=".38"/><path d="M70 39c-.125.04-1.914 4.316-5.91 4.55S58 41 58 41l1 2s1.527 2.375 5.09 2.016C67.648 44.656 69 41 69 41l.043.086zm0 0" fill="#241f31" fill-opacity=".337"/><path d="M70 35c-.125.04-1.914 4.316-5.91 4.55C60.094 39.782 58 37 58 37l1 2s1.527 2.375 5.09 2.016C67.648 40.656 69 37 69 37l.043.086zm0 0" fill="#241f31" fill-opacity=".337"/><path d="M76 28c0-6.629-5.371-12-12-12s-12 5.371-12 12 5.371 12 12 12 12-5.371 12-12zm0 0" fill="url(#t)"/><path d="M64 10c-6.629 0-12 5.371-12 12s5.371 12 12 12 12-5.371 12-12-5.371-12-12-12zm0 0" fill="#deddda"/><path d="M52.023 27.406c-.015.2-.02.395-.023.594 0 6.629 5.371 12 12 12s12-5.371 12-12c-.004-.137-.012-.27-.02-.406C75.664 33.98 70.395 38.996 64 39c-6.465-.008-11.758-5.133-11.977-11.594zm0 0" fill="#77767b"/><path d="M64 16c-3.313 0-6 2.688-6 6s2.688 6 6 6 6-2.688 6-6-2.688-6-6-6zm0 0" fill="url(#u)"/><path d="M32.824 216 52.41 204.69" fill="#77767b" stroke="url(#v)" stroke-linecap="round" stroke-width="6" transform="translate(0 -172)"/><path d="M32.824 216 52.41 204.69" fill="#77767b" stroke="url(#q)" stroke-linecap="round" stroke-width="6" transform="translate(0 -172)"/></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.gnome.Boxes.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.gnome.Boxes.svg new file mode 100644 index 0000000..bb0a94f --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/apps/org.gnome.Boxes.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128" version="1.0"><defs><linearGradient id="a"><stop offset="0" stop-color="#fff"/><stop offset=".4" stop-color="#fff"/><stop offset="1" stop-color="#f6f5f4"/></linearGradient><radialGradient xlink:href="#a" id="i" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4 0 0 4 -492.799 -641.952)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="h" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4 0 0 4 -492.799 -681.952)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6 0 0 6 -785.198 -1065.928)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="f" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6 0 0 6 -785.198 -1153.928)"/><radialGradient xlink:href="#a" id="e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4 0 0 4 -452.799 -681.952)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4 0 0 4 -452.799 -641.952)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="c" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6 0 0 6 -697.198 -1065.928)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6 0 0 6 -697.198 -1153.928)" cx="134.2" cy="222.988" fx="134.2" fy="222.988" r="2"/></defs><g transform="translate(0 -172)"><path style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" d="M22.352 194.352h82.687v82.687H22.352z" color="#000" font-weight="400" font-family="sans-serif" overflow="visible" fill="none"/><g color="#000" fill="none" stroke="#f6f5f4" stroke-width="8"><path style="marker:none" d="M84 256l24 24M84 216l24-24M44 256l-24 24M44 216l-24-24M44 216h40v40H44z" overflow="visible"/><path style="marker:none" overflow="visible" d="M20 192h88v88H20z"/></g><path style="marker:none" fill="#d5d3cf" d="M98.5 194v2h-69v-2z"/><path style="marker:none" d="M120 192c0 6.627-5.373 12-12 12-1.85 0-3.222-.095-5.165-1.166-1.092-1.726-3.55-4.584-5.668-5.666C96.096 195.224 96 193.85 96 192c0-6.627 5.373-12 12-12s12 5.373 12 12z" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M110 203h2v69h-2z"/><circle style="marker:none" cx="108" cy="280" r="12" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M79 258v2H49v-2zM99.604 274.425l-1.414 1.415-15-15 1.415-1.415zM103.058 199.793l1.414 1.414-15 15-1.414-1.414z"/><circle style="marker:none" cx="108" cy="190" r="12" color="#000" overflow="visible" fill="url(#b)"/><path style="marker:none" fill="#d5d3cf" d="M86 222h2v26h-2zM79 218v2H49v-2z"/><circle style="marker:none" cx="84" cy="216" r="8" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M98.5 282v2h-69v-2z"/><circle r="12" cy="278" cx="108" style="marker:none" color="#000" overflow="visible" fill="url(#c)"/><path style="marker:none" d="M92 256c0 .666 0 1-.235 1.932-1.165.59-4.765 4.542-5.787 5.822-.502.246-1.295.246-1.978.246a8 8 0 1 1 8-8z" color="#000" overflow="visible" fill="#d5d3cf"/><circle style="marker:none" cx="84" cy="254" r="8" color="#000" overflow="visible" fill="url(#d)"/><circle r="8" cy="214" cx="84" style="marker:none" color="#000" overflow="visible" fill="url(#e)"/><path style="marker:none" fill="#d5d3cf" d="M22 203h2v69h-2z"/><circle r="12" cy="280" cx="20" style="marker:none" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M46 222h2v26h-2z"/><circle r="8" cy="216" cx="44" style="marker:none" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M43.586 259.586L45 261l-15 15-1.414-1.414z"/><path d="M7.912 192c0 6.627 5.372 12 12 12 1.849 0 3.222-.095 5.165-1.166 1.092-1.726 3.55-4.584 5.668-5.666 1.071-1.944 1.167-3.318 1.167-5.168 0-6.627-5.373-12-12-12-6.628 0-12 5.373-12 12z" style="marker:none" color="#000" overflow="visible" fill="#d5d3cf"/><path style="marker:none" fill="#d5d3cf" d="M40.077 214.953l-1.414 1.415-15-15 1.415-1.414z"/><circle r="12" cy="190" cx="20" style="marker:none" color="#000" overflow="visible" fill="url(#f)"/><circle style="marker:none" cx="20" cy="278" r="12" color="#000" overflow="visible" fill="url(#g)"/><circle style="marker:none" cx="44" cy="214" r="8" color="#000" overflow="visible" fill="url(#h)"/><path d="M36 256c0 .666 0 1 .235 1.932 1.165.59 4.765 4.542 5.787 5.822.502.246 1.295.246 1.978.246a8 8 0 1 0-8-8z" style="marker:none" color="#000" overflow="visible" fill="#d5d3cf"/><circle r="8" cy="254" cx="44" style="marker:none" color="#000" overflow="visible" fill="url(#i)"/></g></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/dark-mode-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/dark-mode-symbolic.svg new file mode 100644 index 0000000..256ca41 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/dark-mode-symbolic.svg @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<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" + inkscape:version="1.0beta2 (2b71d25d45, 2019-12-03)" + sodipodi:docname="dark-mode-symbolic.svg" + id="svg8" + version="1.1" + height="16" + width="16"> + <metadata + id="metadata14"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs12" /> + <sodipodi:namedview + inkscape:current-layer="g6" + inkscape:window-maximized="1" + inkscape:window-y="0" + inkscape:window-x="0" + inkscape:cy="9.636866" + inkscape:cx="14.061833" + inkscape:zoom="35.858323" + showgrid="true" + id="namedview10" + inkscape:window-height="1016" + inkscape:window-width="1920" + inkscape:pageshadow="2" + inkscape:pageopacity="0" + guidetolerance="10" + gridtolerance="10" + objecttolerance="10" + borderopacity="1" + inkscape:document-rotation="0" + bordercolor="#666666" + pagecolor="#ffffff"> + <inkscape:grid + id="grid841" + type="xygrid" /> + </sodipodi:namedview> + <g + id="g6" + fill="#2e3436"> + <path + d="M 8 4.0058594 C 5.805 4.0058594 4 5.8108594 4 8.0058594 C 4 10.200859 5.805 12.005859 8 12.005859 C 10.195 12.005859 12 10.200859 12 8.0058594 C 12 5.8108594 10.195 4.0058594 8 4.0058594 z M 8 6 C 9.1007925 6 10.005859 6.9050669 10.005859 8.0058594 C 10.005859 9.1066519 9.1007925 10.011719 8 10.011719 C 6.8992075 10.011719 5.9941406 9.1066519 5.9941406 8.0058594 C 5.9941406 6.9050669 6.8992075 6 8 6 z " + style="line-height:normal;-inkscape-font-specification:Sans;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" + id="path2" /> + <path + style="fill:#2e3436;fill-opacity:1" + d="m 12.596194,2.6966997 0.707107,0.7071067 c 0.195869,0.1958686 0.195869,0.5112382 0,0.7071068 L 12.596194,4.81802 c -0.195868,0.1958686 -0.511238,0.1958686 -0.707106,0 L 11.181981,4.1109132 c -0.195817,-0.1950323 -0.195817,-0.5120745 0,-0.7071068 l 0.707107,-0.7071067 c 0.195868,-0.1958686 0.511238,-0.1958686 0.707106,0 z m -8.4852811,8.4852813 0.7071068,0.707107 c 0.1958686,0.195868 0.1958686,0.511238 0,0.707107 l -0.7071068,0.707106 c -0.1958686,0.195869 -0.5112382,0.195869 -0.7071068,0 L 2.6966994,12.596195 c -0.1958161,-0.195033 -0.1958166,-0.512075 0,-0.707107 l 0.7071067,-0.707107 c 0.1958686,-0.195869 0.5112382,-0.195869 0.7071068,0 z M 7.5000757,1.0005015 h 0.999849 C 8.7762374,0.99998906 9.0003616,1.2241133 8.9998492,1.500426 V 2.500124 C 9.0003616,2.7764366 8.7762374,3.0005609 8.4999247,3.0000485 H 7.5000757 C 7.2237631,3.0005609 6.9996388,2.7764366 7.0001512,2.500124 V 1.500426 C 6.9996388,1.2241133 7.2237631,0.99998906 7.5000757,1.0005015 Z M 7.4993686,13.00066 8.4999247,12.999953 c 0.2763126,-5.13e-4 0.5004372,0.223611 0.4999245,0.499924 l 7.071e-4,1.000405 c 5.127e-4,0.276313 -0.2236119,0.500437 -0.4999245,0.499925 L 7.5000757,14.9995 C 7.2237631,15.000012 6.9996386,14.775888 7.0001512,14.499575 V 13.499877 C 6.9996386,13.223564 7.2237631,12.99944 7.5000757,12.999953 Z M 1.0005012,8.499925 V 7.500076 C 0.99998861,7.2237635 1.2241132,6.9996389 1.5004257,7.0001515 h 0.999698 C 2.7764364,6.999639 3.0005607,7.2237633 3.0000482,7.500076 V 8.499925 C 3.0005607,8.7762375 2.7764362,9.0003621 2.5001237,8.9998495 H 1.5004257 C 1.224113,9.000362 0.99998869,8.7762377 1.0005012,8.499925 Z M 13.000659,8.5006321 12.999952,7.500076 C 12.99944,7.2237633 13.223564,6.999639 13.499877,7.0001515 h 0.999698 c 0.276312,-5.126e-4 0.500437,0.223612 0.499924,0.4999245 l 7.07e-4,1.0005561 c 5.13e-4,0.2763127 -0.223611,0.500437 -0.499924,0.4999245 L 13.499877,8.9998495 C 13.223564,9.0003621 12.99944,8.7762375 12.999952,8.499925 Z m 0.302642,4.0955629 -0.707107,0.707106 c -0.195868,0.195869 -0.511238,0.195869 -0.707106,0 l -0.707107,-0.707106 c -0.195817,-0.195033 -0.195816,-0.512075 0,-0.707107 l 0.707107,-0.707107 c 0.195868,-0.195869 0.511238,-0.195869 0.707106,0 l 0.707107,0.707107 c 0.195869,0.195868 0.195869,0.511238 0,0.707107 z M 4.8180197,4.1109132 4.1109129,4.81802 c -0.1958686,0.1958686 -0.5112382,0.1958686 -0.7071068,0 L 2.6966994,4.1109132 c -0.1958164,-0.1950323 -0.1958164,-0.5120745 0,-0.7071068 L 3.4038061,2.6966997 c 0.1958686,-0.1958686 0.5112382,-0.1958686 0.7071068,0 l 0.7071068,0.7071067 c 0.1958686,0.1958686 0.1958686,0.5112382 0,0.7071068 z" + id="path844" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sssssccsssssssccssccccccccccccccccccccccccccccccccccccccsssccsssssssccssss" /> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/light-mode-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/light-mode-symbolic.svg new file mode 100644 index 0000000..c2e769b --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/light-mode-symbolic.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"> + <g fill="#2e3436"> + <path d="M8 4.006c-2.195 0-4 1.805-4 4 0 2.195 1.805 4 4 4 2.195 0 4-1.805 4-4 0-2.195-1.805-4-4-4z" style="line-height:normal;-inkscape-font-specification:Sans;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" color="#bebebe" font-weight="400" font-family="Sans" overflow="visible"/> + <path d="M7.5 0h1c.277 0 .5.223.5.5v2c0 .277-.223.5-.5.5h-1a.499.499 0 0 1-.5-.5v-2c0-.277.223-.5.5-.5zM7.5 13h1c.277 0 .5.223.5.5v2c0 .277-.223.5-.5.5h-1a.499.499 0 0 1-.5-.5v-2c0-.277.223-.5.5-.5zM1.99 2.697l.707-.707a.499.499 0 0 1 .707 0l1.414 1.414a.499.499 0 0 1 0 .707l-.707.707a.499.499 0 0 1-.707 0L1.99 3.404a.499.499 0 0 1 0-.707zM11.182 11.89l.707-.708a.499.499 0 0 1 .707 0l1.415 1.414a.499.499 0 0 1 0 .707l-.708.707a.499.499 0 0 1-.707 0l-1.414-1.414a.499.499 0 0 1 0-.707zM2.697 14.01l-.707-.707a.499.499 0 0 1 0-.707l1.414-1.414a.499.499 0 0 1 .707 0l.707.707a.499.499 0 0 1 0 .707L3.404 14.01a.499.499 0 0 1-.707 0zM11.89 4.818l-.708-.707a.499.499 0 0 1 0-.707l1.414-1.414a.499.499 0 0 1 .707 0l.708.707a.499.499 0 0 1 0 .707l-1.415 1.414a.499.499 0 0 1-.707 0zM16 7.5v1c0 .277-.223.5-.5.5h-2a.499.499 0 0 1-.5-.5v-1c0-.277.223-.5.5-.5h2c.277 0 .5.223.5.5zM3 7.5v1c0 .277-.223.5-.5.5h-2a.499.499 0 0 1-.5-.5v-1c0-.277.223-.5.5-.5h2c.277 0 .5.223.5.5z"/> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-muted-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-muted-symbolic.svg new file mode 100644 index 0000000..0c44c8c --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-muted-symbolic.svg @@ -0,0 +1 @@ +<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path style="fill:#2e3436" d="M8 2a1 1 0 0 0-.768.354L5 5H4c-1.108 0-2 .892-2 2v2c0 1.108.892 2 2 2h1.004l2.228 2.635a.97.97 0 0 0 .768.36Zm5.945 2.996a.985.985 0 0 0-.652.297L12 6.586l-1.293-1.293A1 1 0 0 0 10 5c-.89 0-1.337 1.077-.707 1.707L10.586 8 9.293 9.293c-.91.942.472 2.324 1.414 1.414L12 9.414l1.293 1.293c.942.91 2.324-.472 1.414-1.414L13.414 8l1.293-1.293c.711-.736.023-1.74-.762-1.71Z"/></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-playing-symbolic.svg b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-playing-symbolic.svg new file mode 100644 index 0000000..de03837 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/hicolor/scalable/status/tab-audio-playing-symbolic.svg @@ -0,0 +1 @@ +<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path style="fill:#2e3436;fill-opacity:1;stroke-width:1px;stroke-linejoin:miter" d="M11.04 2.004a.951.951 0 0 0-.727.281L8 4.578V6h1.39l2.305-2.299a1.017 1.017 0 0 0 .03-1.392 1.008 1.008 0 0 0-.686-.305ZM8 7v2h4c.75 0 1-.501 1-1.002 0-.5-.25-.998-1-.998Zm0 3v1.422l2.322 2.293c.405.411 1.065.346 1.414-.024a1.017 1.017 0 0 0-.03-1.392L9.39 10Z"/><path style="fill:#2e3436" d="M7 2a1 1 0 0 0-.768.354L4 5H3c-1.108 0-2 .892-2 2v2c0 1.108.892 2 2 2h1.004l2.228 2.635a.97.97 0 0 0 .768.36Z"/></svg>
\ No newline at end of file diff --git a/examples/adw-1/adw1-demo/icons/org.example.Typeset.Source.svg b/examples/adw-1/adw1-demo/icons/org.example.Typeset.Source.svg new file mode 100644 index 0000000..392d686 --- /dev/null +++ b/examples/adw-1/adw1-demo/icons/org.example.Typeset.Source.svg @@ -0,0 +1,3635 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + inkscape:export-ydpi="96" + inkscape:export-xdpi="96" + inkscape:export-filename="Template.png" + width="192" + height="152" + id="svg11300" + sodipodi:version="0.32" + inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" + sodipodi:docname="nonexistant.app.Typeset.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0" + style="display:inline;enable-background:new" + viewBox="0 0 192 152" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <title + id="title4162">Adwaita Icon Template</title> + <defs + id="defs3"> + <linearGradient + id="linearGradient1154" + inkscape:collect="always"> + <stop + id="stop1142" + offset="0" + style="stop-color:#77767b;stop-opacity:1" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.05000014" + id="stop1144" /> + <stop + id="stop1146" + offset="0.09980702" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + style="stop-color:#9a9996;stop-opacity:1" + offset="0.90000081" + id="stop1148" /> + <stop + id="stop1150" + offset="0.95000082" + style="stop-color:#c0bfbc;stop-opacity:1" /> + <stop + id="stop1152" + offset="1" + style="stop-color:#77767b;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1078" + id="linearGradient914" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25,0,0,0.25,-460.60691,395.4264)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + id="linearGradient1078" + inkscape:collect="always"> + <stop + id="stop1066" + offset="0" + style="stop-color:#77767b;stop-opacity:1" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.03571429" + id="stop1068" /> + <stop + id="stop1070" + offset="0.07136531" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + style="stop-color:#9a9996;stop-opacity:1" + offset="0.9285714" + id="stop1072" /> + <stop + id="stop1074" + offset="0.96428573" + style="stop-color:#c0bfbc;stop-opacity:1" /> + <stop + id="stop1076" + offset="1" + style="stop-color:#77767b;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1073" + id="linearGradient1064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.23214285,0,0,0.32894738,-376.56691,435.82697)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + inkscape:collect="always" + id="linearGradient1073"> + <stop + style="stop-color:#77767b;stop-opacity:1" + offset="0" + id="stop1060" /> + <stop + id="stop1062" + offset="0.03846154" + style="stop-color:#c0bfbc;stop-opacity:1" /> + <stop + style="stop-color:#9a9996;stop-opacity:1" + offset="0.07685554" + id="stop1064" /> + <stop + id="stop1067" + offset="0.92307693" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.96153849" + id="stop1069" /> + <stop + style="stop-color:#77767b;stop-opacity:1" + offset="1" + id="stop1071" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1154" + id="linearGradient1140" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.19642829,0,0,0.34210528,-365.40268,445.74005)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10876" + id="linearGradient1001" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.8293937,-0.81599442,0.81599442,1.8293937,-4327.9736,278.58079)" + x1="1660.8571" + y1="806.29718" + x2="1662.9901" + y2="812.88245" /> + <linearGradient + inkscape:collect="always" + id="linearGradient10876"> + <stop + style="stop-color:#949390;stop-opacity:1" + offset="0" + id="stop10872" /> + <stop + style="stop-color:#68676b;stop-opacity:1" + offset="1" + id="stop10874" /> + </linearGradient> + <linearGradient + gradientTransform="translate(-693.32504,153.44901)" + inkscape:collect="always" + xlink:href="#linearGradient988" + id="linearGradient990" + x1="64.000008" + y1="202.38483" + x2="64.000008" + y2="444.5" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient988"> + <stop + style="stop-color:#a347ba;stop-opacity:1;" + offset="0" + id="stop984" /> + <stop + style="stop-color:#c061cb;stop-opacity:1" + offset="1" + id="stop986" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1879" + id="linearGradient1053" + x1="384" + y1="120" + x2="416" + y2="120" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25,0,0,0.25,-681.32503,374.44901)" /> + <linearGradient + id="linearGradient1879" + inkscape:collect="always"> + <stop + id="stop1873" + offset="0" + style="stop-color:#e8e7e4;stop-opacity:1" /> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="0.51104856" + id="stop1875" /> + <stop + id="stop1877" + offset="1" + style="stop-color:#c2bfba;stop-opacity:1" /> + </linearGradient> + <linearGradient + y2="236" + x2="96" + y1="236" + x1="32" + gradientTransform="translate(604.81684,170.58641)" + gradientUnits="userSpaceOnUse" + id="linearGradient1099" + xlink:href="#linearGradient1036" /> + <linearGradient + id="linearGradient1036"> + <stop + id="stop1032" + offset="0" + style="stop-color:#d5d3cf;stop-opacity:1;" /> + <stop + id="stop1034" + offset="1" + style="stop-color:#f6f5f4;stop-opacity:1" /> + </linearGradient> + <radialGradient + r="32" + fy="-76" + fx="-244" + cy="-76" + cx="-244" + gradientTransform="matrix(0.88333331,0,0,0.88333331,-460.35018,463.11973)" + gradientUnits="userSpaceOnUse" + id="radialGradient1103" + xlink:href="#linearGradient1069" /> + <linearGradient + id="linearGradient1069"> + <stop + id="stop1065" + offset="0" + style="stop-color:#d5d3cf;stop-opacity:1" /> + <stop + id="stop1067-1" + offset="1" + style="stop-color:#949390;stop-opacity:1" /> + </linearGradient> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="232" + x2="64" + y1="262.5" + x1="64" + id="linearGradient1027" + xlink:href="#linearGradient1025" + gradientTransform="translate(-470.5864,432.81685)" /> + <linearGradient + id="linearGradient1025"> + <stop + id="stop1021" + offset="0" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + id="stop1023" + offset="1" + style="stop-color:#77767b;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1020"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop1016" /> + <stop + style="stop-color:#ffffff;stop-opacity:0.09411765" + offset="1" + id="stop1018" /> + </linearGradient> + <inkscape:path-effect + effect="spiro" + id="path-effect35304-9" + is_visible="true" /> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath1609-7"> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="path1611-5" + d="m 252,116 28,-28 v -8 h -36 v 36 z" + style="fill:#e74747;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1697" + id="linearGradient1049" + x1="20" + y1="238" + x2="108" + y2="238" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient1697"> + <stop + id="stop1685" + offset="0" + style="stop-color:#deddda;stop-opacity:1" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1" + offset="0.04545455" + id="stop1687" /> + <stop + id="stop1689" + offset="0.09090909" + style="stop-color:#deddda;stop-opacity:1" /> + <stop + style="stop-color:#deddda;stop-opacity:1" + offset="0.90909094" + id="stop1691" /> + <stop + id="stop1693" + offset="0.95454544" + style="stop-color:#eeeeec;stop-opacity:1" /> + <stop + id="stop1695" + offset="1" + style="stop-color:#c0bfbc;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1245"> + <stop + style="stop-color:#9a9996;stop-opacity:1" + offset="0" + id="stop1241" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="1" + id="stop1243" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath1289"> + <path + style="display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m 64,-148 h 64 l 64,-64 64,64 h 192 c 17.728,0 32,14.272 32,32 v 288 c 0,17.728 -14.272,32 -32,32 H 256 l -64,-64 -64,64 H 64 C 46.272,204 32,189.728 32,172 v -288 c 0,-17.728 14.408898,-34.19889 32,-32 z" + id="path1291" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccsssscccssss" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#paint3_linear-2-6-5" + id="linearGradient1383" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0,6,-12,0,-264,209.99687)" + x2="1" /> + <linearGradient + id="paint3_linear-2-6-5" + x2="1" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0,6,-12,0,-64,209.99687)"> + <stop + stop-color="#C01C27" + id="stop91-0-7-4" /> + <stop + offset="1" + stop-color="#E01B24" + id="stop93-2-5-7" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6058" + id="radialGradient1099" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.757743,-9.5621778e-8,3.7652438e-8,1.9495846,-82.64437,131.95505)" + cx="-24.238829" + cy="225.59558" + fx="-24.238829" + fy="225.59558" + r="24" /> + <linearGradient + inkscape:collect="always" + id="linearGradient6058"> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="0" + id="stop6054" /> + <stop + style="stop-color:#f6f5f4;stop-opacity:1" + offset="1" + id="stop6056" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1115" + id="linearGradient1097" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0015061,0,0,0.99993452,-117.15963,352.51519)" + x1="43.843597" + y1="234.00014" + x2="-60.000004" + y2="234.00014" /> + <linearGradient + id="linearGradient1115" + inkscape:collect="always"> + <stop + id="stop1103" + offset="0" + style="stop-color:#d5d3cf;stop-opacity:1" /> + <stop + style="stop-color:#e3e2df;stop-opacity:1" + offset="0.03846154" + id="stop1105" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.07692308" + id="stop1107" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.92307693" + id="stop1109" /> + <stop + style="stop-color:#e3e2df;stop-opacity:1" + offset="0.96153843" + id="stop1111" /> + <stop + id="stop1113" + offset="1" + style="stop-color:#d5d3cf;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1351-3" + id="linearGradient1574" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25,0,0,0.25,180,83)" + x1="344" + y1="76" + x2="340" + y2="72" /> + <linearGradient + inkscape:collect="always" + id="linearGradient1351-3"> + <stop + style="stop-color:#d5d3cf;stop-opacity:1" + offset="0" + id="stop1347" /> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="1" + id="stop1349-6" /> + </linearGradient> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath1609"> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="path1611" + d="m 252,116 28,-28 v -8 h -36 v 36 z" + style="fill:#e74747;stroke:none;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1187" + id="linearGradient1572" + gradientUnits="userSpaceOnUse" + x1="256" + y1="268" + x2="256" + y2="-180.00006" /> + <linearGradient + inkscape:collect="always" + id="linearGradient1187"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop1183" /> + <stop + style="stop-color:#ffffff;stop-opacity:1" + offset="1" + id="stop1185" /> + </linearGradient> + <linearGradient + id="linearGradient985" + inkscape:collect="always"> + <stop + id="stop981" + offset="0" + style="stop-color:#f9f06b;stop-opacity:1" /> + <stop + id="stop983" + offset="1" + style="stop-color:#f9f06b;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1076"> + <stop + style="stop-color:#d5d3cf;stop-opacity:1" + offset="0" + id="stop1064-3" /> + <stop + id="stop1066-7" + offset="0.03571428" + style="stop-color:#e4e1de;stop-opacity:1" /> + <stop + style="stop-color:#d5d3cf;stop-opacity:1" + offset="0.07142857" + id="stop1068-5" /> + <stop + id="stop1070-9" + offset="0.9285714" + style="stop-color:#d5d3cf;stop-opacity:1" /> + <stop + style="stop-color:#e4e1de;stop-opacity:1" + offset="0.96428573" + id="stop1072-2" /> + <stop + style="stop-color:#d5d3cf;stop-opacity:1" + offset="1" + id="stop1074-2" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient985" + id="linearGradient1106-2-7" + x1="301" + y1="33.559235" + x2="104" + y2="33.559235" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25,0,0,0.25,-375.35922,572.37304)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient1020" + id="radialGradient1030-8-1" + cx="63.999996" + cy="194.19048" + fx="63.999996" + fy="194.19048" + r="44" + gradientTransform="matrix(-4.1363634,1.2532736e-6,-2.6513804e-7,-1.3909091,-54.131932,-340.73849)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1076" + id="linearGradient1444-2-3-3-3" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25,0,0,0.25,-395.35922,460.38207)" + x1="120" + y1="619.96387" + x2="568" + y2="619.96387" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1697" + id="linearGradient1278" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(2,-22)" + x1="50" + y1="238" + x2="74" + y2="238" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1245" + id="linearGradient1280" + gradientUnits="userSpaceOnUse" + x1="65" + y1="204" + x2="65" + y2="200" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1073-0" + id="linearGradient8402" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.23214285,0,0,0.20394738,-8.5666383,379.65249)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + id="linearGradient1073-0" + inkscape:collect="always"> + <stop + id="stop1060-3" + offset="0" + style="stop-color:#63452c;stop-opacity:1" /> + <stop + style="stop-color:#865e3c;stop-opacity:1" + offset="0.03846154" + id="stop1062-4" /> + <stop + id="stop1064-0" + offset="0.07685554" + style="stop-color:#63452c;stop-opacity:1" /> + <stop + style="stop-color:#63452c;stop-opacity:1" + offset="0.92307693" + id="stop1067-3" /> + <stop + id="stop1069-9" + offset="0.96153849" + style="stop-color:#865e3c;stop-opacity:1" /> + <stop + id="stop1071-1" + offset="1" + style="stop-color:#63452c;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1182" + id="linearGradient8404" + gradientUnits="userSpaceOnUse" + x1="30" + y1="264" + x2="104" + y2="278" /> + <linearGradient + id="linearGradient1182" + inkscape:collect="always"> + <stop + id="stop1178" + offset="0" + style="stop-color:#deddda;stop-opacity:1" /> + <stop + id="stop1180" + offset="1" + style="stop-color:#c0bfbc;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1073-0" + id="linearGradient8406" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.23214285,0,0,0.125,-8.5666383,318.17401)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1928" + id="linearGradient8408" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.23214285,0,0,0.20394738,-8.5666383,379.65249)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + inkscape:collect="always" + id="linearGradient1928"> + <stop + style="stop-color:#3d3846;stop-opacity:1" + offset="0" + id="stop1916" /> + <stop + id="stop1918" + offset="0.03846154" + style="stop-color:#77767b;stop-opacity:1" /> + <stop + style="stop-color:#3d3846;stop-opacity:1" + offset="0.07685554" + id="stop1920" /> + <stop + id="stop1922" + offset="0.92307693" + style="stop-color:#3d3846;stop-opacity:1" /> + <stop + style="stop-color:#77767b;stop-opacity:1" + offset="0.96153849" + id="stop1924" /> + <stop + style="stop-color:#3d3846;stop-opacity:1" + offset="1" + id="stop1926" /> + </linearGradient> + <linearGradient + y2="278" + x2="104" + y1="264" + x1="30" + gradientUnits="userSpaceOnUse" + id="linearGradient1938" + xlink:href="#linearGradient2212" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2212"> + <stop + style="stop-color:#f6f5f4;stop-opacity:1" + offset="0" + id="stop2208" /> + <stop + style="stop-color:#deddda;stop-opacity:1" + offset="1" + id="stop2210" /> + </linearGradient> + <clipPath + id="clipPath1992" + clipPathUnits="userSpaceOnUse"> + <rect + style="opacity:0.2;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4;stroke-opacity:1" + id="rect1994" + width="104" + height="8" + x="12" + y="248" /> + </clipPath> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2008" + id="linearGradient1932" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.25000058,0,0,0.1249992,-14.149027,308.17365)" + x1="88.595886" + y1="-449.39401" + x2="536.59589" + y2="-449.39401" /> + <linearGradient + id="linearGradient2008" + inkscape:collect="always"> + <stop + id="stop1996" + offset="0" + style="stop-color:#1a5fb4;stop-opacity:1" /> + <stop + style="stop-color:#3584e4;stop-opacity:1" + offset="0.03846154" + id="stop1998" /> + <stop + id="stop2000" + offset="0.07685554" + style="stop-color:#1a5fb4;stop-opacity:1" /> + <stop + style="stop-color:#1a5fb4;stop-opacity:1" + offset="0.92307693" + id="stop2002" /> + <stop + id="stop2004" + offset="0.96153849" + style="stop-color:#3584e4;stop-opacity:1" /> + <stop + id="stop2006" + offset="1" + style="stop-color:#1a5fb4;stop-opacity:1" /> + </linearGradient> + <linearGradient + y2="220" + x2="67.000298" + y1="220" + x1="60.999699" + gradientTransform="rotate(60,83.052899,209.00012)" + gradientUnits="userSpaceOnUse" + id="linearGradient2370-3" + xlink:href="#linearGradient5442" + inkscape:collect="always" /> + <linearGradient + inkscape:collect="always" + id="linearGradient5442"> + <stop + style="stop-color:#5e5c64;stop-opacity:1" + offset="0" + id="stop5436" /> + <stop + id="stop5438" + offset="0.5" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + style="stop-color:#3d3846;stop-opacity:1" + offset="1" + id="stop5440" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2016" + id="linearGradient8414" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6666251,0,0,2.6666251,-106.66373,343.65773)" + x1="58" + y1="-211" + x2="70" + y2="-211" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2016"> + <stop + style="stop-color:#77767b;stop-opacity:1" + offset="0" + id="stop2010" /> + <stop + id="stop2012" + offset="0.5" + style="stop-color:#9a9996;stop-opacity:1" /> + <stop + style="stop-color:#77767b;stop-opacity:1" + offset="1" + id="stop2014" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5182" + id="linearGradient8416" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,174)" + x1="58" + y1="43.49958" + x2="70" + y2="43.49958" /> + <linearGradient + inkscape:collect="always" + id="linearGradient5182"> + <stop + style="stop-color:#5e5c64;stop-opacity:1" + offset="0" + id="stop5176" /> + <stop + id="stop5178" + offset="0.5" + style="stop-color:#c0bfbc;stop-opacity:1" /> + <stop + style="stop-color:#3d3846;stop-opacity:1" + offset="1" + id="stop5180" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1799" + id="linearGradient8422" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.9999773,0,0,1.9999773,-63.998267,221.99516)" + x1="58" + y1="-211" + x2="70" + y2="-211" /> + <linearGradient + id="linearGradient1799" + inkscape:collect="always"> + <stop + id="stop1793" + offset="0" + style="stop-color:#77767b;stop-opacity:1" /> + <stop + style="stop-color:#c0bfbc;stop-opacity:1" + offset="0.5" + id="stop1795" /> + <stop + id="stop1797" + offset="1" + style="stop-color:#77767b;stop-opacity:1" /> + </linearGradient> + <radialGradient + r="7.9999094" + fy="-64.000015" + fx="-194.83652" + cy="-64.000015" + cx="-194.83652" + gradientTransform="matrix(0.77469554,0,0,0.77469569,-41.560819,-14.419746)" + gradientUnits="userSpaceOnUse" + id="radialGradient1505-1" + xlink:href="#linearGradient1183" + inkscape:collect="always" /> + <linearGradient + id="linearGradient1183"> + <stop + id="stop1179" + offset="0" + style="stop-color:#deddda;stop-opacity:1" /> + <stop + id="stop1181" + offset="1" + style="stop-color:#77767b;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1799" + id="linearGradient8424" + gradientUnits="userSpaceOnUse" + gradientTransform="rotate(60,83.052899,209.00011)" + x1="60.999699" + y1="220" + x2="67.000298" + y2="220" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5442" + id="linearGradient143387" + gradientUnits="userSpaceOnUse" + gradientTransform="rotate(60,83.052899,209.00012)" + x1="60.999699" + y1="220" + x2="67.000298" + y2="220" /> + </defs> + <sodipodi:namedview + stroke="#ef2929" + fill="#f57900" + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="0.25490196" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="6.3958359" + inkscape:cx="55.504864" + inkscape:cy="107.25729" + inkscape:current-layer="layer9" + showgrid="false" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:showpageshadow="false" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + width="400px" + height="300px" + inkscape:snap-nodes="true" + inkscape:snap-bbox="true" + objecttolerance="7" + gridtolerance="12" + guidetolerance="13" + inkscape:window-maximized="1" + inkscape:pagecheckerboard="false" + showguides="false" + inkscape:guide-bbox="true" + inkscape:locked="false" + inkscape:measure-start="0,0" + inkscape:measure-end="0,0" + inkscape:object-nodes="true" + inkscape:bbox-nodes="true" + inkscape:snap-global="true" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + showborder="true" + inkscape:snap-center="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:snap-text-baseline="true" + borderlayer="true" + inkscape:deskcolor="#d1d1d1"> + <inkscape:grid + type="xygrid" + id="grid5883" + spacingx="2" + spacingy="2" + enabled="true" + visible="true" + empspacing="4" + originx="8" + originy="8" /> + <sodipodi:guide + position="72,16" + orientation="0,1" + id="guide1073" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="20,72" + orientation="1,0" + id="guide1075" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,112" + orientation="0,1" + id="guide1099" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,136" + orientation="0,1" + id="guide993" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="112,72" + orientation="1,0" + id="guide995" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="8.0000001,72" + orientation="1,0" + id="guide867" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="128,72" + orientation="1,0" + id="guide869" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,124" + orientation="0,1" + id="guide871" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <inkscape:grid + type="xygrid" + id="grid873" + spacingx="1" + spacingy="1" + empspacing="8" + color="#000000" + opacity="0.49019608" + empcolor="#000000" + empopacity="0.08627451" + dotted="true" + originx="8" + originy="8" /> + <sodipodi:guide + position="32,72" + orientation="1,0" + id="guide877" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="124,72" + orientation="1,0" + id="guide879" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,128" + orientation="0,1" + id="guide881" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,20" + orientation="0,1" + id="guide883" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="16,72" + orientation="1,0" + id="guide885" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="136,72" + orientation="1,0" + id="guide887" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,8" + orientation="0,1" + id="guide897" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,32" + orientation="0,1" + id="guide899" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="264,264" + orientation="-0.70710678,0.70710678" + id="guide950" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + <sodipodi:guide + position="72,72" + orientation="0.70710678,0.70710678" + id="guide952" + inkscape:locked="false" + inkscape:label="" + inkscape:color="rgb(0,0,255)" /> + </sodipodi:namedview> + <metadata + id="metadata4"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:creator> + <cc:Agent> + <dc:title>GNOME Design Team</dc:title> + </cc:Agent> + </dc:creator> + <dc:source /> + <cc:license + rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /> + <dc:title>Adwaita Icon Template</dc:title> + <dc:subject> + <rdf:Bag /> + </dc:subject> + <dc:date /> + <dc:rights> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:rights> + <dc:publisher> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:publisher> + <dc:identifier /> + <dc:relation /> + <dc:language /> + <dc:coverage /> + <dc:description /> + <dc:contributor> + <cc:Agent> + <dc:title /> + </cc:Agent> + </dc:contributor> + </cc:Work> + <cc:License + rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Notice" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#Attribution" /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /> + <cc:requires + rdf:resource="http://creativecommons.org/ns#ShareAlike" /> + </cc:License> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="App Icon" + inkscape:groupmode="layer" + style="display:inline" + transform="translate(8,-156)"> + <g + inkscape:groupmode="layer" + id="layer4" + inkscape:label="template" + style="display:inline" + sodipodi:insensitive="true"> + <rect + inkscape:label="0" + y="172" + x="9.2651362e-08" + height="128" + width="128" + id="hicolor" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="symbolic" + width="16" + height="16" + x="160" + y="172" + inkscape:label="0" /> + </g> + <g + inkscape:groupmode="layer" + id="layer2" + inkscape:label="baseplate" + style="display:inline" + sodipodi:insensitive="true"> + <g + id="g1481" + transform="translate(0,168)"> + <g + id="g1430" + transform="translate(-502.58934,-158.75232)"> + <rect + inkscape:label="512x512" + y="330.75232" + x="4.5893426" + height="128" + width="128" + id="rect1418" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <circle + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle1420" + r="59.504131" + cy="394.75232" + cx="68.589371" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1422" + width="87.009987" + height="111.01005" + x="25.084349" + y="339.24728" + rx="8.701004" + ry="7.9292889" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1424" + width="103.00952" + height="103.00952" + x="17.084608" + y="343.24756" + rx="7.9238095" + ry="7.9238095" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1426" + width="111.01004" + height="87.010048" + x="13.08435" + y="359.24728" + rx="7.9292889" + ry="8.701005" /> + <path + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 4.5893689,447.7523 H 132.58937" + id="path1428" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-358.58936,-158.75232)" + id="g1444"> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="rect1432" + width="128" + height="128" + x="4.5893426" + y="330.75232" + inkscape:label="512x512" /> + <circle + cx="68.589371" + cy="394.75232" + r="59.504131" + id="circle1434" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9292889" + rx="8.701004" + y="339.24728" + x="25.084349" + height="111.01005" + width="87.009987" + id="rect1436" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9238095" + rx="7.9238095" + y="343.24756" + x="17.084608" + height="103.00952" + width="103.00952" + id="rect1438" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8.701005" + rx="7.9292889" + y="359.24728" + x="13.08435" + height="87.010048" + width="111.01004" + id="rect1440" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path1442" + d="M 4.5893689,447.7523 H 132.58937" + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + <g + id="g1458" + transform="translate(-214.58936,-158.75232)"> + <rect + inkscape:label="512x512" + y="330.75232" + x="4.5893426" + height="128" + width="128" + id="rect1446" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <circle + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle1448" + r="59.504131" + cy="394.75232" + cx="68.589371" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1450" + width="87.009987" + height="111.01005" + x="25.084349" + y="339.24728" + rx="8.701004" + ry="7.9292889" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1452" + width="103.00952" + height="103.00952" + x="17.084608" + y="343.24756" + rx="7.9238095" + ry="7.9238095" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1454" + width="111.01004" + height="87.010048" + x="13.08435" + y="359.24728" + rx="7.9292889" + ry="8.701005" /> + <path + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 4.5893689,447.7523 H 132.58937" + id="path1456" + inkscape:connector-curvature="0" /> + </g> + </g> + <g + style="display:inline;fill:#000000;enable-background:new" + transform="matrix(7.9911709,0,0,8.0036407,-167.7909,-4846.0776)" + id="g12027" + inkscape:export-xdpi="12" + inkscape:export-ydpi="12" /> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="128" + width="128" + height="128" + x="9.2651362e-08" + y="172" + inkscape:label="0" /> + <g + id="g883" + style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1" + transform="translate(-24,24)" /> + <g + id="g900" + style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1" + transform="translate(-24,24)" /> + <rect + inkscape:label="" + y="172" + x="160" + height="16" + width="16" + id="16" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new" + x="0" + y="167" + id="text863" + inkscape:label="icon-name"><tspan + style="font-size:4px;stroke-width:0.332649" + sodipodi:role="line" + id="tspan861" + x="0" + y="167">Hicolor</tspan></text> + <text + inkscape:label="icon-name" + id="text867" + y="167" + x="160" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.332649;enable-background:new" + xml:space="preserve"><tspan + y="167" + x="160" + id="tspan865" + sodipodi:role="line" + style="font-size:4px;stroke-width:0.332649">Symbolic</tspan></text> + <g + id="g1318" + transform="translate(-502.58934,-158.75232)"> + <rect + inkscape:label="512x512" + y="330.75232" + x="4.5893426" + height="128" + width="128" + id="rect13805-6" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <circle + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle2892-2" + r="59.504131" + cy="394.75232" + cx="68.589371" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect2894-9" + width="87.009987" + height="111.01005" + x="25.084349" + y="339.24728" + rx="8.701004" + ry="7.9292889" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect2896-1" + width="103.00952" + height="103.00952" + x="17.084608" + y="343.24756" + rx="7.9238095" + ry="7.9238095" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect2898-2" + width="111.01004" + height="87.010048" + x="13.08435" + y="359.24728" + rx="7.9292889" + ry="8.701005" /> + <path + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 4.5893689,447.7523 H 132.58937" + id="path2900-7" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-358.58936,-158.75232)" + id="g1332"> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="rect1320" + width="128" + height="128" + x="4.5893426" + y="330.75232" + inkscape:label="512x512" /> + <circle + cx="68.589371" + cy="394.75232" + r="59.504131" + id="circle1322" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9292889" + rx="8.701004" + y="339.24728" + x="25.084349" + height="111.01005" + width="87.009987" + id="rect1324" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9238095" + rx="7.9238095" + y="343.24756" + x="17.084608" + height="103.00952" + width="103.00952" + id="rect1326" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8.701005" + rx="7.9292889" + y="359.24728" + x="13.08435" + height="87.010048" + width="111.01004" + id="rect1328" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path1330" + d="M 4.5893689,447.7523 H 132.58937" + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + <g + id="g1346" + transform="translate(-214.58936,-158.75232)"> + <rect + inkscape:label="512x512" + y="330.75232" + x="4.5893426" + height="128" + width="128" + id="rect1334" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <circle + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle1336" + r="59.504131" + cy="394.75232" + cx="68.589371" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1338" + width="87.009987" + height="111.01005" + x="25.084349" + y="339.24728" + rx="8.701004" + ry="7.9292889" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1340" + width="103.00952" + height="103.00952" + x="17.084608" + y="343.24756" + rx="7.9238095" + ry="7.9238095" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1342" + width="111.01004" + height="87.010048" + x="13.08435" + y="359.24728" + rx="7.9292889" + ry="8.701005" /> + <path + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 4.5893689,447.7523 H 132.58937" + id="path1344" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(0,312)" + id="g1525"> + <g + transform="translate(-502.58934,-158.75232)" + id="g1495"> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="rect1483" + width="128" + height="128" + x="4.5893426" + y="330.75232" + inkscape:label="512x512" /> + <circle + cx="68.589371" + cy="394.75232" + r="59.504131" + id="circle1485" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9292889" + rx="8.701004" + y="339.24728" + x="25.084349" + height="111.01005" + width="87.009987" + id="rect1487" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9238095" + rx="7.9238095" + y="343.24756" + x="17.084608" + height="103.00952" + width="103.00952" + id="rect1489" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8.701005" + rx="7.9292889" + y="359.24728" + x="13.08435" + height="87.010048" + width="111.01004" + id="rect1491" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path1493" + d="M 4.5893689,447.7523 H 132.58937" + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + <g + id="g1509" + transform="translate(-358.58936,-158.75232)"> + <rect + inkscape:label="512x512" + y="330.75232" + x="4.5893426" + height="128" + width="128" + id="rect1497" + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" /> + <circle + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle1499" + r="59.504131" + cy="394.75232" + cx="68.589371" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1501" + width="87.009987" + height="111.01005" + x="25.084349" + y="339.24728" + rx="8.701004" + ry="7.9292889" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1503" + width="103.00952" + height="103.00952" + x="17.084608" + y="343.24756" + rx="7.9238095" + ry="7.9238095" /> + <rect + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1505" + width="111.01004" + height="87.010048" + x="13.08435" + y="359.24728" + rx="7.9292889" + ry="8.701005" /> + <path + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 4.5893689,447.7523 H 132.58937" + id="path1507" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-214.58936,-158.75232)" + id="g1523"> + <rect + style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate" + id="rect1511" + width="128" + height="128" + x="4.5893426" + y="330.75232" + inkscape:label="512x512" /> + <circle + cx="68.589371" + cy="394.75232" + r="59.504131" + id="circle1513" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9292889" + rx="8.701004" + y="339.24728" + x="25.084349" + height="111.01005" + width="87.009987" + id="rect1515" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9238095" + rx="7.9238095" + y="343.24756" + x="17.084608" + height="103.00952" + width="103.00952" + id="rect1517" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8.701005" + rx="7.9292889" + y="359.24728" + x="13.08435" + height="87.010048" + width="111.01004" + id="rect1519" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path1521" + d="M 4.5893689,447.7523 H 132.58937" + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer9" + inkscape:label="icons" + style="display:inline"> + <g + style="display:inline;enable-background:new" + id="g1064" + transform="translate(92.457943,4.92209)"> + <rect + ry="8" + rx="7.9999995" + y="207.07791" + x="-438.45795" + height="76" + width="112.00001" + id="rect884" + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient914);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect886" + width="112.00001" + height="84" + x="-438.45795" + y="195.07791" + rx="7.9999995" + ry="8" /> + </g> + <g + style="display:inline;enable-background:new" + id="g1096" + transform="translate(158)"> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient1064);fill-opacity:1;stroke:none;stroke-width:0.24999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1048" + width="104" + height="100" + x="-356" + y="188" + rx="7.999999" + ry="8" /> + <rect + ry="8" + rx="7.9999986" + y="184" + x="-356" + height="99.999992" + width="104" + id="rect929-36-9" + style="display:inline;opacity:1;vector-effect:none;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:0.24999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + </g> + <g + style="display:inline;enable-background:new" + id="g1138" + transform="translate(-130.00003)"> + <rect + ry="8" + rx="7.999999" + y="188" + x="-347.99994" + height="104" + width="87.999878" + id="rect1134" + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient1140);fill-opacity:1;stroke:none;stroke-width:0.24999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:0.24999996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1136" + width="88" + height="107.99999" + x="-347.99997" + y="180" + rx="7.9999967" + ry="8" /> + </g> + <g + style="display:inline;enable-background:new" + id="g1278" + transform="translate(184.01133,-10.5513)"> + <path + inkscape:connector-curvature="0" + id="path945" + d="m -558.01133,415.5513 a 59.999995,59.999995 0 0 1 -59.99999,60 59.999995,59.999995 0 0 1 -60,-60 59.999995,59.999995 0 0 1 60,-59.99999 59.999995,59.999995 0 0 1 59.99999,59.99999 z" + style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:0.01129822px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:0.01129822px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect978" + width="112" + height="114" + x="-674.01123" + y="357.5513" + rx="56" + ry="56" /> + <path + style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.01129822px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m -558.01133,413.5513 a 59.999995,59.999995 0 0 1 -59.99999,59.99999 59.999995,59.999995 0 0 1 -60,-59.99999 59.999995,59.999995 0 0 1 60,-60 59.999995,59.999995 0 0 1 59.99999,60 z" + id="path981" + inkscape:connector-curvature="0" /> + <circle + r="54" + style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:0.01129822px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="circle983" + cx="-618.01129" + cy="413.5513" /> + <path + inkscape:connector-curvature="0" + id="path928" + d="m -591.9764,386.54325 a 1.0016649,1.0016649 0 0 0 -0.77686,0.33008 l -21.97461,23.66504 a 5.9999995,5.9999995 0 0 0 -5.58203,-0.52246 l -14.2207,-15.80079 a 2.0033298,2.0033298 0 0 0 -1.60352,-0.68212 2.0033298,2.0033298 0 0 0 -1.37402,3.36181 l 14.21924,15.79932 a 5.9999995,5.9999995 0 0 0 -0.20997,5.30517 5.9999995,5.9999995 0 0 0 2.4043,2.69922 l -11.8584,30.49366 a 1.0016649,1.0016649 0 1 0 1.86719,0.72558 l 11.85742,-30.49121 a 5.9999995,5.9999995 0 0 0 3.65332,-0.39209 5.9999995,5.9999995 0 0 0 3.03516,-7.92383 5.9999995,5.9999995 0 0 0 -0.7251,-1.2041 l 21.9795,-23.66992 a 1.0016649,1.0016649 0 0 0 -0.69092,-1.69336 z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;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:evenodd;stroke:none;stroke-width:4.00625896;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" /> + <path + style="display:inline;fill:none;fill-rule:evenodd;stroke:url(#linearGradient1001);stroke-width:4.00625896;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m -618.01122,413.5513 -18,-20" + id="path987" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + inkscape:connector-curvature="0" + id="path989" + d="m -618.01122,413.5513 26.00001,-28" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.00312948;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + inkscape:transform-center-y="1.7677675" + sodipodi:nodetypes="cc" + inkscape:transform-center-x="-1.7677635" /> + <path + inkscape:transform-center-x="-1.767762" + sodipodi:nodetypes="cc" + inkscape:transform-center-y="1.7677675" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#e01b24;stroke-width:2.00312948;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m -618.01122,413.5513 -14,36" + id="path991" + inkscape:connector-curvature="0" /> + <circle + r="5.9999995" + cy="125.93015" + cx="-732.8739" + id="circle993" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#d5d3cf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7.77220678;stroke-linecap:round;stroke-linejoin:round;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" + transform="rotate(-24.039088)" /> + <circle + r="2.0031295" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#131c1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.01251698;stroke-linecap:round;stroke-linejoin:round;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="circle995" + cx="-617.98218" + cy="413.5513" /> + <circle + r="2" + cy="413.5513" + cx="-617.98218" + id="circle997" + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#131c1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8.01251698;stroke-linecap:round;stroke-linejoin:round;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 + inkscape:connector-curvature="0" + id="circle1003-6" + d="m -618.01122,359.5513 a 54,54 0 0 0 -54,54 54,54 0 0 0 0.0415,1.1709 54,54 0 0 1 53.9585,-53.1709 54,54 0 0 1 53.9585,52.82813 54,54 0 0 0 0.0415,-0.82813 54,54 0 0 0 -54.00001,-54 z" + style="display:inline;opacity:0.1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.01129822px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + </g> + <g + style="display:inline;enable-background:new" + id="g1365" + transform="translate(339.32504,14.55099)"> + <path + sodipodi:nodetypes="cccsscc" + inkscape:connector-curvature="0" + id="rect970" + d="m -681.32504,357.44901 v 84 h 96 c 4.432,0 8,-3.568 8,-8 v -68 c 0,-4.432 -3.568,-8 -8,-8 z" + style="display:inline;opacity:1;fill:#813d9c;fill-opacity:1;stroke:none;stroke-width:0.37684458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + <path + style="display:inline;opacity:1;fill:url(#linearGradient1053);fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m -679.32503,369.44901 v 70 h 93.99999 c 4.432,0 8,-3.568 8,-8 v -54 c 0,-4.432 -3.568,-8 -8,-8 z" + id="rect954-3-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccsscc" /> + <path + sodipodi:nodetypes="cccsscc" + inkscape:connector-curvature="0" + id="rect970-5-3" + d="m -681.32504,339.44901 v 94 h 96 c 4.432,0 8,-3.568 8,-8 v -78 c 0,-4.432 -3.568,-8 -8,-8 z" + style="display:inline;opacity:1;fill:#813d9c;fill-opacity:1;stroke:none;stroke-width:0.37684458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + <path + sodipodi:nodetypes="cccsscc" + inkscape:connector-curvature="0" + id="rect970-5" + d="m -681.32504,337.44901 v 94 h 96 c 4.432,0 8,-3.568 8,-8 v -78 c 0,-4.432 -3.568,-8 -8,-8 z" + style="display:inline;opacity:1;fill:url(#linearGradient990);fill-opacity:1;stroke:none;stroke-width:0.37684458;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + <g + transform="matrix(0.140625,0,0,0.140625,-722.55795,165.74946)" + aria-label="a" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:322.10223389px;line-height:1.25;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#813d9c;fill-opacity:1;stroke:none;stroke-width:1;enable-background:new" + id="g1059"> + <path + sodipodi:nodetypes="sccscssscccssscsccscc" + inkscape:connector-curvature="0" + d="m 812.20261,1309.7929 c -27.70079,0 -55.72369,7.4083 -74.72772,20.9366 l 18.03773,35.1092 c 12.56198,-9.9852 31.56602,-16.1051 49.92584,-16.1051 27.05659,0 42.19199,14.4169 42.19199,35.9977 l -50.00981,-0.2354 c -52.82417,-0.2486 -74.40225,26.624 -74.40225,57.2238 0,29.9555 22.04572,51.6578 62.6306,51.6578 25.44607,0 52.4405,-7.5298 61.78146,-23.3128 l 0.003,21.3432 53.33034,-0.01 -0.006,-104.013 c -0.003,-52.5026 -35.93005,-78.5921 -88.75482,-78.5921 z m -11.67969,151.6087 c -17.71562,0 -28.34499,-8.3747 -28.34499,-20.9367 0,-11.5956 7.40547,-23.1197 30.91845,-22.9689 l 44.53407,0.2354 0.003,16.1495 c 0.003,16.8142 -30.36157,27.5207 -47.11089,27.5207 z" + style="fill:#813d9c;stroke-width:1" + id="path1057" /> + </g> + <g + aria-label="a" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1000%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#813d9c;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + id="g1063" + transform="translate(-690.63092,149.52514)"> + <path + d="m 55.305889,221.92387 c -0.944974,0.77446 -1.612023,1.05106 -2.445832,1.05106 -1.278503,0 -1.667605,-0.77447 -1.667605,-3.20851 v -10.78724 c 0,-2.8766 -0.277936,-4.48085 -1.111745,-5.80851 -1.22291,-1.99149 -4.573306,-3.04255 -7.852936,-3.04255 -5.225182,0 -9.33863,2.71064 -9.33863,6.19575 0,1.27234 1.056163,2.37871 2.39025,2.37871 1.334086,0 2.501413,-1.10637 2.501413,-2.3234 0,-0.22127 -0.05563,-0.49787 -0.111176,-0.8851 -0.111177,-0.49787 -0.16676,-0.94042 -0.16676,-1.32766 0,-1.49362 1.778783,-2.71064 4.002271,-2.71064 2.723757,0 4.672684,1.60425 4.672684,4.59149 v 4.39862 c -7.655771,2.24877 -9.953459,2.84819 -12.343697,4.95032 -1.22292,1.10637 -2.001135,2.98723 -2.001135,4.81276 0,3.48511 2.445832,5.91915 5.836637,5.91915 2.445831,0 5.172972,-1.1617 8.563777,-4.0383 0.277937,2.93191 1.790584,4.0383 4.069655,4.0383 1.889959,0 3.057287,-0.66383 5.002829,-2.76596 z m -9.128066,-3.1532 c 0,1.65958 -0.277936,2.26809 -1.445263,2.93191 -1.389682,0.77448 -3.338597,1.21703 -4.505924,1.21703 -1.945553,0 -3.501982,-1.88085 -3.501982,-4.25958 v -0.22127 c 0.05563,-3.31915 2.949483,-4.39712 9.453169,-6.6652 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, ';fill:#813d9c;stroke-width:1.38632321px" + id="path1061" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssscsssscsssccsscsccscssccs" /> + </g> + <path + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1000%;font-family:Satisfy;-inkscape-font-specification:Satisfy;letter-spacing:0px;word-spacing:0px;display:inline;fill:#813d9c;fill-opacity:1;stroke:none;stroke-width:1.52590454px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m -607.01212,390.12301 c -0.91395,-0.0795 -2.06633,0.23842 -3.45713,0.95369 -1.3908,0.71527 -2.80146,1.78817 -4.232,3.21871 -1.43053,1.3908 -2.76173,3.07963 -3.99358,5.06648 -1.19211,1.98686 -2.06633,4.19227 -2.62265,6.61623 -0.4371,1.78817 -0.59605,3.33791 -0.47684,4.64924 0.11921,1.27158 0.39737,2.32462 0.83448,3.15909 0.43711,0.79475 0.97356,1.37094 1.60935,1.72857 0.63579,0.39738 1.23185,0.59606 1.78817,0.59606 1.19211,-0.0795 2.38423,-0.33776 3.57634,-0.77488 1.03316,-0.39736 2.12593,-1.01329 3.27831,-1.84777 1.15238,-0.87422 2.20541,-2.10606 3.1591,-3.69555 -0.0397,1.0729 0.0199,1.96699 0.17882,2.68225 0.19868,0.71527 0.39737,1.29143 0.59605,1.72857 0.23842,0.51658 0.53645,0.91394 0.89409,1.19211 0.35763,0.23845 0.77487,0.3974 1.25172,0.47685 0.47684,0.11922 0.97355,0.15898 1.49014,0.11921 0.55631,-0.0398 1.09277,-0.13908 1.60934,-0.29804 0.51659,-0.15894 0.97357,-0.35763 1.37094,-0.59605 0.59606,-0.39736 1.33119,-1.0729 2.20541,-2.02659 0.91395,-0.99342 1.8279,-2.06632 2.74187,-3.21871 0.95369,-1.19211 1.86764,-2.36436 2.74185,-3.51673 0.87421,-1.19211 1.58947,-2.18554 2.14579,-2.98028 0.47687,-0.63579 0.75503,-1.19211 0.83449,-1.66897 0.11917,-0.47683 0.0993,-0.83448 -0.0596,-1.0729 -0.15895,-0.23839 -0.39737,-0.31787 -0.71528,-0.23842 -0.31789,0.0398 -0.63578,0.23844 -0.95369,0.59607 -0.23843,0.31789 -0.63578,0.81461 -1.1921,1.49013 -0.51659,0.67554 -1.11264,1.45041 -1.78817,2.32463 -0.67553,0.87421 -1.41066,1.78817 -2.20541,2.74186 -0.755,0.91394 -1.49014,1.7683 -2.2054,2.56303 -0.71527,0.75501 -1.39081,1.39081 -2.0266,1.90738 -0.63579,0.47685 -1.15238,0.71527 -1.54974,0.71527 -0.47685,0 -0.85435,-0.0993 -1.13251,-0.29802 -0.23843,-0.23842 -0.41724,-0.53645 -0.53645,-0.89409 -0.11922,-0.35763 -0.19869,-0.73514 -0.23843,-1.1325 0,-0.43712 0.0199,-0.83448 0.0596,-1.19212 0.11921,-0.59605 0.21856,-1.09276 0.29803,-1.49014 0.0795,-0.39736 0.13909,-0.73514 0.17882,-1.01329 0.0795,-0.31791 0.13909,-0.61593 0.17882,-0.89409 0.0794,-0.31789 0.15894,-0.65566 0.23842,-1.01329 0.39737,-1.82791 0.71527,-3.31805 0.95369,-4.47043 0.23842,-1.15237 0.41724,-2.06633 0.53645,-2.74186 0.11922,-0.67552 0.17882,-1.13251 0.17882,-1.37093 0,-0.27819 -0.0198,-0.457 -0.0596,-0.53645 -0.0795,-0.0398 -0.23842,-0.0596 -0.47684,-0.0596 -0.19868,0 -0.4967,0.0198 -0.89408,0.0596 -0.35763,0.0398 -0.81461,0.11921 -1.37093,0.23842 0.83448,-1.27159 1.15238,-2.28488 0.95369,-3.03989 -0.15895,-0.79474 -0.51658,-1.3908 -1.07291,-1.78817 -0.67552,-0.4371 -1.54974,-0.75501 -2.62264,-0.95369 z m -1.40371,3.72833 c 0.15149,0.008 0.28114,0.0567 0.39041,0.14604 0.11922,0.15896 0.19869,0.37751 0.23843,0.65566 0.0397,0.23842 0.0199,0.57618 -0.0596,1.0133 -0.0397,0.39736 -0.21856,0.91395 -0.53645,1.54975 0.31789,-0.0794 0.63579,-0.13905 0.95369,-0.17882 0.31789,-0.0398 0.57618,-0.0993 0.77487,-0.17882 0.23842,-0.0794 0.45697,-0.13904 0.65566,-0.17882 0.15895,-0.0397 0.17882,0.27817 0.0596,0.95369 -0.0795,0.6358 -0.21855,1.45041 -0.41724,2.44384 -0.19869,0.99344 -0.43711,2.0266 -0.71527,3.09949 -0.27816,1.0729 -0.51658,2.00672 -0.71526,2.80147 -0.0397,0.19868 -0.21856,0.51657 -0.53645,0.95369 -0.27816,0.43711 -0.65567,0.91395 -1.13251,1.43053 -0.43711,0.51658 -0.95369,1.0133 -1.54975,1.49014 -0.55632,0.47685 -1.13251,0.87422 -1.72856,1.19211 -0.55632,0.27813 -1.11264,0.43707 -1.66896,0.47685 -0.55632,0 -1.05303,-0.21856 -1.49014,-0.65566 -0.23842,-0.23843 -0.39737,-0.73513 -0.47685,-1.49014 -0.0795,-0.79474 -0.0596,-1.70871 0.0596,-2.74186 0.15895,-1.03317 0.41724,-2.12594 0.77488,-3.27831 0.35763,-1.19211 0.83448,-2.30475 1.43053,-3.33791 1.43054,-2.50345 2.68226,-4.21214 3.75516,-5.1261 0.83448,-0.71526 1.47971,-1.06246 1.9342,-1.04012 z" + id="path1065" + inkscape:connector-curvature="0" /> + <g + transform="translate(-691.52809,151.52514)" + id="g1069" + style="display:inline;fill:#813d9c;enable-background:new"> + <path + sodipodi:nodetypes="cccccccccsccsscccccccccccscccccccscs" + inkscape:connector-curvature="0" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#813d9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 37,68 c -2.704645,-0.03825 -2.704645,4.03825 0,4 h 9.880859 c 0.01107,0.001 0.285634,0.0327 0.585938,0.197266 0.306304,0.16789 0.485897,0.188343 0.537109,0.939453 v -0.01953 L 48.25,78.310547 C 47.789324,78.134111 47.480469,78.058594 47.480469,78.058594 L 47.244141,78 H 38 c -4.333333,0 -5.896484,4.367188 -5.896484,4.367188 L 32,82.675781 V 85 c 0,3.03333 1.431289,5.127712 2.939453,6.070312 C 36.447617,92.012912 38,92 38,92 h 7.591797 l 3.392578,-2.203125 0.01953,0.320313 c 0.08969,2.735348 4.223189,2.492675 3.992188,-0.234376 l -1,-17.009765 v -0.0098 c -0.140818,-2.06533 -1.461734,-3.545828 -2.607422,-4.173828 -1.145688,-0.62799 -2.257813,-0.685547 -2.257813,-0.685547 L 47.064453,68 Z m 1,14 h 8.644531 c 0.106906,0.0312 0.525263,0.141312 1.03711,0.482422 0.558515,0.372213 0.877827,0.68942 0.894531,1.355469 L 48.714844,85.201172 44.408203,88 H 38 C 38,88 37.552383,87.9871 37.060547,87.679688 36.568711,87.372288 36,86.96667 36,85 V 83.435547 C 36.102847,83.130577 36.534758,82 38,82 Z" + transform="translate(0,172)" + id="path1067" /> + </g> + <rect + y="337.44901" + x="-681.32501" + height="94" + width="8" + id="rect1073" + style="display:inline;opacity:1;fill:#3d3846;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" /> + <g + id="g985" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:322.10223389px;line-height:1.25;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;enable-background:new" + aria-label="a" + transform="matrix(0.140625,0,0,0.140625,-722.55795,167.74946)"> + <path + id="path983" + style="fill:#ffffff;stroke-width:1" + d="m 812.20261,1309.7929 c -27.70079,0 -55.72369,7.4083 -74.72772,20.9366 l 18.03773,35.1092 c 12.56198,-9.9852 31.56602,-16.1051 49.92584,-16.1051 27.05659,0 42.19199,14.4169 42.19199,35.9977 l -50.00981,-0.2354 c -52.82417,-0.2486 -74.40225,26.624 -74.40225,57.2238 0,29.9555 22.04572,51.6578 62.6306,51.6578 25.44607,0 52.4405,-7.5298 61.78146,-23.3128 l 0.003,21.3432 53.33034,-0.01 -0.006,-104.013 c -0.003,-52.5026 -35.93005,-78.5921 -88.75482,-78.5921 z m -11.67969,151.6087 c -17.71562,0 -28.34499,-8.3747 -28.34499,-20.9367 0,-11.5956 7.40547,-23.1197 30.91845,-22.9689 l 44.53407,0.2354 0.003,16.1495 c 0.003,16.8142 -30.36157,27.5207 -47.11089,27.5207 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="sccscssscccssscsccscc" /> + </g> + <g + transform="translate(-690.63092,151.52514)" + id="text993" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1000%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + aria-label="a"> + <path + sodipodi:nodetypes="cssscsssscsssccsscsccscssccs" + inkscape:connector-curvature="0" + id="path995" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Nimbus Roman';-inkscape-font-specification:'Nimbus Roman, ';fill:#ffffff;stroke-width:1.38632321px" + d="m 55.305889,221.92387 c -0.944974,0.77446 -1.612023,1.05106 -2.445832,1.05106 -1.278503,0 -1.667605,-0.77447 -1.667605,-3.20851 v -10.78724 c 0,-2.8766 -0.277936,-4.48085 -1.111745,-5.80851 -1.22291,-1.99149 -4.573306,-3.04255 -7.852936,-3.04255 -5.225182,0 -9.33863,2.71064 -9.33863,6.19575 0,1.27234 1.056163,2.37871 2.39025,2.37871 1.334086,0 2.501413,-1.10637 2.501413,-2.3234 0,-0.22127 -0.05563,-0.49787 -0.111176,-0.8851 -0.111177,-0.49787 -0.16676,-0.94042 -0.16676,-1.32766 0,-1.49362 1.778783,-2.71064 4.002271,-2.71064 2.723757,0 4.672684,1.60425 4.672684,4.59149 v 4.39862 c -7.655771,2.24877 -9.953459,2.84819 -12.343697,4.95032 -1.22292,1.10637 -2.001135,2.98723 -2.001135,4.81276 0,3.48511 2.445832,5.91915 5.836637,5.91915 2.445831,0 5.172972,-1.1617 8.563777,-4.0383 0.277937,2.93191 1.790584,4.0383 4.069655,4.0383 1.889959,0 3.057287,-0.66383 5.002829,-2.76596 z m -9.128066,-3.1532 c 0,1.65958 -0.277936,2.26809 -1.445263,2.93191 -1.389682,0.77448 -3.338597,1.21703 -4.505924,1.21703 -1.945553,0 -3.501982,-1.88085 -3.501982,-4.25958 v -0.22127 c 0.05563,-3.31915 2.949483,-4.39712 9.453169,-6.6652 z" /> + </g> + <path + inkscape:connector-curvature="0" + id="path1011" + d="m -607.01212,392.12301 c -0.91395,-0.0795 -2.06633,0.23842 -3.45713,0.95369 -1.3908,0.71527 -2.80146,1.78817 -4.232,3.21871 -1.43053,1.3908 -2.76173,3.07963 -3.99358,5.06648 -1.19211,1.98686 -2.06633,4.19227 -2.62265,6.61623 -0.4371,1.78817 -0.59605,3.33791 -0.47684,4.64924 0.11921,1.27158 0.39737,2.32462 0.83448,3.15909 0.43711,0.79475 0.97356,1.37094 1.60935,1.72857 0.63579,0.39738 1.23185,0.59606 1.78817,0.59606 1.19211,-0.0795 2.38423,-0.33776 3.57634,-0.77488 1.03316,-0.39736 2.12593,-1.01329 3.27831,-1.84777 1.15238,-0.87422 2.20541,-2.10606 3.1591,-3.69555 -0.0397,1.0729 0.0199,1.96699 0.17882,2.68225 0.19868,0.71527 0.39737,1.29143 0.59605,1.72857 0.23842,0.51658 0.53645,0.91394 0.89409,1.19211 0.35763,0.23845 0.77487,0.3974 1.25172,0.47685 0.47684,0.11922 0.97355,0.15898 1.49014,0.11921 0.55631,-0.0398 1.09277,-0.13908 1.60934,-0.29804 0.51659,-0.15894 0.97357,-0.35763 1.37094,-0.59605 0.59606,-0.39736 1.33119,-1.0729 2.20541,-2.02659 0.91395,-0.99342 1.8279,-2.06632 2.74187,-3.21871 0.95369,-1.19211 1.86764,-2.36436 2.74185,-3.51673 0.87421,-1.19211 1.58947,-2.18554 2.14579,-2.98028 0.47687,-0.63579 0.75503,-1.19211 0.83449,-1.66897 0.11917,-0.47683 0.0993,-0.83448 -0.0596,-1.0729 -0.15895,-0.23839 -0.39737,-0.31787 -0.71528,-0.23842 -0.31789,0.0398 -0.63578,0.23844 -0.95369,0.59607 -0.23843,0.31789 -0.63578,0.81461 -1.1921,1.49013 -0.51659,0.67554 -1.11264,1.45041 -1.78817,2.32463 -0.67553,0.87421 -1.41066,1.78817 -2.20541,2.74186 -0.755,0.91394 -1.49014,1.7683 -2.2054,2.56303 -0.71527,0.75501 -1.39081,1.39081 -2.0266,1.90738 -0.63579,0.47685 -1.15238,0.71527 -1.54974,0.71527 -0.47685,0 -0.85435,-0.0993 -1.13251,-0.29802 -0.23843,-0.23842 -0.41724,-0.53645 -0.53645,-0.89409 -0.11922,-0.35763 -0.19869,-0.73514 -0.23843,-1.1325 0,-0.43712 0.0199,-0.83448 0.0596,-1.19212 0.11921,-0.59605 0.21856,-1.09276 0.29803,-1.49014 0.0795,-0.39736 0.13909,-0.73514 0.17882,-1.01329 0.0795,-0.31791 0.13909,-0.61593 0.17882,-0.89409 0.0794,-0.31789 0.15894,-0.65566 0.23842,-1.01329 0.39737,-1.82791 0.71527,-3.31805 0.95369,-4.47043 0.23842,-1.15237 0.41724,-2.06633 0.53645,-2.74186 0.11922,-0.67552 0.17882,-1.13251 0.17882,-1.37093 0,-0.27819 -0.0198,-0.457 -0.0596,-0.53645 -0.0795,-0.0398 -0.23842,-0.0596 -0.47684,-0.0596 -0.19868,0 -0.4967,0.0198 -0.89408,0.0596 -0.35763,0.0398 -0.81461,0.11921 -1.37093,0.23842 0.83448,-1.27159 1.15238,-2.28488 0.95369,-3.03989 -0.15895,-0.79474 -0.51658,-1.3908 -1.07291,-1.78817 -0.67552,-0.4371 -1.54974,-0.75501 -2.62264,-0.95369 z m -1.40371,3.72833 c 0.15149,0.008 0.28114,0.0567 0.39041,0.14604 0.11922,0.15896 0.19869,0.37751 0.23843,0.65566 0.0397,0.23842 0.0199,0.57618 -0.0596,1.0133 -0.0397,0.39736 -0.21856,0.91395 -0.53645,1.54975 0.31789,-0.0794 0.63579,-0.13905 0.95369,-0.17882 0.31789,-0.0398 0.57618,-0.0993 0.77487,-0.17882 0.23842,-0.0794 0.45697,-0.13904 0.65566,-0.17882 0.15895,-0.0397 0.17882,0.27817 0.0596,0.95369 -0.0795,0.6358 -0.21855,1.45041 -0.41724,2.44384 -0.19869,0.99344 -0.43711,2.0266 -0.71527,3.09949 -0.27816,1.0729 -0.51658,2.00672 -0.71526,2.80147 -0.0397,0.19868 -0.21856,0.51657 -0.53645,0.95369 -0.27816,0.43711 -0.65567,0.91395 -1.13251,1.43053 -0.43711,0.51658 -0.95369,1.0133 -1.54975,1.49014 -0.55632,0.47685 -1.13251,0.87422 -1.72856,1.19211 -0.55632,0.27813 -1.11264,0.43707 -1.66896,0.47685 -0.55632,0 -1.05303,-0.21856 -1.49014,-0.65566 -0.23842,-0.23843 -0.39737,-0.73513 -0.47685,-1.49014 -0.0795,-0.79474 -0.0596,-1.70871 0.0596,-2.74186 0.15895,-1.03317 0.41724,-2.12594 0.77488,-3.27831 0.35763,-1.19211 0.83448,-2.30475 1.43053,-3.33791 1.43054,-2.50345 2.68226,-4.21214 3.75516,-5.1261 0.83448,-0.71526 1.47971,-1.06246 1.9342,-1.04012 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1000%;font-family:Satisfy;-inkscape-font-specification:Satisfy;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.52590454px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" /> + <g + transform="translate(-691.52809,153.52514)" + id="g1022" + style="display:inline;enable-background:new"> + <path + id="path1016" + transform="translate(0,172)" + d="m 37,68 c -2.704645,-0.03825 -2.704645,4.03825 0,4 h 9.880859 c 0.01107,0.001 0.285634,0.0327 0.585938,0.197266 0.306304,0.16789 0.485897,0.188343 0.537109,0.939453 v -0.01953 L 48.25,78.310547 C 47.789324,78.134111 47.480469,78.058594 47.480469,78.058594 L 47.244141,78 H 38 c -4.333333,0 -5.896484,4.367188 -5.896484,4.367188 L 32,82.675781 V 85 c 0,3.03333 1.431289,5.127712 2.939453,6.070312 C 36.447617,92.012912 38,92 38,92 h 7.591797 l 3.392578,-2.203125 0.01953,0.320313 c 0.08969,2.735348 4.223189,2.492675 3.992188,-0.234376 l -1,-17.009765 v -0.0098 c -0.140818,-2.06533 -1.461734,-3.545828 -2.607422,-4.173828 -1.145688,-0.62799 -2.257813,-0.685547 -2.257813,-0.685547 L 47.064453,68 Z m 1,14 h 8.644531 c 0.106906,0.0312 0.525263,0.141312 1.03711,0.482422 0.558515,0.372213 0.877827,0.68942 0.894531,1.355469 L 48.714844,85.201172 44.408203,88 H 38 C 38,88 37.552383,87.9871 37.060547,87.679688 36.568711,87.372288 36,86.96667 36,85 V 83.435547 C 36.102847,83.130577 36.534758,82 38,82 Z" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccsccsscccccccccccscccccccscs" /> + </g> + <path + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="rect1201" + d="m -681.32504,431.44901 v 10 h 8 v -2 h -6 v -6 h 6 v -2 z" + style="display:inline;opacity:1;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path1217" + d="m -678.32504,431.44901 v -94" + style="display:inline;opacity:0.15;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + <g + id="g1844" + transform="translate(-20.749999,15.499996)"> + <rect + y="536.5" + x="-177.25" + style="display:inline;fill:url(#linearGradient1097);fill-opacity:1;stroke-width:1;enable-background:new" + width="104" + height="48" + rx="8" + id="rect1091" + ry="8" /> + <path + sodipodi:nodetypes="ssssssssccccs" + inkscape:connector-curvature="0" + id="rect1093" + d="m -169.25,478.5 c -4.432,0 -8,3.568 -8,8 v 84 c 0,4.432 3.568,8 8,8 h 88 c 4.432,0 8,-3.568 8,-8 v -84 c 0,-4.432 -3.568,-8 -8,-8 h -42 v 2 h -4 v -2 z" + style="display:inline;fill:url(#radialGradient1099);fill-opacity:1;stroke-width:1.6841507;enable-background:new" /> + <g + transform="translate(170.67783,294.50313)" + style="display:inline;enable-background:new" + id="g1381"> + <rect + ry="13.072174" + id="rect1371" + rx="13.072174" + height="28" + width="28" + style="display:inline;fill:#f5c211;enable-background:new" + x="-283.92783" + y="193.99687" /> + <path + sodipodi:nodetypes="ccssssc" + id="path1373" + d="m -276,211 h 12 v 0.99687 c 0,2.20914 -1.7909,4 -4,4 h -4 c -2.20914,0 -4,-1.79086 -4,-4 z" + style="display:inline;fill:url(#linearGradient1383);enable-background:new" + inkscape:connector-curvature="0" /> + <rect + id="rect1375" + height="2" + width="12" + style="display:inline;fill:#ffffff;enable-background:new" + x="-276" + y="209.99687" /> + <path + sodipodi:nodetypes="scsccs" + id="path1377" + d="m -276,204.99687 c 0,-0.55229 0.44772,-1 1,-1 0.55228,0 1,0.44771 1,1 v 3 h -2 z" + style="display:inline;fill:#b45600;enable-background:new" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="scsccs" + id="path1379" + d="m -266,204.99687 c 0,-0.55229 0.44772,-1 1,-1 0.55228,0 1,0.44771 1,1 v 3 h -2 z" + style="display:inline;fill:#b45600;enable-background:new" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(170.75,294.5)" + style="display:inline;enable-background:new" + id="g1387"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#62a0ea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 26,20 v 17 c 0,0 0.123719,2.819005 -2.894531,4.328125 l 1.789062,3.576172 C 29.876281,42.413417 30,37 30,37 v -1 h 12 v 2 c 0,0 -0.0278,1.167429 -0.470703,2.230469 C 41.086357,41.293509 40.7,42 39,42 h -1 l -2,4 h 2 1 c 3.3,0 5.413643,-2.293509 6.220703,-4.230469 C 46.027773,39.832571 46,38 46,38 V 20 Z m 4,4 h 12 v 2 H 30 Z m 0,6 h 12 v 2 H 30 Z" + transform="translate(-358,176)" + id="path1385" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(196.75,294.5)" + style="display:inline;enable-background:new" + id="g1393"> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;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;vector-effect:none;fill:#26a269;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:new" + d="m 60,78 a 2,2 0 0 0 -2,2 2,2 0 0 0 2,2 2,2 0 0 0 2,-2 2,2 0 0 0 -2,-2 z m -4,6 a 2,2 0 0 0 -2,2 2,2 0 0 0 2,2 2,2 0 0 0 2,-2 2,2 0 0 0 -2,-2 z m 8,0 a 2,2 0 0 0 -2,2 2,2 0 0 0 2,2 2,2 0 0 0 2,-2 2,2 0 0 0 -2,-2 z m 6,6 -4,2 v 4 h -4 v -2 -2 l -4,2 v 2 L 50,95.998 50.07227,100 c -0.001,1.12729 -0.87241,1.99805 -2,1.99805 -1.12827,0 -2,-0.87174 -2,-2.000003 h -4 c 0,3.290023 2.70998,6.000003 6,6.000003 3.29001,0 6,-2.70998 6,-6.000003 L 70,100 Z m -15.927734,3.996094 -4,2 h 4 z" + transform="translate(-352,168)" + id="path1389" + inkscape:connector-curvature="0" /> + <path + id="path1391" + d="m -309.92783,267.99687 4,-2 v 2 z" + style="display:inline;fill:#26a269;enable-background:new" + inkscape:connector-curvature="0" /> + </g> + <path + sodipodi:nodetypes="cc" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#deddda;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="m -177.25,528.5 h 104" + id="path1397" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path1458" + d="m -177.25,527.5 h 104" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#c0bfbc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1395" + d="m -125.25,480.5 v 100" + style="display:inline;fill:none;fill-rule:evenodd;stroke:#deddda;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + <path + d="m -153.08925,552.65236 q 0,-1.12461 -0.36927,-1.94707 -0.36927,-0.83925 -0.97353,-1.40995 -0.23499,-0.23498 -0.50355,-0.4364 -0.40285,-0.30214 -0.57069,-0.46998 -0.67141,-0.63783 -1.00711,-1.47709 -0.3357,-0.83925 -0.3357,-1.77921 0,-0.97353 0.35249,-1.796 0.35248,-0.82246 0.99032,-1.46029 0.53712,-0.53712 1.51065,-1.0071 0.77211,-0.36927 1.72885,-0.36927 0.95675,0 1.76243,0.36927 0.90639,0.40284 1.51065,1.0071 0.63783,0.63783 0.99032,1.46029 0.35249,0.82247 0.35249,1.796 0,1.02389 -0.35249,1.82957 -0.35249,0.7889 -0.99032,1.42673 -0.16785,0.16784 -0.60426,0.46998 -0.13428,0.10067 -0.46998,0.4364 -0.68818,0.67141 -1.02388,1.49388 -0.31892,0.80569 -0.31892,1.86314 1.14138,0 1.98063,-0.38607 0.85604,-0.40283 1.40994,-0.95675 0.21821,-0.21819 0.41963,-0.48675 0.30213,-0.41963 0.46998,-0.58749 0.65462,-0.6546 1.49387,-0.9903 0.83925,-0.35249 1.77921,-0.35249 0.97353,0 1.796,0.35249 0.82246,0.35248 1.4603,0.9903 0.60426,0.60427 1.0071,1.51067 0.35248,0.78889 0.35248,1.74564 0,0.95675 -0.35248,1.74564 -0.40284,0.90638 -1.0071,1.51065 -0.63784,0.63783 -1.4603,0.99031 -0.82247,0.35249 -1.796,0.35249 -0.93996,0 -1.77921,-0.33572 -0.83925,-0.35246 -1.49387,-1.00708 -0.16785,-0.16785 -0.46998,-0.58748 -0.20142,-0.26856 -0.41963,-0.48677 -0.68818,-0.65461 -1.51065,-0.99031 -0.80568,-0.35248 -1.87992,-0.35248 0,1.14136 0.38606,1.99742 0.40284,0.83924 0.95674,1.39314 0.21821,0.21822 0.48677,0.41964 0.41962,0.30213 0.58747,0.46998 0.65462,0.65462 0.99032,1.49386 0.35249,0.83925 0.35249,1.77922 0,0.97352 -0.35249,1.79599 -0.35249,0.82247 -0.99032,1.46029 -0.60426,0.60428 -1.51065,1.00711 -0.78889,0.35249 -1.74564,0.35249 -0.95675,0 -1.74564,-0.35249 -0.90639,-0.40283 -1.51065,-1.00711 -0.63784,-0.63782 -0.99032,-1.46029 -0.35249,-0.82247 -0.35249,-1.79599 0,-0.93997 0.3357,-1.77922 0.35249,-0.83924 1.00711,-1.49386 0.16784,-0.16785 0.58747,-0.46998 0.26856,-0.20142 0.48677,-0.41964 0.65461,-0.68818 0.99031,-1.49385 0.35249,-0.82248 0.35249,-1.89671 -1.05746,0 -1.89671,0.35248 -0.82247,0.3357 -1.47708,0.99031 -0.23499,0.23499 -0.43641,0.50355 -0.30213,0.40285 -0.46998,0.5707 -0.63783,0.6714 -1.47708,1.00708 -0.83926,0.33572 -1.77922,0.33572 -0.97353,0 -1.79599,-0.35249 -0.82247,-0.35248 -1.4603,-0.99031 -0.55391,-0.53712 -1.0071,-1.51065 -0.36927,-0.77211 -0.36927,-1.72886 0,-0.95675 0.36927,-1.76242 0.40284,-0.9064 1.0071,-1.51067 0.63783,-0.63782 1.4603,-0.9903 0.82246,-0.35249 1.79599,-0.35249 1.02389,0 1.81279,0.35249 0.80568,0.35248 1.44351,0.9903 0.16785,0.16786 0.46998,0.60427 0.10071,0.13428 0.43641,0.46997 0.6714,0.6714 1.49387,1.00711 0.82246,0.33571 1.87992,0.33571 z" + style="font-style:normal;font-weight:normal;font-size:medium;line-height:1000%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#a347ba;fill-opacity:1;stroke:none;stroke-width:0.85939318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + id="path1476" + inkscape:connector-curvature="0" /> + </g> + <g + style="display:inline;enable-background:new" + id="g1331" + transform="translate(-14,72)"> + <g + id="g6295" + inkscape:label="network-wireless-signal-excellent" + transform="translate(191.9998,-389)" + style="display:inline"> + <rect + clip-path="none" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect6303" + width="16" + height="16" + x="-505" + y="70.000198" + transform="rotate(-90)" /> + <circle + r="1" + cy="209" + cx="28" + clip-path="none" + style="display:inline;fill:#241f31;fill-opacity:1;stroke:none" + id="path6305" + transform="matrix(1.9999995,0,0,1.9999995,22.000213,84.0001)" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 78.000188,491.0002 c -2.81422,0 -5.17173,1 -7,2.58557 v 1.41443 h 1.48072 c 1.51928,-1.26466 3.21936,-2 5.51928,-2 2.29992,0 4,0.77953 5.51928,2 h 1.48072 v -1.38128 c -1.64044,-1.46575 -4.18578,-2.61872 -7,-2.61872 z" + id="rect11714" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 78.000188,494.0002 c -2.16664,0 -4.01982,0.73878 -5,2 v 1 h 2 c 0.78878,-0.60652 1.75887,-1 3,-1 1.24113,0 2.21938,0.39348 3,1 h 2 v -1 c -0.99478,-1.2229 -2.8734,-2 -5,-2 z" + id="rect11703" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2.32782054;marker:none;enable-background:accumulate" + mask="none" + clip-path="none" + d="m 78.000188,497.0002 c -1.25733,0 -2.21571,0.31165 -3,1 v 1 h 3 0.375 2.625 v -1 c -0.8369,-0.67206 -1.74267,-1 -3,-1 z" + id="path6297" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccccz" /> + </g> + <g + transform="rotate(90,197,316.99999)" + inkscape:label="battery-full" + id="g3728" + style="display:inline"> + <desc + id="desc11549">battery is full and there is no a/c connected.</desc> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate" + id="rect2928" + width="2" + height="6" + x="25" + y="-247" + transform="scale(1,-1)" /> + <path + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none" + d="m 35,239 v 10 H 23 v -2 H 21.484375 C 21.25,247 21,246.75 21,246.53125 V 241.5625 C 20.98437,241.28125 21.340963,241.01563 21.622213,241 H 23 v -2 z" + id="path2930" + sodipodi:nodetypes="ccccccccccc" + inkscape:connector-curvature="0" /> + <rect + y="236" + x="20" + height="16" + width="16" + id="rect3704-3" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" /> + <rect + transform="scale(1,-1)" + y="-247" + x="28" + height="6" + width="2" + id="rect4227" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate" /> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate" + id="rect4229" + width="2" + height="6" + x="31" + y="-247" + transform="scale(1,-1)" /> + </g> + <g + transform="translate(262.00001,-136)" + id="g3288" + inkscape:label="network-cellular-signal-good" + style="display:inline"> + <path + id="path3290" + d="m 33.5,277.5 v 12" + style="display:inline;opacity:0.35;fill:#bebebe;fill-opacity:1;fill-rule:evenodd;stroke:#241f31;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:export-filename="/Users/hylkebons/tmp/mid/Toolbar/Graphics/tiny_toolbar_icons/icons/cell-network-no-connection.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/Users/hylkebons/tmp/mid/Toolbar/Graphics/tiny_toolbar_icons/icons/cell-network-no-connection.png" + style="display:inline;fill:#bebebe;fill-opacity:1;fill-rule:evenodd;stroke:#241f31;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 29.5,280.49216 V 289.5" + id="path3292" + inkscape:connector-curvature="0" /> + <path + id="path3294" + d="m 25.5,283.5 v 6" + style="display:inline;fill:#bebebe;fill-opacity:1;fill-rule:evenodd;stroke:#241f31;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:export-filename="/Users/hylkebons/tmp/mid/Toolbar/Graphics/tiny_toolbar_icons/icons/cell-network-no-connection.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + inkscape:export-filename="/Users/hylkebons/tmp/mid/Toolbar/Graphics/tiny_toolbar_icons/icons/cell-network-no-connection.png" + style="display:inline;fill:#bebebe;fill-opacity:1;fill-rule:evenodd;stroke:#241f31;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 21.5,286.5 v 3" + id="path3296" + inkscape:connector-curvature="0" /> + <rect + y="276" + x="20" + height="16" + width="16" + id="rect3298" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" /> + </g> + <g + style="display:inline" + transform="translate(262,-196)" + inkscape:label="mail-unread" + id="g35596"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none" + id="rect35598" + width="16" + height="16" + x="19.99975" + y="296" /> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" + id="path35600" + d="m 22.999801,300.99992 5.000005,4.00007 4.999994,-4.00002" + style="fill:none;stroke:#241f31;stroke-width:1.99999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="300" + x="21.9998" + height="9" + width="12" + id="rect35604" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + </g> + <g + inkscape:label="call-missed" + id="g9250" + style="display:inline" + transform="translate(160.9998,-177)"> + <rect + y="317" + x="141.0002" + height="16" + width="16" + id="rect44122" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" /> + <path + inkscape:connector-curvature="0" + id="path44196" + d="m 149.99715,317.00012 v 0.78125 a 1.001098,1.001098 0 0 0 1.03125,1.21875 h 0.59375 l -2.5625,2.5625 -2.375,-2.28125 a 1.0054782,1.0054782 0 0 0 -0.71875,-0.28125 h -0.125 -0.84375 v 0.75 a 1.0054782,1.0054782 0 0 0 0,0.0937 1.0054782,1.0054782 0 0 0 0.28125,0.875 l 3.09375,2.96875 0.6875,0.6875 0.71875,-0.6875 3.21875,-3.25 v 0.5625 a 1.0001,1.0001 0 0 0 1,1 h 1 v -0.84375 a 1.0001,1.0001 0 0 0 0,-0.1562 v -3 -1 h -1 -2.96875 a 1.0001,1.0001 0 0 0 -0.0312,0 z" + style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:xx-small;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + <path + sodipodi:nodetypes="ccccccccscccccscc" + inkscape:connector-curvature="0" + style="display:inline;opacity:1;fill:#241f31;fill-opacity:1;stroke:none;enable-background:new" + d="m 141.2661,330.71341 c -0.34368,-0.34368 -0.34865,-1.07502 -2e-5,-1.42366 l 0.0404,-0.0403 c 4.26664,-4.24462 11.16673,-4.2381 15.42494,0.0201 l 0.02,0.0201 c 0.35061,0.35061 0.31852,1.07025 -0.0201,1.44378 l -1.93062,1.99693 c -0.35652,0.35653 -0.93056,0.35652 -1.28709,10e-6 l -1.28709,-1.2871 c -0.35652,-0.35653 -0.35653,-0.93055 -1e-5,-1.28709 l 0.30167,-0.30165 c -2.22715,-1.06378 -4.81163,-1.06378 -7.03876,10e-6 l 0.30166,0.30164 c 0.35653,0.35654 0.35652,0.93056 0,1.2871 l -1.28709,1.28708 c -0.35653,0.35653 -0.93663,0.3625 -1.28709,0 z" + id="rect5922-5-0" /> + </g> + <g + inkscape:label="user-available" + id="g8272" + style="display:inline" + transform="translate(240.9998,-237)"> + <path + inkscape:connector-curvature="0" + id="path8268" + transform="translate(241.0002,217)" + d="m -196.5,141 c -1.385,0 -2.5,1.115 -2.5,2.5 v 5 c 0,1.385 1.115,2.5 2.5,2.5 h 6.375 l 3.125,4 v -4.0625 c 1.14126,-0.23235 2,-1.22563 2,-2.4375 v -5 c 0,-1.385 -1.115,-2.5 -2.5,-2.5 z" + style="fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <rect + y="357" + x="41.000198" + height="16" + width="16" + id="rect11252" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" /> + </g> + <g + transform="translate(60.99979,383)" + inkscape:label="airplane-mode" + id="g5836" + style="display:inline;enable-background:new"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect5092" + width="16" + height="16" + x="261.00021" + y="-243" /> + <path + style="fill:#241f31;fill-opacity:1;stroke:none" + d="m 267.49679,-242 c -0.79399,9.7e-4 -0.78072,0.0333 -0.53125,1.03125 l 1.625,4.96875 h -4.5 l -1.21875,-1.78125 c -0.13926,-0.20883 -0.1227,-0.21873 -0.34375,-0.21875 h -0.21875 c -0.42773,0 -0.28125,0.4375 -0.28125,0.4375 l 0.28125,2.5625 -0.28125,2.5625 c 0,0 -0.13986,0.43749 0.25,0.4375 h 0.25 c 0.21159,0 0.20422,-0.009 0.34375,-0.21875 L 264.09054,-234 h 4.5 l -1.625,4.9375 c -0.26171,1.04691 -0.2647,1.06251 0.53125,1.0625 0.43199,0 0.43388,-0.0117 0.71875,-0.5 l 3.6875,-5.5 h 3.09375 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 h -3.09375 l -3.6875,-5.5 c -0.2665,-0.45685 -0.28331,-0.49822 -0.65625,-0.5 z" + id="path6273" + inkscape:connector-curvature="0" /> + </g> + <g + style="display:inline" + inkscape:label="audio-input-microphone" + id="g3281-5" + transform="translate(282,-156)"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect3825-9-5" + width="16" + height="16" + x="20" + y="276" /> + <path + inkscape:connector-curvature="0" + d="m -176.5,235 c -0.27614,0 -0.5,0.22386 -0.5,0.5 v 2.96875 c 0,1.96838 1.25801,3.62455 3,4.25 V 244 h -2 c -0.56475,0 -1,0.49007 -1,1 v 1 h 0.84375 2.15625 5 0.0937 0.90625 v -1 c -6e-5,-0.58435 -0.47642,-0.99995 -1,-1 h -2 v -1.28125 c 1.74199,-0.62545 3,-2.28162 3,-4.25 V 235.5 c 0,-0.27614 -0.22386,-0.5 -0.5,-0.5 -0.27614,0 -0.5,0.22386 -0.5,0.5 0,0.069 0.006,0.12768 0.0312,0.1875 v 2.78125 c 0,1.96415 -1.57895,3.53125 -3.53125,3.53125 -1.9523,0 -3.5,-1.5671 -3.5,-3.53125 V 235.5 c 0,-0.27614 -0.22386,-0.5 -0.5,-0.5 z m 3.9998,-4.01288 c 1.385,0 2.5,1.115 2.5,2.5 V 238.5 c 0,1.385 -1.115,2.5 -2.5,2.5 -1.385,0 -2.5,-1.115 -2.5,-2.5 v -5.01288 c 0,-1.385 1.115,-2.5 2.5,-2.5 z" + style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1.00302994;marker:none;enable-background:accumulate" + transform="translate(200.0002,46)" + id="rect6806" /> + </g> + <g + style="display:inline" + inkscape:label="camera-photo" + id="g11537" + transform="translate(282,-176)"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect11539" + width="16" + height="16" + x="20" + y="276" /> + <path + inkscape:connector-curvature="0" + id="rect5238" + d="m 26,278 c -0.549959,0 -1,0.45004 -1,1 v 1 h -3 c -0.552014,0 -1,0.45004 -1,1 v 8 c 0,0.54996 0.447986,1 1,1 h 12 c 0.552014,0 1,-0.45004 1,-1 v -8 c 0,-0.54996 -0.447986,-1 -1,-1 h -3 v -1 c 0,-0.54996 -0.450041,-1 -1,-1 z m 2,3 c 2.209139,0 4,1.79086 4,4 0,2.20914 -1.790861,4 -4,4 -2.209139,0 -4,-1.79086 -4,-4 0,-2.20914 1.790861,-4 4,-4 z m 0,2 c -1.10457,0 -2,0.89543 -2,2 0,1.10457 0.89543,2 2,2 1.10457,0 2,-0.89543 2,-2 0,-1.10457 -0.89543,-2 -2,-2 z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" /> + </g> + <g + id="g8762" + inkscape:label="input-dialpad" + style="display:inline" + transform="translate(222.0002,-470)"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect8764" + width="16" + height="16" + x="20" + y="276" + transform="translate(99.9998,334)" /> + <path + sodipodi:nodetypes="cssccsssscscscccccccccccccccccccccccccccccccccccccccccccccccccccc" + inkscape:connector-curvature="0" + id="rect8806" + transform="translate(120,380)" + d="m 3.5,230 c 0,0 -1.5,0 -1.5,1.5 v 9 C 2,242 3.5,242 3.5,242 H 5 v 2 c 0,0.554 0.446,1 1,1 h 4 c 0.554,0 1,-0.446 1,-1 v -2 h 1.5 c 1.5,0 1.5,-1.5 1.5,-1.5 v -9 C 14,230 12.5,230 12.5,230 Z m 0.5,2 h 2 v 2 H 4 Z m 3,0 h 2 v 2 H 7 Z m 3,0 h 2 v 2 h -2 z m -6,3 h 2 v 2 H 4 Z m 3,0 h 2 v 2 H 7 Z m 3,0 h 2 v 2 h -2 z m -6,3 h 2 v 2 H 4 Z m 3,0 h 2 v 2 H 7 Z m 3,0 h 2 v 2 h -2 z m -3,3 h 2 v 2 H 7 Z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" /> + </g> + <g + id="g14087" + style="display:inline" + transform="translate(220.9998,-77)"> + <g + transform="translate(1.6357422e-6)" + style="display:inline" + id="g8093" + inkscape:label="audio-volume-high"> + <path + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" + id="path5491" + d="m 41.0002,201.99979 h 2.484375 L 46.453329,199 H 47.0002 v 11.99917 L 46.524903,211 43.484575,207.99938 H 41.0002 Z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none" /> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect6203" + width="16" + height="16" + x="41.000198" + y="197" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 56.00019,205.0002 c 0,-2.81422 -1,-5.17173 -2.58557,-7 h -1.41443 v 1.48072 c 1.26466,1.51928 2,3.21936 2,5.51928 0,2.29992 -0.77953,4 -2,5.51928 v 1.48072 h 1.38128 c 1.46575,-1.64044 2.61872,-4.18578 2.61872,-7 z" + id="rect11714-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;marker:none;enable-background:accumulate" + d="m 53.00019,205.0002 c 0,-2.16664 -0.73878,-4.01982 -2,-5 h -1 v 2 c 0.60652,0.78878 1,1.75887 1,3 0,1.24113 -0.39348,2.21938 -1,3 v 2 h 1 c 1.2229,-0.99478 2,-2.8734 2,-5 z" + id="rect11703-1" + inkscape:connector-curvature="0" + sodipodi:nodetypes="scccscccs" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2.32782054;marker:none;enable-background:accumulate" + mask="none" + clip-path="none" + d="m 50.00019,205.0002 c 0,-1.25733 -0.31165,-2.21571 -1,-3 h -1 v 6 h 1 c 0.67206,-0.8369 1,-1.74267 1,-3 z" + id="path6297-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="zccccz" /> + </g> + </g> + <g + id="g11497-6-7-9-1" + inkscape:label="application-rss+xml" + transform="translate(314.00001,-298)" + style="display:inline"> + <rect + y="398" + x="48" + height="16" + width="16" + id="rect10727-3-4-6-9" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;opacity:0.51464431;fill:none;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" /> + <ellipse + ry="3.236068" + rx="2" + cy="97.1875" + cx="323.0625" + transform="matrix(1.0000007,0,0,0.61803426,-271.06253,349.93467)" + id="path4983" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.69602728;marker:none;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path5814" + d="m 50.0002,399.99988 v 1 c 0,0.55016 0.45347,1 1,1 4.97056,0 9,4.02944 9,9 0,0.55016 0.45347,1 1,1 h 1 v -1 c 0,-6.07513 -4.92487,-11 -11,-11 z m 0,4 v 1 c 0,0.55016 0.45347,1 1,1 2.76143,0 5,2.23857 5,5 0,0.55016 0.45347,1 1,1 h 1 v -1 c 0,-3.866 -3.134,-7 -7,-7 z" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.33333492;marker:none;enable-background:new" /> + </g> + <g + transform="translate(-219.99999,-261.99997)" + inkscape:label="emblem-music" + id="g6252" + style="display:inline"> + <rect + y="381.99997" + x="582" + height="16" + width="16" + id="rect24874-7-8-7" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + <circle + r="2.4306796" + cy="174.17094" + cx="345.99619" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#241f31;stroke-width:1.94454503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:new" + id="path6170" + transform="matrix(1.0285185,0,0,1.028518,229.63673,214.36204)" /> + <circle + r="2.4306796" + cy="174.17094" + cx="345.99619" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#241f31;stroke-width:1.94454503;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:new" + id="path6170-5" + transform="matrix(1.0285185,0,0,1.028518,237.63673,214.36204)" /> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50793636;marker:none;enable-background:new" + id="rect6190" + width="2.0000219" + height="9.515729" + x="587.00018" + y="384" /> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50793636;marker:none;enable-background:new" + id="rect6190-8" + width="2.0000412" + height="9.5626974" + x="595.00018" + y="384" /> + <rect + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.50793636;marker:none;enable-background:new" + id="rect6190-8-8" + width="10.000017" + height="2" + x="587.00018" + y="384" /> + </g> + <g + transform="translate(-139.0002,-241)" + inkscape:label="emblem-synchronizing" + id="g5244" + style="display:inline"> + <rect + width="16" + height="16" + x="-397" + y="501.00021" + id="rect10837-5-8-4-4-2-3" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none;enable-background:new" + transform="rotate(-90)" /> + <path + sodipodi:nodetypes="cccccccccccccccc" + inkscape:connector-curvature="0" + style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + d="m 515.90195,383.0005 c -0.0423,0.008 -0.0841,0.0181 -0.125,0.0312 -0.44715,0.10014 -0.79228,0.5419 -0.78125,1 v 1.6875 c 0.004,1.31255 0.004,1.31255 -1.5625,1.3125 h -1.4375 c -0.52358,5e-5 -0.99995,0.47642 -1,1 -0.008,0.0726 -0.008,0.14613 0,0.21875 v 0.78125 h 6 v -1 -4 c 0.006,-0.0623 0.006,-0.12518 0,-0.1875 v -0.8125 h -0.8125 c -0.0916,-0.0236 -0.18665,-0.0342 -0.28125,-0.0312 z" + id="path4597-1" /> + <path + sodipodi:nodetypes="cccccccccccccccc" + inkscape:connector-curvature="0" + style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + d="m 501.0047,389 v 1 4 c -0.006,0.0623 -0.006,0.12518 0,0.1875 V 395 h 0.8125 c 0.0916,0.0236 0.18665,0.0342 0.28125,0.0312 0.0423,-0.008 0.0841,-0.0181 0.125,-0.0312 0.44715,-0.10014 0.79228,-0.5419 0.78125,-1 v -1.6875 C 503.00029,391 503.00029,391 504.5672,391 h 1.4375 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 0.008,-0.0726 0.008,-0.14613 0,-0.21875 V 389 Z" + id="path10913" /> + <path + inkscape:connector-curvature="0" + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.33333325;marker:none;enable-background:accumulate" + d="m 268,165 c -3.15321,0 -5.81948,2.12571 -6.6875,5 h 2.09375 c 0.7734,-1.76501 2.53819,-3 4.59375,-3 2.05556,0 3.82035,1.23499 4.59375,3 h 2.09375 c -0.86802,-2.87429 -3.53429,-5 -6.6875,-5 z m -6.6875,9 c 0.86802,2.87429 3.53429,5 6.6875,5 3.15321,0 5.81948,-2.12571 6.6875,-5 h -2.09375 c -0.7734,1.76501 -2.53819,3 -4.59375,3 -2.05556,0 -3.82035,-1.23499 -4.59375,-3 z" + transform="translate(241.0002,217)" + id="path1483" /> + </g> + <g + inkscape:label="emblem-videos" + transform="translate(482.0002,-110)" + id="g21333-9-5" + style="display:inline"> + <g + style="display:inline" + inkscape:label="camera-web" + id="use21331-8-1" + transform="matrix(-1,0,0,1,-124.0002,-46)"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + id="rect2132" + width="16" + height="16" + x="20" + y="276" /> + <rect + ry="1" + rx="0.99980003" + y="280" + x="21.03125" + height="9" + width="9.96875" + id="rect2134" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1;marker:none" /> + <path + inkscape:connector-curvature="0" + id="path2136" + d="M 31,284.4693 34.469295,281 H 35.0002 v 7 h -0.5 z" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:1;marker:none" + sodipodi:nodetypes="cccccc" /> + </g> + </g> + <g + transform="matrix(-1,0,0,1,863.00037,79.003359)" + inkscape:label="call-start" + id="g6051" + style="display:inline;enable-background:new"> + <rect + y="20.996641" + x="-521.00037" + height="16" + width="16" + id="rect43299-3" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:1;marker:none" + transform="scale(-1,1)" /> + <path + transform="translate(241.0002,-473)" + inkscape:connector-curvature="0" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none" + d="M 266.96875,495 C 266.43472,495 266,495.42699 266,495.96875 v 0.0625 C 266.01714,502.64406 271.38317,508 278,508 h 0.0312 c 0.54483,0 0.9688,-0.446 0.9688,-1 v -1 -2 c 0,-0.554 -0.446,-1 -1,-1 h -2 c -0.554,0 -1,0.446 -1,1 v 0.46875 C 272.44314,503.56487 270.43513,501.55686 269.53125,499 H 270 c 0.55401,0 1,-0.44599 1,-1 v -2 c 0,-0.55401 -0.44599,-1 -1,-1 h -1 -1 -0.96875 -0.0312 -0.0312 z" + id="rect5922" /> + </g> + <g + transform="translate(162,-526)" + inkscape:label="document-edit" + id="g10444" + style="display:inline"> + <rect + y="646" + x="180" + height="16" + width="16" + id="rect10447" + style="fill:none;stroke:none" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" + sodipodi:nodetypes="cccccc" + id="path13107" + d="m 182.67863,656.29269 5.84933,-5.85075 2.99982,2.99981 -5.82888,5.87306 -4.02677,1.07184 z" + inkscape:connector-curvature="0" /> + <path + id="rect9831" + d="m 191.63729,647.67638 c -0.20052,0 -0.40103,0.0768 -0.55468,0.23047 l -1.76953,1.76758 3.05273,3.05273 1.76953,-1.76953 c 0.3073,-0.3073 0.3073,-0.80208 0,-1.10938 l -1.94336,-1.9414 c -0.15365,-0.15365 -0.35417,-0.23047 -0.55469,-0.23047 z" + 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:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-77.999996,142.00001)" + inkscape:label="go-home" + id="g9849" + style="display:inline"> + <g + transform="translate(-853.0002,532.99999)" + style="display:inline" + id="use9847" + inkscape:label="user-home"> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path2140" + d="M 1256.0002,-568.99998 V -562 h 10 v -6.99998" + style="fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="ccc" + inkscape:connector-curvature="0" + id="path2142" + d="m 1254.0002,-567.99998 7,-5 7,5" + style="fill:none;stroke:#241f31;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="-567" + x="1259.0002" + height="6" + width="3" + id="rect2144" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#241f31;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + <rect + style="display:inline;fill:#241f31;fill-opacity:1;stroke:none" + id="rect2146" + width="1" + height="1" + x="-1269.0004" + y="-568" + transform="scale(-1,1)" /> + <rect + style="display:inline;fill:#241f31;fill-opacity:1;stroke:none" + id="rect2148" + width="1" + height="1" + x="-1254.0004" + y="-568" + transform="scale(-1,1)" /> + <rect + y="-575" + x="1253.0002" + height="16" + width="16" + id="rect2150" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + </g> + </g> + <g + id="g40070" + inkscape:label="user-trash" + transform="matrix(-1,0,0,1,625.94876,-856)" + style="display:inline"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect40076" + width="16" + height="16" + x="227.9998" + y="996" /> + <path + d="m 230.9998,1001 v 9 h 9 v -9 h 2 v 9 c 0,2 -2,2 -2,2 h -9 c -2,0 -2,-2 -2,-2 v -9 z m 4.00001,1 h 1.00002 v 6 h -1.00002 z m 2,0 h 1.00002 v 6 h -1.00002 z m -4,0 h 0.99999 v 6 h -0.99999 z m -1.00001,-6 c -2,0 -2,2 -2,2 h -2 v 2 h 15 v -2 h -2 c 0,-2 -2,-2 -2,-2 z m 0,1 h 7 v 1 h -7 z" + style="fill:#000000;fill-opacity:1;stroke:none" + id="path3799" + inkscape:connector-curvature="0" /> + </g> + <g + id="g35539" + transform="translate(35.758249,-843.1781)" + inkscape:label="emblem-important" + style="display:inline"> + <path + style="fill:#000000;fill-opacity:1;stroke:none" + d="m 354.1907,964.17812 c -3.86599,0 -7,3.13401 -7,7 0,3.86599 3.13401,7 7,7 3.86599,0 7,-3.13401 7,-7 0,-3.86599 -3.13401,-7 -7,-7 z m -0.0937,1.96875 a 1.0001,1.0001 0 0 1 1.09375,1.03125 v 5 a 1.0001,1.0001 0 1 1 -2,0 v -5 a 1.0001,1.0001 0 0 1 0.78125,-1 1.0001,1.0001 0 0 1 0.125,-0.0313 z m 0.0937,8.03125 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55229,0 -1,-0.44772 -1,-1 0,-0.55228 0.44771,-1 1,-1 z" + id="path35543" + inkscape:connector-curvature="0" /> + <rect + y="963.1781" + x="346.1907" + height="16" + width="16" + id="rect35549" + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" /> + </g> + <g + transform="translate(-59.05126,-281)" + inkscape:label="emblem-favorite" + id="g8559" + style="display:inline"> + <rect + style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:none;stroke:none;stroke-width:2;marker:none;enable-background:accumulate" + id="rect14243" + width="16" + height="16" + x="441.00021" + y="381" /> + <path + style="display:inline;fill:#000000;fill-opacity:1;stroke:none;enable-background:new" + sodipodi:nodetypes="cscsscccccc" + inkscape:connector-curvature="0" + id="path4" + d="m 456.0002,386.76617 c 0,-2.07495 -1.68742,-3.75698 -3.76925,-3.75698 -1.37132,0 -2.57123,0.73006 -3.23065,1.8214 -0.65942,-1.09135 -1.85953,-1.8214 -3.23085,-1.8214 -2.08183,0 -3.76925,1.68203 -3.76925,3.75698 0,1.07968 0.45777,2.05239 1.18953,2.73766 h -10e-4 l 5.72506,5.49617 5.89867,-5.49617 h -0.002 c 0.73186,-0.68517 1.18933,-1.65788 1.18933,-2.73766" /> + </g> + </g> + <g + id="g2014" + transform="translate(-70.030303,-207)"> + <g + transform="matrix(0.3,0,0,-0.21279762,-440.7697,766.3631)" + style="display:inline;fill:url(#linearGradient1572);fill-opacity:1;stroke-width:1.0298574;enable-background:new" + clip-path="none" + id="g1479"> + <rect + transform="scale(-1,1)" + clip-path="none" + ry="37.594406" + rx="26.666666" + y="-190.965" + x="-429.33334" + height="451.13287" + width="346.66669" + id="rect1473" + style="opacity:1;vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:53.73949814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" /> + <rect + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:53.73949814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" + id="rect1475" + width="346.66669" + height="451.13287" + x="-429.33334" + y="-181.56641" + rx="26.666666" + ry="37.594406" + clip-path="none" + transform="scale(-1,1)" /> + <rect + style="opacity:1;vector-effect:none;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:53.73949814;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" + id="rect1477" + width="346.66669" + height="451.13284" + x="-429.33334" + y="-153.37062" + rx="26.666666" + ry="37.594406" + clip-path="none" + transform="scale(-1,1)" /> + </g> + <g + id="g1497" + style="display:inline;enable-background:new" + transform="translate(-427.9697,519)"> + <circle + r="1.9999998" + cy="252" + cx="108" + id="circle1481" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1483" + cx="108" + cy="242" + r="1.9999998" /> + <circle + r="1.9999998" + cy="232" + cx="108" + id="circle1485-8" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1487" + cx="108" + cy="222" + r="1.9999998" /> + <circle + r="1.9999998" + cy="212" + cx="108" + id="circle1489" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1493" + cx="108" + cy="202" + r="1.9999998" /> + <circle + r="1.9999998" + cy="192" + cx="108" + id="circle1495" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + id="g1518" + style="display:inline;enable-background:new" + transform="translate(-427.9697,519)"> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1499-7" + cx="20" + cy="272" + r="1.9999998" /> + <circle + r="1.9999998" + cy="262" + cx="20" + id="circle1501" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1503" + cx="20" + cy="252" + r="1.9999998" /> + <circle + r="1.9999998" + cy="242" + cx="20" + id="circle1505" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1507" + cx="20" + cy="232" + r="1.9999998" /> + <circle + r="1.9999998" + cy="222" + cx="20" + id="circle1509" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1511" + cx="20" + cy="212" + r="1.9999998" /> + <circle + r="1.9999998" + cy="202" + cx="20" + id="circle1513-9" + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:7.99999905;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1515" + cx="20" + cy="192" + r="1.9999998" /> + </g> + <g + transform="translate(-427.9697,518)" + id="g1538" + style="display:inline;opacity:0.3;stroke:#d5d3cf;enable-background:new"> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1520" + d="m 28,192 h 72" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 28,202 h 72" + id="path1522" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1524" + d="m 28,212 h 72" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1526" + d="m 28,222 h 72" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 28,232 h 72" + id="path1528" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 28,242 h 72" + id="path1530" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1532" + d="m 28,252 h 72" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1534" + d="m 28,262 h 72" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#d5d3cf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 28,272 H 94" + id="path1536" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(-447.9697,519)" + id="g1568" + style="display:inline;enable-background:new"> + <g + id="g1546" + transform="translate(14.00001,-11.999987)" + style="opacity:0.1;stroke:#00000f;stroke-opacity:1"> + <path + transform="translate(0,-3e-6)" + style="display:inline;fill:none;stroke:#00000f;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m 35.99999,249.99999 -8,8" + id="path1540" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + transform="translate(0,-3e-6)" + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1542" + d="m 27.99999,257.99999 -14,14" + style="display:inline;fill:none;stroke:#00000f;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + <circle + r="30.117647" + cy="227.99998" + cx="57.999996" + id="circle1544" + style="opacity:1;fill:none;fill-opacity:0.3858268;stroke:#00000f;stroke-width:3.76470613;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <g + transform="translate(14.00001,-13.999987)" + id="g1558" + style="display:inline;enable-background:new"> + <path + style="display:inline;opacity:0.15400002;fill:none;stroke:#ffffff;stroke-width:1.63784266;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="m 11.890335,268.55054 15.45714,-15.45715" + id="path1548" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1550-2" + d="m 35.99999,249.99999 -8,8" + style="fill:none;stroke:#949390;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#d5d3cf;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 35.99999,247.99999 -8,8" + id="path1552" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#241f31;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 27.99999,257.99999 -14,14" + id="path1554" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path1556" + d="m 27.99999,255.99999 -14,14" + style="fill:none;stroke:#424048;stroke-width:12;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <circle + transform="scale(-1,1)" + r="29.937637" + style="display:inline;opacity:0.5;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.44194174;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="circle1560" + cx="-71.999969" + cy="212.06238" /> + <circle + r="30.117647" + cy="214" + cx="72.000008" + id="circle1562" + style="opacity:1;fill:none;fill-opacity:0.3858268;stroke:#1a5fb4;stroke-width:3.76470613;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;fill:none;fill-opacity:0.3858268;stroke:#62a0ea;stroke-width:3.76470613;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle1564" + cx="72.000008" + cy="212" + r="30.117647" /> + <path + sodipodi:nodetypes="cc" + style="display:inline;opacity:0.15400002;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="M 25,255 41,239" + id="path1566" + inkscape:connector-curvature="0" /> + </g> + <rect + clip-path="url(#clipPath1609)" + transform="matrix(0,1,1,0,-427.9697,519)" + ry="8" + rx="8" + y="88" + x="252" + height="36" + width="36" + id="rect1570" + style="display:inline;opacity:1;fill:url(#linearGradient1574);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + </g> + <g + id="g2185" + transform="translate(19.359232,-27.373028)"> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.01129821px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect929-36-9-9-5" + width="112" + height="86" + x="-365.35922" + y="539.37305" + rx="7.9999995" + ry="7.999999" /> + <rect + rx="3.9999998" + style="display:inline;opacity:1;vector-effect:none;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:0.01129821px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect946-0-7-4-0" + width="92" + height="76" + x="-361.35922" + y="543.37305" + ry="4" /> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient1444-2-3-3-3);fill-opacity:1;stroke:none;stroke-width:0.01129821px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m -365.35922,615.37304 v 4 c 0,4.432 3.568,8 8,8 h 96 c 4.432,0 8,-3.568 8,-8 v -4 c 0,4.432 -3.568,8 -8,8 h -96 c -4.432,0 -8,-3.568 -8,-8 z" + id="rect929-3-6-3-9-3" + sodipodi:nodetypes="csssscssc" /> + <rect + y="-615.37305" + x="-357.35922" + height="68" + width="84" + id="rect968-2-6" + style="display:inline;opacity:0.05;vector-effect:none;fill:url(#radialGradient1030-8-1);fill-opacity:1;stroke:none;stroke-width:0.01121096px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + transform="scale(1,-1)" /> + <path + id="path1092-6-1-3-7-5-5-1" + style="display:inline;opacity:0.23600003;fill:none;stroke:#e5a50a;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="m -357.35922,585.37304 h 26 l 10,-23 6,39 8,-16 h 34" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <path + id="path1092-6-1-3-7-5-1-0-0" + style="display:inline;opacity:1;fill:none;stroke:url(#linearGradient1106-2-7);stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="m -357.35922,585.37304 h 26 l 10,-23 6,39 8,-16 h 6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccc" /> + <g + transform="translate(-373.35921,341.37304)" + id="g1063-6" + style="display:inline;enable-background:new"> + <path + style="display:inline;opacity:1;vector-effect:none;fill:#949390;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m 115.99999,232 v 4 c 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 v -2 l 4,-2 z" + id="path1066-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csscccc" /> + <path + sodipodi:nodetypes="ccsscc" + inkscape:connector-curvature="0" + id="path1074-2" + d="m 115.99999,248 v 6 h -4 c -2.216,0 -4,-1.784 -4,-4 v -2 z" + style="display:inline;opacity:1;vector-effect:none;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + id="path1076-0" + d="m 115.99999,252 v -4 a 4,3.9999998 0 0 0 -4,-4 4,3.9999998 0 0 0 -4,4 4,3.9999998 0 0 0 4,4 z" + style="display:inline;opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + inkscape:connector-curvature="0" /> + <ellipse + ry="1.0000002" + rx="1" + cy="250" + cx="-113.99997" + id="ellipse1078-6" + style="display:inline;opacity:1;vector-effect:none;fill:#68676b;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + transform="scale(-1,1)" /> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m 115.99999,230 v 4 a 4,3.9999998 0 0 1 -4,4 4,3.9999998 0 0 1 -4,-4 4,3.9999998 0 0 1 4,-4 z" + id="path1080-1" /> + <ellipse + transform="scale(-1)" + style="display:inline;opacity:1;vector-effect:none;fill:#68676b;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="ellipse1082-5" + cx="-113.99997" + cy="-232" + rx="1" + ry="1.0000002" /> + <path + sodipodi:nodetypes="csscccc" + inkscape:connector-curvature="0" + id="path1084-5" + d="m 107.99999,218 v 4 c 0,2.20914 1.79086,4 4,4 2.20914,0 4,-1.79086 4,-4 v -2 l -4,-2 z" + style="display:inline;opacity:1;vector-effect:none;fill:#949390;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + id="path1086-4" + d="m 107.99999,216 v 4 a 4,3.9999998 0 0 0 4,4 4,3.9999998 0 0 0 4,-4 4,3.9999998 0 0 0 -4,-4 z" + style="display:inline;opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + inkscape:connector-curvature="0" /> + <ellipse + ry="1.0000002" + rx="1" + cy="-218" + cx="109.99997" + id="ellipse1088-7" + style="display:inline;opacity:1;vector-effect:none;fill:#68676b;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + transform="scale(1,-1)" /> + <path + style="display:inline;opacity:1;vector-effect:none;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m 115.99999,206 v 6 h -4 c -2.216,0 -4,-1.784 -4,-4 v -2 z" + id="path1090-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccsscc" /> + <path + inkscape:connector-curvature="0" + style="display:inline;opacity:1;vector-effect:none;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + d="m 115.99999,210 v -4 a 4,3.9999998 0 0 0 -4,-4 4,3.9999998 0 0 0 -4,4 4,3.9999998 0 0 0 4,4 z" + id="path1092-5" /> + <ellipse + transform="scale(-1,1)" + style="display:inline;opacity:1;vector-effect:none;fill:#68676b;fill-opacity:1;stroke:none;stroke-width:3.99999952;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="ellipse1094-6" + cx="-113.99997" + cy="208" + rx="1" + ry="1.0000002" /> + </g> + </g> + <g + id="g2539" + transform="translate(9.5367431e-7,2.4e-4)" + style="display:inline;enable-background:new"> + <rect + ry="8" + rx="7.999999" + y="225.99976" + x="12.000266" + height="62" + width="104" + id="rect1081-1" + style="display:inline;vector-effect:none;fill:url(#linearGradient8402);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <g + id="g1883-9" + transform="translate(2.6595592e-4,-8.0002393)"> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient8404);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1172-1" + width="87.999992" + height="46" + x="19.999998" + y="234" /> + <rect + style="opacity:1;vector-effect:none;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:1.12328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1174-3" + width="87.999992" + height="66" + x="19.999998" + y="208" /> + </g> + <rect + style="display:inline;vector-effect:none;fill:url(#linearGradient8406);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1164-8" + width="104" + height="38" + x="12.000266" + y="223.99976" + rx="7.999999" + ry="8" /> + <rect + style="display:inline;vector-effect:none;fill:url(#linearGradient8408);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect1476-4" + width="104" + height="62" + x="12.000266" + y="225.99976" + rx="7.999999" + ry="8" /> + <rect + style="vector-effect:none;fill:#5e5c64;fill-opacity:1;stroke:none;stroke-width:1.14018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1478-9" + width="104" + height="60" + x="12.000267" + y="223.99976" + rx="9.454545" + ry="8" /> + <g + id="g3308" + transform="translate(0,-2)"> + <g + transform="translate(-578.75348,-12.522289)" + id="g1953"> + <g + style="display:inline;enable-background:new" + transform="translate(578.75348,10.522289)" + id="g1668-6"> + <rect + y="234" + x="19.999998" + height="46" + width="87.999992" + id="rect1666-2" + style="display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient1938);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + </g> + <g + transform="translate(578.75348,16.522289)" + style="display:inline;enable-background:new" + id="g1688-9"> + <path + style="display:inline;fill:#000000;fill-opacity:0.137255;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m 108,272 h -0.5 v 1 h 0.5 z m -44.507811,0 44.000001,1 v -1 z" + id="path1680-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + <path + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path1682-7" + d="m 108,272 h -0.5 v 1 h 0.5 z m -44.507811,0 44.000001,1 v -1 z" + style="display:inline;fill:#000000;fill-opacity:0.137255;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" /> + <path + style="display:inline;fill:#000000;fill-opacity:0.137255;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m 108,270 h -0.5 v 1 h 0.5 z m -47.507811,0 47.000001,1 v -1 z" + id="path1684-0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccc" /> + <path + sodipodi:nodetypes="ccccccccc" + inkscape:connector-curvature="0" + id="path1686-9" + d="m 108,268 h -0.5 v 1 h 0.5 z m -50.507811,0 50.000001,1 v -1 z" + style="display:inline;fill:#000000;fill-opacity:0.137255;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" /> + </g> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#000000;fill-opacity:0.137255;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="rect1749-2" + width="88" + height="7.9999995" + x="598.75348" + y="282.52228" /> + </g> + <rect + y="252" + x="26" + height="14" + width="4" + id="rect2344" + style="opacity:0.4;fill:#241f31;stroke:none;stroke-width:5.9981;stroke-opacity:0.461288" /> + <g + transform="matrix(1,0,0,1.75,0,-189)" + style="opacity:0.2;stroke-width:0.755929" + id="g2585"> + <rect + style="opacity:1;fill:#241f31;stroke:none;stroke-width:4.53414;stroke-opacity:0.461288" + id="rect2352" + width="9.4649925" + height="5.1428704" + x="40.535011" + y="254.85715" /> + <rect + y="252" + x="36" + height="8" + width="10" + id="rect2346" + style="opacity:1;fill:#241f31;stroke:none;stroke-width:4.53414;stroke-opacity:0.461288" /> + <rect + y="252" + x="56" + height="8" + width="18" + id="rect2354" + style="opacity:1;fill:#241f31;stroke:none;stroke-width:4.53414;stroke-opacity:0.461288" /> + <rect + style="opacity:1;fill:#241f31;stroke:none;stroke-width:4.53415;stroke-opacity:0.461288" + id="rect2364" + width="6" + height="3.4285715" + x="72" + y="256.57144" /> + <rect + style="opacity:1;fill:#241f31;stroke:none;stroke-width:4.53415;stroke-opacity:0.461288" + id="rect2366" + width="6" + height="8" + x="84" + y="252" /> + </g> + </g> + <rect + style="opacity:0.2;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1988" + width="111.99973" + height="56.00024" + x="8.000267" + y="199.99976" + rx="9.454545" + ry="8" + clip-path="url(#clipPath1992)" /> + <rect + ry="8" + rx="7.9999986" + y="214" + x="7.999999" + height="37.999756" + width="112.00026" + id="rect1930" + style="display:inline;vector-effect:none;fill:url(#linearGradient1932);fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8" + rx="9.454545" + y="191.99976" + x="8.000267" + height="56.00024" + width="111.99973" + id="rect1488-8" + style="vector-effect:none;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:1.14018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="display:inline;fill:none;stroke:url(#linearGradient143387);stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + d="m 32.823351,215.99976 62.35383,-36" + id="path1732-5" + inkscape:connector-curvature="0" /> + <g + transform="translate(0,1)" + id="g2076"> + <circle + r="15.999751" + cy="-219.00024" + cx="64.000275" + id="circle1496-5" + style="display:inline;vector-effect:none;fill:url(#linearGradient8414);fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + transform="scale(1,-1)" /> + <circle + transform="matrix(0,-1,-1,0,0,0)" + style="display:inline;vector-effect:none;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="circle1498-9" + cx="-216.99995" + cy="-64.000275" + r="15.999798" /> + </g> + <g + id="g973" + transform="translate(2.6595592e-4,-6.0002393)"> + <path + style="fill:url(#linearGradient8416);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 59,205 -1,2 1,2 -1,2 1,2 -1,2 1,2 -1,2 1,2 -1,2 v 1 c 3e-4,2.14329 1.143853,4.12367 3,5.19531 1.856406,1.0718 4.143594,1.0718 6,0 1.856147,-1.07164 2.9997,-3.05202 3,-5.19531 v -3 l -1,-2 1,-2 -1,-2 1,-2 -1,-2 1,-2 -1,-2 1,-2 -1,-2 z" + id="path1500-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccsscccccccccccc" /> + <g + transform="translate(0,2)" + id="g1485-6"> + <path + sodipodi:nodetypes="czcczcc" + inkscape:connector-curvature="0" + id="path1502-8" + d="m 69.000686,204.99955 c 0,0 -1.352518,3.65721 -4.912302,4.01705 C 60.5286,209.37644 59,207 59,207 l -1,2 c 0,0 2.09255,2.78313 6.088384,2.55042 C 68.084218,211.31771 69.87645,207.0386 70,206.99999 Z" + style="fill:#ffffff;fill-opacity:0.38189;stroke:none;stroke-width:0.0821677;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + sodipodi:nodetypes="csccsccc" + id="path1504-5" + d="m 69.999996,206.99964 c -0.12355,0.0386 -1.915778,4.31807 -5.911612,4.55078 -3.995834,0.23271 -6.088388,-2.55078 -6.088388,-2.55078 l 1,2 c 0,0 1.528604,2.37546 5.088388,2.01562 3.559784,-0.35984 4.911612,-4.01562 4.911612,-4.01562 l 0.04297,0.0859 z" + style="fill:#241f31;fill-opacity:0.338583;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffffff;fill-opacity:0.38189;stroke:none;stroke-width:0.0821677;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 69.000686,212.99955 c 0,0 -1.352518,3.65721 -4.912302,4.01705 C 60.5286,217.37644 59,215 59,215 l -1,2 c 0,0 2.09255,2.78313 6.088384,2.55042 C 68.084218,219.31771 69.87645,215.0386 70,214.99999 Z" + id="path1525-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="czcczcc" /> + <path + sodipodi:nodetypes="czcczcc" + inkscape:connector-curvature="0" + id="path1527-8" + d="m 69.000686,216.99955 c 0,0 -1.440906,3.65721 -5.00069,4.01705 C 60.440212,221.37644 59,219 59,219 l -1,2 c 0,0 2.004162,2.78313 5.999996,2.55042 C 67.99583,223.31771 69.87645,219.0386 70,218.99999 Z" + style="fill:#ffffff;fill-opacity:0.38189;stroke:none;stroke-width:0.0821677;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:#ffffff;fill-opacity:0.38189;stroke:none;stroke-width:0.0821677;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 69.000686,208.99955 c 0,0 -1.352518,3.65721 -4.912302,4.01705 C 60.5286,213.37644 59,211 59,211 l -1,2 c 0,0 2.09255,2.78313 6.088384,2.55042 C 68.084218,215.31771 69.87645,211.0386 70,210.99999 Z" + id="path1530-3" + inkscape:connector-curvature="0" + sodipodi:nodetypes="czcczcc" /> + <path + sodipodi:nodetypes="csccsccc" + inkscape:connector-curvature="0" + id="path1532-6" + transform="translate(0,172)" + d="m 70,43 c -0.12355,0.03861 -1.915778,4.318071 -5.911612,4.550781 C 60.092554,47.783491 58,45 58,45 l 1,2 c 0,0 1.528604,2.375465 5.088388,2.015625 C 67.648172,48.655785 69,45 69,45 l 0.04297,0.08594 z" + style="fill:#241f31;fill-opacity:0.338583;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + sodipodi:nodetypes="csccsccc" + inkscape:connector-curvature="0" + style="fill:#241f31;fill-opacity:0.338583;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 69.999996,210.99964 c -0.12355,0.0386 -1.915778,4.31807 -5.911612,4.55078 -3.995834,0.23271 -6.088388,-2.55078 -6.088388,-2.55078 l 1,2 c 0,0 1.528604,2.37546 5.088388,2.01562 3.559784,-0.35984 4.911612,-4.01562 4.911612,-4.01562 l 0.04297,0.0859 z" + id="path1534-7" /> + </g> + </g> + <g + id="g1254"> + <circle + transform="scale(1,-1)" + style="display:inline;vector-effect:none;fill:url(#linearGradient8422);fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="circle1510-6" + cx="64.000282" + cy="-200.00005" + r="11.999864" /> + <circle + r="11.999864" + cy="-64.000282" + cx="-194.00011" + id="circle1512-6" + style="display:inline;vector-effect:none;fill:#deddda;fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + transform="matrix(0,-1,-1,0,0,0)" /> + <path + style="display:inline;vector-effect:none;fill:#77767b;fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + d="m 52.02175,199.40601 a 11.999864,11.999864 0 0 0 -0.02148,0.59375 11.999864,11.999864 0 0 0 12,12 11.999864,11.999864 0 0 0 12,-12 11.999864,11.999864 0 0 0 -0.01953,-0.40625 11.999864,11.999864 0 0 1 -11.980469,11.40625 11.999864,11.999864 0 0 1 -11.978516,-11.59375 z" + id="circle1814-2" + inkscape:connector-curvature="0" /> + <circle + transform="matrix(0,-1,-1,0,0,0)" + style="display:inline;vector-effect:none;fill:url(#radialGradient1505-1);fill-opacity:1;stroke:none;stroke-width:15.9998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" + id="circle1514-9" + cx="-194.00011" + cy="-64.000282" + r="6.0001068" /> + </g> + <path + sodipodi:nodetypes="cc" + style="fill:#77767b;stroke:url(#linearGradient8424);stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" + d="M 32.823351,215.99976 52.40883,204.69208" + id="path1516-7" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path1742-6" + d="M 32.823351,215.99976 52.40883,204.69208" + style="display:inline;fill:#77767b;stroke:url(#linearGradient2370-3);stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" + sodipodi:nodetypes="cc" /> + </g> + </g> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="grid" + style="display:inline" + sodipodi:insensitive="true"> + <circle + cx="64.000031" + cy="236" + r="59.504131" + id="circle2892" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9292889" + rx="8.701004" + y="180.49496" + x="20.495007" + height="111.01005" + width="87.009987" + id="rect2894" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="7.9238095" + rx="7.9238095" + y="184.49524" + x="12.495266" + height="103.00952" + width="103.00952" + id="rect2896" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + ry="8.701005" + rx="7.9292889" + y="200.49496" + x="8.4950066" + height="87.010048" + width="111.01004" + id="rect2898" + style="display:inline;opacity:0.1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.99000001, 0.99000001;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <path + inkscape:connector-curvature="0" + id="path2900" + d="M 2.6203015e-5,288.99999 H 128.00003" + style="display:inline;fill:none;stroke:#62a0ea;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:new" /> + </g> + <g + id="g1648" + transform="translate(-120.50005,-26)"> + <g + id="g1207" + style="display:inline;enable-background:new" + transform="translate(-89.5,194)"> + <rect + ry="8" + rx="8" + y="234" + x="20" + height="58" + width="88" + id="rect1041" + style="opacity:1;vector-effect:none;fill:url(#linearGradient1049);fill-opacity:1;stroke:none;stroke-width:0.01184966px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" /> + <rect + style="opacity:1;vector-effect:none;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.01184966px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" + id="rect15435-6" + width="88" + height="108" + x="20" + y="180" + rx="8" + ry="8" /> + <rect + ry="4" + rx="4" + y="186" + x="24" + height="98" + width="80" + id="rect1167-6" + style="display:inline;opacity:1;vector-effect:none;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:0.0119126px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" /> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#3584e4;fill-opacity:1;stroke:none;stroke-width:0.0119126px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect15441-8" + width="80" + height="98" + x="24" + y="184" + rx="4" + ry="4" /> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#1c71d8;fill-opacity:1;stroke:none;stroke-width:0.01190936px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect15443-6" + width="80" + height="2" + x="24" + y="216" + rx="0" + ry="0" /> + <rect + style="display:inline;opacity:1;vector-effect:none;fill:#1c71d8;fill-opacity:1;stroke:none;stroke-width:0.01190936px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" + id="rect15461-2" + width="80" + height="2" + x="24" + y="248" + rx="0" + ry="0" /> + <g + id="g1088"> + <path + sodipodi:nodetypes="sssccccccss" + inkscape:connector-curvature="0" + id="path26035" + d="m 55,196 h 18 c 1.662,0 3,1 3,3 v 5 H 72.03125 L 72,200 H 56 l 0.03125,4 H 52 v -5 c 0,-1.662 1.338,-3 3,-3 z" + style="opacity:1;vector-effect:none;fill:url(#linearGradient1278);fill-opacity:1;stroke:none;stroke-width:0.01184966px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" /> + <rect + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect1059" + width="24" + height="4" + x="52" + y="202" + ry="1.5" + rx="1.5" /> + <path + style="opacity:1;fill:url(#linearGradient1280);fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 55,200 c -1.662,0 -3,1.338 -3,3 v 1 h 4 v -2 h 16 v 2 h 4 v -1 c 0,-1.662 -1.338,-3 -3,-3 z" + id="rect1061" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ssccccccsss" /> + <rect + y="202" + x="56" + height="2" + width="16" + id="rect1189" + style="opacity:0.1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <use + x="0" + y="0" + xlink:href="#g1088" + id="use1090" + transform="translate(0,32)" + width="100%" + height="100%" /> + <use + height="100%" + width="100%" + transform="translate(0,64)" + id="use1092" + xlink:href="#g1088" + y="0" + x="0" /> + </g> + </g> + </g> +</svg> diff --git a/examples/adw-1/adw1-demo/leaflet.scm b/examples/adw-1/adw1-demo/leaflet.scm new file mode 100644 index 0000000..8827a7d --- /dev/null +++ b/examples/adw-1/adw1-demo/leaflet.scm @@ -0,0 +1,132 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (adw1-demo leaflet) + #:use-module (oop goops) + #:use-module (g-golf) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (<adw-demo-page-leaflet> + %adw-leaflet-transition-type)) + + +(g-export !transition-type + !transition-row + !action-row) + + +(eval-when (expand load eval) + (g-irepository-require "Gtk" #:version "4.0") + (for-each (lambda (name) + (gi-import-by-name "Gtk" name)) + '("ClosureExpression")) + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("Bin" + "Clamp" + "PreferencesGroup" + "StatusPage" + "ComboRow" + "ActionRow" + "EnumListModel" + "EnumListItem" + "LeafletTransitionType"))) + + +(define %adw-leaflet-transition-type #f) + +(eval-when (expand load eval) + (set! %adw-leaflet-transition-type + (gi-cache-ref 'enum 'adw-leaflet-transition-type))) + + +(define-class <adw-demo-page-leaflet> (<adw-bin>) + ;; slots + (transition-type #:g-param `(enum + #:type ,%adw-leaflet-transition-type) + #:accessor !transition-type) + (transition-row #:child-id "transition-row" #:accessor !transition-row) + (action-row #:child-id "action-row" #:accessor !action-row) + ;; class options + #:template (string-append (dirname (current-filename)) + "/ui/leaflet.ui") + #:child-ids '("transition-row" + "action-row") + #:g-signal '(next-page ;; name + none ;; return-type + () ;; param-types + (run-first))) ;; signal flags + +(define-method (initialize (self <adw-demo-page-leaflet>) initargs) + (next-method) + ;; AdwComboRow requires their expression property to be set, it is + ;; used to bind strings to the labels produced by the default factory + ;; (if AdwComboRow:factory is not set). + (let ((transition-row (!transition-row self)) + (action-row (!action-row self)) + (closure (transition-name-closure))) + + (set! (!expression transition-row) + (make-expression 'string closure '())) + + (bind-property transition-row + "selected" + self + "transition-type" + '(sync-create bidirectional)) + + (connect action-row + "activated" + (lambda (r) + (emit self 'next-page))))) + +(define (make-expression type closure flags) + (gtk-closure-expression-new (symbol->g-type type) + (!g-closure closure) + flags)) + +(define (get-transition-name adw-enum-list-item) + (case (!value adw-enum-list-item) + ((0) "Over") ;; later (G_ "Over") + ((1) "Under") ;; ... + ((2) "Slide") + (else + (scm-error 'unlikely #f "This instance is a ghost: ~S" + (list adw-enum-list-item) #f)))) + +(define (transition-name-closure) + (make <closure> + #:function get-transition-name + #:return-type 'string + #:param-types (list <adw-enum-list-item>))) diff --git a/examples/adw-1/adw1-demo/preferences.scm b/examples/adw-1/adw1-demo/preferences.scm new file mode 100644 index 0000000..205c29b --- /dev/null +++ b/examples/adw-1/adw1-demo/preferences.scm @@ -0,0 +1,130 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (adw1-demo preferences) + #:use-module (oop goops) + #:use-module (g-golf) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (<adw-demo-preferences-window>)) + + +(g-export !toast-bt + !go-to-subpage-1-ar + !subpage-1 + !subpage-1-bt + !go-to-subpage-2-ar + !subpage-2 + !subpage-2-bt) + + +(eval-when (expand load eval) + (g-irepository-require "Gtk" #:version "4.0") + (for-each (lambda (name) + (gi-import-by-name "Gtk" name)) + '("Button")) + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("StatusPage" + "PreferencesWindow" + "PreferencesPage" + "PreferencesGroup" + "Toast" + "ComboRow" + "ActionRow"))) + + +(define-class <adw-demo-preferences-window> (<adw-preferences-window>) + ;; slots + (toast-bt #:child-id "toast-bt" #:accessor !toast-bt) + (go-to-subpage-1-ar #:child-id "go-to-subpage-1-ar" + #:accessor !go-to-subpage-1-ar) + (subpage-1 #:child-id "subpage-1" #:accessor !subpage-1) + (subpage-1-bt #:child-id "subpage-1-bt" #:accessor !subpage-1-bt) + (go-to-subpage-2-ar #:child-id "go-to-subpage-2-ar" + #:accessor !go-to-subpage-2-ar) + (subpage-2 #:child-id "subpage-2" #:accessor !subpage-2) + (subpage-2-bt #:child-id "subpage-2-bt" #:accessor !subpage-2-bt) + ;; class options + #:template (string-append (dirname (current-filename)) + "/ui/preferences.ui") + + #:child-ids '("toast-bt" + "go-to-subpage-1-ar" + "subpage-1" + "subpage-1-bt" + "go-to-subpage-2-ar" + "subpage-2" + "subpage-2-bt")) + + +(define-method (initialize (self <adw-demo-preferences-window>) initargs) + (next-method) + + (connect (!toast-bt self) + 'clicked + (lambda (b) + (toast-show-cb self))) + + (connect (!go-to-subpage-1-ar self) + 'activated + (lambda (r) + (go-to-subpage-1-ar-cb self))) + + (connect (!subpage-1-bt self) + 'clicked + (lambda (b) + (return-to-preferences-cb self))) + + (connect (!go-to-subpage-2-ar self) + 'activated + (lambda (r) + (go-to-subpage-2-ar-cb self))) + + (connect (!subpage-2-bt self) + 'clicked + (lambda (b) + (return-to-preferences-cb self)))) + +(define (toast-show-cb prefs-win) + (add-toast prefs-win (make <adw-toast> #:title "Example Toast"))) + +(define (go-to-subpage-1-ar-cb prefs-win) + (present-subpage prefs-win (!subpage-1 prefs-win))) + +(define (go-to-subpage-2-ar-cb prefs-win) + (present-subpage prefs-win (!subpage-2 prefs-win))) + +(define (return-to-preferences-cb prefs-win) + (close-subpage prefs-win)) diff --git a/examples/adw-1/adw1-demo/style-dark.css b/examples/adw-1/adw1-demo/style-dark.css new file mode 100644 index 0000000..4aebb20 --- /dev/null +++ b/examples/adw-1/adw1-demo/style-dark.css @@ -0,0 +1,39 @@ +#custom-button-1 { + color: @red_1; +} + +#custom-button-2 { + color: @purple_1; +} + +.tab-page-color-1 { + background: shade(@blue_5, 0.7); +} + +.tab-page-color-2 { + background: shade(@green_5, 0.6); +} + +.tab-page-color-3 { + background: shade(@yellow_5, 0.5); +} + +.tab-page-color-4 { + background: shade(@orange_5, 0.6); +} + +.tab-page-color-5 { + background: shade(@red_5, 0.7); +} + +.tab-page-color-6 { + background: shade(@purple_5, 0.7); +} + +.tab-page-color-7 { + background: shade(@brown_5, 0.7); +} + +.tab-page-color-8 { + background: #363636; +} diff --git a/examples/adw-1/adw1-demo/style.css b/examples/adw-1/adw1-demo/style.css new file mode 100644 index 0000000..6f4e5d0 --- /dev/null +++ b/examples/adw-1/adw1-demo/style.css @@ -0,0 +1,82 @@ +stacksidebar { + border-left-width: 0px; + border-right-width: 0px; +} + +/* Mimic the status page. */ +.avatar-page, +.timed-animation-page { + margin: 36px 12px; +} + +.avatar-page > box > label.title, +.timed-animation-page > box > label.title { + margin-bottom: 12px; +} + +.avatar-page > box > label.description { + margin-bottom: 36px; +} + +flowbox.inline flowboxchild { + padding: 0; + background: none; + color: inherit; +} + +#custom-button-1 { + color: @red_3; +} + +#custom-button-2 { + color: @purple_3; +} + +#custom-button-3 { + color: white; + background-color: @green_5; +} + +#custom-button-4 { + color: white; + background-color: @orange_4; +} + +#animation-sample { + min-width: 30px; + min-height: 30px; + border-radius: 24px; + background: linear-gradient(to bottom, @green_2, @green_5); +} + +.tab-page-color-1 { + background: shade(@blue_1, 1.2); +} + +.tab-page-color-2 { + background: shade(@green_1, 1.2); +} + +.tab-page-color-3 { + background: shade(@yellow_1, 1.2); +} + +.tab-page-color-4 { + background: shade(@orange_1, 1.2); +} + +.tab-page-color-5 { + background: shade(@red_1, 1.4); +} + +.tab-page-color-6 { + background: shade(@purple_1, 1.3); +} + +.tab-page-color-7 { + background: shade(@brown_1, 1.3); +} + +.tab-page-color-8 { + background: white; +} diff --git a/examples/adw-1/adw1-demo/ui/Makefile b/examples/adw-1/adw1-demo/ui/Makefile new file mode 100644 index 0000000..aa36bf5 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/Makefile @@ -0,0 +1,42 @@ + +#### +#### Copyright (C) 2023 +#### Free Software Foundation, Inc. + +#### This file is part of GNU G-Golf. + +#### GNU G-Golf is free software; you can redistribute it and/or +#### modify it under the terms of the GNU General Public License as +#### published by the Free Software Foundation; either version 3 of the +#### License, or (at your option) any later version. + +#### GNU G-Golf is distributed in the hope that it will be useful, but +#### WITHOUT ANY WARRANTY; without even the implied warranty of +#### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +#### General Public License for more details. + +#### You should have received a copy of the GNU General Public License +#### along with GNU G-Golf. If not, see +#### <https://www.gnu.org/licenses/gpl.html>. +#### + +### Commentary: + +### Code: + + +SCM_SRC := $(shell find . -name "*.scm") + +XML = $(subst .scm,.ui,$(SCM_SRC)) + +all: $(XML) + +$(XML): %.ui: %.scm + ( cd `dirname $<`; \ + guile --debug \ + -l `basename $<` \ + -c '(make-ui)' \ + > `basename $@` || { rm `basename $@`; false; } ) + +clean: + rm -f $(XML) diff --git a/examples/adw-1/adw1-demo/ui/leaflet.scm b/examples/adw-1/adw1-demo/ui/leaflet.scm new file mode 100644 index 0000000..4e00860 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/leaflet.scm @@ -0,0 +1,87 @@ +;; -*- mode: sxml-ui; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(use-modules (g-golf support sxml)) + + +(define %adw-combo-row + '(object (@ (class "AdwComboRow") + (id "transition-row")) + (property (@ (name "title") + (translatable "yes")) "Transition Type") + (property (@ (name "subtitle") + (translatable "yes")) "The type of transition to use when the leaflet adapts its size or when changing the visible child") + ;; the binding is done in scheme, see (adw1-demo leaflet), as part + ;; of the <adw-demo-page-leaflet>) initialize method + #;(property (@ (name "selected") + (bind-source "AdwDemoPageLeaflet") + (bind-property "transition-type") + (bind-flags "sync-create|bidirectional"))) + (property (@ (name "model")) + (object (@ (class "AdwEnumListModel")) + (property (@ (name "enum-type")) AdwLeafletTransitionType))))) + + +(define %adw-action-row + '(object (@ (class "AdwActionRow") + (id "action-row")) + (property (@ (name "title") + (translatable "yes")) "Go to the next page of the leaflet") + (property (@ (name "use-underline")) True) + (property (@ (name "activatable")) True) + ;; signal - activated - swapped + (child + (object (@ (class "GtkImage")) + (property (@ (name "icon-name")) go-next-symbolic))))) + + +(define %leaflet + `(interface + (requires (@ (version "4.0") (lib "gtk"))) + (requires (@ (version "1.0") (lib "libadwaita"))) + (template (@ (class "AdwDemoPageLeaflet") + (parent "AdwBin")) + (property (@ (name "child")) + (object (@ (class "AdwStatusPage")) + (property (@ (name "icon-name")) widget-leaflet-symbolic) + (property (@ (name "title") + (translatable "yes")) Leaflet) + (property (@ (name "description") + (translatable "yes")) "A widget showing either all its children or only one, depending on the available space. This window is using a leaflet, you can control it with the settings below.") + (property (@ (name "child")) + (object (@ (class "AdwClamp")) + (property (@ (name "child")) + (object (@ (class "AdwPreferencesGroup")) + (child ,%adw-combo-row) + (child ,%adw-action-row)))))))))) + + +(define (make-ui) + (sxml->ui %leaflet)) + + diff --git a/examples/adw-1/adw1-demo/ui/leaflet.ui b/examples/adw-1/adw1-demo/ui/leaflet.ui new file mode 100644 index 0000000..c90044c --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/leaflet.ui @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface><requires version="4.0" lib="gtk" /><requires version="1.0" lib="libadwaita" /><template class="AdwDemoPageLeaflet" parent="AdwBin"><property name="child"><object class="AdwStatusPage"><property name="icon-name">widget-leaflet-symbolic</property><property name="title" translatable="yes">Leaflet</property><property name="description" translatable="yes">A widget showing either all its children or only one, depending on the available space. This window is using a leaflet, you can control it with the settings below.</property><property name="child"><object class="AdwClamp"><property name="child"><object class="AdwPreferencesGroup"><child><object class="AdwComboRow" id="transition-row"><property name="title" translatable="yes">Transition Type</property><property name="subtitle" translatable="yes">The type of transition to use when the leaflet adapts its size or when changing the visible child</property><property name="model"><object class="AdwEnumListModel"><property name="enum-type">AdwLeafletTransitionType</property></object></property></object></child><child><object class="AdwActionRow" id="action-row"><property name="title" translatable="yes">Go to the next page of the leaflet</property><property name="use-underline">True</property><property name="activatable">True</property><child><object class="GtkImage"><property name="icon-name">go-next-symbolic</property></object></child></object></child></object></property></object></property></object></property></template></interface> diff --git a/examples/adw-1/adw1-demo/ui/preferences.scm b/examples/adw-1/adw1-demo/ui/preferences.scm new file mode 100644 index 0000000..96fc9b9 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/preferences.scm @@ -0,0 +1,215 @@ +;; -*- mode: sxml-ui; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(use-modules (g-golf support sxml)) + + +(define %prefs-group-1-1 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "description")) "Preferences are organized in pages, this example has the following pages:") + (property (@ (name "title") + (translatable "yes")) Pages) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) L_ayout) + (property (@ (name "use-underline")) True))) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) S_earch) + (property (@ (name "use-underline")) True))))) + +(define %prefs-group-1-2 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "description")) "Preferences are grouped together, a group can have a title and a description. Descriptions will be wrapped if they are too long. This page has the following groups:") + (property (@ (name "title") + (translatable "yes")) Groups) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) "An Untitled Group"))) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) Pages))) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) Groups))) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) Preferences))))) + +(define %prefs-group-1-3 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "title") + (translatable "yes")) Preferences) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) "Preferences rows are appended to the list box"))) + (child + (object (@ (class "GtkLabel")) + (property (@ (name "ellipsize")) end) + (property (@ (name "label") + (translatable "yes")) "Other widgets are appended after the list box") + (property (@ (name "margin-top")) 12) + (property (@ (name "margin-bottom")) 12) + (property (@ (name "xalign")) 0) + (style (class (@ (name "dim-label")))))))) + +(define %prefs-group-1-4 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "title") + (translatable "yes")) Toasts) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) "Show a Toast") + (child + (object (@ (class "GtkButton") + (id "toast-bt")) + (property (@ (name "label") + (translatable "yes")) Show) + ;; (property (@ (name "action-name")) toast.show) + (property (@ (name "valign")) center))))))) + +(define %prefs-group-1-5 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "description")) "Preferences windows can have subpages.") + (property (@ (name "title") + (translatable "yes")) Subpages) + (child + (object (@ (class "AdwActionRow") + (id "go-to-subpage-1-ar")) + (property (@ (name "title") + (translatable "yes")) "Go to a Subpage") + (property (@ (name "activatable")) True) + ;; signal - activated - subpage1-activated-cb - swapped + (child + (object (@ (class "GtkImage")) + (property (@ (name "icon-name")) go-next-symbolic))))) + (child + (object (@ (class "AdwActionRow") + (id "go-to-subpage-2-ar")) + (property (@ (name "title") + (translatable "yes")) "Go to Another Subpage") + (property (@ (name "activatable")) True) + ;; signal - activated - subpage2-activated-cb - swapped + (child + (object (@ (class "GtkImage")) + (property (@ (name "icon-name")) go-next-symbolic))))))) + +(define %prefs-group-2-1 + '(object (@ (class "AdwPreferencesGroup")) + (property (@ (name "description")) "Preferences can be searched, do so using one of the following ways:") + (property (@ (name "title") + (translatable "yes")) Searching) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) "Activate the Search Button"))) + (child + (object (@ (class "AdwPreferencesRow")) + (property (@ (name "title") + (translatable "yes")) Ctrl + f) + (child + (object (@ (class "GtkShortcutLabel")) + (property (@ (name "accelerator")) "<ctrl>f") + (property (@ (name "margin-top")) 12) + (property (@ (name "margin-bottom")) 12) + (property (@ (name "margin-start")) 12) + (property (@ (name "margin-end")) 12))))) + (child + (object (@ (class "AdwActionRow")) + (property (@ (name "title") + (translatable "yes")) "Directly Type Your Search"))))) + +(define %subpage-1 + '(object (@ (class "AdwStatusPage") + (id "subpage-1")) + (property (@ (name "title") + (translatable "yes")) "This is a Subpage") + (property (@ (name "child")) + (object (@ (class "GtkButton") + (id "subpage-1-bt")) + (property (@ (name "label") + (translatable "yes")) "Return to Preferences") + (property (@ (name "halign")) center) + ;; signal - clicked - return-to-preferences-cb - swapped + (style + (class (@ (name "suggested-action"))) + (class (@ (name "pill")))))))) + +(define %subpage-2 + '(object (@ (class "AdwStatusPage") + (id "subpage-2")) + (property (@ (name "title") + (translatable "yes")) "This is Another Subpage") + (property (@ (name "child")) + (object (@ (class "GtkButton") + (id "subpage-2-bt")) + (property (@ (name "label") + (translatable "yes")) "Return to Preferences") + (property (@ (name "halign")) center) + ;; signal - clicked - return-to-preferences-cb - swapped + (style + (class (@ (name "suggested-action"))) + (class (@ (name "pill")))))))) + +(define %sxml + `(interface + (requires (@ (version "4.0") (lib "gtk"))) + (requires (@ (version "1.0") (lib "libadwaita"))) + (template (@ (class "AdwDemoPreferencesWindow") + (parent "AdwPreferencesWindow")) + (property (@ (name "can-navigate-back")) True) + (child + (object (@ (class "AdwPreferencesPage")) + (property (@ (name "icon-name")) preferences-window-layout-symbolic) + (property (@ (name "title")) L_ayout) + (property (@ (name "use-underline")) True) + (child ,%prefs-group-1-1) + (child ,%prefs-group-1-2) + (child ,%prefs-group-1-3) + (child ,%prefs-group-1-4) + (child ,%prefs-group-1-5))) + (child + (object (@ (class "AdwPreferencesPage")) + (property (@ (name "icon-name")) preferences-window-search-symbolic) + (property (@ (name "title")) _Search) + (property (@ (name "use-underline")) True) + (child ,%prefs-group-2-1)))) + ,%subpage-1 + ,%subpage-2)) + + +(define (make-ui) + (sxml->ui %sxml)) diff --git a/examples/adw-1/adw1-demo/ui/preferences.ui b/examples/adw-1/adw1-demo/ui/preferences.ui new file mode 100644 index 0000000..dc50300 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/preferences.ui @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface><requires version="4.0" lib="gtk" /><requires version="1.0" lib="libadwaita" /><template class="AdwDemoPreferencesWindow" parent="AdwPreferencesWindow"><property name="can-navigate-back">True</property><child><object class="AdwPreferencesPage"><property name="icon-name">preferences-window-layout-symbolic</property><property name="title">L_ayout</property><property name="use-underline">True</property><child><object class="AdwPreferencesGroup"><property name="description">Preferences are organized in pages, this example has the following pages:</property><property name="title" translatable="yes">Pages</property><child><object class="AdwActionRow"><property name="title" translatable="yes">L_ayout</property><property name="use-underline">True</property></object></child><child><object class="AdwActionRow"><property name="title" translatable="yes">S_earch</property><property name="use-underline">True</property></object></child></object></child><child><object class="AdwPreferencesGroup"><property name="description">Preferences are grouped together, a group can have a title and a description. Descriptions will be wrapped if they are too long. This page has the following groups:</property><property name="title" translatable="yes">Groups</property><child><object class="AdwActionRow"><property name="title" translatable="yes">An Untitled Group</property></object></child><child><object class="AdwActionRow"><property name="title" translatable="yes">Pages</property></object></child><child><object class="AdwActionRow"><property name="title" translatable="yes">Groups</property></object></child><child><object class="AdwActionRow"><property name="title" translatable="yes">Preferences</property></object></child></object></child><child><object class="AdwPreferencesGroup"><property name="title" translatable="yes">Preferences</property><child><object class="AdwActionRow"><property name="title" translatable="yes">Preferences rows are appended to the list box</property></object></child><child><object class="GtkLabel"><property name="ellipsize">end</property><property name="label" translatable="yes">Other widgets are appended after the list box</property><property name="margin-top">12</property><property name="margin-bottom">12</property><property name="xalign">0</property><style><class name="dim-label" /></style></object></child></object></child><child><object class="AdwPreferencesGroup"><property name="title" translatable="yes">Toasts</property><child><object class="AdwActionRow"><property name="title" translatable="yes">Show a Toast</property><child><object class="GtkButton" id="toast-bt"><property name="label" translatable="yes">Show</property><property name="valign">center</property></object></child></object></child></object></child><child><object class="AdwPreferencesGroup"><property name="description">Preferences windows can have subpages.</property><property name="title" translatable="yes">Subpages</property><child><object class="AdwActionRow" id="go-to-subpage-1-ar"><property name="title" translatable="yes">Go to a Subpage</property><property name="activatable">True</property><child><object class="GtkImage"><property name="icon-name">go-next-symbolic</property></object></child></object></child><child><object class="AdwActionRow" id="go-to-subpage-2-ar"><property name="title" translatable="yes">Go to Another Subpage</property><property name="activatable">True</property><child><object class="GtkImage"><property name="icon-name">go-next-symbolic</property></object></child></object></child></object></child></object></child><child><object class="AdwPreferencesPage"><property name="icon-name">preferences-window-search-symbolic</property><property name="title">_Search</property><property name="use-underline">True</property><child><object class="AdwPreferencesGroup"><property name="description">Preferences can be searched, do so using one of the following ways:</property><property name="title" translatable="yes">Searching</property><child><object class="AdwActionRow"><property name="title" translatable="yes">Activate the Search Button</property></object></child><child><object class="AdwPreferencesRow"><property name="title" translatable="yes">Ctrl+f</property><child><object class="GtkShortcutLabel"><property name="accelerator"><ctrl>f</property><property name="margin-top">12</property><property name="margin-bottom">12</property><property name="margin-start">12</property><property name="margin-end">12</property></object></child></object></child><child><object class="AdwActionRow"><property name="title" translatable="yes">Directly Type Your Search</property></object></child></object></child></object></child></template><object class="AdwStatusPage" id="subpage-1"><property name="title" translatable="yes">This is a Subpage</property><property name="child"><object class="GtkButton" id="subpage-1-bt"><property name="label" translatable="yes">Return to Preferences</property><property name="halign">center</property><style><class name="suggested-action" /><class name="pill" /></style></object></property></object><object class="AdwStatusPage" id="subpage-2"><property name="title" translatable="yes">This is Another Subpage</property><property name="child"><object class="GtkButton" id="subpage-2-bt"><property name="label" translatable="yes">Return to Preferences</property><property name="halign">center</property><style><class name="suggested-action" /><class name="pill" /></style></object></property></object></interface> diff --git a/examples/adw-1/adw1-demo/ui/sxml-ui.el b/examples/adw-1/adw1-demo/ui/sxml-ui.el new file mode 100644 index 0000000..45db97d --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/sxml-ui.el @@ -0,0 +1,101 @@ + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +;;; +;;; sxml-ui derived mode +;;; sxml template ui mode +;;; + +(defvar %template-ui-sxml-tags-indent-0 + '(section + item)) + +(defvar %template-ui-sxml-tags-indent-1 + '(interface + template + object + style + property + child + menu + section + item + attribute + binding + closure + lookup + signal)) + +(define-derived-mode sxml-ui-mode + scheme-mode "sxml template ui mode" + "sxml template ui mode" + + (dolist (elt %template-ui-sxml-tags-indent-0) + (put elt 'scheme-indent-function 0)) + + (dolist (elt %template-ui-sxml-tags-indent-1) + (put elt 'scheme-indent-function 1))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(menu\\)\\>" + . font-lock-constant-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(section\\)\\>" + . font-lock-doc-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(item\\)\\>" + . font-lock-warning-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(attribute\\)\\>" + . font-lock-comment-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(interface\\|template\\)\\>" + . font-lock-preprocessor-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(requires\\)\\>" + . font-lock-comment-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(object\\|\\|template\\)\\>" + . font-lock-preprocessor-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(property\\)\\>" + . font-lock-comment-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(child\\|style\\)\\>" + . font-lock-warning-face))) + +(font-lock-add-keywords 'sxml-ui-mode + '(("\\<\\(version\\|class\\|parent\\|name\\|translatable\\|id\\|bind-source\\|bind-property\\|bind-flags\\|type\\)\\>" + . font-lock-variable-name-face))) diff --git a/examples/adw-1/adw1-demo/ui/welcome.scm b/examples/adw-1/adw1-demo/ui/welcome.scm new file mode 100644 index 0000000..d21aff9 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/welcome.scm @@ -0,0 +1,51 @@ +;; -*- mode: sxml-ui; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(use-modules (g-golf support sxml)) + + +(define %sxml + `(interface + (requires (@ (version "4.0") (lib "gtk"))) + (requires (@ (version "1.0") (lib "libadwaita"))) + (template (@ (class "AdwDemoPageWelcome") + (parent "AdwBin")) + (property (@ (name "child")) + (object (@ (class "AdwStatusPage")) + (property (@ (name "icon-name")) + "org.gnome.Adwaita1.Demo-symbolic") + (property (@ (name "title") + (translatable "yes")) + "Welcome to Adwaita Demo") + (property (@ (name "description") + (translatable "yes")) + "This is a tour of the features the library has to offer.")))))) + + +(define (make-ui) + (sxml->ui %sxml)) diff --git a/examples/adw-1/adw1-demo/ui/welcome.ui b/examples/adw-1/adw1-demo/ui/welcome.ui new file mode 100644 index 0000000..cf2f637 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/welcome.ui @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface><requires version="4.0" lib="gtk" /><requires version="1.0" lib="libadwaita" /><template class="AdwDemoPageWelcome" parent="AdwBin"><property name="child"><object class="AdwStatusPage"><property name="icon-name">org.gnome.Adwaita1.Demo-symbolic</property><property name="title" translatable="yes">Welcome to Adwaita Demo</property><property name="description" translatable="yes">This is a tour of the features the library has to offer.</property></object></property></template></interface> diff --git a/examples/adw-1/adw1-demo/ui/window.scm b/examples/adw-1/adw1-demo/ui/window.scm new file mode 100644 index 0000000..78d4508 --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/window.scm @@ -0,0 +1,213 @@ +;; -*- mode: sxml-ui; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(use-modules (g-golf support sxml)) + + +(define %primary-menu + '(menu (@ (id "primary-menu")) + (section + (item + (attribute (@ (name "label") + (translatable "yes")) _Inspector) + (attribute (@ (name "action")) app.inspector))) + (section + (item + (attribute (@ (name "label") + (translatable "yes")) _Preferences) + (attribute (@ (name "action")) app.preferences)) + (item + (attribute (@ (name "label") + (translatable "yes")) _"About Adwaita Demo") + (attribute (@ (name "action")) app.about))))) + +(define %header-bar-1 + '(object (@ (class "AdwHeaderBar")) + (property (@ (name "show-end-title-buttons") + (bind-source "main-leaflet") + (bind-property "folded") + (bind-flags "sync-create"))) + (child (@ (type "start")) + (object (@ (class "GtkButton") + (id "color-scheme-button")))) + (child (@ (type "end")) + (object (@ (class "GtkMenuButton")) + (property (@ (name "menu-model")) primary-menu) + (property (@ (name "icon-name")) open-menu-symbolic) + (property (@ (name "primary")) True))))) + +(define %stack-sidebar + '(object (@ (class "GtkStackSidebar")) + (property (@ (name "width-request")) 270) + (property (@ (name "vexpand")) True) + (property (@ (name "stack")) stack))) + +(define %header-bar-2 + '(object (@ (class "AdwHeaderBar")) + (property (@ (name "show-start-title-buttons") + (bind-source "main-leaflet") + (bind-property "folded") + (bind-flags "sync-create"))) + (property (@ (name "title-widget")) + (object (@ (class "GtkBox")))) + (child (@ (type "start")) + (object (@ (class "GtkButton") + (id "main-go-previous")) + (property (@ (name "valign")) center) + (property (@ (name "tooltip-text") + (translatable "yes")) Back) + (property (@ (name "icon-name")) go-previous-symbolic) + (property (@ (name "visible") + (bind-source "main-leaflet") + (bind-property "folded") + (bind-flags "sync-create"))))))) + +(define %welcome-page + '(object (@ (class "GtkStackPage")) + (property (@ (name "title") + (translatable "yes")) Welcome) + (property (@ (name "child")) + (object (@ (class "AdwDemoPageWelcome")))))) + +(define %leaflet-page + '(object (@ (class "GtkStackPage")) + (property (@ (name "title") + (translatable "yes")) Leaflet) + (property (@ (name "child")) + (object (@ (class "AdwDemoPageLeaflet") + (id "leaflet-page")) + ;; signal - next-page ... + )))) + +(define %stack + `(object (@ (class "GtkStack") + (id "stack")) + (property (@ (name "vexpand")) True) + (property (@ (name "vhomogeneous")) False) + ;; signal - notify::visible-child ... + (child ,%welcome-page) + (child ,%leaflet-page))) + +(define %main-leaflet + `(object (@ (class "AdwLeaflet") + (id "main-leaflet")) + (property (@ (name "can-navigate-back")) True) + (property (@ (name "transition-type") + (bind-source "leaflet-page") + (bind-property "transition-type") + (bind-flags "sync-create|bidirectional"))) + (child + (object (@ (class "GtkBox")) + (property (@ (name "orientation")) vertical) + (child ,%header-bar-1) + (child ,%stack-sidebar))) + (child + (object (@ (class "AdwLeafletPage")) + (property (@ (name "navigatable")) False) + (property (@ (name "child")) + (object (@ (class "GtkSeparator")))))) + (child + (object (@ (class "GtkBox")) + (property (@ (name "orientation")) vertical) + (property (@ (name "hexpand")) True) + (child ,%header-bar-2) + (child ,%stack))))) + +(define %header-bar-3 + '(object (@ (class "AdwHeaderBar")) + (property (@ (name "title-widget")) + (object (@ (class "GtkBox")))) + (child (@ (type "start")) + (object (@ (class "GtkButton") + (id "subpage-go-previous")) + (property (@ (name "valign")) center) + (property (@ (name "tooltip-text") + (translatable "yes")) Back) + (property (@ (name "icon-name")) go-previous-symbolic) + #;(property (@ (name "visible") + (bind-source "main-leaflet") + (bind-property "folded") + (bind-flags "sync-create"))))))) + +(define %status-page + '(object (@ (class "AdwStatusPage")) + (property (@ (name "vexpand")) True) + (property (@ (name "title") + (translatable "yes")) Go Back) + (property (@ (name "child")) + (object (@ (class "GtkBox")) + (property (@ (name "orientation")) vertical) + (property (@ (name "halign")) center) + (property (@ (name "spacing")) 12) + (child + (object (@ (class "GtkImage")) + (property (@ (name "icon-name")) + gesture-touchscreen-swipe-back-symbolic) + (property (@ (name "pixel-size")) 128) + (style (class (@ (name "dim-label")))))) + (child + (object (@ (class "GtkImage")) + (property (@ (name "icon-name")) + gesture-touchpad-swipe-back-symbolic) + (property (@ (name "pixel-size")) 128) + (style (class (@ (name "dim-label")))))))))) + +(define %window + `(interface + (requires (@ (version "4.0") (lib "gtk"))) + (requires (@ (version "1.0") (lib "libadwaita"))) + ,%primary-menu + (template (@ (class "AdwDemoWindow") + (parent "AdwApplicationWindow")) + (property (@ (name "title") + (translatable "yes")) "Adwaita Demo") + (property (@ (name "default-width")) 800) + (property (@ (name "default-height")) 576) + (property (@ (name "content")) + (object (@ (class "AdwToastOverlay") + (id "toast-overlay")) + (property (@ (name "child")) + (object (@ (class "AdwLeaflet") + (id "subpage-leaflet")) + (property (@ (name "can-navigate-back")) True) + (property (@ (name "width-request")) 360) + (property (@ (name "can-unfold")) False) + (property (@ (name "transition-type") + (bind-source "leaflet-page") + (bind-property "transition-type") + (bind-flags "sync-create|bidirectional"))) + (child ,%main-leaflet) + (child + (object (@ (class "GtkBox")) + (property (@ (name "orientation")) vertical) + (child ,%header-bar-3) + (child ,%status-page)))))))))) + + +(define (make-ui) + (sxml->ui %window)) diff --git a/examples/adw-1/adw1-demo/ui/window.ui b/examples/adw-1/adw1-demo/ui/window.ui new file mode 100644 index 0000000..34eec8c --- /dev/null +++ b/examples/adw-1/adw1-demo/ui/window.ui @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface><requires version="4.0" lib="gtk" /><requires version="1.0" lib="libadwaita" /><menu id="primary-menu"><section><item><attribute name="label" translatable="yes">_Inspector</attribute><attribute name="action">app.inspector</attribute></item></section><section><item><attribute name="label" translatable="yes">_Preferences</attribute><attribute name="action">app.preferences</attribute></item><item><attribute name="label" translatable="yes">_About Adwaita Demo</attribute><attribute name="action">app.about</attribute></item></section></menu><template class="AdwDemoWindow" parent="AdwApplicationWindow"><property name="title" translatable="yes">Adwaita Demo</property><property name="default-width">800</property><property name="default-height">576</property><property name="content"><object class="AdwToastOverlay" id="toast-overlay"><property name="child"><object class="AdwLeaflet" id="subpage-leaflet"><property name="can-navigate-back">True</property><property name="width-request">360</property><property name="can-unfold">False</property><property name="transition-type" bind-source="leaflet-page" bind-property="transition-type" bind-flags="sync-create|bidirectional" /><child><object class="AdwLeaflet" id="main-leaflet"><property name="can-navigate-back">True</property><property name="transition-type" bind-source="leaflet-page" bind-property="transition-type" bind-flags="sync-create|bidirectional" /><child><object class="GtkBox"><property name="orientation">vertical</property><child><object class="AdwHeaderBar"><property name="show-end-title-buttons" bind-source="main-leaflet" bind-property="folded" bind-flags="sync-create" /><child type="start"><object class="GtkButton" id="color-scheme-button" /></child><child type="end"><object class="GtkMenuButton"><property name="menu-model">primary-menu</property><property name="icon-name">open-menu-symbolic</property><property name="primary">True</property></object></child></object></child><child><object class="GtkStackSidebar"><property name="width-request">270</property><property name="vexpand">True</property><property name="stack">stack</property></object></child></object></child><child><object class="AdwLeafletPage"><property name="navigatable">False</property><property name="child"><object class="GtkSeparator" /></property></object></child><child><object class="GtkBox"><property name="orientation">vertical</property><property name="hexpand">True</property><child><object class="AdwHeaderBar"><property name="show-start-title-buttons" bind-source="main-leaflet" bind-property="folded" bind-flags="sync-create" /><property name="title-widget"><object class="GtkBox" /></property><child type="start"><object class="GtkButton" id="main-go-previous"><property name="valign">center</property><property name="tooltip-text" translatable="yes">Back</property><property name="icon-name">go-previous-symbolic</property><property name="visible" bind-source="main-leaflet" bind-property="folded" bind-flags="sync-create" /></object></child></object></child><child><object class="GtkStack" id="stack"><property name="vexpand">True</property><property name="vhomogeneous">False</property><child><object class="GtkStackPage"><property name="title" translatable="yes">Welcome</property><property name="child"><object class="AdwDemoPageWelcome" /></property></object></child><child><object class="GtkStackPage"><property name="title" translatable="yes">Leaflet</property><property name="child"><object class="AdwDemoPageLeaflet" id="leaflet-page" /></property></object></child></object></child></object></child></object></child><child><object class="GtkBox"><property name="orientation">vertical</property><child><object class="AdwHeaderBar"><property name="title-widget"><object class="GtkBox" /></property><child type="start"><object class="GtkButton" id="subpage-go-previous"><property name="valign">center</property><property name="tooltip-text" translatable="yes">Back</property><property name="icon-name">go-previous-symbolic</property></object></child></object></child><child><object class="AdwStatusPage"><property name="vexpand">True</property><property name="title" translatable="yes">GoBack</property><property name="child"><object class="GtkBox"><property name="orientation">vertical</property><property name="halign">center</property><property name="spacing">12</property><child><object class="GtkImage"><property name="icon-name">gesture-touchscreen-swipe-back-symbolic</property><property name="pixel-size">128</property><style><class name="dim-label" /></style></object></child><child><object class="GtkImage"><property name="icon-name">gesture-touchpad-swipe-back-symbolic</property><property name="pixel-size">128</property><style><class name="dim-label" /></style></object></child></object></property></object></child></object></child></object></property></object></property></template></interface> diff --git a/examples/adw-1/adw1-demo/welcome.scm b/examples/adw-1/adw1-demo/welcome.scm new file mode 100644 index 0000000..ffde7b5 --- /dev/null +++ b/examples/adw-1/adw1-demo/welcome.scm @@ -0,0 +1,51 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (adw1-demo welcome) + #:use-module (oop goops) + #:use-module (g-golf) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (<adw-demo-page-welcome>)) + + +(eval-when (expand load eval) + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("Bin"))) + + +(define-class <adw-demo-page-welcome> (<adw-bin>) + #:template (string-append (dirname (current-filename)) + "/ui/welcome.ui")) diff --git a/examples/adw-1/adw1-demo/window.scm b/examples/adw-1/adw1-demo/window.scm new file mode 100644 index 0000000..c293dd0 --- /dev/null +++ b/examples/adw-1/adw1-demo/window.scm @@ -0,0 +1,256 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (adw1-demo window) + #:use-module (oop goops) + #:use-module (g-golf) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (<adw-demo-window> + show-window)) + + +(g-export !main-leaflet + !main-go-previous + !color-scheme-button + !stack + !leaflet-page + !subpage-leaflet + !subpage-go-previous) + + +(use-modules (adw1-demo debug-info) + (adw1-demo preferences) + (adw1-demo welcome) + (adw1-demo leaflet)) + + +(eval-when (expand load eval) + (g-irepository-require "Gtk" #:version "4.0") + (for-each (lambda (name) + (gi-import-by-name "Gdk" name)) + '("Display")) + (for-each (lambda (name) + (gi-import-by-name "Gtk" name)) + '("License" + "Window" + "ClosureExpression" + "IconTheme" + "Stack" + "Button")) + (g-irepository-require "Adw" #:version "1") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("Application" + "ApplicationWindow" + "AboutWindow" + "StyleManager" + "ColorScheme" + "Leaflet" + "NavigationDirection"))) + + +(define-class <adw-demo-window> (<adw-application-window>) + ;; slots + (main-leaflet #:accessor !main-leaflet #:child-id "main-leaflet") + (main-go-previous #:accessor !main-go-previous #:child-id "main-go-previous") + (color-scheme-button #:accessor !color-scheme-button #:child-id "color-scheme-button") + (stack #:accessor !stack #:child-id "stack") + (leaflet-page #:accessor !leaflet-page #:child-id "leaflet-page") + (subpage-leaflet #:accessor !subpage-leaflet #:child-id "subpage-leaflet") + (subpage-go-previous #:accessor !subpage-go-previous #:child-id "subpage-go-previous") + ;; class options + #:template (string-append (dirname (current-filename)) + "/ui/window.ui") + #:child-ids '("main-leaflet" + "main-go-previous" + "color-scheme-button" + "stack" + "leaflet-page" + "subpage-leaflet" + "subpage-go-previous")) + +(define (install-actions app) + (let ((a-inspector (make <g-simple-action> #:name "inspector")) + (a-preferences (make <g-simple-action> #:name "preferences")) + (a-about (make <g-simple-action> #:name "about"))) + + (add-action app a-inspector) + (connect a-inspector + 'activate + (lambda (s-action g-variant) + (gtk-window-set-interactive-debugging #t))) + + (add-action app a-preferences) + (connect a-preferences + 'activate + (lambda (s-action g-variant) + (let ((window (get-active-window app)) + (pref-win (make <adw-demo-preferences-window>))) + (set-transient-for pref-win window) + (present pref-win)))) + + (add-action app a-about) + (connect a-about + 'activate + (lambda (s-action g-variant) + (show-about app))) + )) + +(define %developers + '("Adrien Plazas" + "Alexander Mikhaylenko" + "Andrei Lișiță" + "Guido Günther" + "Jamie Murphy" + "Julian Sparber" + "Manuel Genovés" + "Zander Brown")) + +(define (show-about app) + (let ((about (make <adw-about-window> + #:transient-for (get-active-window app) + #:application-icon "org.gnome.Adwaita1.Demo" + #:application-name "Adwaita Demo" + #:developer-name "The GNOME Project" + #:version (adw-version) + #:website "https://gitlab.gnome.org/GNOME/libadwaita" + #:issue-url "https://gitlab.gnome.org/GNOME/libadwaita/-/issues/new" + #:debug-info (debug-info) + #:copyright "© 2017–2022 Purism SPC" + #:license-type 'lgpl-2-1 + #:developers %developers + #:designers '("GNOME Design Team") + #:artists '("GNOME Design Team") + ;; #:translator-credits "translator-credits" + ))) + (add-link about "_Documentation" + "https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/") + (add-link about "_Chat" + "https://matrix.to/#/#libadwaita:gnome.org") + (present about))) + +(define (show-window app) + (let* ((display (gdk-display-get-default)) + (manager (adw-style-manager-get-default)) + (icon-theme (gtk-icon-theme-get-for-display display))) + (add-search-path icon-theme (string-append (dirname (current-filename)) + "/icons")) + (let* ((window (make <adw-demo-window> + #:application app)) + (color-scheme-button (!color-scheme-button window)) + (expression (make-expression 'string + (transform-to-closure) + '()))) + + (install-actions app) + + (bind expression + color-scheme-button + "icon-name" + manager) + + (connect color-scheme-button + 'clicked + (lambda (b) + (if (get-dark manager) + (set-color-scheme manager 'force-light) + (set-color-scheme manager 'force-dark)))) + + (connect manager + 'notify::system-supports-color-schemes + (lambda (manager p-spec) + (notify-system-supports-color-schemes-cb window manager))) + (notify-system-supports-color-schemes-cb window manager) + + (connect-after (!stack window) + 'notify::visible-child + (lambda (s c) + ;; FIXME + ;; - the second arg + ;; g-closure-marshal-g-value-ref <- must be enhanced + ;; (dimfi s c (g-object-type-name c) + (notify-visible-child-cb window))) + + (connect (!main-go-previous window) + 'clicked + (lambda (b) + (main-go-previous-cb window))) + + (connect (!subpage-go-previous window) + 'clicked + (lambda (b) + (subpage-go-previous-cb window))) + + (connect (!leaflet-page window) + 'next-page + (lambda (l) + (navigate (!subpage-leaflet window) 'forward))) + + (present window)))) + +(define (make-expression type closure flags) + (gtk-closure-expression-new (symbol->g-type type) + (!g-closure closure) + flags)) + +(define (transform-to-closure) + (make <closure> + #:function manager-dark-transform-to + #:return-type 'string + #:param-types `(,<adw-style-manager>))) + +(define (manager-dark-transform-to manager) + (color-scheme-button-icon-name (!dark manager))) + +(define (color-scheme-button-icon-name dark?) + (if dark? + "dark-mode-symbolic" + "light-mode-symbolic")) + +(define* (notify-system-supports-color-schemes-cb window + #:optional manager) + (let* ((manager (or manager (adw-style-manager-get-default))) + (supports? (get-system-supports-color-schemes manager))) + (set-visible (!color-scheme-button window) (not supports?)) + (when supports? + (set-color-scheme manager 'default)))) + +(define (notify-visible-child-cb window) + (navigate (!main-leaflet window) 'forward)) + +(define (main-go-previous-cb window) + (navigate (!main-leaflet window) 'back)) + +(define (subpage-go-previous-cb window) + (navigate (!subpage-leaflet window) 'back)) diff --git a/examples/adw-1/hello-world.png b/examples/adw-1/hello-world.png Binary files differnew file mode 100644 index 0000000..2ef0cfe --- /dev/null +++ b/examples/adw-1/hello-world.png diff --git a/examples/adw-1/hello-world.scm b/examples/adw-1/hello-world.scm new file mode 100755 index 0000000..4e24877 --- /dev/null +++ b/examples/adw-1/hello-world.scm @@ -0,0 +1,89 @@ +#! /bin/sh +# -*- mode: scheme; coding: utf-8 -*- +exec guile -e main -s "$0" "$@" +!# + + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(eval-when (expand load eval) + (use-modules (oop goops)) + + (default-duplicate-binding-handler + '(merge-generics replace warn-override-core warn last)) + + (use-modules (g-golf)) + + (g-irepository-require "Gtk" #:version "4.0") + (for-each (lambda (name) + (gi-import-by-name "Adw" name)) + '("Application" + "ApplicationWindow")) + (for-each (lambda (name) + (gi-import-by-name "Gtk" name)) + '("ApplicationWindow" + "Box" + "Label" + "Button"))) + + +(define (activate app) + (let ((window (make <adw-application-window> + #:title "Hello" + #:default-width 320 + #:default-height 240 + #:application app)) + (box (make <gtk-box> + #:margin-top 6 + #:margin-start 6 + #:margin-bottom 6 + #:margin-end 6 + #:orientation 'vertical)) + (label (make <gtk-label> + #:label "Hello, World!" + #:hexpand #t + #:vexpand #t)) + (button (make <gtk-button> + #:label "Close"))) + + (connect button + 'clicked + (lambda (b) + (close window))) + + (set-content window box) + (append box label) + (append box button) + (present window))) + + +(define (main args) + (let ((app (make <adw-application> + #:application-id "org.adw.example"))) + (connect app 'activate activate) + (let ((status (g-application-run app args))) + (exit status)))) diff --git a/examples/gtk-4/animated-paintable.scm b/examples/gtk-4/animated-paintable.scm index 67cb005..30bb245 100755 --- a/examples/gtk-4/animated-paintable.scm +++ b/examples/gtk-4/animated-paintable.scm @@ -137,7 +137,7 @@ exec guile -e main -s "$0" "$@" (image (make <gtk-image>))) (set-from-paintable image nuclear) (set-child window image) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/clipboard.scm b/examples/gtk-4/clipboard.scm index 614fd15..a7f0a64 100755 --- a/examples/gtk-4/clipboard.scm +++ b/examples/gtk-4/clipboard.scm @@ -154,7 +154,7 @@ exec guile -e main -s "$0" "$@" (append box-2 copy-2) (append box-2 image-to) (append box-2 paste-2) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/css-basics.scm b/examples/gtk-4/css-basics.scm index a53d976..0ed463b 100755 --- a/examples/gtk-4/css-basics.scm +++ b/examples/gtk-4/css-basics.scm @@ -89,7 +89,7 @@ exec guile -e main -s "$0" "$@" (append box label) (append box button) (apply-css window css-provider) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/drawing-widget.scm b/examples/gtk-4/drawing-widget.scm index 015c727..0c75954 100755 --- a/examples/gtk-4/drawing-widget.scm +++ b/examples/gtk-4/drawing-widget.scm @@ -80,7 +80,7 @@ exec guile -e main -s "$0" "$@" #:application app)) (drawing-widget (make <drawing-widget>))) (set-child window drawing-widget) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/hello-world.scm b/examples/gtk-4/hello-world.scm index 70b5c55..fdc9537 100755 --- a/examples/gtk-4/hello-world.scm +++ b/examples/gtk-4/hello-world.scm @@ -75,7 +75,7 @@ exec guile -e main -s "$0" "$@" (set-child window box) (append box label) (append box button) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/nuclear-icon.scm b/examples/gtk-4/nuclear-icon.scm index 23d9a02..23d9a02 100755..100644 --- a/examples/gtk-4/nuclear-icon.scm +++ b/examples/gtk-4/nuclear-icon.scm diff --git a/examples/gtk-4/peg-solitaire.scm b/examples/gtk-4/peg-solitaire.scm index c5943c2..c6a949c 100755 --- a/examples/gtk-4/peg-solitaire.scm +++ b/examples/gtk-4/peg-solitaire.scm @@ -57,7 +57,10 @@ exec guile -e main -s "$0" "$@" "DragSource" "DropTarget" "MediaStream" - "MediaFile"))) + "MediaFile" + "get_major_version" + "get_minor_version" + "get_micro_version"))) (define-class <solitaire-peg> (<gobject> <gdk-paintable>) @@ -234,6 +237,21 @@ exec guile -e main -s "$0" "$@" (lambda (g-object property) (unref g-object))))) +;;; +;;; Check version +;;; + +(define (gtk-check-version major minor micro) + (let ((gtk-major (gtk-get-major-version)) + (gtk-minor (gtk-get-minor-version)) + (gtk-micro (gtk-get-micro-version))) + (or (> gtk-major major) + (and (= gtk-major major) + (> gtk-minor minor)) + (and (= gtk-major major) + (= gtk-minor minor) + (>= gtk-micro micro))))) + ;;; ;;; The game board @@ -261,7 +279,12 @@ exec guile -e main -s "$0" "$@" #:row-spacing 6 #:row-homogeneous #t)) (css-provider (let ((provider (make <gtk-css-provider>))) - (gtk-css-provider-load-from-data provider %css-data) + (cond ((gtk-check-version 4 10 0) + (gtk-css-provider-load-from-data provider + %css-data + (string-length %css-data))) + (else + (gtk-css-provider-load-from-data provider %css-data))) provider))) (set-child window grid) (do ((i 0 @@ -315,7 +338,7 @@ exec guile -e main -s "$0" "$@" (set-titlebar window header-bar) (pack-start header-bar restart) (create-board window) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/revealer.scm b/examples/gtk-4/revealer.scm index 7a12ed8..4ecce23 100755 --- a/examples/gtk-4/revealer.scm +++ b/examples/gtk-4/revealer.scm @@ -77,9 +77,9 @@ exec guile -e main -s "$0" "$@" ((0) (error "<gtk-builder> - add-from-file failed: " ui)) (else - (letrec* ((window (get-object builder "window")) - (revealers (get-revealers builder)) - (count 0)) + (let ((window (get-object builder "window")) + (revealers (get-revealers builder)) + (count 0)) (g-timeout-add 690 (lambda () (let ((revealer (list-ref revealers count))) @@ -93,7 +93,7 @@ exec guile -e main -s "$0" "$@" #f #t)))) (add-window app window) - (show window)))))) + (present window)))))) (define (main args) (let ((app (make <gtk-application> diff --git a/examples/gtk-4/search-bar.scm b/examples/gtk-4/search-bar.scm index 1d746c0..9a653c0 100755 --- a/examples/gtk-4/search-bar.scm +++ b/examples/gtk-4/search-bar.scm @@ -101,7 +101,7 @@ exec guile -e main -s "$0" "$@" (set-child search-bar search-entry) (append box search-bar) (append box label) - (show window))) + (present window))) (define (main args) diff --git a/examples/gtk-4/simple-paintable.scm b/examples/gtk-4/simple-paintable.scm index 314b61b..befc933 100755 --- a/examples/gtk-4/simple-paintable.scm +++ b/examples/gtk-4/simple-paintable.scm @@ -79,7 +79,7 @@ exec guile -e main -s "$0" "$@" (image (make <gtk-image>))) (set-from-paintable image nuclear) (set-child window image) - (show window))) + (present window))) (define (main args) @@ -58,7 +58,9 @@ #:use-module (g-golf support union) #:use-module (g-golf support bytevector) #:use-module (g-golf support ffi) + #:use-module (g-golf support sxml) #:use-module (g-golf init) + #:use-module (g-golf glib version-information) #:use-module (g-golf glib mem-alloc) #:use-module (g-golf glib main-event-loop) #:use-module (g-golf glib io-channels) @@ -66,6 +68,7 @@ #:use-module (g-golf glib unix-utils) #:use-module (g-golf glib glist) #:use-module (g-golf glib gslist) + #:use-module (g-golf glib byte-arrays) #:use-module (g-golf glib quarks) #:use-module (g-golf gobject type-info) #:use-module (g-golf gobject gobject) @@ -103,6 +106,7 @@ #:use-module (g-golf gdk events) #:use-module (g-golf hl-api n-decl) #:use-module (g-golf hl-api gtype) + #:use-module (g-golf hl-api gparam) #:use-module (g-golf hl-api iface) #:use-module (g-golf hl-api gobject) #:use-module (g-golf hl-api events) @@ -158,7 +162,9 @@ (g-golf support union) (g-golf support bytevector) (g-golf support ffi) + (g-golf support sxml) (g-golf init) + (g-golf glib version-information) (g-golf glib mem-alloc) (g-golf glib main-event-loop) (g-golf glib io-channels) @@ -166,6 +172,7 @@ (g-golf glib unix-utils) (g-golf glib glist) (g-golf glib gslist) + (g-golf glib byte-arrays) (g-golf glib quarks) (g-golf gobject type-info) (g-golf gobject gobject) @@ -203,6 +210,7 @@ (g-golf gdk events) (g-golf hl-api n-decl) (g-golf hl-api gtype) + (g-golf hl-api gparam) (g-golf hl-api iface) (g-golf hl-api gobject) (g-golf hl-api events) diff --git a/g-golf/gi/cache-others.scm b/g-golf/gi/cache-others.scm index 5ea2048..dc17cca 100644 --- a/g-golf/gi/cache-others.scm +++ b/g-golf/gi/cache-others.scm @@ -39,6 +39,20 @@ g-inst-cache-remove! g-inst-cache-show + ;; g-type cache + %g-type-cache + g-type-cache-ref + g-type-cache-set! + g-type-cache-remove! + g-type-cache-show + + ;; class cache + %g-class-cache + g-class-cache-ref + g-class-cache-set! + g-class-cache-remove! + g-class-cache-show + ;; boxed sa - scheme allocated - cache %g-boxed-sa-cache g-boxed-sa-cache-ref @@ -120,7 +134,87 @@ ;;; -;;; The g-boxed(instance) scheme allocated cache +;;; The g-type cache +;;; + + +(define %g-type-cache #f) +(define g-type-cache-ref #f) +(define g-type-cache-set! #f) +(define g-type-cache-remove! #f) +(define g-type-cache-show #f) + +(eval-when (expand load eval) + (let* ((%g-type-cache-default-size 1013) + (g-type-cache + (make-hash-table %g-type-cache-default-size))) + + (set! %g-type-cache + (lambda () g-type-cache)) + + (set! g-type-cache-ref + (lambda (g-type) + (hashq-ref g-type-cache g-type))) + + (set! g-type-cache-set! + (lambda (g-type class) + (hashq-set! g-type-cache g-type class))) + + (set! g-type-cache-remove! + (lambda (g-type) + (hashq-remove! g-type-cache g-type))) + + (set! g-type-cache-show + (lambda () + (hash-for-each (lambda (key value) + (%dimfi key value)) + g-type-cache))))) + + +;;; +;;; The g-class cache +;;; + + +(define %g-class-cache #f) +(define g-class-cache-ref #f) +(define g-class-cache-set! #f) +(define g-class-cache-remove! #f) +(define g-class-cache-show #f) + +(eval-when (expand load eval) + (let* ((%g-class-cache-default-size 1013) + (g-class-cache + (make-hash-table %g-class-cache-default-size))) + + (set! %g-class-cache + (lambda () g-class-cache)) + + (set! g-class-cache-ref + (lambda (g-class) + (hashq-ref g-class-cache + (pointer-address g-class)))) + + (set! g-class-cache-set! + (lambda (g-class class) + (hashq-set! g-class-cache + (pointer-address g-class) + class))) + + (set! g-class-cache-remove! + (lambda (g-class) + (hashq-remove! g-class-cache + (pointer-address g-class)))) + + (set! g-class-cache-show + (lambda () + (hash-for-each (lambda (key value) + (%dimfi key value)) + g-class-cache))))) + + +;;; +;;; The g-boxed(classance) scheme allocated cache ;;; (define %dimfi diff --git a/g-golf/gi/object-info.scm b/g-golf/gi/object-info.scm index 05d33c7..ea76680 100644 --- a/g-golf/gi/object-info.scm +++ b/g-golf/gi/object-info.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016, 2021 +;;;; Copyright (C) 2016, 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -76,7 +76,11 @@ g-object-info-get-n-vfuncs g-object-info-get-vfunc g-object-info-find-vfunc - g-object-info-get-class-struct)) + g-object-info-get-class-struct + g-object-info-get-set-value-function + g-object-info-get-set-value-function-pointer + g-object-info-get-get-value-function + g-object-info-get-get-value-function-pointer)) ;;; @@ -111,6 +115,8 @@ n-properties: ~A n-signals: ~A n-vfuncts: ~A + set-value-function: ~A + get-value-function: ~A ") @@ -147,7 +153,9 @@ (g-object-info-get-n-methods info) (g-object-info-get-n-properties info) (g-object-info-get-n-signals info) - (g-object-info-get-n-vfuncs info))) + (g-object-info-get-n-vfuncs info) + (g-object-info-get-set-value-function info) + (g-object-info-get-get-value-function info))) (gi-object-show-methods info port) (values))) @@ -330,6 +338,22 @@ #f pointer))) +(define (g-object-info-get-set-value-function info) + (gi->scm (g_object_info_get_set_value_function info) + 'string)) + +(define (g-object-info-get-set-value-function-pointer info) + (gi->scm (g_object_info_get_set_value_function_pointer info) + 'pointer)) + +(define (g-object-info-get-get-value-function info) + (gi->scm (g_object_info_get_get_value_function info) + 'string)) + +(define (g-object-info-get-get-value-function-pointer info) + (gi->scm (g_object_info_get_get_value_function_pointer info) + 'pointer)) + ;;; ;;; GI Bindings @@ -466,3 +490,27 @@ (dynamic-func "g_object_info_get_class_struct" %libgirepository) (list '*))) + +(define g_object_info_get_set_value_function + (pointer->procedure '* + (dynamic-func "g_object_info_get_set_value_function" + %libgirepository) + (list '*))) + +(define g_object_info_get_set_value_function_pointer + (pointer->procedure '* + (dynamic-func "g_object_info_get_set_value_function_pointer" + %libgirepository) + (list '*))) + +(define g_object_info_get_get_value_function + (pointer->procedure '* + (dynamic-func "g_object_info_get_get_value_function" + %libgirepository) + (list '*))) + +(define g_object_info_get_get_value_function_pointer + (pointer->procedure '* + (dynamic-func "g_object_info_get_get_value_function_pointer" + %libgirepository) + (list '*))) diff --git a/g-golf/gi/utils.scm b/g-golf/gi/utils.scm index 9184e38..cee0cc0 100644 --- a/g-golf/gi/utils.scm +++ b/g-golf/gi/utils.scm @@ -76,7 +76,8 @@ scm->gi-pointers #;scm->gi-glist scm->gi-gslist - scm->gi-n-gtype)) + scm->gi-n-gtype + scm->gi-gtypes)) (define %gi-pointer-size (sizeof '*)) diff --git a/g-golf/glib.scm b/g-golf/glib.scm index 7f19137..2e9eb3e 100644 --- a/g-golf/glib.scm +++ b/g-golf/glib.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016 - 2020 +;;;; Copyright (C) 2016 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -45,6 +45,7 @@ #:use-module (g-golf support utils) #:use-module (g-golf support enum) #:use-module (g-golf init) + #:use-module (g-golf glib version-information) #:use-module (g-golf glib mem-alloc) #:use-module (g-golf glib main-event-loop) #:use-module (g-golf glib io-channels) @@ -52,6 +53,7 @@ #:use-module (g-golf glib unix-utils) #:use-module (g-golf glib glist) #:use-module (g-golf glib gslist) + #:use-module (g-golf glib byte-arrays) #:use-module (g-golf glib quarks) @@ -72,6 +74,7 @@ (g-golf support utils) (g-golf support enum) (g-golf init) + (g-golf glib version-information) (g-golf glib mem-alloc) (g-golf glib main-event-loop) (g-golf glib io-channels) @@ -79,4 +82,5 @@ (g-golf glib unix-utils) (g-golf glib glist) (g-golf glib gslist) + (g-golf glib byte-arrays) (g-golf glib quarks))) diff --git a/g-golf/glib/byte-arrays.scm b/g-golf/glib/byte-arrays.scm new file mode 100644 index 0000000..b41c4cc --- /dev/null +++ b/g-golf/glib/byte-arrays.scm @@ -0,0 +1,57 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (g-golf glib byte-arrays) + #:use-module (ice-9 match) + #:use-module (system foreign) + #:use-module (g-golf gi utils) + #:use-module (g-golf init) + + #:export (g-bytes-new)) + + +;;; +;;; Glib Low level API +;;; + +(define (g-bytes-new data size) + (gi->scm (g_bytes_new (scm->gi data 'pointer) + size) + 'pointer)) + + +;;; +;;; Glib Bindings +;;; + +(define g_bytes_new + (pointer->procedure '* + (dynamic-func "g_bytes_new" + %libglib) + (list '* ;; data + size_t))) ;; size diff --git a/g-golf/glib/misc-util-funcs.scm b/g-golf/glib/misc-util-funcs.scm index bdb282c..2161c8b 100644 --- a/g-golf/glib/misc-util-funcs.scm +++ b/g-golf/glib/misc-util-funcs.scm @@ -34,7 +34,8 @@ #:export (g-get-prgname g-set-prgname g-get-system-data-dirs - g-get-system-config-dirs)) + g-get-system-config-dirs + g-get-os-info)) ;;; @@ -53,6 +54,10 @@ (define (g-get-system-config-dirs) (gi->scm (g_get_system_config_dirs) 'strings)) +(define (g-get-os-info key-name) + (gi->scm (g_get_os_info (string->pointer key-name)) + 'string)) + ;;; ;;; Glib Bindings @@ -81,3 +86,9 @@ (dynamic-func "g_get_system_config_dirs" %libglib) (list ))) ;; void + +(define g_get_os_info + (pointer->procedure '* + (dynamic-func "g_get_os_info" + %libglib) + (list '*))) ;; key-name diff --git a/g-golf/glib/version-information.scm b/g-golf/glib/version-information.scm new file mode 100644 index 0000000..910da77 --- /dev/null +++ b/g-golf/glib/version-information.scm @@ -0,0 +1,75 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (g-golf glib version-information) + #:use-module (ice-9 match) + #:use-module (system foreign) + #:use-module (srfi srfi-4) + #:use-module (g-golf gi utils) + #:use-module (g-golf init) + + #:export (glib-get-major-version + glib-get-minor-version + glib-get-micro-version)) + + +;;; +;;; +;;; + +(define (glib-get-major-version) + (let* ((bv-ptr (glib_major_version_ptr)) + (bv (pointer->bytevector bv-ptr (sizeof uint32)))) + (u32vector-ref bv 0))) + +(define (glib-get-minor-version) + (let* ((bv-ptr (glib_minor_version_ptr)) + (bv (pointer->bytevector bv-ptr (sizeof uint32)))) + (u32vector-ref bv 0))) + +(define (glib-get-micro-version) + (let* ((bv-ptr (glib_micro_version_ptr)) + (bv (pointer->bytevector bv-ptr (sizeof uint32)))) + (u32vector-ref bv 0))) + + +;;; +;;; Glib Bindings +;;; + +(define (glib_major_version_ptr) + (dynamic-pointer "glib_major_version" + (dynamic-link "libglib-2.0"))) + +(define (glib_minor_version_ptr) + (dynamic-pointer "glib_minor_version" + (dynamic-link "libglib-2.0"))) + +(define (glib_micro_version_ptr) + (dynamic-pointer "glib_micro_version" + (dynamic-link "libglib-2.0"))) diff --git a/g-golf/gobject/gobject.scm b/g-golf/gobject/gobject.scm index 01fedf6..9487985 100644 --- a/g-golf/gobject/gobject.scm +++ b/g-golf/gobject/gobject.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016 - 2022 +;;;; Copyright (C) 2016 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -43,7 +43,8 @@ warn last) - #:export (g-object-class-find-property + #:export (g-object-class-install-property + g-object-class-find-property g-object-new g-object-new-with-properties g-object-ref @@ -55,14 +56,17 @@ g-object-remove-toggle-ref g-object-type ;; from libg-golf g-object-type-name ;; from libg-golf - g-object-get-property ;; from libg-golf - g-object-set-property)) ;; from libg-golf + g-object-get-property + g-object-set-property)) ;;; ;;; GObject Low level API ;;; +(define (g-object-class-install-property g-class p-id p-spec) + (g_object_class_install_property g-class p-id p-spec)) + (define (g-object-class-find-property g-class property-name) (gi->scm (g_object_class_find_property g-class (string->pointer property-name)) @@ -104,6 +108,7 @@ (define (g-object-type object) (g_object_type object)) +;; from libg-golf (define (g-object-type-name object) (g-type-name (g-object-type object))) @@ -122,6 +127,14 @@ ;;; GObject Bindings ;;; +(define g_object_class_install_property + (pointer->procedure void + (dynamic-func "g_object_class_install_property" + %libgobject) + (list '* ;; g-class + unsigned-int ;; p-id + '*))) ;; p-spec + (define g_object_class_find_property (pointer->procedure '* (dynamic-func "g_object_class_find_property" diff --git a/g-golf/gobject/params-vals.scm b/g-golf/gobject/params-vals.scm index 9bcde71..2fdf6cd 100644 --- a/g-golf/gobject/params-vals.scm +++ b/g-golf/gobject/params-vals.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016 - 2022 +;;;; Copyright (C) 2016 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -38,6 +38,7 @@ #:use-module (g-golf support struct) #:use-module (g-golf support union) #:use-module (g-golf support utils) + #:use-module (g-golf support libg-golf) #:use-module (g-golf gi cache-gi) #:use-module (g-golf gi utils) #:use-module (g-golf gobject type-info) @@ -55,6 +56,7 @@ g-value-type-name g-value-ref g-value-set! + g-param-spec-int g-value-get-int g-value-set-int g-value-get-uint @@ -65,6 +67,7 @@ g-value-set-float g-value-get-double g-value-set-double + g-param-spec-enum g-value-get-enum g-value-get-flags g-value-get-string @@ -77,7 +80,31 @@ g-value-set-pointer g-value-get-object g-value-set-object - g-value-get-variant)) + g-value-get-variant + + ;; Type and Values + g-type-param-boolean + g-type-param-char + g-type-param-uchar + g-type-param-int + g-type-param-uint + g-type-param-long + g-type-param-ulong + g-type-param-int64 + g-type-param-uint64 + g-type-param-float + g-type-param-double + g-type-param-enum + g-type-param-flags + g-type-param-string + g-type-param-param + g-type-param-boxed + g-type-param-pointer + g-type-param-object + g-type-param-unichar + g-type-param-override + g-type-param-gtype + g-type-param-variant)) (g-export g-value-set-enum @@ -181,6 +208,24 @@ (g_value_set_boolean g-value (if bool 1 0))) +(define (g-param-spec-int name nick blurb minimum maximum default flags) + (let* ((nick (or nick name)) + (blurb (or blurb nick)) + (minimum (or minimum -2147483648)) ;; FIXME import G_MININT + (maximum (or maximum 2147483647)) ;; FIXME import G_MAXINT + (default (or default 0)) + (flags (or flags '(readable writable))) + (g-param-flags + (@ (g-golf gobject param-spec) %g-param-flags))) + (gi->scm (g_param_spec_int (string->pointer name) + (string->pointer nick) + (string->pointer blurb) + minimum + maximum + default + (flags->integer g-param-flags flags)) + 'pointer))) + (define (g-value-get-int g-value) (g_value_get_int g-value)) @@ -205,6 +250,24 @@ (define (g-value-set-double g-value double) (g_value_set_double g-value double)) +(define (g-param-spec-enum name nick blurb type default flags) + (let* ((nick (or nick name)) + (blurb (or blurb nick)) + (g-type (!g-type type)) + (default (if default + (enum->value type default) + 0)) + (flags (or flags '(readable writable))) + (g-param-flags + (@ (g-golf gobject param-spec) %g-param-flags))) + (gi->scm (g_param_spec_enum (string->pointer name) + (string->pointer nick) + (string->pointer blurb) + g-type + default + (flags->integer g-param-flags flags)) + 'pointer))) + (define (g-value-get-gi-enum g-value) (let* ((g-name (g-value-type-name g-value)) (name (g-name->name g-name))) @@ -368,18 +431,17 @@ (list '* int))) -(define g_value_get_uint - (pointer->procedure unsigned-int - (dynamic-func "g_value_get_uint" - %libgobject) - (list '*))) - -(define g_value_set_uint - (pointer->procedure void - (dynamic-func "g_value_set_uint" +(define g_param_spec_int + (pointer->procedure '* + (dynamic-func "g_param_spec_int" %libgobject) - (list '* - unsigned-int))) + (list '* ;; name + '* ;; nick + '* ;; blurb + int ;; minimum + int ;; maximum + int ;; default-value + unsigned-int))) ;; flags (define g_value_get_int (pointer->procedure int @@ -394,6 +456,19 @@ (list '* int))) +(define g_value_get_uint + (pointer->procedure unsigned-int + (dynamic-func "g_value_get_uint" + %libgobject) + (list '*))) + +(define g_value_set_uint + (pointer->procedure void + (dynamic-func "g_value_set_uint" + %libgobject) + (list '* + unsigned-int))) + (define g_value_get_float (pointer->procedure float (dynamic-func "g_value_get_float" @@ -420,6 +495,17 @@ (list '* double))) +(define g_param_spec_enum + (pointer->procedure '* + (dynamic-func "g_param_spec_enum" + %libgobject) + (list '* ;; name + '* ;; nick + '* ;; blurb + size_t ;; g-type + int ;; default-value + unsigned-int))) ;; flags + (define g_value_get_enum (pointer->procedure int (dynamic-func "g_value_get_enum" @@ -516,3 +602,31 @@ (dynamic-func "g_value_get_variant" %libgobject) (list '*))) + + +;;; +;;; From libg-golf +;;; + +(define g-type-param-boolean g_type_param_boolean) +(define g-type-param-char g_type_param_char) +(define g-type-param-uchar g_type_param_uchar) +(define g-type-param-int g_type_param_int) +(define g-type-param-uint g_type_param_uint) +(define g-type-param-long g_type_param_long) +(define g-type-param-ulong g_type_param_ulong) +(define g-type-param-int64 g_type_param_int64) +(define g-type-param-uint64 g_type_param_uint64) +(define g-type-param-float g_type_param_float) +(define g-type-param-double g_type_param_double) +(define g-type-param-enum g_type_param_enum) +(define g-type-param-flags g_type_param_flags) +(define g-type-param-string g_type_param_string) +(define g-type-param-param g_type_param_param) +(define g-type-param-boxed g_type_param_boxed) +(define g-type-param-pointer g_type_param_pointer) +(define g-type-param-object g_type_param_object) +(define g-type-param-unichar g_type_param_unichar) +(define g-type-param-override g_type_param_override) +(define g-type-param-gtype g_type_param_gtype) +(define g-type-param-variant g_type_param_variant) diff --git a/g-golf/gobject/signals.scm b/g-golf/gobject/signals.scm index e6bdc1c..7249963 100644 --- a/g-golf/gobject/signals.scm +++ b/g-golf/gobject/signals.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2019 - 2021 +;;;; Copyright (C) 2019 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -29,6 +29,7 @@ (define-module (g-golf gobject signals) #:use-module (rnrs bytevectors) #:use-module (ice-9 match) + #:use-module (ice-9 format) #:use-module (oop goops) #:use-module (system foreign) #:use-module (srfi srfi-4) @@ -48,9 +49,11 @@ warn last) - #:export (g-signal-query + #:export (g-signal-newv + g-signal-query g-signal-lookup g-signal-list-ids + g-signal-emitv g-signal-connect-closure-by-id g-signal-parse-name @@ -84,6 +87,85 @@ 0 %null-pointer))) +(define %g-signal-newv-args-fmt + " + g_signal_newv + name: ~S + iface-type: ~A + flags: ~A + class-closure: ~A + accumulator: ~A + accu-data: ~A + c-marshaller: ~A + return-type: ~A + n-param: ~A + param-types: ~A + +") + +(define* (show-g-signal-newv name + iface-type + flags + class-closure + accumulator + accu-data + c-marshaller + return-type + n-param + param-types + #:optional (port (current-output-port))) + (format port "~?" %g-signal-newv-args-fmt + (list name + iface-type + flags + class-closure + accumulator + accu-data + c-marshaller + return-type + n-param + param-types))) + +(define (g-signal-newv name + iface-type + flags + class-closure + accumulator + accu-data + c-marshaller + return-type + n-param + param-types) + (let* ((%scm->g-type (@ (g-golf hl-api utils) scm->g-type)) + (name (if (symbol? name) (symbol->string name) name)) + (flags (flags->integer %g-signal-flags flags)) + (class-closure (scm->gi class-closure 'pointer)) + (accumulator (scm->gi accumulator 'pointer)) + (accu-data (scm->gi accu-data 'pointer)) + (c-marshaller (scm->gi c-marshaller 'pointer)) + (return-type (%scm->g-type return-type)) + (param-types (scm->gi (map %scm->g-type param-types) 'gtypes))) + #;(show-g-signal-newv name + iface-type + flags + class-closure + accumulator + accu-data + c-marshaller + return-type + n-param + param-types) + (g_signal_newv (scm->gi name 'string) + iface-type + flags + class-closure + accumulator + accu-data + c-marshaller + return-type + n-param + param-types))) + (define (g-signal-query id) (let ((gsq (g-signal-query-new))) (g_signal_query id gsq) @@ -98,6 +180,15 @@ n-param (decode-param-types n-param param-types)))))) +(define (g-signal-lookup name g-type) + (let ((gsl (g_signal_lookup (scm->gi name 'string) + g-type))) + (case gsl + ((0) + #f) + (else + gsl)))) + (define (g-signal-list-ids g-type) (let* ((s-uint (sizeof unsigned-int)) (n-id-bv (make-bytevector s-uint 0)) @@ -110,14 +201,9 @@ (g-free ids) results)) -(define (g-signal-lookup name g-type) - (let ((gsl (g_signal_lookup (scm->gi name 'string) - g-type))) - (case gsl - ((0) - #f) - (else - gsl)))) +(define (g-signal-emitv params id detail return-value) + (g_signal_emitv params id detail + (scm->gi return-value 'pointer))) (define (g-signal-connect-closure-by-id g-inst signal-id detail closure after?) @@ -168,6 +254,21 @@ ;;; Signals Bindings ;;; +(define g_signal_newv + (pointer->procedure unsigned-int + (dynamic-func "g_signal_newv" + %libgobject) + (list '* ;; name + size_t ;; iface-type + unsigned-int ;; flags + '* ;; class-closure + '* ;; accumulator + '* ;; accu-data + '* ;; c-marshaller + size_t ;; return-type + unsigned-int ;; n-param + '*))) ;; param-types + (define g_signal_query (pointer->procedure void (dynamic-func "g_signal_query" @@ -189,6 +290,15 @@ (list size_t ;; g-type '*))) ;; n-id (pointer to guint) +(define g_signal_emitv + (pointer->procedure void + (dynamic-func "g_signal_emitv" + %libgobject) + (list '* ;; params + unsigned-int ;; id + uint32 ;; detail + '*))) ;; return-value + (define g_signal_connect_closure_by_id (pointer->procedure unsigned-long (dynamic-func "g_signal_connect_closure_by_id" diff --git a/g-golf/gobject/type-info.scm b/g-golf/gobject/type-info.scm index c579d4a..c07a319 100644 --- a/g-golf/gobject/type-info.scm +++ b/g-golf/gobject/type-info.scm @@ -33,6 +33,8 @@ #:use-module (system foreign) #:use-module (rnrs arithmetic bitwise) #:use-module (g-golf init) + #:use-module (g-golf support utils) + #:use-module (g-golf support libg-golf) #:use-module (g-golf support flags) #:use-module (g-golf support bytevector) #:use-module (g-golf glib mem-alloc) @@ -50,6 +52,8 @@ #:export (g-type->symbol symbol->g-type + g-type-from-class ;; from libg-golf + g-type-name g-type-from-name g-type-parent @@ -99,6 +103,11 @@ %g-type-fundamental-shift)))) +;; from libg-golf +(define (g-type-from-class g-class) + (g_type_from_class g-class)) + + ;;; ;;; GObject Low level API ;;; @@ -327,7 +336,7 @@ '* ;; class-init (func) unsigned-int ;; instance-size '* ;; instance-init (func) - int))) ;; flags + unsigned-int))) ;; flags (define g_type_add_interface_static (pointer->procedure void diff --git a/g-golf/hl-api.scm b/g-golf/hl-api.scm index 62bc338..bae8a22 100644 --- a/g-golf/hl-api.scm +++ b/g-golf/hl-api.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2018 - 2022 +;;;; Copyright (C) 2018 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -33,6 +33,7 @@ #:use-module (g-golf support goops) #:use-module (g-golf hl-api n-decl) #:use-module (g-golf hl-api gtype) + #:use-module (g-golf hl-api gparam) #:use-module (g-golf hl-api iface) #:use-module (g-golf hl-api gobject) #:use-module (g-golf hl-api events) @@ -61,6 +62,7 @@ (g-golf support goops) (g-golf hl-api n-decl) (g-golf hl-api gtype) + (g-golf hl-api gparam) (g-golf hl-api iface) (g-golf hl-api gobject) (g-golf hl-api events) diff --git a/g-golf/hl-api/callable.scm b/g-golf/hl-api/callable.scm index 3f4887d..b58003a 100644 --- a/g-golf/hl-api/callable.scm +++ b/g-golf/hl-api/callable.scm @@ -723,7 +723,10 @@ #:args-out args-out))) (define* (gi-argument->scm type-tag type-desc gi-argument clb/arg - #:key (forced-type #f) (is-pointer? #f) (args-out #f)) + #:key (forced-type #f) + (is-pointer? #f) + (args-out #f) + (g-value-ptr? #f)) ;; forced-type is only used for 'inout and 'out arguments, in which ;; case it is 'pointer - see 'simple' types below. @@ -762,7 +765,9 @@ gi-arg-val))) (case name ((g-value) - (g-value-ref foreign)) + (if g-value-ptr? + foreign + (g-value-ref foreign))) (else (if (or (!is-opaque? gi-type) (!is-semi-opaque? gi-type)) diff --git a/g-golf/hl-api/callback.scm b/g-golf/hl-api/callback.scm index 273ecb1..c4826bb 100644 --- a/g-golf/hl-api/callback.scm +++ b/g-golf/hl-api/callback.scm @@ -150,6 +150,14 @@ (g-callable-info-prepare-closure info ffi-cif ffi-closure-callback user-data))) +(define (preserve-g-value-ptr? callback) + (case (!name callback) + ((get-property + set-property) + #t) + (else + #f))) + (define (g-golf-callback-closure-marshal ffi-cif return-value ffi-args @@ -161,6 +169,7 @@ (callback-closure (pointer->scm user-data)) (callback (!callback callback-closure)) (procedure (!procedure callback-closure)) + (g-value-ptr? (preserve-g-value-ptr? callback)) (return-type (!return-type callback)) (gi-argument (!gi-arg-result callback))) (when (%debug) @@ -210,7 +219,7 @@ int16 uint16 int32 - uint3 + uint32 unichar int64 uint64 @@ -242,7 +251,8 @@ gi-argument argument #:forced-type forced-type - #:is-pointer? is-pointer?)) + #:is-pointer? is-pointer? + #:g-value-ptr? g-value-ptr?)) ((void) (if is-pointer? ffi-value diff --git a/g-golf/hl-api/function.scm b/g-golf/hl-api/function.scm index cda2f27..09a0837 100644 --- a/g-golf/hl-api/function.scm +++ b/g-golf/hl-api/function.scm @@ -81,7 +81,8 @@ (n-gi-arg-out (!n-gi-arg-out f-inst)) (gi-args-out (!gi-args-out f-inst)) (gi-arg-result (!gi-arg-result f-inst))) - (callable-prepare-gi-arguments f-inst args) + (unless (memq 'skip-prepare-gi-arguments args) + (callable-prepare-gi-arguments f-inst args)) (with-gerror g-error (g-function-info-invoke info gi-args-in diff --git a/g-golf/hl-api/glib.scm b/g-golf/hl-api/glib.scm index 281da08..1889221 100644 --- a/g-golf/hl-api/glib.scm +++ b/g-golf/hl-api/glib.scm @@ -71,14 +71,14 @@ #:return-type 'boolean #:param-types '())) (g-closure (!g-closure closure)) - (source (g-idle-source-new)) - (dummy (g-source-set-priority source - (ensure-priority priority))) - (dummy (g-source-set-closure source g-closure)) - (id (g-source-attach source #f))) - (g-source-unref source) - (g-closure-unref g-closure) - id)) + (source (g-idle-source-new))) + (g-source-set-priority source + (ensure-priority priority)) + (g-source-set-closure source g-closure) + (let ((id (g-source-attach source #f))) + (g-source-unref source) + (g-closure-unref g-closure) + id))) (define* (g-timeout-add interval proc #:optional (priority 'default)) (let* ((closure (make <closure> @@ -86,14 +86,14 @@ #:return-type 'boolean #:param-types '())) (g-closure (!g-closure closure)) - (source (g-timeout-source-new interval)) - (dummy (g-source-set-priority source - (ensure-priority priority))) - (dummy (g-source-set-closure source g-closure)) - (id (g-source-attach source #f))) - (g-source-unref source) - (g-closure-unref g-closure) - id)) + (source (g-timeout-source-new interval))) + (g-source-set-priority source + (ensure-priority priority)) + (g-source-set-closure source g-closure) + (let ((id (g-source-attach source #f))) + (g-source-unref source) + (g-closure-unref g-closure) + id))) (define* (g-timeout-add-seconds interval proc #:optional (priority 'default)) @@ -102,14 +102,14 @@ #:return-type 'boolean #:param-types '())) (g-closure (!g-closure closure)) - (source (g-timeout-source-new-seconds interval)) - (dummy (g-source-set-priority source - (ensure-priority priority))) - (dummy (g-source-set-closure source g-closure)) - (id (g-source-attach source #f))) - (g-source-unref source) - (g-closure-unref g-closure) - id)) + (source (g-timeout-source-new-seconds interval))) + (g-source-set-priority source + (ensure-priority priority)) + (g-source-set-closure source g-closure) + (let ((id (g-source-attach source #f))) + (g-source-unref source) + (g-closure-unref g-closure) + id))) ;;; diff --git a/g-golf/hl-api/gobject.scm b/g-golf/hl-api/gobject.scm index 18a4012..bee6b6c 100644 --- a/g-golf/hl-api/gobject.scm +++ b/g-golf/hl-api/gobject.scm @@ -44,6 +44,7 @@ #:use-module (g-golf gobject) #:use-module (g-golf gi) #:use-module (g-golf hl-api gtype) + #:use-module (g-golf hl-api gparam) #:use-module (g-golf hl-api iface) #:replace (connect) @@ -60,7 +61,8 @@ <ginterface> ginterface-class? - g-object-find-class-by-g-type + g-value->scm + g-object-find-class g-object-make-class g-interface-make-class @@ -120,7 +122,7 @@ #t (loop rest))))))) -(define (compute-extra-slots class g-properties slots) +(define (compute-g-property-slots class g-properties slots) (if (null? g-properties) '() (let* ((module (resolve-module '(g-golf hl-api gobject))) @@ -133,42 +135,50 @@ ;; following necessary let variable binding. (g-class (and info ;; info is #f for derived class(es) (g-type-class info))) - (extra-slots (filter-map - (lambda (g-property) - (let* ((g-name (g-base-info-get-name g-property)) - (name (g-name->name g-name))) - (if (has-slot? slots name) - #f - (let* ((k-name (symbol->keyword name)) - (a-name (symbol-append '! name)) - (a-inst (if (module-variable module a-name) - (module-ref module a-name) - (let ((a-inst (make-accessor a-name))) - (module-g-export! module `(,a-name)) - (module-set! module a-name a-inst) - a-inst))) - (g-param-spec - (and g-class - (g-object-class-find-property g-class g-name))) - (g-type (if g-param-spec - (g-param-spec-type g-param-spec) - (gi-property-g-type g-property))) - (g-flags (if g-param-spec - (g-param-spec-get-flags g-param-spec) - (g-property-info-get-flags g-property))) - (slot (make <slot> - #:name name - #:g-property g-property - #:g-name g-name - #:g-param-spec g-param-spec - #:g-type g-type - #:g-flags g-flags - #:allocation #:g-property - #:accessor a-inst - #:init-keyword k-name))) - slot)))) - g-properties))) - extra-slots))) + (g-property-slots + (filter-map + (lambda (g-property) + (let* ((g-name (g-base-info-get-name g-property)) + (name (g-name->name g-name))) + (if (has-slot? slots name) + #f + (let* ((k-name (symbol->keyword name)) + (a-name (symbol-append '! name)) + (a-inst (if (module-variable module a-name) + (module-ref module a-name) + (let ((a-inst (make-accessor a-name))) + (module-g-export! module `(,a-name)) + (module-set! module a-name a-inst) + a-inst))) + (g-param-spec + (and g-class + (g-object-class-find-property g-class g-name))) + (g-type (if g-param-spec + (g-param-spec-type g-param-spec) + (gi-property-g-type g-property))) + (g-flags (if g-param-spec + (g-param-spec-get-flags g-param-spec) + (g-property-info-get-flags g-property))) + (slot (make <slot> + #:name name + #:g-property g-property + #:g-name g-name + #:g-param-spec g-param-spec + #:g-type g-type + #:g-flags g-flags + #:allocation #:g-property + #:accessor a-inst + #:init-keyword k-name))) + slot)))) + g-properties))) + g-property-slots))) + +(define (compute-g-param-value-cache-slots g-param-slots) + (map (lambda (slot) + (make <slot> + #:name (symbol-append (slot-ref slot 'name) + '_))) + g-param-slots)) (define (n-prop-prop-accessors class) ;; Note that at this point, the g-type slot of the class is still @@ -202,50 +212,57 @@ (cons (get-property info i) result))))))))) +(define (filter-g-param-slots slots) + (filter-map (lambda (slot) + (and (get-keyword #:g-param + (slot-definition-options slot) + #f) + slot)) + slots)) + (define-method (compute-slots (class <gobject-class>)) (let* ((slots (next-method)) - (extra (compute-extra-slots class - (gobject-ginterface-direct-properties class) - slots))) + (direct-slots (slot-ref class 'direct-slots)) + (g-param-slots (filter-g-param-slots direct-slots)) + (g-param-value-cache-slots + (compute-g-param-value-cache-slots g-param-slots)) + (g-property-slots + (compute-g-property-slots class + (gobject-ginterface-direct-properties class) + slots))) (slot-set! class 'direct-slots - (append (slot-ref class 'direct-slots) - extra)) - (append slots extra))) - -(define* (is-readable? slot #:optional (slot-opts #f)) - (let* ((slot-opts (or slot-opts - (slot-definition-options slot))) - (g-flags (get-keyword #:g-flags slot-opts #f))) - (and g-flags - (memq 'readable g-flags)))) - -(define* (is-writable? slot #:optional (slot-opts #f)) - (let* ((slot-opts (or slot-opts - (slot-definition-options slot))) - (g-flags (get-keyword #:g-flags slot-opts #f))) - (and g-flags - (memq 'writable g-flags) - (not (memq 'construct-only g-flags))))) - -(define-method (compute-get-n-set (class <gobject-class>) slot-def) - (case (slot-definition-allocation slot-def) - ((#:g-property) - (let* ((name (slot-definition-name slot-def)) - (slot-opts (slot-definition-options slot-def)) - (g-name (get-keyword #:g-name slot-opts #f)) - (g-type (get-keyword #:g-type slot-opts #f))) - (list (lambda (obj) - #;(if (is-readable? slot-def slot-opts) - (g-inst-get-property (!g-inst obj) g-name g-type) - (error "Unreadable slot:" name)) - (g-inst-get-property (!g-inst obj) g-name g-type)) - (lambda (obj val) - #;(if (is-writable? slot-def slot-opts) - (g-inst-set-property (!g-inst obj) g-name g-type val) - (error "Unwritable slot:" name)) - (g-inst-set-property (!g-inst obj) g-name g-type val))))) - (else - (next-method)))) + (append direct-slots + g-param-value-cache-slots + g-property-slots)) + (append slots + g-param-value-cache-slots + g-property-slots))) + +(define (g-property-slot? slot) + (eq? (slot-definition-allocation slot) #:g-property)) + +(define (g-param-slot? slot) + (get-keyword #:g-param + (slot-definition-options slot) + #f)) + +(define-method (compute-get-n-set (class <gobject-class>) slot) + (cond ((g-property-slot? slot) + (let* ((slot-opts (slot-definition-options slot)) + (g-name (get-keyword #:g-name slot-opts #f)) + (g-type (get-keyword #:g-type slot-opts #f))) + (list (lambda (obj) + (g-inst-get-property (!g-inst obj) g-name g-type)) + (lambda (obj val) + (g-inst-set-property (!g-inst obj) g-name g-type val))))) + ((g-param-slot? slot) + (let ((name (symbol->string (slot-definition-name slot)))) + (list (lambda (obj) + (g-inst-g-param-get-property obj name)) + (lambda (obj val) + (g-inst-g-param-set-property obj name val))))) + (else + (next-method)))) (define-method (initialize (class <gobject-class>) initargs) (let ((info (get-keyword #:info initargs #f)) @@ -255,92 +272,340 @@ (cond (info initargs) (g-type (cons* #:info g-type initargs)) (else - (cons* #:derived #t - #:info (g-golf-type-register class initargs) - initargs)))))) + (receive (g-type class-init-func-closure class-init-func) + (g-golf-g-type-register class initargs) + (cons* #:derived #t + #:info g-type + #:class-init-func-closure class-init-func-closure + #:class-init-func class-init-func + initargs))))) + (install-properties class) + (install-signals class initargs))) + +(define (install-properties class) + ;; To expose slots as gobject properties, <gobject> processes a + ;; #:g-param slot option and creates a new gobject property. + (let loop ((id 1) + (slots (class-direct-g-param-slots class))) + (match slots + (() 'done) + ((slot . rest) + (install-property class slot id) + (loop (+ id 1) + rest))))) + +(define (install-property class slot id) + (unless (!derived class) + (scm-error 'invalid-class #f + "Can't add properties to non-derived type: ~S" + (list class) #f)) + (let ((g-class (!g-class class)) + (name (slot-definition-name slot))) + (if (g-object-class-find-property g-class + (symbol->string name)) + (scm-error 'invalid-property #f + "There is already a property named ~A in ~S" + (list name class) #f) + (g-object-class-install-property g-class + id + (g-param-construct slot))))) + +#! +;; We used the following to get started, just keeping the message in +;; case ... + +(define %get-set-property-default-func-warning-msg + " +WARNING: I can see that you are adding new properties to your +derived class, but failed to provide a custom [get|set]-property +vfunc, so those newly added properties won't work as expected. + +") +!# -(define (g-golf-type-register class initargs) +(define %get-property-func + (procedure->pointer void + (lambda (g-inst p-id g-value p-spec) + (let* ((inst (g-inst-cache-ref g-inst)) + (p-name (g-param-spec-get-name p-spec)) + (p-name_ (string-append p-name "_"))) + #;(dimfi '%get-property-func p-name) + #;(dimfi " " 'g-inst g-inst) + #;(dimfi " " 'inst inst) + (g-value-set! g-value + (slot-ref inst + (string->symbol p-name_))) + (values))) + (list '* + unsigned-int + '* + '*))) + +(define %set-property-func + (procedure->pointer void + (lambda (g-inst p-id g-value p-spec) + (let* ((inst (g-inst-cache-ref g-inst)) + (p-name (g-param-spec-get-name p-spec)) + (p-name_ (string-append p-name "_"))) + #;(dimfi '%set-property-func p-name) + #;(dimfi " " 'g-inst g-inst) + #;(dimfi " " 'inst inst) + (slot-set! inst + (string->symbol p-name_) + (g-value-ref g-value)) + (values))) + (list '* + unsigned-int + '* + '*))) + +(define (lookup-template-procedures-make-g-bytes template) + (if template + (let* ((module (resolve-module '(g-golf hl-api function))) + (template-bv (call-with-input-file template + (lambda (port) (get-bytevector-all port)) #:binary #t)) + (g-bytes (g-bytes-new (bytevector->pointer template-bv) + (bytevector-length template-bv)))) + (values (module-ref module 'gtk-widget-class-set-template) + (module-ref module 'gtk-widget-class-bind-template-child-full) + g-bytes)) + (values #f #f #f))) + +(define (lookup-g-class-get-set-p-vfunc-offset) + (let ((g-object-struct-fields (!g-struct-fields <gobject>))) + (values + (match (assq-ref g-object-struct-fields 'get-property) + ((type offset flags) offset)) + (match (assq-ref g-object-struct-fields 'set-property) + ((type offset flags) offset))))) + +(define (%class-init-func name properties template child-ids) + (if (and (null? properties) + (not template)) + ;; we return #f, g-type-register-static-simple will then select + ;; the %class-init-func defined in (g-golf gobject type-info) + (values #f #f) + (let ((class-init-func-closure + (lambda (g-class class-data) + (let ((%name name) + (%properties properties) + (%template template) + (%child-ids child-ids)) + #;(dimfi '%class-init-func %name) + #;(dimfi " " 'g-class g-class) + #;(dimfi " " 'g-class g-class) + #;(dimfi " " 'g-type (g-type-from-class g-class)) + #;(dimfi " " 'child-ids %child-ids) + (unless (null? %properties) + (receive (get-p-vfunc-offset set-p-vfunc-offset) + (lookup-g-class-get-set-p-vfunc-offset) + (bv-ptr-set! (gi-pointer-inc g-class + get-p-vfunc-offset) + %get-property-func) + (bv-ptr-set! (gi-pointer-inc g-class + set-p-vfunc-offset) + %set-property-func))) + (when %template + (receive (set-template bind-template-child-full g-bytes) + (lookup-template-procedures-make-g-bytes %template) + (set-template g-class g-bytes) + (for-each (lambda (child-id) + (bind-template-child-full g-class + child-id + #f + 0)) + %child-ids))) + (values))))) + (values class-init-func-closure + (procedure->pointer void + class-init-func-closure + (list '* '*)))))) + +(define (lookup-init-template-func) + (let* ((init-template-func (gi-cache-ref 'function 'gtk-widget-init-template)) + (gi-argument (slot-ref init-template-func 'gi-args-in)) + (init-template (slot-ref init-template-func 'i-func))) + (values init-template gi-argument))) + +(define (instance-init-proc g-inst g-class) + (receive (init-template gi-argument) + (lookup-init-template-func) + (let* ((class (g-class-cache-ref g-class)) + (g-type (!g-type class))) + #;(dimfi '%instance-init-func (class-name class)) + #;(dimfi " " 'g-type g-type) + #;(dimfi " " 'g-inst g-inst) + #;(dimfi " " 'inst (g-inst-cache-ref g-inst)) + #;(dimfi " " 'template-initialization...) + (gi-argument-set! gi-argument 'v-pointer g-inst) + (apply init-template + (list g-inst 'skip-prepare-gi-arguments)) + (let ((g-inst-construct-g-type (%g-inst-construct-g-type))) + ;; we only creating a goops proxy instance under the following + ;; conditions - mandatory to avoid 'double' instance creation + #;(dimfi " " 'g-inst-construct-g-type g-inst-construct-g-type) + (unless (and g-inst-construct-g-type + (= g-type g-inst-construct-g-type)) + #;(dimfi " " 'inst + (make class #:g-inst g-inst)) + (make class #:g-inst g-inst))) + (values)))) + +(define %instance-init-func + (procedure->pointer void + instance-init-proc + (list '* '*))) + +(define (is-a-gtk-widget? dsupers) + (member '<gtk-widget> + (map class-name + (apply append (map class-precedence-list dsupers))))) + +(define (find-parent-g-type dsupers) + (!g-type (find gobject-class? + (apply append + (map class-precedence-list dsupers))))) + +(define (find-g-param-slots slots) + (filter-map (lambda (slot-description) + (and (get-keyword #:g-param (cdr slot-description) #f) + slot-description)) + slots)) + +(define (g-golf-g-type-register class initargs) (let* ((name (get-keyword #:name initargs #f)) (g-name (class-name->g-name name)) (dsupers (get-keyword #:dsupers initargs '())) - (p-type (!g-type (find gobject-class? - (apply append - (map class-precedence-list dsupers)))))) - (match (g-type-query p-type) - ((p-type p-name class-size instance-size) - (let ((g-type (g-type-register-static-simple p-type - g-name - class-size - #f ;; class-init-func - instance-size - #f ;; instance-init-func - '()))) - (for-each (lambda (iface-class) - (g-golf-type-add-interface g-type iface-class)) - (filter-map (lambda (class) - (and (ginterface-class? class) class)) - dsupers)) - g-type))))) - -(define (g-golf-type-add-interface g-type iface-class) + (p-type (find-parent-g-type dsupers)) + (slots (get-keyword #:slots initargs '())) + (properties (find-g-param-slots slots)) + (template (get-keyword #:template initargs #f)) + (child-ids (get-keyword #:child-ids initargs '()))) + (if (and template + (not (is-a-gtk-widget? dsupers))) + (scm-error 'invalid-class #f + "Invalid (template) class: ~A" + (list name) #f) + (match (g-type-query p-type) + ((p-type p-name class-size instance-size) + (receive (class-init-func-closure class-init-func) + (%class-init-func name properties template child-ids) + (let ((g-type (g-type-register-static-simple p-type + g-name + class-size + class-init-func + instance-size + (and template + %instance-init-func) + '()))) + (for-each (lambda (iface-class) + (g-golf-g-type-add-interface g-type iface-class)) + (filter-map (lambda (class) + (and (ginterface-class? class) class)) + dsupers)) + (values g-type + class-init-func-closure + class-init-func)))))))) + +(define (g-golf-g-type-add-interface g-type iface-class) (g-type-add-interface-static g-type (!g-type iface-class) (gi-iface-info-struct iface-class))) -(define (g-inst-get-property inst g-name g-type) - (let* ((g-value (g-value-init g-type)) - (dummy (g-object-get-property inst g-name g-value)) - (result (%g-inst-get-property-value g-value))) - (g-value-unset g-value) - result)) - -(define (%g-inst-get-property-value g-value) - (let ((value (g-value-ref g-value))) - (case (g-value-type-tag g-value) - ((object) +(define (g-inst-get-property g-inst g-name g-type) + (let ((g-value (g-value-init g-type))) + (g-object-get-property g-inst g-name g-value) + (let ((result (g-value->scm g-value g-type))) + (g-value-unset g-value) + result))) + +(define (g-value->scm g-value g-type) + (case (g-type->symbol g-type) + ((#f) + ;; Most likely a fundamental type that is not in GObject. + (receive (value class) + (g-value-func-ref g-value g-type) (if (or (not value) (null-pointer? value)) #f - (or (g-inst-cache-ref value) - (let* ((module (resolve-module '(g-golf hl-api gobject))) - (r-type (g-value-type g-value)) - (info (g-irepository-find-by-gtype r-type)) - (g-name (g-registered-type-info-get-type-name info)) - (c-name (g-name->class-name g-name)) - (type (module-ref module c-name))) - (make type #:g-inst value))))) - ((interface) + (make class #:g-inst value)))) + ((object + interface) + (let ((value (g-value-ref g-value))) (if (or (not value) (null-pointer? value)) #f (or (g-inst-cache-ref value) - (let* ((module (resolve-module '(g-golf hl-api gobject))) - (r-type (g-value-type g-value)) - (info (g-irepository-find-by-gtype r-type)) - (g-name (g-registered-type-info-get-type-name info)) - (c-name (g-name->class-name g-name)) - (type (module-ref module c-name))) - (make type #:g-inst value))))) - (else - value)))) + (let ((class (g-type-cache-ref g-type))) + (make class #:g-inst value)))))) + (else + (g-value-ref g-value)))) -(define* (g-inst-set-property inst g-name g-type value) +(define (g-inst-set-property g-inst g-name g-type value) (let ((g-value (g-value-init g-type))) - (g-value-set! g-value - (%g-inst-set-property-value g-type value)) - (g-object-set-property inst g-name g-value) + (match (g-type->symbol g-type) + (#f + ;; Most likely a fundamental type that is not in GObject. + (g-value-func-set g-value g-type value)) + (else + (g-value-set! g-value + (scm->g-property g-type value)))) + (g-object-set-property g-inst g-name g-value) (g-value-unset g-value) (values))) -(define %g-inst-set-property-value - (@@ (g-golf hl-api gtype) %g-inst-set-property-value)) +(define (g-inst-g-param-get-property obj name) + (let* ((klass (class-of obj)) + (g-class (!g-class klass)) + (p-spec (g-object-class-find-property g-class name)) + (p-spec-type (g-param-spec-type p-spec))) + (g-inst-get-property (!g-inst obj) name p-spec-type))) + +(define (g-inst-g-param-set-property obj name val) + (let* ((klass (class-of obj)) + (g-class (!g-class klass)) + (p-spec (g-object-class-find-property g-class name)) + (p-spec-type (g-param-spec-type p-spec))) + (g-inst-set-property (!g-inst obj) name p-spec-type val))) ;;; ;;; Signals ;;; -(define (install-signals! class) +(define (install-signals class initargs) + (for-each (lambda (signal) + (install-signal class signal)) + (find-signals initargs))) + +(define (install-signal class signal) + (match signal + ((name return-type param-types flags) + (g-signal-newv name + (!g-type class) + flags + #f ;; class-closure + #f ;; accumulator + #f ;; accu-data + #f ;; c-marshaller + return-type + (length param-types) + param-types)))) + +(define (find-signals initargs) + (let loop ((args initargs) + (signals '())) + (match args + (() signals) + ((kw def . rest) + (if (eq? kw #:g-signal) + (loop rest + (cons def signals)) + (loop rest + signals)))))) + +#! +(define (install-signals class) (let ((signals (gobject-class-signals class))) (dimfi class) (for-each (lambda (info) @@ -359,6 +624,7 @@ (loop (+ i 1) (cons (g-object-info-get-signal info i) result))))))) +!# ;;; @@ -372,6 +638,21 @@ #:info (g-irepository-find-by-name "GObject" "Object") #:metaclass <gobject-class>) +(define* (is-readable? slot #:optional (slot-opts #f)) + (let* ((slot-opts (or slot-opts + (slot-definition-options slot))) + (g-flags (get-keyword #:g-flags slot-opts #f))) + (and g-flags + (memq 'readable g-flags)))) + +(define* (is-writable? slot #:optional (slot-opts #f)) + (let* ((slot-opts (or slot-opts + (slot-definition-options slot))) + (g-flags (get-keyword #:g-flags slot-opts #f))) + (and g-flags + (memq 'writable g-flags) + (not (memq 'construct-only g-flags))))) + (define safe-class-name (@@ (oop goops describe) safe-class-name)) @@ -422,7 +703,8 @@ (define-class <ginterface> (<gtype-instance>) #:info #t - #:g-type -1 ;; g-object-find-class-by-g-type + #:g-type -1 ;; so we do not break g-type-cahe-ref ... + #:g-name "GInterface" ;; fake name - specializer-vfunc-lookup needs one #:metaclass <gobject-class>) (define (ginterface-class? class) @@ -455,7 +737,8 @@ ;; Another example of a runtime class is the GdkWaylandClipboard, which ;; subclass GdkClipboard. -(define (g-object-find-class-by-g-type g-type) +;; this definition preceeds the existance of a g-type-cache +#;(define (g-object-find-class-by-g-type g-type) (let loop ((classes (class-subclasses <gtype-instance>))) (match classes (() #f) @@ -466,36 +749,56 @@ (define (g-object-find-class foreign) (let* ((g-type (g-object-type foreign)) - (class (g-object-find-class-by-g-type g-type))) + (class (g-type-cache-ref g-type))) (if class (values class (class-name class) g-type) (g-object-make-class foreign g-type)))) +(define (g-object-class-precedence-list g-type) + (let loop ((g-type g-type) + (class #f) + (results `((,g-type ,(g-type-name g-type) #f)))) + (if class + results + (let* ((p-type (g-type-parent g-type)) + (p-class (g-type-cache-ref p-type))) + (loop p-type + p-class + (cons (list p-type (g-type-name p-type) p-class) + results)))))) + (define* (g-object-make-class foreign #:optional g-type) (let* ((module (resolve-module '(g-golf hl-api gobject))) - (g-type (or g-type (g-object-type foreign))) - (g-name (g-object-type-name foreign)) - (c-name (g-name->class-name g-name)) - (parent (g-type-parent g-type)) - (p-g-name (g-type-name parent)) - (p-name (g-name->class-name p-g-name)) - (p-class-var (module-variable module p-name)) - (p-class (and p-class-var (module-ref module p-name)))) - (when (%debug) - (dimfi 'g-object-make-class) - (dimfi " " g-type g-name c-name 'p-name p-name)) - (if p-class - (let* ((public-i (module-public-interface module)) - (ifaces (g-object-class-interfaces g-type)) - (c-inst (make-class (cons p-class ifaces) - '() - #:name c-name - #:g-type g-type))) - (module-define! module c-name c-inst) - (module-add! public-i c-name - (module-variable module c-name)) - (values c-inst c-name g-type)) - (error "Undefined (parent) class: " p-name)))) + (public-i (module-public-interface module)) + (g-type (or g-type (g-object-type foreign)))) + (let loop ((cpl (g-object-class-precedence-list g-type))) + (match cpl + ((child) ;; instanciated in the previous step + (match child + ((g-type g-name _) + (let ((c-inst (g-type-cache-ref g-type))) + (values c-inst (class-name c-inst) g-type))))) + ((parent child . rest) + (match parent + ((p-type p-name p-class) + (let ((p-class (or p-class + ;; instanciated in the previous step + (g-type-cache-ref p-type)))) + (match child + ((g-type g-name _) + (let* ((ifaces (g-object-class-interfaces g-type)) + (c-name (g-name->class-name g-name)) + (c-inst (make-class (cons p-class ifaces) + '() + #:name c-name + #:g-type g-type))) + #;(dimfi 'g-object-make-class) + #;(dimfi " " c-inst) + #;(dimfi " " 'ifaces ifaces) + (module-define! module c-name c-inst) + (module-add! public-i c-name + (module-variable module c-name)) + (loop (cons child rest))))))))))))) (define (g-object-class-interfaces g-type) (let ((module (resolve-module '(g-golf hl-api gobject))) @@ -506,7 +809,7 @@ (m-var (module-variable module name))) (or (and m-var (variable-ref m-var)) - (g-interface-make-class g-type)))) + (g-interface-make-class iface)))) ifaces))) (define (g-interface-make-class g-type) diff --git a/g-golf/hl-api/gparam.scm b/g-golf/hl-api/gparam.scm new file mode 100644 index 0000000..40a2d3b --- /dev/null +++ b/g-golf/hl-api/gparam.scm @@ -0,0 +1,96 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (g-golf hl-api gparam) + #:use-module (ice-9 match) + #:use-module (ice-9 receive) + #:use-module (oop goops) + #:use-module (g-golf support) + #:use-module (g-golf glib) + #:use-module (g-golf gobject) + + #:duplicates (merge-generics + replace + warn-override-core + warn + last) + + #:export (g-param-construct + + g-param-construct-int + g-param-construct-enum)) + + +#;(g-export ) + + +(define (g-param-construct slot) + (let* ((options (slot-definition-options slot)) + (name (get-keyword #:name options #f)) + (p-spec (get-keyword #:g-param options #f))) + #;(dimfi 'g-param-construct name p-spec) + (match p-spec + ((param-type . param-desc) + (case param-type + ((int) + (g-param-construct-int name param-desc)) + ((enum) + (g-param-construct-enum name param-desc)) + (else + (scm-error 'g-param-construct #f + "Unimplemented g-param-construct type: ~S" + (list param-type) #f))))))) + + +(define (g-param-construct-int name param-desc) + (let ((nick (get-keyword #:nick param-desc #f)) + (blurb (get-keyword #:blurb param-desc #f)) + (minimum (get-keyword #:minimum param-desc #f)) + (maximum (get-keyword #:maximum param-desc #f)) + (default (get-keyword #:default param-desc #f)) + (flags (get-keyword #:flags param-desc #f))) + (g-param-spec-int (symbol->string name) + nick + blurb + minimum + maximum + default + flags))) + +(define (g-param-construct-enum name param-desc) + (let ((nick (get-keyword #:nick param-desc #f)) + (blurb (get-keyword #:blurb param-desc #f)) + (type (get-keyword #:type param-desc #f)) + (default (get-keyword #:default param-desc #f)) + (flags (get-keyword #:flags param-desc #f))) + (g-param-spec-enum (symbol->string name) + nick + blurb + type + default + flags))) diff --git a/g-golf/hl-api/gtype.scm b/g-golf/hl-api/gtype.scm index 906049f..e08d3c3 100644 --- a/g-golf/hl-api/gtype.scm +++ b/g-golf/hl-api/gtype.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2018 - 2022 +;;;; Copyright (C) 2018 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -38,6 +38,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 receive) #:use-module (ice-9 format) + #:use-module (srfi srfi-1) #:use-module (oop goops) #:use-module (g-golf support) #:use-module (g-golf glib) @@ -53,16 +54,26 @@ #:export (<gtype-class> <gtype-instance> - g-type-class)) + g-type-class + %g-inst-construct-g-type + g-value-func-ref + g-value-func-set + scm->g-property)) (g-export !info - !derived !namespace !g-type !g-name !g-class !g-struct-fields + !derived + !set-value-func + !set-value-func-ptr + !g-value-set-proc + !get-value-func + !get-value-func-ptr + !g-value-get-proc !g-inst unref @@ -77,14 +88,27 @@ (define-class <gtype-class> (<class>) (info #:accessor !info #:init-keyword #:info) - (derived #:accessor !derived - #:init-keyword #:derived #:init-value #f) (namespace #:accessor !namespace #:init-value #f) (g-type #:accessor !g-type #:init-keyword #:g-type) - (g-name #:accessor !g-name) + (g-name #:accessor !g-name #:init-keyword #:g-name) (g-class #:accessor !g-class) (g-struct-fields #:accessor !g-struct-fields - #:init-keyword #:g-struct-fields #:init-value #f)) + #:init-keyword #:g-struct-fields #:init-value #f) + (derived #:accessor !derived #:init-keyword #:derived #:init-value #f) + (class-init-func-closure #:init-keyword #:class-init-func-closure #:init-value #f) + (class-init-func #:init-keyword #:class-init-func #:init-value #f) + (set-value-func #:accessor !set-value-func + #:init-keyword #:set-value-func #:init-value #f) + (set-value-func-ptr #:accessor !set-value-func-ptr + #:init-keyword #:set-value-func-ptr #:init-value #f) + (g-value-set-proc #:accessor !g-value-set-proc + #:init-keyword #:g-value-set-proc #:init-value #f) + (get-value-func #:accessor !get-value-func + #:init-keyword #:get-value-func #:init-value #f) + (get-value-func-ptr #:accessor !get-value-func-ptr + #:init-keyword #:get-value-func-ptr #:init-value #f) + (g-value-get-proc #:accessor !g-value-get-proc + #:init-keyword #:g-value-get-proc #:init-value #f)) (define-method (initialize (self <gtype-class>) initargs) (let ((info (or (get-keyword #:info initargs #f) @@ -95,14 +119,16 @@ ((? pointer?) ;; a GI class definition (let* ((namespace (g-base-info-get-namespace info)) (g-type (g-registered-type-info-get-g-type info)) - (g-f-type (g-type-fundamental g-type)) (g-name (g-registered-type-info-get-type-name info)) (g-class (g-type-class info #:g-type g-type))) (mslot-set! self 'namespace namespace 'g-type g-type 'g-name g-name - 'g-class g-class))) + 'g-class g-class) + (g-type-cache-set! g-type self) + (and g-class + (g-class-cache-set! g-class self)))) ((? number?) ;; either a runtime or a derived class (let* ((g-type info) (g-name (g-type-name g-type)) @@ -111,7 +137,10 @@ 'info #f 'g-type g-type 'g-name g-name - 'g-class g-class)))))) + 'g-class g-class) + (g-type-cache-set! g-type self) + (and g-class + (g-class-cache-set! g-class self))))))) (define* (g-type-class info #:key (g-type #f)) (let* ((g-type (or g-type @@ -260,56 +289,134 @@ (g-inst (or g-inst? (g-inst-construct self split-kw)))) (next-method self split-rest) + (set! (!g-inst self) g-inst) + (g-inst-cache-set! g-inst self) (case g-type-name ((object) ;; [not when interface] (when (g-object-is-floating g-inst) (g-object-ref-sink g-inst)) (g-object-add-toggle-ref g-inst %g-toggle-notify #f))) - (set! (!g-inst self) g-inst) - (g-inst-cache-set! g-inst self))))) + (initialize-g-param-slots self) + (unless (null? (class-child-id-slots class)) + (initialize-child-id-slots self)))))) + +(define (initialize-g-param-slots inst) + (let* ((class (class-of inst)) + (g-class (!g-class class))) + (for-each (lambda (item) + (match item + ((g-class g-param-slots) + (for-each + (lambda (slot) + (let* ((name (slot-definition-name slot)) + (p-name (symbol->string name)) + (p-spec (g-object-class-find-property g-class p-name)) + (p-spec-default (g-param-spec-get-default-value p-spec)) + (default (g-value-ref p-spec-default)) + (name_ (symbol-append name '_))) + (slot-set! inst name_ default))) + g-param-slots)))) + (g-class-g-param-slots class)))) + +(define (g-class-g-param-slots class) + (filter-map (lambda (c) + (let ((g-param-direct-slots + (class-direct-g-param-slots c))) + (if (null? g-param-direct-slots) + #f + (list (!g-class c) + g-param-direct-slots)))) + (class-precedence-list class))) + +(define (initialize-child-id-slots inst) + (let* ((module (resolve-module '(g-golf hl-api function))) + (get-template-child + (module-ref module 'gtk-widget-get-template-child))) + (for-each (lambda (cpl-class) + (for-each (lambda (slot) + (let* ((options (slot-definition-options slot)) + (name (get-keyword #:name options)) + (child-id (get-keyword #:child-id options))) + (slot-set! inst + name + (get-template-child inst + (!g-type cpl-class) + child-id)))) + (class-direct-child-id-slots cpl-class))) + (class-precedence-list (class-of inst))))) (define %g_value_init (@@ (g-golf gobject generic-values) g_value_init)) + +(define %g-inst-construct-g-type (make-parameter #f)) + (define-method (g-inst-construct (self <gtype-instance>) g-property-initargs) - (if (null? g-property-initargs) - (g-object-new (!g-type (class-of self))) - (let* ((class (class-of self)) - (g-type (!g-type class)) - (slot-def-init-val-pairs - (slot-definition-init-value-pairs self g-property-initargs)) - (n-prop (length slot-def-init-val-pairs)) - (%g-value-size (g-value-size)) - (g-values (bytevector->pointer - (make-bytevector (* n-prop %g-value-size) 0))) - (names - (let loop ((i 0) - (names '()) - (g-value g-values) - (slot-def-init-val-pairs slot-def-init-val-pairs)) - (match slot-def-init-val-pairs - (() - (reverse! names)) - ((slot-def-init-val-pair . rest) - (match slot-def-init-val-pair - ((slot-def . init-val) - (let* ((slot-opts (slot-definition-options slot-def)) - (g-name (get-keyword #:g-name slot-opts #f)) - (g-type (get-keyword #:g-type slot-opts #f))) - (%g_value_init g-value g-type) - (g-value-set! g-value - (%g-inst-set-property-value g-type init-val)) - (loop (+ i 1) - (cons g-name names) - (gi-pointer-inc g-value %g-value-size) - rest))))))))) - (g-object-new-with-properties g-type - n-prop - (scm->gi names 'strings) - g-values)))) - -(define (%g-inst-set-property-value g-type value) + (let ((g-type (!g-type (class-of self)))) + (parameterize ((%g-inst-construct-g-type g-type)) + (if (null? g-property-initargs) + (g-object-new g-type) + (let* ((slot-def-init-val-pairs + (slot-definition-init-value-pairs self g-property-initargs)) + (n-prop (length slot-def-init-val-pairs)) + (%g-value-size (g-value-size)) + (g-values (bytevector->pointer + (make-bytevector (* n-prop %g-value-size) 0))) + (names + (let loop ((i 0) + (names '()) + (g-value g-values) + (slot-def-init-val-pairs slot-def-init-val-pairs)) + (match slot-def-init-val-pairs + (() + (reverse! names)) + ((slot-def-init-val-pair . rest) + (match slot-def-init-val-pair + ((slot-def . init-val) + (let* ((slot-opts (slot-definition-options slot-def)) + (g-name (get-keyword #:g-name slot-opts #f)) + (g-type (get-keyword #:g-type slot-opts #f))) + (%g_value_init g-value g-type) + (match (g-type->symbol g-type) + (#f + ;; Most likely a fundamental type that is not in GObject. + (g-value-func-set g-value g-type init-val)) + (else + (g-value-set! g-value + (scm->g-property g-type init-val)))) + (loop (+ i 1) + (cons g-name names) + (gi-pointer-inc g-value %g-value-size) + rest))))))))) + (g-object-new-with-properties g-type + n-prop + (scm->gi names 'strings) + g-values)))))) + +(define (g-value-func-ref g-value g-type) + (let ((class (g-type-cache-ref g-type))) + (if class + (let ((g-value-get-proc (!g-value-get-proc class))) + (if g-value-get-proc + (values (g-value-get-proc g-value) class) + (scm-error 'failed #f "Undefined g-value-get-proc for g-type: ~A" + (list g-type) #f))) + (scm-error 'failed #f "Undefined class for g-type: ~A" + (list g-type) #f)))) + +(define (g-value-func-set g-value g-type value) + (let ((class (g-type-cache-ref g-type))) + (if class + (let ((g-value-set-proc (!g-value-set-proc class))) + (if g-value-set-proc + (g-value-set-proc g-value (!g-inst value)) + (scm-error 'failed #f "Undefined g-value-set-proc for g-type: ~A" + (list g-type) #f))) + (scm-error 'failed #f "Undefined class for g-type: ~A" + (list g-type) #f)))) + +(define (scm->g-property g-type value) (let ((g-type (if (symbol? g-type) g-type (g-type->symbol g-type)))) diff --git a/g-golf/hl-api/n-decl.scm b/g-golf/hl-api/n-decl.scm index 718136f..7fa9686 100644 --- a/g-golf/hl-api/n-decl.scm +++ b/g-golf/hl-api/n-decl.scm @@ -77,7 +77,7 @@ ;;; (define %gi-import-namespace-exceptions - '("Glib" + '("GLib" "GObject")) (define (gi-namespace-import-exception? namespace) diff --git a/g-golf/hl-api/object.scm b/g-golf/hl-api/object.scm index 191b175..44a2bd6 100644 --- a/g-golf/hl-api/object.scm +++ b/g-golf/hl-api/object.scm @@ -127,11 +127,31 @@ (class-struct (g-object-info-get-class-struct info)) (g-struct-fields (and class-struct (gi-struct-field-desc class-struct))) + (set-value-func-ptr + (g-object-info-get-set-value-function-pointer info)) + (get-value-func-ptr + (g-object-info-get-get-value-function-pointer info)) (c-inst (make-class supers '() #:name c-name #:info info #:g-struct-fields g-struct-fields + #:set-value-func + (g-object-info-get-set-value-function info) + #:set-value-func-ptr set-value-func-ptr + #:g-value-set-proc + (and set-value-func-ptr + (pointer->procedure void + set-value-func-ptr + (list '* '*))) + #:get-value-func + (g-object-info-get-get-value-function info) + #:get-value-func-ptr get-value-func-ptr + #:g-value-get-proc + (and get-value-func-ptr + (pointer->procedure '* + get-value-func-ptr + (list '*))) #:metaclass metaclass))) (module-define! module c-name c-inst) (module-add! public-i c-name diff --git a/g-golf/hl-api/signal.scm b/g-golf/hl-api/signal.scm index 5838d76..107cffe 100644 --- a/g-golf/hl-api/signal.scm +++ b/g-golf/hl-api/signal.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2019 - 2020 +;;;; Copyright (C) 2019 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -71,14 +71,14 @@ !name !flags !iface-type - !iface-name !iface-class !return-type !param-types !param-args connect - connect-after) + connect-after + emit) ;;; @@ -100,31 +100,17 @@ (g-signal-parse-name s-name i-type) (match (g-signal-query s-id) ((id name iface-type flags return-type n-param param-types) - (let* ((iface-name (g-type-name iface-type)) - (iface-key (string->symbol - (g-studly-caps-expand iface-name))) - (signal (or (gi-signal-cache-ref iface-key s-name) - (let* ((iface-info (g-irepository-find-by-gtype iface-type)) - (iface-s-info (g-object-info-find-signal iface-info name)) - (param-args (signal-arguments iface-s-info)) - (s-inst (make <signal> - #:id id - #:name name - #:iface-type iface-type - #:iface-name iface-name - #:flags flags - #:return-type return-type - #:n-param n-param - #:param-types param-types - #:param-args param-args))) - (gi-signal-cache-set! iface-key s-name s-inst) - s-inst))) + (let* ((signal (or (gi-signal-cache-ref i-class-name s-name) + (make-signal s-id s-name + name i-type i-class-name + flags return-type n-param param-types))) + (param-args (!param-args signal)) (closure (make <closure> #:function function #:return-type return-type #:param-types (cons 'object param-types) - #:param-args (cons #f - (!param-args signal))))) + #:param-args (and param-args + (cons #f param-args))))) (g-signal-connect-closure-by-id (!g-inst inst) (!id signal) detail @@ -132,6 +118,25 @@ after?) (values))))))) +(define (make-signal id s-name name iface-type iface-name + flags return-type n-param param-types) + (let* ((iface-info (g-irepository-find-by-gtype iface-type)) + (iface-s-info (and iface-info + (g-object-info-find-signal iface-info name))) + (param-args (and iface-s-info + (signal-arguments iface-s-info))) + (s-inst (make <signal> + #:id id + #:name name + #:iface-type iface-type + #:flags flags + #:return-type return-type + #:n-param n-param + #:param-types param-types + #:param-args param-args))) + (gi-signal-cache-set! iface-name s-name s-inst) + s-inst)) + (define (signal-arguments info) (let loop ((n-arg (g-callable-info-get-n-args info)) (args '())) @@ -144,6 +149,57 @@ #:arg-pos n-arg) args))))) +(define-method (emit (inst <gtype-instance>) name . args) + (apply signal-emit inst name args)) + +(define %g_value_init + (@@ (g-golf gobject generic-values) g_value_init)) + +(define %prepare-g-value-in + (@@ (g-golf hl-api closure) prepare-g-value-in)) + +(define %prepare-return-val + (@@ (g-golf hl-api closure) prepare-return-val)) + +(define (signal-emit inst s-name . args) + (let* ((i-class (class-of inst)) + (i-class-name (class-name i-class)) + (i-type (!g-type i-class)) + (s-id (g-signal-lookup (symbol->string s-name) i-type))) + (if s-id + (match (g-signal-query s-id) + ((id name iface-type flags return-type n-param param-types) + (let* ((%g-value-size (g-value-size)) + (signal (or (gi-signal-cache-ref i-class-name s-name) + (make-signal s-id s-name + name i-type i-class-name + flags return-type n-param param-types))) + (params (bytevector->pointer + (make-bytevector (* (+ n-param 1) %g-value-size) 0)))) + (%g_value_init params iface-type) + (g-value-set-object params (!g-inst inst)) + (let loop ((i 0) + (g-value (gi-pointer-inc params %g-value-size))) + (if (= i n-param) + 'done + (let ((type (list-ref param-types i)) + (val (list-ref args i))) + (%prepare-g-value-in g-value type val) + (loop (+ i 1) + (gi-pointer-inc g-value %g-value-size))))) + (case return-type + ((none) + (g-signal-emitv params id 0 #f) + (values)) + (else + (let ((return-val (bytevector->pointer + (make-bytevector %g-value-size 0)))) + (%prepare-return-val return-val (!return-type signal)) + (g-signal-emitv params id 0 return-val) + (g-value-ref return-val))))))) + (scm-error 'invalid #f "Unknown signal ~A on object ~A" + (list s-name inst) #f)))) + ;;; ;;; The <signal> class, accesors and methods @@ -153,7 +209,6 @@ (id #:accessor !id #:init-keyword #:id #:init-value #f) (name #:accessor !name #:init-keyword #:name) (iface-type #:accessor !iface-type #:init-keyword #:iface-type) - (iface-name #:accessor !iface-name #:init-keyword #:iface-name) (iface-class #:accessor !iface-class #:init-keyword #:iface-class) (flags #:accessor !flags #:init-keyword #:flags) (return-type #:accessor !return-type #:init-keyword #:return-type) @@ -163,22 +218,20 @@ (define-method (initialize (self <signal>) initargs) (next-method) - (let* ((module (resolve-module '(g-golf hl-api gobject))) - (iface-type (!iface-type self)) - (iface-name (g-type-name iface-type)) - (iface-c-name (g-name->class-name iface-name)) - (iface-class (module-ref module iface-c-name))) + (let* ((iface-type (!iface-type self)) + (iface-class (g-type-cache-ref iface-type))) (mslot-set! self - 'iface-name iface-name 'iface-class iface-class))) (define-method (describe (self <signal>)) (next-method) (newline) - (for-each (lambda (argument) - (describe argument) - (newline)) - (!param-args self))) + (let ((param-args (!param-args self))) + (when param-args ;; #f for user defined signals + (for-each (lambda (argument) + (describe argument) + (newline)) + param-args)))) ;;; diff --git a/g-golf/hl-api/utils.scm b/g-golf/hl-api/utils.scm index 9cb315b..b337235 100644 --- a/g-golf/hl-api/utils.scm +++ b/g-golf/hl-api/utils.scm @@ -80,13 +80,16 @@ results))))))) (define (scm->g-type value) - (letrec* ((v-class (class-of value)) - (v-cpl (class-precedence-list v-class)) - (is-a- (lambda (value class) - (and (memq class v-cpl) #t)))) - (cond ((is-a- value <string>) + (let ((v-class (class-of value))) + (cond ((number? value) + value) ;; we assume it is a g-type + ((string? value) (symbol->g-type 'string)) - ((is-a- value <gobject>) + ((symbol? value) + (symbol->g-type value)) + ((gobject-class? value) + (!g-type value)) + ((gobject-class? v-class) (!g-type v-class)) (else (error "Unimplemented scm->g-type for " value))))) diff --git a/g-golf/hl-api/vfunc.scm b/g-golf/hl-api/vfunc.scm index 7a499e5..b8d5b52 100644 --- a/g-golf/hl-api/vfunc.scm +++ b/g-golf/hl-api/vfunc.scm @@ -241,43 +241,51 @@ situations a VFunc (method) long name is mandatory and ~S is invalid.") (specializer-vfunc-lookup specializer g-name))))))) (define (specializer-vfunc-lookup specializer g-name) - (let loop ((supers (class-direct-supers specializer)) + (let loop ((cpl (class-precedence-list specializer)) (results '())) - (match supers + (match cpl (() (reverse results)) ((super . rest) - (let* ((g-long-name-prefix - (name->g-name (g-name->name (!g-name super) 'as-string) 'as-string)) - (gf-long-name? - (and (string-contains g-name g-long-name-prefix) #t)) - (g-name (if gf-long-name? - (string-drop g-name - (+ (string-length g-long-name-prefix) 1)) - g-name)) - (g-vfunc-lookup (cond ((gobject-class? super) - g-object-vfunc-lookup) - ((ginterface-class? super) - g-interface-vfunc-lookup) - (else - #f)))) - (if g-vfunc-lookup - (let ((info (g-vfunc-lookup super g-name))) - (if info - (loop rest - (cons (list super - g-name - g-long-name-prefix - gf-long-name? - info) - results)) - (loop rest results))) + (let ((vf-info (vfunc-info-lookup super g-name))) + (if vf-info + (receive (g-name g-long-name-prefix gf-long-name?) + (vfunc-names super g-name) + (loop rest + (cons (list super + g-name + g-long-name-prefix + gf-long-name? + vf-info) + results))) (loop rest results))))))) -(define (g-object-vfunc-lookup c-lass g-name) - (g-object-info-find-vfunc (!info c-lass) g-name)) - -(define (g-interface-vfunc-lookup c-lass g-name) - (g-interface-info-find-vfunc (!info c-lass) g-name)) +(define (vfunc-names class g-name) + (let* ((name (g-name->name (!g-name class) 'as-string)) + (g-long-name-prefix (name->g-name name 'as-string)) + (gf-long-name? (and (string-contains g-name + g-long-name-prefix) + #t)) + (g-name (if gf-long-name? + (string-drop g-name + (+ (string-length g-long-name-prefix) 1)) + g-name))) + (values g-name g-long-name-prefix gf-long-name?))) + +(define (vfunc-info-lookup class g-name) + (let ((find-vfunc-proc (cond ((gobject-class? class) + g-object-info-find-vfunc) + ((ginterface-class? class) + g-interface-info-find-vfunc) + (else + #f)))) + (and find-vfunc-proc + ;; derived class info slot value is #f + (let ((info (!info class))) + (match info + ((? pointer?) + (find-vfunc-proc info g-name)) + (else + #f)))))) ;; Below is a modified version of the (define-syntax method ...) code in diff --git a/g-golf/override/gdk.scm b/g-golf/override/gdk.scm index 11af607..30fc7f4 100644 --- a/g-golf/override/gdk.scm +++ b/g-golf/override/gdk.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2021 +;;;; Copyright (C) 2021 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -36,12 +36,10 @@ #f `(lambda (clipboard value) (let* ((i-func ,proc) - (g-value-set-value - ,(@@ (g-golf hl-api gobject) %g-inst-set-property-value)) (g-type (scm->g-type value)) (g-value (g-value-init g-type))) (g-value-set! g-value - (g-value-set-value g-type value)) + (scm->g-property g-type value)) (i-func clipboard g-value) (g-value-unset g-value) (values))) @@ -53,14 +51,12 @@ #f `(lambda (content-provider) (let* ((i-func ,proc) - (g-value-get-value - ,(@@ (g-golf hl-api gobject) %g-inst-get-property-value)) (content-formats (ref-formats content-provider)) (g-types (gdk-content-formats-get-gtypes content-formats)) (g-type (car g-types)) (g-value (g-value-init g-type)) (dum (i-func content-provider g-value)) - (value (g-value-get-value g-value))) + (value (g-value->scm g-value g-type))) (g-boxed-free (g-param-spec-type (g-object-class-find-property (!g-class (class-of content-provider)) diff --git a/g-golf/override/gtk.scm b/g-golf/override/gtk.scm index 46437da..2f0d776 100644 --- a/g-golf/override/gtk.scm +++ b/g-golf/override/gtk.scm @@ -43,9 +43,8 @@ #f `(lambda (container child name) (let* ((i-func ,proc) - (g-value-get-value - ,(@@ (g-golf hl-api gobject) %g-inst-get-property-value)) - (g-class (!g-class (class-of container))) + (class (class-of container)) + (g-class (!g-class class)) (p-spec (gtk-container-class-find-child-property g-class name))) (if p-spec @@ -55,7 +54,7 @@ (dum (begin (i-func container child name g-value) #t)) - (value (g-value-get-value g-value))) + (value (g-value->scm g-value g-type))) (g-value-unset g-value) value) (error "No child property" container name)))) @@ -66,8 +65,6 @@ #f `(lambda (container child name value) (let* ((i-func ,proc) - (g-value-set-value - ,(@@ (g-golf hl-api gobject) %g-inst-set-property-value)) (g-class (!g-class (class-of container))) (p-spec (gtk-container-class-find-child-property g-class name))) @@ -76,7 +73,7 @@ (g-type (g-value-type default-value)) (g-value (g-value-init g-type))) (g-value-set! g-value - (g-value-set-value g-type value)) + (scm->g-property g-type value)) (i-func container child name g-value) (g-value-unset g-value) (values)) @@ -97,12 +94,10 @@ '(("Gtk" "TreeModel")) `(lambda (store iter column value) (let* ((i-func ,proc) - (g-value-set-value - ,(@@ (g-golf hl-api gobject) %g-inst-set-property-value)) (g-type (gtk-tree-model-get-column-type store column)) (g-value (g-value-init g-type))) (g-value-set! g-value - (g-value-set-value g-type value)) + (scm->g-property g-type value)) (i-func store iter column g-value) (g-value-unset g-value) (values))) @@ -113,12 +108,10 @@ '(("Gtk" "TreeModel")) `(lambda (store iter column value) (let* ((i-func ,proc) - (g-value-set-value - ,(@@ (g-golf hl-api gobject) %g-inst-set-property-value)) (g-type (gtk-tree-model-get-column-type store column)) (g-value (g-value-init g-type))) (g-value-set! g-value - (g-value-set-value g-type value)) + (scm->g-property g-type value)) (i-func store iter column g-value) (g-value-unset g-value) (values))) @@ -129,14 +122,13 @@ #f `(lambda (model iter column) (let* ((i-func ,proc) - (g-value-get-value - ,(@@ (g-golf hl-api gobject) %g-inst-get-property-value)) - (g-value (g-value-new)) - (dum (i-func model iter column g-value)) - (value (g-value-get-value g-value))) - (g-value-unset g-value) - value)) - '(0 1 2))) + (g-value (g-value-new))) + (i-func model iter column g-value) + (let* ((g-type (g-value-type g-value)) + (value (g-value->scm g-value g-type))) + (g-value-unset g-value) + value))) + '(0 1 2))) (define (gtk-text-buffer-insert-ov proc) diff --git a/g-golf/support.scm b/g-golf/support.scm index 595898a..a3d8201 100644 --- a/g-golf/support.scm +++ b/g-golf/support.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016 - 2022 +;;;; Copyright (C) 2016 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -50,6 +50,7 @@ #:use-module (g-golf support union) #:use-module (g-golf support bytevector) #:use-module (g-golf support ffi) + #:use-module (g-golf support sxml) #:duplicates (merge-generics replace @@ -73,4 +74,5 @@ (g-golf support struct) (g-golf support union) (g-golf support bytevector) - (g-golf support ffi))) + (g-golf support ffi) + (g-golf support sxml))) diff --git a/g-golf/support/goops.scm b/g-golf/support/goops.scm index 58a259d..a956580 100644 --- a/g-golf/support/goops.scm +++ b/g-golf/support/goops.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016, 2021 +;;;; Copyright (C) 2016, 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -63,6 +63,10 @@ class-virtual-slots class-direct-g-property-slots class-g-property-slots + class-direct-child-id-slots + class-child-id-slots + class-direct-g-param-slots + class-g-param-slots #;describe) @@ -111,6 +115,38 @@ slot-definition)) (class-slots self))) +(define-method (class-direct-child-id-slots (self <class>)) + (filter-map (lambda (slot-definition) + (and (get-keyword #:child-id + (slot-definition-options slot-definition) + #f) + slot-definition)) + (class-direct-slots self))) + +(define-method (class-child-id-slots (self <class>)) + (filter-map (lambda (slot-definition) + (and (get-keyword #:child-id + (slot-definition-options slot-definition) + #f) + slot-definition)) + (class-slots self))) + +(define-method (class-direct-g-param-slots (self <class>)) + (filter-map (lambda (slot-definition) + (and (get-keyword #:g-param + (slot-definition-options slot-definition) + #f) + slot-definition)) + (class-direct-slots self))) + +(define-method (class-g-param-slots (self <class>)) + (filter-map (lambda (slot-definition) + (and (get-keyword #:g-param + (slot-definition-options slot-definition) + #f) + slot-definition)) + (class-slots self))) + #;(define-method* (describe (self <object>) #:key (port #t)) (format port "~S - instance of ~A~%" self diff --git a/g-golf/support/libg-golf.scm b/g-golf/support/libg-golf.scm index 0e395bb..9985472 100644 --- a/g-golf/support/libg-golf.scm +++ b/g-golf/support/libg-golf.scm @@ -46,6 +46,7 @@ g_source_ref_count ;; GObject + g_type_from_class g_value_size g_object_type #;g_object_type_name @@ -54,6 +55,29 @@ g_closure_ref_count g_param_spec_get_flags + g_type_param_boolean + g_type_param_char + g_type_param_uchar + g_type_param_int + g_type_param_uint + g_type_param_long + g_type_param_ulong + g_type_param_int64 + g_type_param_uint64 + g_type_param_float + g_type_param_double + g_type_param_enum + g_type_param_flags + g_type_param_string + g_type_param_param + g_type_param_boxed + g_type_param_pointer + g_type_param_object + g_type_param_unichar + g_type_param_override + g_type_param_gtype + g_type_param_variant + ;; Callback g_golf_callback_closure @@ -136,6 +160,12 @@ ;;; GObject ;;; +(define g_type_from_class + (pointer->procedure size_t + (dynamic-func "g_type_from_class" + %libg-golf) + (list '*))) + (define g_value_size (pointer->procedure size_t (dynamic-func "g_value_size" @@ -194,6 +224,138 @@ later. %libg-golf) (list '*))) +(define g_type_param_boolean + (pointer->procedure size_t + (dynamic-func "g_type_param_boolean" + %libg-golf) + (list))) + +(define g_type_param_char + (pointer->procedure size_t + (dynamic-func "g_type_param_char" + %libg-golf) + (list))) + +(define g_type_param_uchar + (pointer->procedure size_t + (dynamic-func "g_type_param_uchar" + %libg-golf) + (list))) + +(define g_type_param_int + (pointer->procedure size_t + (dynamic-func "g_type_param_int" + %libg-golf) + (list))) + +(define g_type_param_uint + (pointer->procedure size_t + (dynamic-func "g_type_param_uint" + %libg-golf) + (list))) + +(define g_type_param_long + (pointer->procedure size_t + (dynamic-func "g_type_param_long" + %libg-golf) + (list))) + +(define g_type_param_ulong + (pointer->procedure size_t + (dynamic-func "g_type_param_ulong" + %libg-golf) + (list))) + +(define g_type_param_int64 + (pointer->procedure size_t + (dynamic-func "g_type_param_int64" + %libg-golf) + (list))) + +(define g_type_param_uint64 + (pointer->procedure size_t + (dynamic-func "g_type_param_uint64" + %libg-golf) + (list))) + +(define g_type_param_float + (pointer->procedure size_t + (dynamic-func "g_type_param_float" + %libg-golf) + (list))) + +(define g_type_param_double + (pointer->procedure size_t + (dynamic-func "g_type_param_double" + %libg-golf) + (list))) + +(define g_type_param_enum + (pointer->procedure size_t + (dynamic-func "g_type_param_enum" + %libg-golf) + (list))) + +(define g_type_param_flags + (pointer->procedure size_t + (dynamic-func "g_type_param_flags" + %libg-golf) + (list))) + +(define g_type_param_string + (pointer->procedure size_t + (dynamic-func "g_type_param_string" + %libg-golf) + (list))) + +(define g_type_param_param + (pointer->procedure size_t + (dynamic-func "g_type_param_param" + %libg-golf) + (list))) + +(define g_type_param_boxed + (pointer->procedure size_t + (dynamic-func "g_type_param_boxed" + %libg-golf) + (list))) + +(define g_type_param_pointer + (pointer->procedure size_t + (dynamic-func "g_type_param_pointer" + %libg-golf) + (list))) + +(define g_type_param_object + (pointer->procedure size_t + (dynamic-func "g_type_param_object" + %libg-golf) + (list))) + +(define g_type_param_unichar + (pointer->procedure size_t + (dynamic-func "g_type_param_unichar" + %libg-golf) + (list))) + +(define g_type_param_override + (pointer->procedure size_t + (dynamic-func "g_type_param_override" + %libg-golf) + (list))) + +(define g_type_param_gtype + (pointer->procedure size_t + (dynamic-func "g_type_param_gtype" + %libg-golf) + (list))) + +(define g_type_param_variant + (pointer->procedure size_t + (dynamic-func "g_type_param_variant" + %libg-golf) + (list))) + ;;; ;;; Callback diff --git a/g-golf/support/sxml.scm b/g-golf/support/sxml.scm new file mode 100644 index 0000000..f5e639b --- /dev/null +++ b/g-golf/support/sxml.scm @@ -0,0 +1,61 @@ +;; -*- mode: scheme; coding: utf-8 -*- + +;;;; +;;;; Copyright (C) 2023 +;;;; Free Software Foundation, Inc. + +;;;; This file is part of GNU G-Golf + +;;;; GNU G-Golf is free software; you can redistribute it and/or modify +;;;; it under the terms of the GNU Lesser General Public License as +;;;; published by the Free Software Foundation; either version 3 of the +;;;; License, or (at your option) any later version. + +;;;; GNU G-Golf is distributed in the hope that it will be useful, but +;;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;;; Lesser General Public License for more details. + +;;;; You should have received a copy of the GNU Lesser General Public +;;;; License along with GNU G-Golf. If not, see +;;;; <https://www.gnu.org/licenses/lgpl.html>. +;;;; + +;;; Commentary: + +;;; Code: + + +(define-module (g-golf support sxml) + #:use-module (ice-9 match) + #:use-module (ice-9 receive) + #:use-module (ice-9 pretty-print) + #:use-module (sxml simple) + #:use-module (sxml transform) + + #:export (ui->sxml + sxml->ui)) + + +;;; +;;; sxml support for template and ui files +;;; wip + +(define (ui->sxml filename) + (let* ((d-name (dirname filename)) + (b-name (basename filename ".ui")) + (s-name (string-append d-name "/" b-name ".scm"))) + (call-with-output-file s-name + (lambda (port) + (pretty-print (call-with-input-file filename + (lambda (port) (xml->sxml port #:trim-whitespace? #t))) + port))))) + +(define %xml-doctype + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n") + +(define* (sxml->ui sxml + #:key (transform-rules '())) + (display %xml-doctype) + (sxml->xml sxml) + (display "\n")) diff --git a/g-golf/support/utils.scm b/g-golf/support/utils.scm index 1d0458e..1c57132 100644 --- a/g-golf/support/utils.scm +++ b/g-golf/support/utils.scm @@ -43,6 +43,7 @@ stow->alist displayln + writeln dimfi warning abort @@ -112,6 +113,15 @@ (display msg) (newline)))) +(define* (writeln msg #:optional (port #f)) + (if port + (begin + (write msg port) + (newline port)) + (begin + (write msg) + (newline)))) + (define (dimfi . items) ;; if the first item is a port, we use it. (if (port? (car items)) diff --git a/libg-golf/gg-gobject.c b/libg-golf/gg-gobject.c index 079e5f1..13e084b 100644 --- a/libg-golf/gg-gobject.c +++ b/libg-golf/gg-gobject.c @@ -1,7 +1,7 @@ /* -*- mode: C; coding: utf-8 -*- #### -#### Copyright (C) 2021 +#### Copyright (C) 2021 - 2023 #### Free Software Foundation, Inc. #### This file is part of GNU G-Golf. @@ -35,8 +35,22 @@ /* + * Type Information +*/ + +GType +g_type_from_class (GTypeClass *g_class) +{ + GType type; + + type = G_TYPE_FROM_CLASS(g_class); + + return (type); +} + + +/* * GObject - * */ size_t @@ -87,8 +101,154 @@ g_closure_ref_count (GClosure *closure) return (closure->ref_count); } + +/* + * GParamFlags + */ + GParamFlags g_param_spec_get_flags (GParamSpec *pspec) { return pspec->flags; } + + +/* + * Parameters and Values + * Types and Values + */ + +GType +g_type_param_boolean () +{ + return G_TYPE_PARAM_BOOLEAN; +} + +GType +g_type_param_char () +{ + return G_TYPE_PARAM_CHAR; +} + +GType +g_type_param_uchar () +{ + return G_TYPE_PARAM_UCHAR; +} + +GType +g_type_param_int () +{ + return G_TYPE_PARAM_INT; +} + +GType +g_type_param_uint () +{ + return G_TYPE_PARAM_UINT; +} + +GType +g_type_param_long () +{ + return G_TYPE_PARAM_LONG; +} + +GType +g_type_param_ulong () +{ + return G_TYPE_PARAM_ULONG; +} + +GType +g_type_param_int64 () +{ + return G_TYPE_PARAM_INT64; +} + +GType +g_type_param_uint64 () +{ + return G_TYPE_PARAM_UINT64; +} + +GType +g_type_param_float () +{ + return G_TYPE_PARAM_FLOAT; +} + +GType +g_type_param_double () +{ + return G_TYPE_PARAM_DOUBLE; +} + +GType +g_type_param_enum () +{ + return G_TYPE_PARAM_ENUM; +} + +GType +g_type_param_flags () +{ + return G_TYPE_PARAM_FLAGS; +} + +GType +g_type_param_string () +{ + return G_TYPE_PARAM_STRING; +} +/* G_VALUE_INTERNED_STRING */ + +GType +g_type_param_param () +{ + return G_TYPE_PARAM_PARAM; +} + +GType +g_type_param_boxed () +{ + return G_TYPE_PARAM_BOXED; +} + +GType +g_type_param_pointer () +{ + return G_TYPE_PARAM_POINTER; +} + +GType +g_type_param_object () +{ + return G_TYPE_PARAM_OBJECT; +} + +GType +g_type_param_unichar () +{ + return G_TYPE_PARAM_UNICHAR; +} + +/* G_TYPE_PARAM_VALUE_ARRAY deprecated in 2.32 */ + +GType +g_type_param_override () +{ + return G_TYPE_PARAM_OVERRIDE; +} + +GType +g_type_param_gtype () +{ + return G_TYPE_PARAM_GTYPE; +} + +GType +g_type_param_variant () +{ + return G_TYPE_PARAM_VARIANT; +} diff --git a/libg-golf/gg-gobject.h b/libg-golf/gg-gobject.h index 6ace0b5..dc39a44 100644 --- a/libg-golf/gg-gobject.h +++ b/libg-golf/gg-gobject.h @@ -1,7 +1,7 @@ /* -*- mode: C; coding: utf-8 -*- #### -#### Copyright (C) 2021 +#### Copyright (C) 2021 - 2023 #### Free Software Foundation, Inc. #### This file is part of GNU G-Golf. @@ -35,8 +35,15 @@ /* + * Type Information +*/ + +GType +g_type_from_class (GTypeClass *g_class); + + +/* * GObject - * */ size_t @@ -58,5 +65,84 @@ uint g_closure_ref_count (GClosure *closure); +/* + * GParamFlags + */ + GParamFlags g_param_spec_get_flags (GParamSpec *pspec); + + +/* + * Parameters and Values + * Types and Values + */ + +GType +g_type_param_boolean (); + +GType +g_type_param_char (); + +GType +g_type_param_uchar (); + +GType +g_type_param_int (); + +GType +g_type_param_uint (); + +GType +g_type_param_long (); + +GType +g_type_param_ulong (); + +GType +g_type_param_int64 (); + +GType +g_type_param_uint64 (); + +GType +g_type_param_float (); + +GType +g_type_param_double (); + +GType +g_type_param_enum (); + +GType +g_type_param_flags (); + +GType +g_type_param_string (); +/* G_VALUE_INTERNED_STRING */ + +GType +g_type_param_param (); + +GType +g_type_param_boxed (); + +GType +g_type_param_pointer (); + +GType +g_type_param_object (); + +GType +g_type_param_unichar (); + +/* G_TYPE_PARAM_VALUE_ARRAY deprecated in 2.32 */ + +GType +g_type_param_override (); + +GType +g_type_param_gtype (); + +GType +g_type_param_variant (); diff --git a/test-suite/tests/glib.scm b/test-suite/tests/glib.scm index 23fbfae..e7f2d96 100644 --- a/test-suite/tests/glib.scm +++ b/test-suite/tests/glib.scm @@ -81,6 +81,11 @@ (assert (g-memdup mem 10)) (assert (g-memdup mem 20)))) +#! + +;; as discussed in #gtk, calling make-thread is the route for problems +;; with the main context ... see (tests hl-api) for other none threaded +;; tests of g-main-loop and related procedures, (define-method (test-main-loop (self <g-golf-test-glib>)) (let* ((loop (assert (g-main-loop-new #f #f))) @@ -90,6 +95,7 @@ (assert (g-main-loop-quit loop)) (cancel-thread thread))) +!# (define-method (test-main-context (self <g-golf-test-glib>)) (assert (g-main-context-new)) diff --git a/test-suite/tests/gobject.scm b/test-suite/tests/gobject.scm index 8366dba..b492495 100644 --- a/test-suite/tests/gobject.scm +++ b/test-suite/tests/gobject.scm @@ -1,7 +1,7 @@ ;; -*- mode: scheme; coding: utf-8 -*- ;;;; -;;;; Copyright (C) 2016 - 2022 +;;;; Copyright (C) 2016 - 2023 ;;;; Free Software Foundation, Inc. ;;;; This file is part of GNU G-Golf @@ -250,6 +250,35 @@ ;;; +;;; Parameter and Values +;;; + +(define-method (test-g-params-vals (self <g-golf-test-gobject>)) + (assert (g-type-param-boolean)) + (assert (g-type-param-char)) + (assert (g-type-param-uchar)) + (assert (g-type-param-int)) + (assert (g-type-param-uint)) + (assert (g-type-param-long)) + (assert (g-type-param-ulong)) + (assert (g-type-param-int64)) + (assert (g-type-param-uint64)) + (assert (g-type-param-float)) + (assert (g-type-param-double)) + (assert (g-type-param-enum)) + (assert (g-type-param-flags)) + (assert (g-type-param-string)) + (assert (g-type-param-param)) + (assert (g-type-param-boxed)) + (assert (g-type-param-pointer)) + (assert (g-type-param-object)) + (assert (g-type-param-unichar)) + (assert (g-type-param-override)) + (assert (g-type-param-gtype)) + (assert (g-type-param-variant))) + + +;;; ;;; Param Spec ;;; diff --git a/test-suite/tests/hl-api.scm b/test-suite/tests/hl-api.scm index 2f9de63..d7cc7b7 100644 --- a/test-suite/tests/hl-api.scm +++ b/test-suite/tests/hl-api.scm @@ -273,6 +273,38 @@ (define-method (test-g-idle-add (self <g-golf-test-hl-api>)) (let* ((loop (g-main-loop-new #f #f)) (idle (assert (g-idle-add (lambda () + (g-main-loop-quit loop) + #f))))) + (g-main-loop-run loop))) + + +(define-method (test-g-timeout-add (self <g-golf-test-hl-api>)) + (let* ((loop (g-main-loop-new #f #f)) + (idle (assert (g-timeout-add 1000 + (lambda () + (g-main-loop-quit loop) + #f))))) + (g-main-loop-run loop))) + + +(define-method (test-g-timeout-add-seconds (self <g-golf-test-hl-api>)) + (let* ((loop (g-main-loop-new #f #f)) + (idle (assert (g-timeout-add-seconds 1 + (lambda () + (g-main-loop-quit loop) + #f))))) + (g-main-loop-run loop))) + + +#! + +;; as discussed in #gtk, calling make-thread is the route for problems +;; with the main context ... or it cancels the thread before the timeout +;; triggers or some other problem related to threads + +(define-method (test-g-idle-add (self <g-golf-test-hl-api>)) + (let* ((loop (g-main-loop-new #f #f)) + (idle (assert (g-idle-add (lambda () 'ok #f)))) (thread (make-thread g-main-loop-run loop))) @@ -298,6 +330,8 @@ (thread (make-thread g-main-loop-run loop))) (cancel-thread thread))) +!# + ;;; ;;; GList - GSList |