You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2020/12/26 22:51:01 UTC

[incubator-hop] branch master updated: HOP-1835 Add Help about

This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hop.git


The following commit(s) were added to refs/heads/master by this push:
     new 8ef312b  HOP-1835 Add Help about
     new 804cb30  Merge pull request #494 from nadment/HOP-1835
8ef312b is described below

commit 8ef312bbe277475e12de7472ab4969b87172382b
Author: nadment <na...@gmail.com>
AuthorDate: Fri Dec 25 22:55:29 2020 +0100

    HOP-1835 Add Help about
    
    Add Help > About menu entry
    Add AboutDialog class
    Add image logo
    Replace icon logo
---
 .../org/apache/hop/ui/core/gui/GuiResource.java    |   2 +-
 .../main/java/org/apache/hop/ui/hopgui/HopGui.java |  26 +++
 .../apache/hop/ui/hopgui/dialog/AboutDialog.java   | 177 +++++++++++++++++++++
 .../dialog/messages/messages_en_US.properties      |   2 +-
 ui/src/main/resources/ui/images/hop_logo.svg       |  60 -------
 ui/src/main/resources/ui/images/logo_hop.svg       |  62 ++++++++
 ui/src/main/resources/ui/images/logo_icon.svg      |  59 +++++++
 7 files changed, 326 insertions(+), 62 deletions(-)

diff --git a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
index d047442..58d3a69 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/gui/GuiResource.java
@@ -700,7 +700,7 @@ public class GuiResource {
 
     // Svg image
     //
-    imageLogo = SwtSvgImageUtil.getImageAsResource( display, "ui/images/hop_logo.svg" );
+    imageLogo = SwtSvgImageUtil.getImageAsResource( display, "ui/images/logo_icon.svg" );
     imagePipeline = SwtSvgImageUtil.getImageAsResource( display, "ui/images/pipeline.svg" );
     imageWorkflow = SwtSvgImageUtil.getImageAsResource( display, "ui/images/workflow.svg" );
     imageServer = SwtSvgImageUtil.getImageAsResource( display, "ui/images/server.svg" );
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java b/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
index d2fb76c..e580491 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/HopGui.java
@@ -75,6 +75,7 @@ import org.apache.hop.ui.hopgui.delegates.HopGuiAuditDelegate;
 import org.apache.hop.ui.hopgui.delegates.HopGuiContextDelegate;
 import org.apache.hop.ui.hopgui.delegates.HopGuiFileDelegate;
 import org.apache.hop.ui.hopgui.delegates.HopGuiUndoDelegate;
+import org.apache.hop.ui.hopgui.dialog.AboutDialog;
 import org.apache.hop.ui.hopgui.file.HopFileTypeRegistry;
 import org.apache.hop.ui.hopgui.file.IHopFileType;
 import org.apache.hop.ui.hopgui.file.IHopFileTypeHandler;
@@ -165,6 +166,10 @@ public class HopGui
   public static final String ID_MAIN_MENU_TOOLS_OPTIONS = "40010-menu-tools-options";
   public static final String ID_MAIN_MENU_TOOLS_SYSPROPS = "40020-menu-tools-system-properties";
 
+  public static final String ID_MAIN_MENU_HELP_PARENT_ID = "90000-menu-help";
+  public static final String ID_MAIN_MENU_HELP_ABOUT = "90009-menu-help-about";
+  
+  
   // The main toolbar IDs
   public static final String ID_MAIN_TOOLBAR = "HopGui-Toolbar";
   public static final String ID_MAIN_TOOLBAR_NEW = "toolbar-10010-new";
@@ -896,6 +901,27 @@ public class HopGui
     }
   }
 
