diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-03-29 21:13:35 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-04-01 11:45:57 -0300 |
commit | 031b12c492cb26f6ed15dee011cdca69dc24961f (patch) | |
tree | 1c9ff0e2cbac6a407f3230d6bca687dc14a1b88a | |
parent | 7b1bed5ab0d1b15d2752266b8ce8df2e66fccfbd (diff) | |
download | gnome-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.build | 1 | ||||
-rw-r--r-- | panels/multitasking/cc-multitasking-panel.c | 143 | ||||
-rw-r--r-- | panels/multitasking/cc-multitasking-panel.h | 30 | ||||
-rw-r--r-- | panels/multitasking/cc-multitasking-panel.ui | 229 | ||||
-rw-r--r-- | panels/multitasking/gnome-multitasking-panel.desktop.in.in | 14 | ||||
-rw-r--r-- | panels/multitasking/meson.build | 46 | ||||
-rw-r--r-- | panels/multitasking/multitasking.gresource.xml | 6 | ||||
-rw-r--r-- | shell/cc-panel-list.c | 1 | ||||
-rw-r--r-- | shell/cc-panel-loader.c | 2 | ||||
-rw-r--r-- | shell/gnome-control-center.gresource.xml | 6 | ||||
-rw-r--r-- | shell/icons/multitasking-symbolic.svg | 98 |
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> |