summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-03-29 21:13:35 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-04-01 11:45:57 -0300
commit031b12c492cb26f6ed15dee011cdca69dc24961f (patch)
tree1c9ff0e2cbac6a407f3230d6bca687dc14a1b88a
parent7b1bed5ab0d1b15d2752266b8ce8df2e66fccfbd (diff)
downloadgnome-control-center-gbsneto/multitasking.tar.gz
Introduce the Multitasking panelgbsneto/multitasking
The Multitasking panel brings some additional settings from Tweaks that are relevant to the general platform. Related: https://gitlab.gnome.org/GNOME/gnome-control-center/issues/558
-rw-r--r--panels/meson.build1
-rw-r--r--panels/multitasking/cc-multitasking-panel.c143
-rw-r--r--panels/multitasking/cc-multitasking-panel.h30
-rw-r--r--panels/multitasking/cc-multitasking-panel.ui229
-rw-r--r--panels/multitasking/gnome-multitasking-panel.desktop.in.in14
-rw-r--r--panels/multitasking/meson.build46
-rw-r--r--panels/multitasking/multitasking.gresource.xml6
-rw-r--r--shell/cc-panel-list.c1
-rw-r--r--shell/cc-panel-loader.c2
-rw-r--r--shell/gnome-control-center.gresource.xml6
-rw-r--r--shell/icons/multitasking-symbolic.svg98
11 files changed, 576 insertions, 0 deletions
diff --git a/panels/meson.build b/panels/meson.build
index 2f4fdc5e3..1318904ae 100644
--- a/panels/meson.build
+++ b/panels/meson.build
@@ -15,6 +15,7 @@ panels = [
'lock',
'microphone',
'mouse',
+ 'multitasking',
'notifications',
'online-accounts',
'power',
diff --git a/panels/multitasking/cc-multitasking-panel.c b/panels/multitasking/cc-multitasking-panel.c
new file mode 100644
index 000000000..6941fc13a
--- /dev/null
+++ b/panels/multitasking/cc-multitasking-panel.c
@@ -0,0 +1,143 @@
+/* cc-multitasking-panel.h
+ *
+ * Copyright 2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+#include "cc-multitasking-panel.h"
+
+#include "cc-multitasking-resources.h"
+#include "list-box-helper.h"
+
+struct _CcMultitaskingPanel
+{
+ CcPanel parent_instance;
+
+ GSettings *interface_settings;
+ GSettings *mutter_settings;
+ GSettings *overrides_settings;
+ GSettings *wm_settings;
+
+ GtkSwitch *active_screen_edges_switch;
+ GtkToggleButton *dynamic_workspaces_radio;
+ GtkToggleButton *fixed_workspaces_radio;
+ GtkSwitch *hot_corner_switch;
+ GtkSpinButton *number_of_workspaces_spin;
+ GtkListBox *top_listbox;
+ GtkListBox *workspaces_listbox;
+ GtkListBox *workspaces_misc_listbox;
+ GtkToggleButton *workspaces_primary_display_radio;
+ GtkToggleButton *workspaces_span_displays_radio;
+};
+
+CC_PANEL_REGISTER (CcMultitaskingPanel, cc_multitasking_panel)
+
+/* GObject overrides */
+
+static void
+cc_multitasking_panel_finalize (GObject *object)
+{
+ CcMultitaskingPanel *self = (CcMultitaskingPanel *)object;
+
+ g_clear_object (&self->interface_settings);
+ g_clear_object (&self->mutter_settings);
+ g_clear_object (&self->overrides_settings);
+ g_clear_object (&self->wm_settings);
+
+ G_OBJECT_CLASS (cc_multitasking_panel_parent_class)->finalize (object);
+}
+
+static void
+cc_multitasking_panel_class_init (CcMultitaskingPanelClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ object_class->finalize = cc_multitasking_panel_finalize;
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/control-center/multitasking/cc-multitasking-panel.ui");
+
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, active_screen_edges_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, dynamic_workspaces_radio);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, fixed_workspaces_radio);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, hot_corner_switch);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, number_of_workspaces_spin);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, top_listbox);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, workspaces_listbox);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, workspaces_misc_listbox);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, workspaces_primary_display_radio);
+ gtk_widget_class_bind_template_child (widget_class, CcMultitaskingPanel, workspaces_span_displays_radio);
+}
+
+static void
+cc_multitasking_panel_init (CcMultitaskingPanel *self)
+{
+ g_resources_register (cc_multitasking_get_resource ());
+
+ gtk_widget_init_template (GTK_WIDGET (self));
+
+ self->interface_settings = g_settings_new ("org.gnome.desktop.interface");
+ g_settings_bind (self->interface_settings,
+ "enable-hot-corners",
+ self->hot_corner_switch,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ self->mutter_settings = g_settings_new ("org.gnome.mutter");
+
+ if (g_settings_get_boolean (self->mutter_settings, "workspaces-only-on-primary"))
+ gtk_toggle_button_set_active (self->workspaces_primary_display_radio, TRUE);
+ else
+ gtk_toggle_button_set_active (self->workspaces_span_displays_radio, TRUE);
+
+ g_settings_bind (self->mutter_settings,
+ "workspaces-only-on-primary",
+ self->workspaces_primary_display_radio,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (self->mutter_settings,
+ "edge-tiling",
+ self->active_screen_edges_switch,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ self->overrides_settings = g_settings_new ("org.gnome.shell.overrides");
+
+ if (g_settings_get_boolean (self->overrides_settings, "dynamic-workspaces"))
+ gtk_toggle_button_set_active (self->dynamic_workspaces_radio, TRUE);
+ else
+ gtk_toggle_button_set_active (self->fixed_workspaces_radio, TRUE);
+
+ g_settings_bind (self->overrides_settings,
+ "dynamic-workspaces",
+ self->dynamic_workspaces_radio,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ self->wm_settings = g_settings_new ("org.gnome.desktop.wm.preferences");
+ g_settings_bind (self->wm_settings,
+ "num-workspaces",
+ self->number_of_workspaces_spin,
+ "value",
+ G_SETTINGS_BIND_DEFAULT);
+
+ /* Separators */
+ gtk_list_box_set_header_func (self->top_listbox, cc_list_box_update_header_func, NULL, NULL);
+ gtk_list_box_set_header_func (self->workspaces_listbox, cc_list_box_update_header_func, NULL, NULL);
+ gtk_list_box_set_header_func (self->workspaces_misc_listbox, cc_list_box_update_header_func, NULL, NULL);
+}
diff --git a/panels/multitasking/cc-multitasking-panel.h b/panels/multitasking/cc-multitasking-panel.h
new file mode 100644
index 000000000..81e78f071
--- /dev/null
+++ b/panels/multitasking/cc-multitasking-panel.h
@@ -0,0 +1,30 @@
+/* cc-multitasking-panel.h
+ *
+ * Copyright 2020 Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include <shell/cc-panel.h>
+
+G_BEGIN_DECLS
+
+#define CC_TYPE_MULTITASKING_PANEL (cc_multitasking_panel_get_type())
+G_DECLARE_FINAL_TYPE (CcMultitaskingPanel, cc_multitasking_panel, CC, MULTITASKING_PANEL, CcPanel)
+
+G_END_DECLS
diff --git a/panels/multitasking/cc-multitasking-panel.ui b/panels/multitasking/cc-multitasking-panel.ui
new file mode 100644
index 000000000..cf00cffd0
--- /dev/null
+++ b/panels/multitasking/cc-multitasking-panel.ui
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="CcMultitaskingPanel" parent="CcPanel">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">true</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="HdyColumn">
+ <property name="visible">True</property>
+ <property name="maximum_width">600</property>
+ <property name="linear_growth_width">400</property>
+ <property name="margin_top">32</property>
+ <property name="margin_bottom">32</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+
+ <child>
+ <object class="GtkBox">
+ <property name="visible">true</property>
+ <property name="can-focus">false</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+
+ <!-- Top Listbox -->
+ <child>
+ <object class="GtkListBox" id="top_listbox">
+ <property name="visible">true</property>
+ <property name="can-focus">true</property>
+ <property name="selection-mode">none</property>
+ <property name="margin-bottom">24</property>
+
+ <style>
+ <class name="frame"/>
+ </style>
+
+ <!-- Hot Corner -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">hot_corner_switch</property>
+ <property name="title" translatable="yes">_Hot Corner</property>
+ <property name="subtitle" translatable="yes">Touch the top-left corner to open the Activities Overview.</property>
+ <property name="use_underline">True</property>
+ <child type="action">
+ <object class="GtkSwitch" id="hot_corner_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <!-- Active Screen Edges -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">active_screen_edges_switch</property>
+ <property name="title" translatable="yes">_Active Screen Edges</property>
+ <property name="subtitle" translatable="yes">Drag windows against the top, left, and right screen edges to resize them.</property>
+ <property name="use_underline">True</property>
+ <child type="action">
+ <object class="GtkSwitch" id="active_screen_edges_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ <!-- Workspaces -->
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">true</property>
+ <property name="can-focus">true</property>
+ <property name="label" translatable="yes">Workspaces</property>
+ <property name="xalign">0.0</property>
+ <attributes>
+ <attribute name="weight" value="bold" />
+ </attributes>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkListBox" id="workspaces_listbox">
+ <property name="visible">true</property>
+ <property name="can-focus">true</property>
+ <property name="selection-mode">none</property>
+ <property name="margin-bottom">24</property>
+
+ <style>
+ <class name="frame"/>
+ </style>
+
+ <!-- Dynamic Workspaces -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">dynamic_workspaces_radio</property>
+ <property name="title" translatable="yes">_Dynamic Workspaces</property>
+ <property name="use_underline">True</property>
+ <child type="prefix">
+ <object class="GtkRadioButton" id="dynamic_workspaces_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <!-- Fixed Number of Workspaces -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">fixed_workspaces_radio</property>
+ <property name="title" translatable="yes">_Fixed Number of Workspaces</property>
+ <property name="use_underline">True</property>
+ <child type="prefix">
+ <object class="GtkRadioButton" id="fixed_workspaces_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="group">dynamic_workspaces_radio</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <!-- Number of Workspaces -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="sensitive" bind-source="fixed_workspaces_radio" bind-property="active" bind-flags="default|sync-create" />
+ <property name="activatable-widget">number_of_workspaces_spin</property>
+ <property name="title" translatable="yes">_Number of Workspaces</property>
+ <property name="use_underline">True</property>
+ <child type="action">
+ <object class="GtkSpinButton" id="number_of_workspaces_spin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="adjustment">workspaces_adjustment</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkListBox" id="workspaces_misc_listbox">
+ <property name="visible">true</property>
+ <property name="can-focus">true</property>
+ <property name="selection-mode">none</property>
+ <property name="margin-bottom">24</property>
+
+ <style>
+ <class name="frame"/>
+ </style>
+
+ <!-- Span Displays -->
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">workspaces_primary_display_radio</property>
+ <property name="title" translatable="yes">Workspaces on _Primary Display</property>
+ <property name="use_underline">True</property>
+ <child type="prefix">
+ <object class="GtkRadioButton" id="workspaces_primary_display_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable-widget">workspaces_span_displays_radio</property>
+ <property name="title" translatable="yes">Workspaces _Span Displays</property>
+ <property name="use_underline">True</property>
+ <child type="prefix">
+ <object class="GtkRadioButton" id="workspaces_span_displays_radio">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="group">workspaces_primary_display_radio</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+
+ <object class="GtkAdjustment" id="workspaces_adjustment">
+ <property name="lower">1.0</property>
+ <property name="step-increment">1.0</property>
+ <property name="value">4.0</property>
+ <!-- 36 is the maximum value allowed by Mutter -->
+ <property name="upper">36.0</property>
+ </object>
+</interface>
diff --git a/panels/multitasking/gnome-multitasking-panel.desktop.in.in b/panels/multitasking/gnome-multitasking-panel.desktop.in.in
new file mode 100644
index 000000000..54cd3b84c
--- /dev/null
+++ b/panels/multitasking/gnome-multitasking-panel.desktop.in.in
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Name=Multitasking
+Comment=Manage preferences for productivity and multitasking
+Exec=gnome-control-center multitasking
+# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
+Icon=multitasking-symbolic
+Terminal=false
+Type=Application
+NoDisplay=true
+StartupNotify=true
+Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel;X-GNOME-PersonalizationSettings;
+OnlyShowIn=GNOME;
+# Translators: Search terms to find the Search panel. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+Keywords=Multitasking;Multitask;Productivity;Customize;Desktop;
diff --git a/panels/multitasking/meson.build b/panels/multitasking/meson.build
new file mode 100644
index 000000000..c38b531ef
--- /dev/null
+++ b/panels/multitasking/meson.build
@@ -0,0 +1,46 @@
+panels_list += cappletname
+desktop = 'gnome-@0@-panel.desktop'.format(cappletname)
+
+desktop_in = configure_file(
+ input: desktop + '.in.in',
+ output: desktop + '.in',
+ configuration: desktop_conf
+)
+
+i18n.merge_file(
+ desktop,
+ type: 'desktop',
+ input: desktop_in,
+ output: desktop,
+ po_dir: po_dir,
+ install: true,
+ install_dir: control_center_desktopdir
+)
+
+sources = files(
+ 'cc-multitasking-panel.c',
+)
+
+resource_data = files(
+ 'cc-multitasking-panel.ui',
+)
+
+sources += gnome.compile_resources(
+ 'cc-' + cappletname + '-resources',
+ cappletname + '.gresource.xml',
+ c_name: 'cc_' + cappletname,
+ dependencies: resource_data,
+ export: true
+)
+
+cflags += [
+ '-DDATADIR="@0@"'.format(control_center_datadir)
+]
+
+panels_libs += static_library(
+ cappletname,
+ sources: sources,
+ include_directories: [ top_inc, common_inc ],
+ dependencies: common_deps,
+ c_args: cflags
+)
diff --git a/panels/multitasking/multitasking.gresource.xml b/panels/multitasking/multitasking.gresource.xml
new file mode 100644
index 000000000..41b64497c
--- /dev/null
+++ b/panels/multitasking/multitasking.gresource.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/gnome/control-center/multitasking">
+ <file preprocess="xml-stripblanks">cc-multitasking-panel.ui</file>
+ </gresource>
+</gresources>
diff --git a/shell/cc-panel-list.c b/shell/cc-panel-list.c
index 25785901f..3e3a61632 100644
--- a/shell/cc-panel-list.c
+++ b/shell/cc-panel-list.c
@@ -392,6 +392,7 @@ static const gchar * const panel_order[] = {
"background",
"notifications",
"search",
+ "multitasking",
"applications",
"privacy",
"online-accounts",
diff --git a/shell/cc-panel-loader.c b/shell/cc-panel-loader.c
index f20384394..fcbf398ca 100644
--- a/shell/cc-panel-loader.c
+++ b/shell/cc-panel-loader.c
@@ -43,6 +43,7 @@ extern GType cc_display_panel_get_type (void);
extern GType cc_info_overview_panel_get_type (void);
extern GType cc_keyboard_panel_get_type (void);
extern GType cc_mouse_panel_get_type (void);
+extern GType cc_multitasking_panel_get_type (void);
#ifdef BUILD_NETWORK
extern GType cc_network_panel_get_type (void);
extern GType cc_wifi_panel_get_type (void);
@@ -107,6 +108,7 @@ static CcPanelLoaderVtable default_panels[] =
PANEL_TYPE("lock", cc_lock_panel_get_type, NULL),
PANEL_TYPE("microphone", cc_microphone_panel_get_type, NULL),
PANEL_TYPE("mouse", cc_mouse_panel_get_type, NULL),
+ PANEL_TYPE("multitasking", cc_multitasking_panel_get_type, NULL),
#ifdef BUILD_NETWORK
PANEL_TYPE("network", cc_network_panel_get_type, NULL),
PANEL_TYPE("wifi", cc_wifi_panel_get_type, cc_wifi_panel_static_init_func),
diff --git a/shell/gnome-control-center.gresource.xml b/shell/gnome-control-center.gresource.xml
index 9be077ec9..5550440e1 100644
--- a/shell/gnome-control-center.gresource.xml
+++ b/shell/gnome-control-center.gresource.xml
@@ -6,4 +6,10 @@
<file preprocess="xml-stripblanks">help-overlay.ui</file>
<file>style.css</file>
</gresource>
+
+ <!-- Panel icons -->
+ <gresource prefix="/org/gnome/ControlCenter">
+ <file preprocess="xml-stripblanks">icons/multitasking-symbolic.svg</file>
+ <file>style.css</file>
+ </gresource>
</gresources>
diff --git a/shell/icons/multitasking-symbolic.svg b/shell/icons/multitasking-symbolic.svg
new file mode 100644
index 000000000..7959ddbfc
--- /dev/null
+++ b/shell/icons/multitasking-symbolic.svg
@@ -0,0 +1,98 @@
+<?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.00004"
+ viewBox="0 0 16.00004 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(-699.99996,-400.00765)"
+ style="display:inline"
+ id="layer1">
+ <path
+ d="m 703,401 v 1 1 h -3 v 1 9 h 3 v 2 h 10 v -2 h 3 v -10 h -3 v -2 z m 2,2 h 6 v 1 9 h -6 z m -3,2 h 1 v 6 h -1 z m 11,0 h 1 v 6 h -1 z"
+ id="rect8510"
+ 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;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ </g>
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer21" />
+ <g
+ transform="translate(-941.00016,-33.00765)"
+ style="display:inline"
+ id="layer9" />
+ <g
+ transform="translate(-941.00016,-33.00765)"
+ style="display:inline"
+ id="g7628" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer19" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer13" />
+ <g
+ transform="translate(-699.99996,-400.00765)"
+ style="display:inline"
+ id="layer11" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer14" />
+ <g
+ transform="translate(-699.99996,-400.00765)"
+ style="display:inline"
+ id="g6387" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer18" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer17" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer16" />
+ <g
+ transform="translate(-699.99996,-400.00765)"
+ style="display:inline"
+ id="layer10" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer15" />
+ <g
+ transform="translate(-699.99996,-400.00765)"
+ id="layer12" />
+ <g
+ transform="translate(-699.99996,-600.00765)"
+ id="layer20" />
+</svg>