+  @GuiMenuElement(
+      root = ID_MAIN_MENU,
+      id = ID_MAIN_MENU_HELP_PARENT_ID,
+      label = "&Help",
+      parentId = ID_MAIN_MENU)
+  public void menuHelp() {
+    // Nothing is done here.
+  }  
+
+
+  @GuiMenuElement(
+      root = ID_MAIN_MENU,
+      id = ID_MAIN_MENU_HELP_ABOUT,
+      label = "About...",
+      parentId = ID_MAIN_MENU_HELP_PARENT_ID)
+  public void menuHelpAbout() {
+    AboutDialog dialog = new AboutDialog(hopGui.getShell());
+    dialog.open();
+  }
+  
+
   protected void addMainToolbar() {
     mainToolbar = new ToolBar(shell, SWT.WRAP | SWT.LEFT | SWT.HORIZONTAL);
     FormData fdToolBar = new FormData();
diff --git a/ui/src/main/java/org/apache/hop/ui/hopgui/dialog/AboutDialog.java b/ui/src/main/java/org/apache/hop/ui/hopgui/dialog/AboutDialog.java
new file mode 100644
index 0000000..a8f551a
--- /dev/null
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/dialog/AboutDialog.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hop.ui.hopgui.dialog;
+
+import java.util.Arrays;
+import org.apache.hop.core.Const;
+import org.apache.hop.i18n.BaseMessages;
+import org.apache.hop.ui.core.PropsUi;
+import org.apache.hop.ui.core.gui.GuiResource;
+import org.apache.hop.ui.hopgui.HopGui;
+import org.apache.hop.ui.pipeline.transform.BaseTransformDialog;
+import org.apache.hop.ui.util.SwtSvgImageUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ShellAdapter;
+import org.eclipse.swt.events.ShellEvent;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.program.Program;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/** A dialog to display version information. */
+public class AboutDialog extends Dialog {
+  private static final Class<?> PKG = AboutDialog.class; // Needed by Translator
+
+  private final String[] PROPERTIES =  new String[] { "os.name","os.version","os.arch", "java.version", "java.vm.vendor", "java.specification.version","java.class.path","file.encoding","HOP_PLATFORM_RUNTIME","HOP_CONFIG_FOLDER"}; 
+
+  private Shell shell;
+
+  public AboutDialog(Shell parent) {
+    super(parent, SWT.NONE);
+  }
+
+  public void open() {
+    Shell parent = getParent();
+    Display display = parent.getDisplay();
+
+    PropsUi props = PropsUi.getInstance();
+
+    shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.SHEET | SWT.RESIZE);
+    shell.setText(BaseMessages.getString(PKG, "AboutDialog.Title"));   
+    shell.setImage(GuiResource.getInstance().getImageHopUi());
+    shell.setSize(400, 400);
+    shell.setMinimumSize(350, 250);
+
+    FormLayout formLayout = new FormLayout();
+    formLayout.marginWidth = Const.FORM_MARGIN;
+    formLayout.marginHeight = Const.FORM_MARGIN;
+    shell.setLayout(formLayout);
+    props.setLook(shell);
+
+    // Widget application logo
+    Label wLogo = new Label(shell, SWT.CENTER);
+    wLogo.setImage(
+        SwtSvgImageUtil.getImageAsResource(display, "ui/images/logo_hop.svg")
+            .getAsBitmapForSize(display, 100, 100));
+    FormData fdLogo = new FormData();
+    fdLogo.top = new FormAttachment(0, 0);
+    fdLogo.left = new FormAttachment(0, 0);
+    wLogo.setLayoutData(fdLogo);
+
+    // Widget application name
+    Label wName = new Label(shell, SWT.CENTER);
+    wName.setText("Apache Hop\n(Incubating)");
+    wName.setFont(GuiResource.getInstance().getFontLarge());
+    FormData fdName = new FormData();
+    fdName.top = new FormAttachment(0, 0);
+    fdName.left = new FormAttachment(wLogo, 0);
+    fdName.right = new FormAttachment(100, 0);
+    wName.setLayoutData(fdName);
+    props.setLook(wName);
+
+    // Widget application version
+    Label wVersion = new Label(shell, SWT.CENTER);
+    wVersion.setText(HopGui.class.getPackage().getImplementationVersion());
+    FormData fdAppVersion = new FormData();
+    fdAppVersion.top = new FormAttachment(wName, Const.MARGIN);
+    fdAppVersion.left = new FormAttachment(wLogo, 0);
+    fdAppVersion.right = new FormAttachment(100, 0);
+    wVersion.setLayoutData(fdAppVersion);
+    props.setLook(wVersion);
+
+    // Widget link, use composite for centering
+    Composite composite = new Composite(shell, SWT.NONE);
+    FormData fdLink = new FormData();
+    fdLink.top = new FormAttachment(wVersion, Const.MARGIN);
+    fdLink.left = new FormAttachment(wLogo, 0);
+    fdLink.right = new FormAttachment(100, 0);
+    composite.setLayoutData(fdLink);
+    composite.setLayout(new GridLayout(1, false));
+    props.setLook(composite);
+
+    Link wLink = new Link(composite, SWT.WRAP | SWT.MULTI);
+    wLink.setText("<a href=\"https://hop.apache.org\">hop.apache.org</a>");
+    wLink.addListener(SWT.Selection, e -> Program.launch("https://hop.apache.org"));
+    wLink.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true));
+    props.setLook(wLink);
+
+    // Buttons
+    Button wOk = new Button(shell, SWT.PUSH);
+    wOk.setText(BaseMessages.getString(PKG, "System.Button.OK"));
+    wOk.addListener(SWT.Selection, e -> ok());
+    BaseTransformDialog.positionBottomButtons(shell, new Button[] {wOk}, Const.MARGIN, null);
+
+    // Widget system properties
+    Text wText = new Text(shell, SWT.READ_ONLY | SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+    wText.setText(getProperties());
+    FormData fdText = new FormData();
+    fdText.top = new FormAttachment(wLogo, Const.MARGIN);
+    fdText.left = new FormAttachment(0, 0);
+    fdText.right = new FormAttachment(100, 0);
+    fdText.bottom = new FormAttachment(wOk, -Const.MARGIN);
+    wText.setLayoutData(fdText);
+    props.setLook(wText);
+
+    // Detect [X] or ALT-F4 or something that kills this window...
+    shell.addShellListener(
+        new ShellAdapter() {
+          public void shellClosed(ShellEvent e) {
+            ok();
+          }
+        });
+
+    shell.open();
+    while (!shell.isDisposed()) {
+      if (!display.readAndDispatch()) {
+        display.sleep();
+      }
+    }
+  }
+
+  private String getProperties() {
+
+    StringBuilder builder = new StringBuilder();
+    Arrays.sort(PROPERTIES);      
+    for (String name : PROPERTIES) {
+      builder.append(name);
+      builder.append('=');      
+      builder.append(System.getProperty(name,""));
+      builder.append('\n');
+    }
+    
+    return builder.toString();
+  }
+
+  public void dispose() {
+    shell.dispose();
+  }
+
+  private void ok() {
+    dispose();
+  }
+}
diff --git a/ui/src/main/resources/org/apache/hop/ui/hopgui/dialog/messages/messages_en_US.properties b/ui/src/main/resources/org/apache/hop/ui/hopgui/dialog/messages/messages_en_US.properties
index ee66f7c..8aa59dd 100644
--- a/ui/src/main/resources/org/apache/hop/ui/hopgui/dialog/messages/messages_en_US.properties
+++ b/ui/src/main/resources/org/apache/hop/ui/hopgui/dialog/messages/messages_en_US.properties
@@ -17,7 +17,7 @@
 #
 #
 #
-
+AboutDialog.Title=About
 AnalyseImpactProgressDialog.RuntimeError.UnableToAnalyzeImpact.Exception=Problem encountered generating impact list\: {0}
 AnalyseImpactProgressDialog.Dialog.UnableToAnalyzeImpact.Title=Error checking pipeline
 GetSQLProgressDialog.Dialog.UnableToGenerateSQL.Title=Error generating SQL for pipeline
diff --git a/ui/src/main/resources/ui/images/hop_logo.svg b/ui/src/main/resources/ui/images/hop_logo.svg
deleted file mode 100644
index dd57620..0000000
--- a/ui/src/main/resources/ui/images/hop_logo.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-
-<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="http://www.w3.org/2000/svg"
-    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-    version="1.1"
-    id="Livello_1"
-    x="0px"
-    y="0px"
-    width="80.08448"
-    height="80.00547"
-    viewBox="0 0 80.08448 80.005465"
-    enable-background="new 0 0 419.53 595.28"
-    xml:space="preserve"
-    sodipodi:docname="hop_logo.svg"
-    inkscape:version="0.92.4 (5da689c313, 2019-01-14)"><metadata
-   id="metadata9"><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="defs7"/>
-  <sodipodi:namedview
-      pagecolor="#ffffff"
-      bordercolor="#666666"
-      borderopacity="1"
-      objecttolerance="10"
-      gridtolerance="10"
-      guidetolerance="10"
-      inkscape:pageopacity="0"
-      inkscape:pageshadow="2"
-      inkscape:window-width="640"
-      inkscape:window-height="480"
-      id="namedview5"
-      showgrid="false"
-      inkscape:zoom="32"
-      inkscape:cx="30.548347"
-      inkscape:cy="34.35906"
-      inkscape:current-layer="Livello_1"
-      fit-margin-top="0"
-      fit-margin-left="0"
-      fit-margin-right="0"
-      fit-margin-bottom="0"/>
-
-  <rect
-      style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.4749999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
-      id="rect898"
-      width="77.609482"
-      height="77.530472"
-      x="1.2375"
-      y="1.2375"/>
-  <path
-      d="m 34.55418,31.865252 c -1.807984,1.928035 -2.965842,4.64207 -3.473329,8.141242 l -2.462765,16.978315 c -0.507488,3.499695 -0.136525,6.21292 1.112055,8.140958 0.477845,0.71464 1.250305,1.410987 2.316847,2.089017 1.065698,0.678573 2.562882,1.017455 4.492112,1.017455 1.964878,0 3.56961,-0.338882 4.81444,-1.017455 1.24454,-0.67803 2.209565,-1.374377 2.89563,-2.089017 1.80825,-1.928038 2.965843,-4.641263 3.473063,-8.140958 L 50.185,40.006494 c 0.507463,-3.499172 0.137225,-6.213207 -1 [...]
-      id="path2"
-      inkscape:connector-curvature="0"
-      style="fill:#000000;fill-opacity:1;stroke-width:0.27172738"/></svg>
\ No newline at end of file
diff --git a/ui/src/main/resources/ui/images/logo_hop.svg b/ui/src/main/resources/ui/images/logo_hop.svg
new file mode 100644
index 0000000..1712996
--- /dev/null
+++ b/ui/src/main/resources/ui/images/logo_hop.svg
@@ -0,0 +1,62 @@
+<?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.0 (4035a4fb49, 2020-05-01)"
+   sodipodi:docname="logo_hop.svg"
+   id="svg32"
+   viewBox="0 0 512.00002 512.00002"
+   height="512pt"
+   width="512pt"
+   version="1.1">
+  <metadata
+     id="metadata38">
+    <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="defs36" />
+  <sodipodi:namedview
+     inkscape:current-layer="svg32"
+     inkscape:window-maximized="0"
+     inkscape:window-y="0"
+     inkscape:window-x="0"
+     inkscape:cy="505.49151"
+     inkscape:cx="565.11167"
+     inkscape:zoom="2.1879343"
+     showgrid="false"
+     id="namedview34"
+     inkscape:window-height="1255"
+     inkscape:window-width="2612"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0"
+     guidetolerance="10"
+     gridtolerance="10"
+     objecttolerance="10"
+     borderopacity="1"
+     bordercolor="#666666"
+     pagecolor="#ffffff" />
+  <rect
+     y="-0.68557811"
+     x="-0.68557817"
+     height="513.84088"
+     width="514.52649"
+     id="rect986"
+     style="fill:#033d5d;fill-opacity:1;stroke-width:0.519195;stroke-linecap:round;stroke-linejoin:round" />
+  <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-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-st [...]
+     d="m 450.74235,214.50802 c -2.88745,20.28937 -9.59656,35.65629 -20.11979,46.09622 -11.24242,11.25302 -26.40494,16.87348 -45.48601,16.87348 l 4.07453,-28.62163 c 7.8326,0 13.28196,-0.90393 16.35414,-2.7118 3.06914,-1.80939 5.07534,-3.21147 6.0232,-4.21989 5.07386,-4.6181 8.58663,-13.75436 10.5323,-27.41638 1.02959,-7.23149 1.2537,-13.05181 0.67529,-17.47458 -0.57384,-4.41672 -1.84875,-7.83261 -3.81408,-10.2431 -1.96838,-2.40898 -4.65141,-4.01548 -8.04913,-4.81948 -3.40377,-0.80247 -7 [...]
+     id="path951-1" />
+</svg>
diff --git a/ui/src/main/resources/ui/images/logo_icon.svg b/ui/src/main/resources/ui/images/logo_icon.svg
new file mode 100644
index 0000000..37416ba
--- /dev/null
+++ b/ui/src/main/resources/ui/images/logo_icon.svg
@@ -0,0 +1,59 @@
+<?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.0 (4035a4fb49, 2020-05-01)"
+   sodipodi:docname="logo_icon.svg"
+   id="svg32"
+   viewBox="0 0 48.000001 48.000002"
+   height="48pt"
+   width="48pt"
+   version="1.1">
+  <metadata
+     id="metadata38">
+    <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="defs36" />
+  <sodipodi:namedview
+     inkscape:current-layer="svg32"
+     inkscape:window-maximized="0"
+     inkscape:window-y="0"
+     inkscape:window-x="0"
+     inkscape:cy="27.400388"
+     inkscape:cx="-30.935922"
+     inkscape:zoom="4.9220178"
+     showgrid="false"
+     id="namedview34"
+     inkscape:window-height="1255"
+     inkscape:window-width="2612"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0"
+     guidetolerance="10"
+     gridtolerance="10"
+     objecttolerance="10"
+     borderopacity="1"
+     bordercolor="#666666"
+     pagecolor="#ffffff" />
+  <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-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-st [...]
+     d="m 40.722651,30.877314 c 0,9.460954 -7.669665,17.130619 -17.130619,17.130619 -9.461195,0 -17.130858,-7.669665 -17.130858,-17.130619 0,-9.460952 7.669663,-17.130616 17.130858,-17.130616 9.460954,0 17.130619,7.669664 17.130619,17.130616"
+     id="path957-7" />
+  <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-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-st [...]
+     d="m 27.151703,37.971659 c -2.366321,-2.670082 -3.42083,-6.253141 -2.976257,-10.096881 h 0.01132 l 1.963872,-13.93701 0.391377,-2.835928 4.837589,0.366587 -6.8561,-11.33552696 -8.485395,10.17318596 4.729754,0.358402 -0.490547,3.405664 -0.442166,3.107679 -1.3756,9.922857 h -2.33e-4 l -7.23e-4,0.0057 -0.106384,0.768315 h 0.03249 c -0.440721,5.246056 1.122626,10.164758 4.451748,13.921122 1.99468,2.250547 4.478941,3.914505 7.275398,4.924242 2.494611,-1.027791 4.69124,-2.627965 6.430538, [...]
+     id="path963-0" />
+</svg>