summaryrefslogtreecommitdiffstats
path: root/share/ui
diff options
context:
space:
mode:
Diffstat (limited to 'share/ui')
-rw-r--r--share/ui/Adwaita-dark.css70
-rw-r--r--share/ui/Adwaita.css71
-rw-r--r--share/ui/CMakeLists.txt9
-rw-r--r--share/ui/Minwaita-Inkscape.css164
-rw-r--r--share/ui/align-and-distribute.ui1339
-rw-r--r--share/ui/attribute-edit-component.glade335
-rw-r--r--share/ui/bad-marker.svg18
-rw-r--r--share/ui/canvas-notice.glade84
-rw-r--r--share/ui/color-palette.glade473
-rw-r--r--share/ui/command-palette-main.glade114
-rw-r--r--share/ui/command-palette-operation.glade179
-rw-r--r--share/ui/completion-box.glade92
-rw-r--r--share/ui/default-dialog-state.ini37
-rw-r--r--share/ui/dialog-crash.glade104
-rw-r--r--share/ui/dialog-css.glade134
-rw-r--r--share/ui/dialog-document-resources.glade463
-rw-r--r--share/ui/dialog-export-prefs.glade70
-rw-r--r--share/ui/dialog-export.glade1220
-rw-r--r--share/ui/dialog-filter-editor.glade689
-rw-r--r--share/ui/dialog-font-collections.glade172
-rw-r--r--share/ui/dialog-livepatheffect-add.glade447
-rw-r--r--share/ui/dialog-livepatheffect-effect.glade290
-rw-r--r--share/ui/dialog-livepatheffect-item.glade397
-rw-r--r--share/ui/dialog-livepatheffect.glade168
-rw-r--r--share/ui/dialog-objects.glade289
-rw-r--r--share/ui/dialog-paint-servers.glade123
-rw-r--r--share/ui/dialog-save-template.glade154
-rw-r--r--share/ui/dialog-symbols.glade420
-rw-r--r--share/ui/dialog-text-edit.glade313
-rw-r--r--share/ui/dialog-trace.glade1555
-rw-r--r--share/ui/dialog-xml.glade304
-rw-r--r--share/ui/display-popup.glade309
-rw-r--r--share/ui/extension-pdfinput.glade622
-rw-r--r--share/ui/gradient-edit.glade458
-rw-r--r--share/ui/gradient-stop.svg124
-rw-r--r--share/ui/gradient-tip.svg76
-rw-r--r--share/ui/highlight-colors.css59
-rw-r--r--share/ui/image-properties.glade299
-rw-r--r--share/ui/inkscape-about.glade414
-rw-r--r--share/ui/inkscape-start.glade1268
-rw-r--r--share/ui/inline-css.lang10
-rw-r--r--share/ui/mac.css4
-rw-r--r--share/ui/marker-popup.glade530
-rw-r--r--share/ui/menus.ui1321
-rw-r--r--share/ui/object-attributes.glade1095
-rw-r--r--share/ui/page-properties.glade1018
-rw-r--r--share/ui/pattern-edit.glade755
-rw-r--r--share/ui/resources/canvas_ad.pngbin0 -> 579 bytes
-rw-r--r--share/ui/resources/canvas_aw.pngbin0 -> 612 bytes
-rw-r--r--share/ui/resources/canvas_cd.pngbin0 -> 598 bytes
-rw-r--r--share/ui/resources/canvas_cw.pngbin0 -> 612 bytes
-rw-r--r--share/ui/resources/canvas_sw.pngbin0 -> 550 bytes
-rw-r--r--share/ui/spinbutton.css11
-rw-r--r--share/ui/style.css1031
-rw-r--r--share/ui/svgd.lang229
-rw-r--r--share/ui/svgpoints.lang47
-rw-r--r--share/ui/syntax-themes/syntax-theme-dark.xml77
-rw-r--r--share/ui/syntax-themes/syntax-theme-light.xml79
-rw-r--r--share/ui/syntax-themes/syntax-theme-none.xml17
-rw-r--r--share/ui/toolbar-booleans.ui97
-rw-r--r--share/ui/toolbar-commands.ui330
-rw-r--r--share/ui/toolbar-page.ui385
-rw-r--r--share/ui/toolbar-select.ui0
-rw-r--r--share/ui/toolbar-snap.ui1665
-rw-r--r--share/ui/toolbar-tool-prefs.ui880
-rw-r--r--share/ui/toolbar-tool.ui865
-rw-r--r--share/ui/toolbar-zoom.ui130
-rw-r--r--share/ui/units.xml101
-rw-r--r--share/ui/user.css0
-rw-r--r--share/ui/widget-new-from-template.ui73
-rw-r--r--share/ui/win32.css176
71 files changed, 24852 insertions, 0 deletions
diff --git a/share/ui/Adwaita-dark.css b/share/ui/Adwaita-dark.css
new file mode 100644
index 0000000..8abddae
--- /dev/null
+++ b/share/ui/Adwaita-dark.css
@@ -0,0 +1,70 @@
+/* ADWAITA DARK SPECIFIC STYLE */
+
+/*
+ * Keep as small as possible
+ */
+
+.inkswitch slider {
+ min-width: 18px;
+ min-height: 18px;
+}
+
+.inkswitch image {
+ color: transparent;
+ background-color: transparent;
+ background-image: image(transparent);
+ -gtk-icon-style:symbolic;
+}
+
+.inkswitch {
+ margin: 2px;
+ padding: 0;
+ font-size: 8px;
+}
+
+/* Reduce width of +/- buttons. */
+.up,
+.down {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+notebook notebook header label {
+ margin:0;
+}
+
+notebook notebook header tab {
+ min-height:23px;
+ padding:3px 7px;
+}
+
+notebook notebook header {
+ padding:0;
+}
+
+notebook notebook header image {
+ -gtk-icon-transform:scale(0.8);
+ margin:-3px 0 -3px 0;
+}
+
+#PaintSelector .toggle,
+#PaintSelector .radio,
+#StrokeSelector .toggle,
+#StrokeSelector .radio{
+ padding:5px;
+ min-height:12px;
+}
+#StrokeSelector{
+ padding:0px;
+ margin:0px;
+}
+
+#AlignDistribute .toggle,
+#AlignDistribute .radio,
+#AlignDistribute button{
+ padding:4px;
+}
+
+#AlignDistribute #align {
+ margin-top:-15px;
+}
diff --git a/share/ui/Adwaita.css b/share/ui/Adwaita.css
new file mode 100644
index 0000000..a2053e9
--- /dev/null
+++ b/share/ui/Adwaita.css
@@ -0,0 +1,71 @@
+/* ADWAITA SPECIFIC STYLE */
+
+
+/*
+ * Keep as small as possible
+ */
+
+.inkswitch slider {
+ min-width: 18px;
+ min-height: 18px;
+}
+
+.inkswitch image {
+ color: transparent;
+ background-color: transparent;
+ background-image: image(transparent);
+ -gtk-icon-style:symbolic;
+}
+
+.inkswitch {
+ margin: 2px;
+ padding: 0;
+ font-size: 8px;
+}
+
+/* Reduce width of +/- buttons. */
+.up,
+.down {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+notebook notebook header label {
+ margin:0;
+}
+
+notebook notebook header tab {
+ min-height:23px;
+ padding:3px 7px;
+}
+
+notebook notebook header {
+ padding:0;
+}
+
+notebook notebook header image {
+ -gtk-icon-transform:scale(0.8);
+ margin:-3px 0 -3px 0;
+}
+
+#PaintSelector .toggle,
+#PaintSelector .radio,
+#StrokeSelector .toggle,
+#StrokeSelector .radio{
+ padding:5px;
+ min-height:12px;
+}
+#StrokeSelector{
+ padding:0px;
+ margin:0px;
+}
+
+#AlignDistribute .toggle,
+#AlignDistribute .radio,
+#AlignDistribute button{
+ padding:4px;
+}
+
+#AlignDistribute #align {
+ margin-top:-15px;
+}
diff --git a/share/ui/CMakeLists.txt b/share/ui/CMakeLists.txt
new file mode 100644
index 0000000..2a4627b
--- /dev/null
+++ b/share/ui/CMakeLists.txt
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+file(GLOB _FILES "*.xml" "*.rc" "*.css" "*.ui" "*.glade" "*.svg" "*.ini" "*.lang")
+install(FILES ${_FILES} DESTINATION ${INKSCAPE_SHARE_INSTALL}/ui)
+
+file(GLOB _RESOURCES "resources/*.png" "resources/*.svg")
+install(FILES ${_RESOURCES} DESTINATION ${INKSCAPE_SHARE_INSTALL}/ui/resources)
+
+file(GLOB _SYNTAX_THEMES "syntax-themes/*.xml")
+install(FILES ${_SYNTAX_THEMES} DESTINATION ${INKSCAPE_SHARE_INSTALL}/ui/syntax-themes)
diff --git a/share/ui/Minwaita-Inkscape.css b/share/ui/Minwaita-Inkscape.css
new file mode 100644
index 0000000..0e84cb7
--- /dev/null
+++ b/share/ui/Minwaita-Inkscape.css
@@ -0,0 +1,164 @@
+/* Minwaita-Inkscape SPECIFIC STYLE */
+
+
+/*
+ * Keep as small as possible
+ */
+
+toolbar toolbutton > button:disabled, toolbar toolbutton > button:backdrop:disabled, .toolbar toolbutton > button:disabled, .toolbar toolbutton > button:backdrop:disabled {
+ -gtk-icon-effect: dim;
+}
+
+scrollbar {
+ margin: -1px;
+}
+
+filechooser #pathbarbox button {
+ color: #2e3436;
+ outline-color: rgba(46, 52, 54, 0.3);
+ border-color: #c4c4bf;
+ border-bottom-color: #a0a097;
+ background-image: linear-gradient(to bottom, #f5f5f4, #ebebe9 60%, #ddddd9);
+ text-shadow: 0 1px rgba(255, 255, 255, 0.769231);
+ -gtk-icon-shadow: 0 1px rgba(255, 255, 255, 0.769231);
+ box-shadow: inset 0 1px white;
+}
+
+filechooser #pathbarbox button:hover {
+ color: #2e3436;
+ outline-color: rgba(46, 52, 54, 0.3);
+ border-color: #c4c4bf;
+ border-bottom-color: #a0a097;
+ text-shadow: 0 1px rgba(255, 255, 255, 0.769231);
+ -gtk-icon-shadow: 0 1px rgba(255, 255, 255, 0.769231);
+ box-shadow: inset 0 1px white;
+ background-image: linear-gradient(to bottom, white, #f5f5f4 60%, #ebebe9);
+}
+
+filechooser #pathbarbox button:active {
+ color: #2e3436;
+ outline-color: rgba(46, 52, 54, 0.3);
+ border-color: #c4c4bf;
+ background-image: image(#e6e6e4);
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0);
+ text-shadow: none;
+ -gtk-icon-shadow: none;
+}
+
+filechooser #pathbarbox button:disabled {
+ border-color: #c4c4bf;
+ background-image: image(#f9f9f8);
+ text-shadow: none;
+ -gtk-icon-shadow: none;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0);
+}
+
+filechooser #pathbarbox button:disabled label, filechooser #pathbarbox button:disabled {
+ color: #313739;
+}
+
+filechooser #pathbarbox button:backdrop {
+ border-color: #cecec9;
+ background-image: image(#f5f5f4);
+ text-shadow: none;
+ -gtk-icon-shadow: none;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0);
+}
+
+filechooser #pathbarbox button:backdrop label, filechooser #pathbarbox button:backdrop {
+ color: #313739;
+}
+
+filechooser #pathbarbox button:backdrop:disabled {
+ border-color: #cecec9;
+ background-image: image(#f9f9f8);
+ text-shadow: none;
+ -gtk-icon-shadow: none;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0);
+}
+
+filechooser #pathbarbox button:backdrop:disabled label, filechooser #pathbarbox button:backdrop:disabled {
+ color: #566164;
+}
+
+button.titlebutton {
+ color:inherit;
+ border-style: none;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-image: -gtk-scaled(url("assets/window-buttons/titlebutton.png"), url("assets/window-buttons/titlebutton@2.png"));
+ text-shadow: none;
+ -gtk-icon-shadow:none;
+}
+
+window.nautilus-desktop-window box.searchbar-container.vertical > searchbar, window.nautilus-desktop-window box.searchbar-container.vertical > searchbar:backdrop {
+ background-color: transparent;
+}
+
+viewport.frame > list.tweak-categories label:backdrop {
+ color: #313739;
+}
+
+.primary-toolbar button.raised {
+ margin: 0px;
+}
+
+scrolledwindow undershoot.top,scrolledwindow undershoot.bottom,scrolledwindow undershoot.left,scrolledwindow undershoot.right {
+ background-image: none;
+}
+
+#AuxToolbox {
+ min-height:38px;
+}
+
+notebook notebook header label {
+ font-weight:normal;
+}
+
+notebook notebook header image {
+ -gtk-icon-transform:scale(0.75);
+ margin:-1px 0 -1px -3px;
+}
+
+/* checked buttons: light theme version */
+button.radio:checked,
+button.toggle:checked {
+ background-color: transparent;
+ background-image: image(linear-gradient(rgba(0,0,0,0.16), rgba(0,0,0,0.04)));
+}
+
+/* checked buttons: dark theme version */
+.dark button.radio:checked,
+.dark button.toggle:checked {
+ background-color: transparent;
+ background-image: image(@theme_selected_bg_color);
+}
+
+/* scale part without border doesn't match with a spinbutton; add border */
+#InkSpinScale trough {
+ border: 1px solid alpha(@theme_fg_color, 0.15);
+}
+
+.dark #InkSpinScale trough {
+ border-color: alpha(black, 0.25);
+}
+
+#LPEEffectItem expander title label {
+ min-height:21px;
+}
+
+/*************
+ * Expanders *
+ *************/
+
+expander combobox arrow {
+ -gtk-icon-source: -gtk-icontheme("pan-down-symbolic");
+}
+
+expander combobox arrow:dir(rtl) {
+ -gtk-icon-source: -gtk-icontheme("pan-down-symbolic");
+}
+
+expander combobox arrow:checked {
+ -gtk-icon-source: -gtk-icontheme("pan-down-symbolic");
+}
diff --git a/share/ui/align-and-distribute.ui b/share/ui/align-and-distribute.ui
new file mode 100644
index 0000000..63e594f
--- /dev/null
+++ b/share/ui/align-and-distribute.ui
@@ -0,0 +1,1339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkListStore" id="RelativeToNode">
+ <columns>
+ <!-- column-name RelativeTo -->
+ <column type="gchararray"/>
+ <!-- column-name Argument -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Last selected</col>
+ <col id="1">last</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">First selected</col>
+ <col id="1">first</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Middle of selection</col>
+ <col id="1">middle</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Min value</col>
+ <col id="1">min</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Max value</col>
+ <col id="1">max</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="RelativeToObject">
+ <columns>
+ <!-- column-name RelativeTo -->
+ <column type="gchararray"/>
+ <!-- column-name Argument -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Last selected</col>
+ <col id="1">last</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">First selected</col>
+ <col id="1">first</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Biggest object</col>
+ <col id="1">biggest</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Smallest object</col>
+ <col id="1">smallest</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Page</col>
+ <col id="1">page</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Drawing</col>
+ <col id="1">drawing</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Selection Area</col>
+ <col id="1">selection</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkAdjustment" id="RemoveOverlap_HGap">
+ <property name="lower">-1000</property>
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="RemoveOverlap_VGap">
+ <property name="lower">-1000</property>
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-baseline</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-center">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-center</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-left">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-left</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-left-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-left-to-anchor</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-node</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-right">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-right</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-horizontal-right-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-right-to-anchor</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-on-canvas">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-on-canvas</property>
+ </object>
+ <object class="GtkImage" id="image-align-sel-as-group">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-sel-as-group</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-baseline</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-bottom">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-bottom</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-bottom-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-bottom-to-anchor</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-center">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-center</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-node</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-top">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-top</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-align-vertical-top-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-vertical-top-to-anchor</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-graph">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-graph</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-baseline</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-center">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-center</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-gaps">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-gaps</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-left">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-left</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-node</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-horizontal-right">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-horizontal-right</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-randomize">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-randomize</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-remove-overlaps">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-remove-overlaps</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-unclump">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-unclump</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-baseline</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-bottom">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-bottom</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-center">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-center</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-gaps">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-gaps</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-node</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-distribute-vertical-top">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">distribute-vertical-top</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-exchange-positions">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">exchange-positions</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-exchange-positions-clockwise">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">exchange-positions-clockwise</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image-exchange-positions-zorder">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">exchange-positions-zorder</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkBox" id="align-and-distribute-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="align-and-distribute-object">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">4</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=2 n-rows=2 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkToggleButton" id="align-on-canvas">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-on-canvas</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Enable on-canvas alignment handles</property>
+ <property name="action-name">app.object-align-on-canvas</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="align-move-as-group">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-sel-as-group</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Treat selection as group</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="label" translatable="yes">Alignment handles with third click</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="label" translatable="yes">Move/align selection as group</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Relative to:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="align-relative-object">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="model">RelativeToObject</property>
+ <property name="active">0</property>
+ <property name="id-column">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=6 n-rows=2 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="align-horizontal-right-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-right-to-anchor</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align right edges of objects to the left edge of anchor</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-horizontal-left">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-left</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align left edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-horizontal-center">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-center</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Center on vertical axis</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-horizontal-right">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-right</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align right edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-horizontal-left-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-left-to-anchor</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align left edges of objects to the right edge of anchor</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-horizontal-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-baseline</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align baseline anchors of texts horizontally</property>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-bottom-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-bottom-to-anchor</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align bottom edges of objects to the top edge of anchor</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-top">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-top</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align top edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-center">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-center</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Center on horizontal axis</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-bottom">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-bottom</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align bottom edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-top-to-anchor">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-top-to-anchor</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align top edges of objects to bottom edge of anchor</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-vertical-baseline">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-baseline</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align baselines of texts</property>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Align</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">4</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <!-- n-columns=5 n-rows=2 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'left'</property>
+ <property name="image">image-distribute-horizontal-left</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute horizontally with even spacing between left edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'hcenter'</property>
+ <property name="image">image-distribute-horizontal-center</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute horizontally with even spacing between centers</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'right'</property>
+ <property name="image">image-distribute-horizontal-right</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute horizontally with even spacing between right edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'hgap'</property>
+ <property name="image">image-distribute-horizontal-gaps</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute horizontally with even horizontal gaps</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute-text</property>
+ <property name="action-target">'horizontal'</property>
+ <property name="image">image-distribute-horizontal-baseline</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute text anchors horizontally</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'top'</property>
+ <property name="image">image-distribute-vertical-top</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute vertically with even spacing between top edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'vcenter'</property>
+ <property name="image">image-distribute-vertical-center</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute vertically with even spacing between centers</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'bottom'</property>
+ <property name="image">image-distribute-vertical-bottom</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute vertically with even spacing between bottom edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute</property>
+ <property name="action-target">'vgap'</property>
+ <property name="image">image-distribute-vertical-gaps</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute vertically with even vertical gaps</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-distribute-text</property>
+ <property name="action-target">'vertical'</property>
+ <property name="image">image-distribute-vertical-baseline</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute text anchors vertically</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Distribute</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">4</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <!-- n-columns=6 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'graph'</property>
+ <property name="image">image-distribute-graph</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Nicely arrange selected connector network</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'exchange'</property>
+ <property name="image">image-exchange-positions</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Exchange positions of selected objects - selection order</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'exchangez'</property>
+ <property name="image">image-exchange-positions-zorder</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Exchange positions of selected objects - stacking order</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'rotate'</property>
+ <property name="image">image-exchange-positions-clockwise</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Exchange positions of selected objects - rotate around center point</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'randomize'</property>
+ <property name="image">image-distribute-randomize</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Randomize centers in both dimensions</property>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.object-rearrange</property>
+ <property name="action-target">'unclump'</property>
+ <property name="image">image-distribute-unclump</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Unclump objects: try to equalize edge-to-edge distances</property>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Rearrange</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">H:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="remove-overlap-hgap">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="input-purpose">number</property>
+ <property name="adjustment">RemoveOverlap_HGap</property>
+ <property name="numeric">True</property>
+ <property name="tooltip-text" translatable="yes">Minimum horizontal gap (in pixel units) between bounding boxes</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="label" translatable="yes">V:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="remove-overlap-vgap">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="input-purpose">number</property>
+ <property name="adjustment">RemoveOverlap_VGap</property>
+ <property name="numeric">True</property>
+ <property name="tooltip-text" translatable="yes">Minimum vertical gap (in pixel units) between bounding boxes</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove-overlap-button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="margin-start">4</property>
+ <property name="image">image-distribute-remove-overlaps</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Move objects as little as possible so that their bounding boxes do not overlap</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Remove overlaps</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="align-and-distribute-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">4</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Relative to:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="align-relative-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="model">RelativeToNode</property>
+ <property name="active">0</property>
+ <property name="id-column">1</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=2 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="align-node-horizontal">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-vertical-node</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align selected nodes to a common horizontal line</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="align-node-vertical">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image-align-horizontal-node</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Align selected nodes to a common vertical line</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Align Nodes</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkAlignment">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="left-padding">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=2 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.node-distribute-horizontal</property>
+ <property name="image">image-distribute-horizontal-node</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute selected nodes horizontally</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.node-distribute-vertical</property>
+ <property name="image">image-distribute-vertical-node</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <property name="tooltip-text" translatable="yes">Distribute selected nodes vertically</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="ypad">2</property>
+ <property name="label" translatable="yes">Distribute Nodes</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/attribute-edit-component.glade b/share/ui/attribute-edit-component.glade
new file mode 100644
index 0000000..e952e05
--- /dev/null
+++ b/share/ui/attribute-edit-component.glade
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <!-- interface-css-provider-path style.css -->
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">rounding</property>
+ </object>
+ <object class="GtkBox" id="main-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolled-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView" id="tree-view">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="headers-clickable">False</property>
+ <property name="enable-search">False</property>
+ <property name="hover-selection">True</property>
+ <property name="activate-on-single-click">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="content-sw">
+ <property name="can-focus">True</property>
+ <property name="no-show-all">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="mono-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="status-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="status-label">
+ <property name="width-request">1</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="use-markup">True</property>
+ <property name="wrap">True</property>
+ <style>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">2</property>
+ <property name="pack-type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="reserve-toggle-size">False</property>
+ <child>
+ <object class="GtkMenuItem" id="_0">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 0 digits after the decimal separator." translatable="yes">N</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="_1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 1 digit after the decimal separator. Please adjust to your language's number format (e.g. N,N)." translatable="yes">N.N</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="_2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 2 digits after the decimal separator. Please adjust to your language's number format (e.g. N,NN)." translatable="yes">N.NN</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="_3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 3 digits after the decimal separator. Please adjust to your language's number format (e.g. N,NNN)." translatable="yes">N.NNN</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="_4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 4 digits after the decimal separator. Please adjust to your language's number format (e.g. N,NNNN)." translatable="yes">N.NNNN</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="_5">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" context="Precision" comments="This symbolizes precision of 5 digits after the decimal separator. Please adjust to your language's number format (e.g. N,NNNNN)." translatable="yes">N.NNNNN</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="popup">
+ <property name="can-focus">False</property>
+ <property name="relative-to">tree-view</property>
+ <property name="position">bottom</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scroll-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">3</property>
+ <property name="margin-end">3</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">4</property>
+ <property name="vexpand">True</property>
+ <property name="propagate-natural-width">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="mono-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-bottom">4</property>
+ <property name="spacing">6</property>
+ <child type="center">
+ <object class="GtkBox" id="rounding-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">5</property>
+ <child>
+ <object class="GtkButton" id="btn-truncate">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Round selected numbers to n digits</property>
+ <property name="image">image1</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btn-menu">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="margin-start">2</property>
+ <property name="relief">none</property>
+ <property name="popup">menu1</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="precision">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="Precision" comments="This symbolizes precision of 5 digits after the decimal separator. Please adjust to your language's number format (e.g. N,NNNNN).">N.NNNNN</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="menu-btn-tight"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="help">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Shift+Return to close</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">2</property>
+ <property name="yalign">0.5</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-ok">
+ <property name="label" translatable="yes">OK</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-cancel">
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <style>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkSizeGroup">
+ <widgets>
+ <widget name="btn-cancel"/>
+ <widget name="btn-ok"/>
+ </widgets>
+ </object>
+ <object class="GtkListStore" id="store">
+ <columns>
+ <!-- column-name attr-name -->
+ <column type="gchararray"/>
+ <!-- column-name attr-value -->
+ <column type="gchararray"/>
+ <!-- column-name attr-value-renderer -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+</interface>
diff --git a/share/ui/bad-marker.svg b/share/ui/bad-marker.svg
new file mode 100644
index 0000000..85fde2d
--- /dev/null
+++ b/share/ui/bad-marker.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="16" height="16"
+ viewBox="0 0 16 16"
+ version="1.1" id="svg8"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs2" />
+ <path
+ style="fill:#ff0000;fill-opacity:0.25;stroke:#ff0000;stroke-width:1"
+ d="M 5.9834892,7.3456354 2.0830116,9.2070762 1.5519342,14.198434 13.484581,15.468061 14.12518,9.4473561 8.8356711,11.95845 Z"
+ id="path2717" />
+ <path
+ style="fill:#ff0000;stroke:#ff0000;stroke-width:1;fill-opacity:0.25"
+ d="M 1.4637433,2.0449526 2.1322594,7.4569446 5.7952963,4.5307307 9.6219492,8.3777362 13.91508,4.9604165 13.373228,0.57383395 Z"
+ id="rect797" />
+</svg>
diff --git a/share/ui/canvas-notice.glade b/share/ui/canvas-notice.glade
new file mode 100644
index 0000000..16eb224
--- /dev/null
+++ b/share/ui/canvas-notice.glade
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkRevealer" id="canvas-notice">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkImage" id="notice-icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="icon-name">dialog-information</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="notice-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="hexpand">True</property>
+ <property name="label">Example text for the notification widget!</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="notice-close">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="relief">none</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">window-close-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="app-notification"/>
+ </style>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/color-palette.glade b/share/ui/color-palette.glade
new file mode 100644
index 0000000..5ceb2b9
--- /dev/null
+++ b/share/ui/color-palette.glade
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adjustment-aspect">
+ <property name="lower">-1</property>
+ <property name="upper">1</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">0.20</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-border">
+ <property name="upper">8</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-rows">
+ <property name="lower">1</property>
+ <property name="upper">5</property>
+ <property name="value">1</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-size">
+ <property name="lower">4</property>
+ <property name="upper">32</property>
+ <property name="value">8</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-up</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-down</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-next</property>
+ </object>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-previous</property>
+ </object>
+ <object class="GtkMenu" id="menu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="config">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Configure...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="palette-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkFlowBox" id="pinned">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">end</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">1</property>
+ <property name="row-spacing">1</property>
+ <property name="min-children-per-line">1</property>
+ <property name="selection-mode">none</property>
+ <style>
+ <class name="color-palette"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scroll-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">end</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">external</property>
+ <property name="vscrollbar-policy">never</property>
+ <property name="min-content-width">1</property>
+ <property name="min-content-height">1</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkViewport" id="view-port">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkFlowBox" id="flow-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">end</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">1</property>
+ <property name="row-spacing">1</property>
+ <property name="min-children-per-line">6</property>
+ <property name="max-children-per-line">6</property>
+ <property name="selection-mode">none</property>
+ <style>
+ <class name="color-palette"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-left">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="image">image5</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-right">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="image">image4</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox" id="scroll-buttons">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <property name="column-spacing">1</property>
+ <property name="max-children-per-line">2</property>
+ <property name="selection-mode">none</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="width-request">10</property>
+ <property name="height-request">10</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkButton" id="btn-up">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="image">image1</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="width-request">10</property>
+ <property name="height-request">10</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkButton" id="btn-down">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="image">image2</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="btn-menu">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="valign">end</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="popup">menu</property>
+ <property name="direction">none</property>
+ <property name="use-popover">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="small"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <style>
+ <class name="color-palette-main-box"/>
+ </style>
+ </object>
+ <object class="GtkPopover" id="config-popup">
+ <property name="can-focus">False</property>
+ <property name="relative-to">btn-menu</property>
+ <property name="position">top</property>
+ <child>
+ <!-- n-columns=2 n-rows=8 -->
+ <object class="GtkGrid" id="main-grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="border-width">12</property>
+ <property name="row-spacing">7</property>
+ <property name="column-spacing">8</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Tile size:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="border-slider">
+ <property name="width-request">180</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-border</property>
+ <property name="show-fill-level">True</property>
+ <property name="fill-level">50</property>
+ <property name="round-digits">0</property>
+ <property name="digits">0</property>
+ <property name="value-pos">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Border:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="size-slider">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-size</property>
+ <property name="show-fill-level">True</property>
+ <property name="fill-level">50</property>
+ <property name="round-digits">0</property>
+ <property name="digits">0</property>
+ <property name="value-pos">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="row-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Rows:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="row-slider">
+ <property name="width-request">180</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-rows</property>
+ <property name="show-fill-level">True</property>
+ <property name="fill-level">50</property>
+ <property name="round-digits">0</property>
+ <property name="digits">0</property>
+ <property name="value-pos">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="aspect-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Aspect:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="aspect-slider">
+ <property name="width-request">180</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-aspect</property>
+ <property name="show-fill-level">True</property>
+ <property name="fill-level">50</property>
+ <property name="value-pos">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="use-sb">
+ <property name="label" translatable="yes">Use scrollbar</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="stretch">
+ <property name="label" translatable="yes">Stretch to fill</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="enlarge">
+ <property name="label" translatable="yes">Enlarge pinned colors</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show-labels">
+ <property name="label" translatable="yes">Show color labels</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/command-palette-main.glade b/share/ui/command-palette-main.glade
new file mode 100644
index 0000000..9666db8
--- /dev/null
+++ b/share/ui/command-palette-main.glade
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkBox" id="CPBase">
+ <property name="name">CommandPaletteBase</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkSearchBar" id="CPSearchBar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="search-mode-enabled">True</property>
+ <child>
+ <object class="GtkBox" id="CPHeader">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkSearchEntry" id="CPFilter">
+ <property name="name">CPFilter</property>
+ <property name="width-request">696</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ <style>
+ <class name=".cpfilter"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="CPListBase">
+ <property name="height-request">300</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkScrolledWindow" id="CPSuggestionsScroll">
+ <property name="height-request">300</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkListBox" id="CPSuggestions">
+ <property name="name">CPSuggestions</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="CPHistoryScroll">
+ <property name="height-request">300</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkListBox" id="CPHistory">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/command-palette-operation.glade b/share/ui/command-palette-operation.glade
new file mode 100644
index 0000000..ea1da5f
--- /dev/null
+++ b/share/ui/command-palette-operation.glade
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkEventBox" id="CPOperation">
+ <property name="name">CPOperation</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">0</property>
+ <child>
+ <object class="GtkBox" id="CPSynapseBox">
+ <property name="name">CPSynapseBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="CPName">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text">Untranslated Name</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="label">Name</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="weight" value="semibold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="CPDescription">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-bottom">3</property>
+ <property name="hexpand">True</property>
+ <property name="label">A very long description to fill empty space until we encounter ellipsis may be wrong spelling</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="CPActionFullButton">
+ <property name="sensitive">False</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Click to Copy</property>
+ <property name="valign">center</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="copy-icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-right">5</property>
+ <property name="margin-end">5</property>
+ <property name="icon-name">edit-copy</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="CPActionFullLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Label </property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="width-chars">20</property>
+ <property name="max-width-chars">20</property>
+ <property name="xalign">0.10000000149011612</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="flat"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="CPGroup">
+ <property name="name">CPGroup</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">Group</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="width-chars">20</property>
+ <property name="max-width-chars">20</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="CPShortcut">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Shortcut</property>
+ <property name="valign">start</property>
+ <property name="margin-top">3</property>
+ <property name="label" translatable="yes">Ctrl+F</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">word-char</property>
+ <property name="width-chars">20</property>
+ <property name="max-width-chars">20</property>
+ <style>
+ <class name="inksmall"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/completion-box.glade b/share/ui/completion-box.glade
new file mode 100644
index 0000000..c98ad3e
--- /dev/null
+++ b/share/ui/completion-box.glade
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkListStore" id="list">
+ <columns>
+ <!-- column-name id -->
+ <column type="gint"/>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name icon -->
+ <column type="gchararray"/>
+ <!-- column-name search -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkEntryCompletion" id="completion">
+ <property name="model">list</property>
+ <property name="text-column">1</property>
+ <property name="inline-completion">True</property>
+ <property name="popup-set-width">False</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="icon-cell">
+ <property name="stock_size">3</property>
+ </object>
+ <attributes>
+ <attribute name="icon-name">2</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="name-cell">
+ <property name="width">200</property>
+ </object>
+ <attributes>
+ <attribute name="markup">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <object class="GtkMenu" id="popup">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="reserve-toggle-size">False</property>
+ <property name="menu-type-hint">combo</property>
+ </object>
+ <object class="GtkBox" id="main-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkSearchEntry" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="activates-default">True</property>
+ <property name="width-chars">1</property>
+ <property name="caps-lock-warning">False</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ <property name="placeholder-text" translatable="yes">Add item</property>
+ <property name="completion">completion</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="menu-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="popup">popup</property>
+ <property name="use-popover">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+</interface>
diff --git a/share/ui/default-dialog-state.ini b/share/ui/default-dialog-state.ini
new file mode 100644
index 0000000..1de9a77
--- /dev/null
+++ b/share/ui/default-dialog-state.ini
@@ -0,0 +1,37 @@
+# This file describes initial state of dialogs after fresh Inkscape installation
+# (when ~/.config/inkscape/dialogs-state-ex.ini is missing).
+
+[Windows]
+Count=1
+
+[Window0Column0]
+# list of dialogs docked and open by default:
+ColumnWidth=330
+Notebook0Dialogs=Objects;FillStroke;
+NotebookCount=1
+BeforeCanvas=false
+
+[Window0]
+ColumnCount=1
+Floating=false
+
+# list of dialogs that will be open floating by default:
+# note: the 'state' is left empty to use default (display-dependent) coordinates
+[transient]
+state1=
+dialogs1=CloneTiler;
+state2=
+dialogs2=DocumentProperties;
+state3=
+dialogs3=DocumentResources;
+state4=
+dialogs4=FilterEffects;
+state5=
+dialogs5=FontCollections;
+state6=
+dialogs6=Input;
+state7=
+dialogs7=Preferences;
+state8=
+dialogs8=XMLEditor;
+count=8
diff --git a/share/ui/dialog-crash.glade b/share/ui/dialog-crash.glade
new file mode 100644
index 0000000..7735313
--- /dev/null
+++ b/share/ui/dialog-crash.glade
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkTextBuffer" id="stacktrace">
+ <property name="text">stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktrace
+stacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktracestacktra
+stacktrace
+stacktrace</property>
+ </object>
+ <object class="GtkMessageDialog" id="crash_dialog">
+ <property name="can-focus">False</property>
+ <property name="message-type">error</property>
+ <property name="buttons">ok</property>
+ <property name="resizable">True</property>
+ <property name="text" translatable="yes">Inkscape has crashed and will now close.</property>
+ <property name="secondary-text" translatable="yes">If you can reproduce this crash, please &lt;a href="https://inkscape.org/report"&gt;file a bug&lt;/a&gt; and include the backtrace from the area below.</property>
+ <property name="secondary-use-markup">True</property>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox">
+ <property name="can-focus">False</property>
+ <property name="homogeneous">True</property>
+ <property name="layout-style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="message">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">2</property>
+ <property name="margin-bottom">8</property>
+ <property name="label">(this text will be replaced) autosave file has been created</property>
+ <property name="use-markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="stacktrace_area">
+ <property name="name">stacktrace_area</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTextView">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="editable">False</property>
+ <property name="buffer">stacktrace</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-css.glade b/share/ui/dialog-css.glade
new file mode 100644
index 0000000..4a5febb
--- /dev/null
+++ b/share/ui/dialog-css.glade
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="CSSSelectorContainer">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline_position">top</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkEventBox" id="CSSSelectorEventAdd">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_right">5</property>
+ <property name="icon_name">list-add</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="CSSSelectorEventBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="CSSSelector">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Selector</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="CSSEditSelector">
+ <property name="can_focus">True</property>
+ <property name="no_show_all">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> {</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTreeView" id="CSSTree">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="hscroll_policy">natural</property>
+ <property name="vscroll_policy">natural</property>
+ <property name="enable_search">False</property>
+ <property name="fixed_height_mode">True</property>
+ <property name="hover_selection">True</property>
+ <property name="show_expanders">False</property>
+ <property name="tooltip_column">6</property>
+ <property name="activate_on_single_click">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="CSSTreeData"/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="CSSSelectorFilled">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="label">}</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-document-resources.glade b/share/ui/dialog-document-resources.glade
new file mode 100644
index 0000000..fe1d0b5
--- /dev/null
+++ b/share/ui/dialog-document-resources.glade
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="image-select">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">object-select</property>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">document-cleanup</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">document-export</property>
+ </object>
+ <object class="GtkListStore" id="liststore">
+ <columns>
+ <!-- column-name resource -->
+ <column type="gchararray"/>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name icon -->
+ <column type="gchararray"/>
+ <!-- column-name count -->
+ <column type="gulong"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Overview</col>
+ <col id="1">stats</col>
+ <col id="2">-</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="no">-</col>
+ <col id="1">-</col>
+ <col id="2">-</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Colors</col>
+ <col id="1">colors</col>
+ <col id="2">color-palette</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">External</col>
+ <col id="1">external</col>
+ <col id="2">file-link</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Filters</col>
+ <col id="1">filters</col>
+ <col id="2">dialog-filters</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Fonts</col>
+ <col id="1">fonts</col>
+ <col id="2">dialog-text-and-font</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Gradients</col>
+ <col id="1">gradients</col>
+ <col id="2">paint-gradient-linear</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Images</col>
+ <col id="1">images</col>
+ <col id="2">shape-image</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Markers</col>
+ <col id="1">markers</col>
+ <col id="2">markers</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Metadata</col>
+ <col id="1">metadata</col>
+ <col id="2">document-properties</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Patterns</col>
+ <col id="1">patterns</col>
+ <col id="2">paint-pattern</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Styles</col>
+ <col id="1">styles</col>
+ <col id="2">dialog-fill-and-stroke</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Swatches</col>
+ <col id="1">swatches</col>
+ <col id="2">paint-swatch</col>
+ <col id="3">0</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Symbols</col>
+ <col id="1">symbols</col>
+ <col id="2">shape-symbol</col>
+ <col id="3">0</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkBox" id="main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="tbar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">3</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkLabel" id="spacer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="edit">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Edit label</property>
+ <property name="image">image1</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="select">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Select this on canvas (if applicable) or in the XML dialog (e.g. a pattern in the 'defs' section)</property>
+ <property name="image">image-select</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="delete">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Delete selected item from the document</property>
+ <property name="image">image3</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="extract">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Export</property>
+ <property name="image">image4</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="width-chars">15</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="cleanup">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Remove unused definitions</property>
+ <property name="action-name">win.document-cleanup</property>
+ <property name="image">image2</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="paned">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="position">120</property>
+ <property name="position-set">True</property>
+ <property name="wide-handle">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-end">1</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView" id="tree">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="model">liststore</property>
+ <property name="headers-visible">False</property>
+ <property name="enable-search">False</property>
+ <property name="show-expanders">False</property>
+ <property name="activate-on-single-click">True</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="rsrc">
+ <property name="sizing">fixed</property>
+ <property name="title">name</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="width-request">50</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">1</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkIconView" id="iconview">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin">3</property>
+ <property name="item-width">55</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">1</property>
+ <property name="item-padding">5</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="name">iconview</property>
+ <property name="title">page0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkTreeView" id="treeview">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="enable-search">False</property>
+ <property name="show-expanders">False</property>
+ <property name="enable-grid-lines">both</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection">
+ <property name="mode">none</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="col0">
+ <property name="resizable">True</property>
+ <property name="spacing">3</property>
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Property</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="col1">
+ <property name="spacing">3</property>
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Count</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="col2">
+ <property name="spacing">3</property>
+ <property name="sizing">autosize</property>
+ <property name="title" translatable="yes">Value</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="markup">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="name">treeview</property>
+ <property name="title">page1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=2 n-rows=3 -->
+ <object class="GtkGrid" id="grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="name">grid</property>
+ <property name="title">page2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-export-prefs.glade b/share/ui/dialog-export-prefs.glade
new file mode 100644
index 0000000..cac748b
--- /dev/null
+++ b/share/ui/dialog-export-prefs.glade
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="gear_icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">gear</property>
+ </object>
+ <object class="GtkPopover" id="pref_popover">
+ <property name="can-focus">False</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="name">pref_label</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">5</property>
+ <property name="label" translatable="yes">Export Format Options</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkViewport" id="pref_holder">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkMenuButton" id="pref_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">gear_icon</property>
+ <property name="direction">left</property>
+ <property name="popover">pref_popover</property>
+ </object>
+</interface>
diff --git a/share/ui/dialog-export.glade b/share/ui/dialog-export.glade
new file mode 100644
index 0000000..288bfd4
--- /dev/null
+++ b/share/ui/dialog-export.glade
@@ -0,0 +1,1220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="export-box">
+ <property name="name">ExportDialog</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="double-buffered">False</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkNotebook" id="export-notebook">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="double-buffered">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-bottom">5</property>
+ <property name="show-border">False</property>
+ <child>
+ <object class="GtkOverlay">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox" id="single-image">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkScrolledWindow" id="si_scroll">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="double-buffered">False</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="window-placement-set">False</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hscroll-policy">natural</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=4 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="margin-bottom">3</property>
+ <child>
+ <object class="GtkRadioButton" id="si_s_selection">
+ <property name="label" translatable="yes">Selection</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export selected objects</property>
+ <property name="hexpand">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">si_s_document</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="si_s_document">
+ <property name="label" translatable="yes">Document</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export everything inside document</property>
+ <property name="hexpand">True</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="si_s_page">
+ <property name="label" translatable="yes">Page</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export cropped content inside the page</property>
+ <property name="hexpand">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">si_s_document</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="si_s_custom">
+ <property name="label" translatable="yes">Custom</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export custom area by specifying coordinates</property>
+ <property name="hexpand">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">si_s_document</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="si_pages_box">
+ <property name="can-focus">True</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkFlowBox" id="si_pages">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="vexpand">True</property>
+ <property name="column-spacing">6</property>
+ <property name="row-spacing">6</property>
+ <property name="max-children-per-line">10</property>
+ <property name="selection-mode">none</property>
+ <property name="activate-on-single-click">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=4 n-rows=7 -->
+ <object class="GtkGrid" id="si_sizes">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">5</property>
+ <property name="row-spacing">5</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkSpinButton" id="si_left_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ <property name="caps-lock-warning">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_bottom_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_width_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_height_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="label" translatable="yes">Image Size</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_top_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_right_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_height">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Height</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_width">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Width</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_left">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Left</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_right">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Right</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_bottom">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="si_label_top">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Top</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Width
+(px)</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Height
+(px)</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_img_width_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ <property name="input-purpose">number</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_img_height_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">DPI</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="si_dpi_sb">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">0</property>
+ <property name="max-width-chars">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="si_units_row">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Units</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="si_units">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="active">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">center</property>
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="spacing">20</property>
+ <child>
+ <object class="GtkBox" id="si_preview_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage" id="si_preview">
+ <property name="name">export_preview_single</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="si_show_preview">
+ <property name="label" translatable="yes">Show Preview</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="no-show-all">True</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="si_hide_all">
+ <property name="label" translatable="yes">Export Selected only</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="si_backgnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">7</property>
+ <property name="margin-start">7</property>
+ <property name="label" translatable="yes">Background color</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=3 n-rows=2 -->
+ <object class="GtkGrid" id="si_buttons">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">5</property>
+ <child>
+ <object class="GtkEntry" id="si_filename">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">5</property>
+ <property name="hexpand">True</property>
+ <property name="secondary-icon-name">folder-open</property>
+ <property name="secondary-icon-tooltip-text" translatable="yes">Browse export directory</property>
+ <property name="placeholder-text" translatable="yes">Filename</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="si_extention">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Select export format</property>
+ <property name="valign">center</property>
+ <property name="margin-start">5</property>
+ <property name="active">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="si_export">
+ <property name="label" translatable="yes">Export</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="si_prefs">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkBox" id="si_inprogress">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkSpinner">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="si_progress">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="show-text">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="si_cancel">
+ <property name="label" translatable="yes">Cancel Export</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Export a part of document</property>
+ <property name="label" translatable="yes">Single File</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="tab-expand">True</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkOverlay">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox" id="batch-export">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="b_scroll">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="window-placement-set">False</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <!-- n-columns=6 n-rows=6 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">5</property>
+ <property name="orientation">vertical</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkScrolledWindow" id="b_pbox_scroll">
+ <property name="height-request">150</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkFlowBox" id="b_preview_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="column-spacing">6</property>
+ <property name="row-spacing">6</property>
+ <property name="max-children-per-line">10</property>
+ <property name="selection-mode">multiple</property>
+ <property name="activate-on-single-click">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="layout-style">expand</property>
+ <child>
+ <object class="GtkRadioButton" id="b_s_selection">
+ <property name="label" translatable="yes">Selection</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export selected objects to separate files</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="b_s_layers">
+ <property name="label" translatable="yes">Layers</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export layers as separate files</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">b_s_selection</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="b_s_pages">
+ <property name="label" translatable="yes">Pages</property>
+ <property name="name">export_selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Export pages as separate files</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">b_s_selection</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="b_show_preview">
+ <property name="label" translatable="yes">Preview</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="b_num_elements">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">5 Items</property>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="b_hide_all">
+ <property name="label" translatable="yes">Export Selected Only</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="margin-end">8</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">6</property>
+ <property name="label" translatable="yes">Background color</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="b_backgnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">5</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=2 n-rows=2 -->
+ <object class="GtkGrid" id="b_export_list">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="row-spacing">10</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">6</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=1 n-rows=2 -->
+ <object class="GtkGrid" id="b_buttons">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">5</property>
+ <property name="row-spacing">5</property>
+ <property name="column-spacing">10</property>
+ <child>
+ <object class="GtkEntry" id="b_filename">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="secondary-icon-name">folder-open</property>
+ <property name="placeholder-text" translatable="yes">Filename</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="b_export">
+ <property name="label" translatable="yes">Export</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkBox" id="b_inprogress">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkSpinner">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">10</property>
+ <property name="margin-right">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">False</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="b_progress">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin-left">10</property>
+ <property name="margin-right">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="hexpand">True</property>
+ <property name="show-text">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="b_progress_batch">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin-left">10</property>
+ <property name="margin-right">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="show-text">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="b_cancel">
+ <property name="label" translatable="yes">Cancel Export</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Export to multiple files and file formats</property>
+ <property name="label" translatable="yes">Batch Export</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab-expand">True</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-filter-editor.glade b/share/ui/dialog-filter-editor.glade
new file mode 100644
index 0000000..b25a183
--- /dev/null
+++ b/share/ui/dialog-filter-editor.glade
@@ -0,0 +1,689 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkMenu" id="filters-ctx-menu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="reserve-toggle-size">False</property>
+ <child>
+ <object class="GtkMenuItem" id="item-duplicate">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Duplicate</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="item-remove">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Remove</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="item-rename">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">R_ename</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="item-select">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Select filter elements</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="gen-settings">
+ <property name="width-request">300</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">5</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkImage" id="image-connect">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">show-sources</property>
+ </object>
+ <object class="GtkImage" id="image-del">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete</property>
+ </object>
+ <object class="GtkImage" id="image-delete">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete</property>
+ </object>
+ <object class="GtkImage" id="image-dup">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-duplicate</property>
+ </object>
+ <object class="GtkImage" id="image-dup-2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-duplicate</property>
+ </object>
+ <object class="GtkImage" id="image-new">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">list-add</property>
+ </object>
+ <object class="GtkImage" id="image-new-2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">list-add</property>
+ </object>
+ <object class="GtkImage" id="image-select">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">object-select</property>
+ </object>
+ <object class="GtkPopover" id="filters-popover">
+ <property name="width-request">300</property>
+ <property name="height-request">350</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">5</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkScrolledWindow" id="filter-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkTreeView" id="filter-list">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="enable-search">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="btn-new">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Create a new filter</property>
+ <property name="image">image-new-2</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-dup">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Duplicate current filter</property>
+ <property name="image">image-dup-2</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-del">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Delete current filter</property>
+ <property name="image">image-del</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-select">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Select objects that use this filter</property>
+ <property name="image">image-select</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="stock-filters">
+ <property name="can-focus">True</property>
+ <property name="margin-start">8</property>
+ <property name="width-chars">3</property>
+ <property name="caps-lock-warning">False</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ <property name="placeholder-text" translatable="yes">Add stock filter</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="info-popover">
+ <property name="width-request">300</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">5</property>
+ <child>
+ <!-- n-columns=2 n-rows=4 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="column-spacing">5</property>
+ <child>
+ <object class="GtkImage" id="effect-icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">effect</property>
+ <property name="icon_size">5</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTextView" id="effect-info">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="editable">False</property>
+ <property name="wrap-mode">word</property>
+ <property name="cursor-visible">False</property>
+ <property name="accepts-tab">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTextView" id="effect-desc">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="editable">False</property>
+ <property name="wrap-mode">word</property>
+ <property name="top-margin">4</property>
+ <property name="indent">8</property>
+ <property name="cursor-visible">False</property>
+ <property name="accepts-tab">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="effect-image">
+ <property name="can-focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <!-- n-columns=3 n-rows=4 -->
+ <object class="GtkGrid" id="main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-top">3</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">3</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="label">
+ <property name="label" translatable="yes">Filter</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Apply filter to selection</property>
+ <property name="margin-end">5</property>
+ <property name="draw-indicator">True</property>
+ <style>
+ <class name="dialog-heading"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="popover">filters-popover</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="filter-name">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">-</property>
+ <property name="ellipsize">end</property>
+ <property name="single-line-mode">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="new-filter">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Create a new filter</property>
+ <property name="image">image-new</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="filter-opt">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">General filter parameters</property>
+ <property name="relief">none</property>
+ <property name="popover">gen-settings</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">gear</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="paned">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="position">200</property>
+ <child>
+ <object class="GtkScrolledWindow" id="filter">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">2</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="shadow-type">in</property>
+ <property name="propagate-natural-height">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="filter-effects"/>
+ </style>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="params-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="min-content-height">50</property>
+ <property name="overlay-scrolling">False</property>
+ <property name="propagate-natural-height">True</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox" id="params">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="effect-header">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">2</property>
+ <child>
+ <object class="GtkLabel" id="cur-effect">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">label</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dialog-heading"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="info-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="margin-left">5</property>
+ <property name="margin-start">5</property>
+ <property name="relief">none</property>
+ <property name="popover">info-popover</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">info-outline</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="dup-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Duplicate effect</property>
+ <property name="image">image-dup</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="del-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Remove effect</property>
+ <property name="image">image-delete</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="effect-params"/>
+ </style>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="search-wide">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="connect-box-wide">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="connect-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkToggleButton" id="btn-connect">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Show all filter input sources</property>
+ <property name="halign">end</property>
+ <property name="image">image-connect</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkSizeGroup" id="param-labels">
+ <widgets>
+ <widget name="cur-effect"/>
+ </widgets>
+ </object>
+</interface>
diff --git a/share/ui/dialog-font-collections.glade b/share/ui/dialog-font-collections.glade
new file mode 100644
index 0000000..2e338aa
--- /dev/null
+++ b/share/ui/dialog-font-collections.glade
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="refresh_button_image">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">view-refresh</property>
+ </object>
+ <object class="GtkBox" id="contents">
+ <property name="name">TextEdit Dialog Box</property>
+ <property name="width-request">510</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkBox" id="font_list_filter_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkSearchEntry" id="search_entry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Search fonts present in the font list</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Reset the font list</property>
+ <property name="margin-start">2</property>
+ <property name="image">refresh_button_image</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="paned">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="position">250</property>
+ <property name="wide-handle">True</property>
+ <child>
+ <object class="GtkBox" id="font_list_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="font_count_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="no">label</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="collections_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">8</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkBox" id="buttons_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <child>
+ <object class="GtkButton" id="create_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Create new collection</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="edit_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Edit selected collection</property>
+ <property name="margin-start">2</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="delete_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Delete selected item</property>
+ <property name="margin-start">2</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-livepatheffect-add.glade b/share/ui/dialog-livepatheffect-add.glade
new file mode 100644
index 0000000..bb73574
--- /dev/null
+++ b/share/ui/dialog-livepatheffect-add.glade
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkDialog" id="LPEDialogSelector">
+ <property name="name">LPEDialogSelector</property>
+ <property name="can-focus">False</property>
+ <property name="title" translatable="yes">Live Path Effects Selector</property>
+ <property name="modal">True</property>
+ <property name="window-position">center-on-parent</property>
+ <property name="destroy-with-parent">True</property>
+ <property name="type-hint">dialog</property>
+ <property name="skip-taskbar-hint">True</property>
+ <property name="gravity">static</property>
+ <property name="has-resize-grip">True</property>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox">
+ <property name="can-focus">False</property>
+ <property name="layout-style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="LPESelector">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkSearchBar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="search-mode-enabled">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <child>
+ <object class="GtkSearchEntry" id="LPEFilter">
+ <property name="width-request">300</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="has-focus">True</property>
+ <property name="is-focus">True</property>
+ <property name="can-default">True</property>
+ <property name="has-default">True</property>
+ <property name="activates-default">True</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ <style>
+ <class name="iconymbolic"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="LPESelectorAllButtonBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="layout-style">expand</property>
+ <child>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioPackLess">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">False</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectPackLessImage">
+ <property name="name">LPESelectorEffectPackLessImage</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel-size">22</property>
+ <property name="icon-name">pack-less</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioPackMore">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">LPESelectorEffectRadioPackLess</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectPackMoreImage">
+ <property name="name">LPESelectorEffectPackMoreImage</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel-size">22</property>
+ <property name="icon-name">pack-more</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="LPESelectorEffectRadioList">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">LPESelectorEffectRadioPackLess</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectListImage">
+ <property name="name">LPESelectorEffectListImage</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel-size">22</property>
+ <property name="icon-name">hamburger-menu</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectEventFavShow">
+ <property name="name">LPESelectorEffectEventFavShow</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectFavShowImage">
+ <property name="name">LPESelectorEffectFavShowImage</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="pixel-size">25</property>
+ <property name="icon-name">draw-star-outline</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="LPEExperimental">
+ <property name="name">LPEExperimental</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Show Experimental</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="searchbar"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPEInfo">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="label" translatable="yes">Message</property>
+ <property name="justify">center</property>
+ <property name="ellipsize">end</property>
+ <style>
+ <class name="lpeinfo"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="LPEScrolled">
+ <property name="name">LPEScrolled</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="shadow-type">in</property>
+ <property name="min-content-width">800</property>
+ <property name="min-content-height">10</property>
+ <property name="propagate-natural-height">True</property>
+ <child>
+ <object class="GtkViewport" id="LPEViewport">
+ <property name="name">LPEViewport</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkFlowBox" id="LPESelectorFlowBox">
+ <property name="name">LPESelectorFlowBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">start</property>
+ <property name="column-spacing">1</property>
+ <property name="row-spacing">1</property>
+ <property name="min-children-per-line">3</property>
+ <property name="max-children-per-line">30</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <style>
+ <class name="symbolic"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="LPESelectorEffectInfoPop">
+ <property name="name">LPESelectorEffectInfoPop</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">start</property>
+ <property name="relative-to">LPEInfo</property>
+ <property name="position">bottom</property>
+ <property name="modal">False</property>
+ <property name="transitions-enabled">False</property>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectInfoEventBox">
+ <property name="name">LPESelectorEffectInfoEventBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectInfoIcon">
+ <property name="name">LPESelectorEffectInfoIcon</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="pixel-size">40</property>
+ <property name="icon-name">align-vertical-baseline</property>
+ <property name="icon_size">6</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPESelectorEffectInfoName">
+ <property name="name">LPESelectorEffectInfoName</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Name</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">20</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPESelectorEffectInfoDescription">
+ <property name="name">LPESelectorEffectInfoDescription</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Description</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">20</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="popover symbolic"/>
+ </style>
+ </object>
+</interface>
diff --git a/share/ui/dialog-livepatheffect-effect.glade b/share/ui/dialog-livepatheffect-effect.glade
new file mode 100644
index 0000000..599cce5
--- /dev/null
+++ b/share/ui/dialog-livepatheffect-effect.glade
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkEventBox" id="LPESelectorEffect">
+ <property name="name">LPESelectorEffect</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">start</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkBox" id="LPESelectorEffectBox">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="double-buffered">False</property>
+ <property name="halign">start</property>
+ <property name="hexpand">False</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkOverlay" id="LPEOverlay">
+ <property name="name">LPEOverlay</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="LPEIcon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="pixel-size">60</property>
+ <property name="icon-name">align-vertical-baseline</property>
+ <property name="icon_size">6</property>
+ </object>
+ <packing>
+ <property name="index">1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkEventBox" id="LPESelectorEffectEventFavTop">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">end</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectFavTop">
+ <property name="name">LPESelectorEffectFavTop</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">start</property>
+ <property name="pixel-size">20</property>
+ <property name="icon-name">draw-star</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="index">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPEName">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">LPEName</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">14</property>
+ <property name="max-width-chars">23</property>
+ <style>
+ <class name="lpename"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPEDescription">
+ <property name="width-request">200</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="label" translatable="yes">Description</property>
+ <property name="use-markup">True</property>
+ <property name="ellipsize">end</property>
+ <property name="single-line-mode">True</property>
+ <property name="lines">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">10</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="LPEExperimentalToggle">
+ <property name="label" translatable="yes">Experimental</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="no-show-all">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectEventExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="pixel-size">16</property>
+ <property name="icon-name">go-down</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="info"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox" id="LPESelectorButtonBox">
+ <property name="name">LPESelectorButtonBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="baseline-position">top</property>
+ <property name="layout-style">center</property>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectEventInfo">
+ <property name="name">LPESelectorEffectEventInfo</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">start</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectInfo">
+ <property name="name">LPESelectorEffectInfo</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">start</property>
+ <property name="pixel-size">23</property>
+ <property name="icon-name">info-outline</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="info"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">0</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectEventFav">
+ <property name="name">LPESelectorEffectEventFav</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkImage" id="LPESelectorEffectFav">
+ <property name="name">LPESelectorEffectFav</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="pixel-size">23</property>
+ <property name="icon-name">draw-star-outline</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPESelectorEffectEventApply">
+ <property name="name">LPESelectorEffectEventApply</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkImage">
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="pixel-size">23</property>
+ <property name="icon-name">on-outline</property>
+ <property name="icon_size">2</property>
+ <style>
+ <class name="apply"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">2</property>
+ <property name="non-homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPEUntranslatedName">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="label" translatable="no">LPEUntranslatedName</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">14</property>
+ <property name="max-width-chars">23</property>
+ <style>
+ <class name="lpename"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <style>
+ <class name="lpeselectoreffect"/>
+ </style>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-livepatheffect-item.glade b/share/ui/dialog-livepatheffect-item.glade
new file mode 100644
index 0000000..ff15401
--- /dev/null
+++ b/share/ui/dialog-livepatheffect-item.glade
@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkMenu" id="LPEEffectMenu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Duplicate</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="LPEMoveUp">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Move up</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="LPEMoveDown">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Move down</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Apply this effect, and all effects above this one, to the path. This removes those effects from the stack.</property>
+ <property name="label" translatable="yes">Flatten</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="LPESetDefault">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Use the current values as custom defaults for this LPE</property>
+ <property name="label" translatable="yes">Set custom defaults</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="LPEResetDefault">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Reset default settings of this LPE to Inkscape's default values</property>
+ <property name="label" translatable="yes">Forget custom defaults</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="LPEtoggleFavorite">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Set Favorite</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="dndImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="margin-left">2</property>
+ <property name="margin-start">2</property>
+ <property name="icon-name">dnd</property>
+ <property name="icon_size">2</property>
+ </object>
+ <object class="GtkImage" id="removeImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete-symbolic</property>
+ <property name="icon_size">2</property>
+ </object>
+ <object class="GtkImage" id="removeImage1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete-symbolic</property>
+ <property name="icon_size">2</property>
+ </object>
+ <object class="GtkImage" id="visibilityImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">object-visible-symbolic</property>
+ <property name="icon_size">2</property>
+ </object>
+ <object class="GtkBox" id="LPEEffect">
+ <property name="name">LPEEffectItem</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="name">LPEEffectItem</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkOverlay">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkExpander" id="LPEExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label-fill">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="label">
+ <object class="GtkBox">
+ <property name="name">LPEExpanderBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkBox" id="LPEExpanderBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="LPEIconImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-right">5</property>
+ <property name="margin-end">5</property>
+ <property name="pixel-size">25</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPENameLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="no">expander</property>
+ <property name="ellipsize">end</property>
+ <property name="single-line-mode">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="width-request">145</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkBox">
+ <property name="height-request">30</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="events">GDK_EXPOSURE_MASK</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkEventBox" id="LPEOpenExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="width-request">145</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="index">1</property>
+ </packing>
+ </child>
+ <child type="overlay">
+ <object class="GtkBox" id="LPEActionButtons">
+ <property name="name">LPEActionButtons</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkEventBox" id="LPEHide">
+ <property name="name">eventbutton</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Show/hide this Live Path Effect</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkButton">
+ <property name="width-request">30</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="image">visibilityImage</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <style>
+ <class name="minbutton"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPEErase">
+ <property name="name">eventbutton</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Remove this Live Path Effect</property>
+ <property name="visible-window">False</property>
+ <child>
+ <object class="GtkButton">
+ <property name="width-request">30</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">False</property>
+ <property name="image">removeImage</property>
+ <property name="relief">none</property>
+ <property name="always-show-image">True</property>
+ <style>
+ <class name="minbutton"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="LPEEffectMenuButton">
+ <property name="name">LPEEffectMenuButton</property>
+ <property name="width-request">30</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">False</property>
+ <property name="popup">LPEEffectMenu</property>
+ <property name="use-popover">False</property>
+ <child>
+ <object class="GtkEventBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Menu with options related to this Live Path Effect</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-down-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="LPEDrag">
+ <property name="name">LPEDrag</property>
+ <property name="width-request">35</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Reorder this Live Path Effect</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="image">dndImage</property>
+ <property name="relief">none</property>
+ <property name="xalign">1</property>
+ <property name="image-position">right</property>
+ <property name="always-show-image">True</property>
+ <style>
+ <class name="LPEDrag"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="pass-through">True</property>
+ <property name="index">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <style>
+ <class name="activatable"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <style>
+ <class name="activatable"/>
+ </style>
+ </object>
+</interface>
diff --git a/share/ui/dialog-livepatheffect.glade b/share/ui/dialog-livepatheffect.glade
new file mode 100644
index 0000000..f4e4b06
--- /dev/null
+++ b/share/ui/dialog-livepatheffect.glade
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="LPEContainer">
+ <property name="name">LPEContainer</property>
+ <property name="width-request">250</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-bottom">5</property>
+ <child>
+ <object class="GtkBox" id="LPEAddContainer">
+ <property name="name">LPEAddContainer</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="LPEGallery">
+ <property name="name">LPESelectorEffectEventFavShow</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="tooltip-text" translatable="yes">Open LPE Gallery</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <child>
+ <object class="GtkImage">
+ <property name="name">LPESelectorEffectFavShowImage</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="icon-name">arrange-grid</property>
+ <style>
+ <class name="fab"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="LPECurrentItem">
+ <property name="name">LPECurrentItem</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="events"/>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="LPESelectionInfo">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">20</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkListBox" id="LPEListBox">
+ <property name="name">LPEListBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="selection-mode">none</property>
+ <style>
+ <class name="lpelistbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkListBox" id="LPEParentBox">
+ <property name="name">LPEParentBox</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="selection-mode">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkListStore" id="LPEList">
+ <columns>
+ <!-- column-name id -->
+ <column type="gint"/>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name icon -->
+ <column type="gchararray"/>
+ <!-- column-name visible -->
+ <column type="gboolean"/>
+ <!-- column-name search -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+</interface>
diff --git a/share/ui/dialog-objects.glade b/share/ui/dialog-objects.glade
new file mode 100644
index 0000000..9d24ac7
--- /dev/null
+++ b/share/ui/dialog-objects.glade
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adjustment-opacity">
+ <property name="upper">100</property>
+ <property name="step-increment">5</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkPopover" id="object-menu">
+ <property name="width-request">222</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">5</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Opacity</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="opacity-slider">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-opacity</property>
+ <property name="round-digits">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-top">10</property>
+ <property name="label" translatable="yes">Blend mode</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=2 n-rows=3 -->
+ <object class="GtkGrid" id="modes">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image-down">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-down</property>
+ </object>
+ <object class="GtkImage" id="image-insert">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">layer-new</property>
+ </object>
+ <object class="GtkImage" id="image-remove">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-delete</property>
+ </object>
+ <object class="GtkImage" id="image-up">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-up</property>
+ </object>
+ <object class="GtkPopover" id="settings-menu">
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">7</property>
+ <property name="margin-bottom">7</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkCheckButton" id="setting-layers">
+ <property name="label" translatable="yes">Only show layers</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="setting-track">
+ <property name="label" translatable="yes">Expand to display selection</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="header">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">3</property>
+ <child>
+ <object class="GtkButton" id="insert-layer">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.layer-new</property>
+ <property name="image">image-insert</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="move-up">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.selection-stack-up</property>
+ <property name="image">image-up</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="move-down">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.selection-stack-down</property>
+ <property name="image">image-down</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove-object">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">app.delete-selection</property>
+ <property name="image">image-remove</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="settings-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Layers and Objects dialog settings</property>
+ <property name="relief">none</property>
+ <property name="popover">settings-menu</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">gear</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">5</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-paint-servers.glade b/share/ui/dialog-paint-servers.glade
new file mode 100644
index 0000000..42b2055
--- /dev/null
+++ b/share/ui/dialog-paint-servers.glade
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <!-- n-columns=2 n-rows=3 -->
+ <object class="GtkGrid" id="PaintServersContainerGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">3</property>
+ <property name="margin-end">3</property>
+ <property name="margin-top">3</property>
+ <property name="row-spacing">3</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="ServerLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Server:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="ServersDropdown">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="TargetLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Change:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="TargetRadioContainer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkRadioButton" id="TargetRadioFill">
+ <property name="label" translatable="yes">Fill</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Apply the paint to the fill of objects</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="TargetRadioStroke">
+ <property name="label" translatable="yes">Stroke</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Apply the paint to the stroke of objects</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">TargetRadioFill</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="IconScroller">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="vscrollbar-policy">always</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkIconView" id="PaintIcons">
+ <property name="width-request">200</property>
+ <property name="height-request">200</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin">6</property>
+ <property name="vexpand">True</property>
+ <property name="item-width">100</property>
+ <property name="tooltip-column">0</property>
+ <property name="activate-on-single-click">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-save-template.glade b/share/ui/dialog-save-template.glade
new file mode 100644
index 0000000..ab34ee5
--- /dev/null
+++ b/share/ui/dialog-save-template.glade
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkDialog" id="dialog">
+ <property name="width_request">400</property>
+ <property name="height_request">200</property>
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">Save Document as Template</property>
+ <property name="type_hint">dialog</property>
+ <child type="titlebar">
+ <placeholder/>
+ </child>
+ <child internal-child="vbox">
+ <object class="GtkBox">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">2</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox">
+ <property name="can_focus">False</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Name: </property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Author: </property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Description: </property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Keywords: </property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="author">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="description">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="keywords">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="set-default">
+ <property name="label" translatable="yes">Set as default template</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-symbols.glade b/share/ui/dialog-symbols.glade
new file mode 100644
index 0000000..31c84ad
--- /dev/null
+++ b/share/ui/dialog-symbols.glade
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adjustment-symbol-size">
+ <property name="upper">50</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-zoom">
+ <property name="lower">-20</property>
+ <property name="upper">20</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkPopover" id="settings-popover">
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=2 n-rows=5 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="row-spacing">2</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Tile size</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="symbol-size">
+ <property name="width-request">120</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-symbol-size</property>
+ <property name="show-fill-level">True</property>
+ <property name="round-digits">1</property>
+ <property name="digits">0</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show-names">
+ <property name="label" translatable="yes">Show names</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="zoom-to-fit">
+ <property name="label" translatable="yes">Zoom to fit</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Zoom</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="zoom">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-zoom</property>
+ <property name="show-fill-level">True</property>
+ <property name="round-digits">0</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">list-add</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">list-remove</property>
+ </object>
+ <object class="GtkPopover" id="set-popover">
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=2 n-rows=2 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Symbol set</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="set-search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Search for symbol set</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="width-request">300</property>
+ <property name="height-request">400</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkIconView" id="symbol-sets">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin">0</property>
+ <property name="item-orientation">horizontal</property>
+ <property name="item-width">275</property>
+ <property name="row-spacing">0</property>
+ <property name="column-spacing">1</property>
+ <property name="item-padding">4</property>
+ <property name="activate-on-single-click">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="main-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">1</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkMenuButton" id="symbol-set-popup">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="popover">set-popover</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel" id="cur-set">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="no">name of the current symbol set</property>
+ <property name="ellipsize">end</property>
+ <property name="single-line-mode">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Search for symbol</property>
+ <property name="width-chars">15</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="info">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">15</property>
+ <property name="margin-top">3</property>
+ <property name="label" translatable="no">label</property>
+ <property name="xalign">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkOverlay" id="overlay">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scroller">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-top">1</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkIconView" id="icon-view">
+ <property name="height-request">250</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin">0</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <property name="tooltip-column">1</property>
+ <property name="item-padding">4</property>
+ <property name="activate-on-single-click">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="index">-1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="tools">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkButton" id="add-symbol">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Convert selected object(s) to symbol</property>
+ <property name="image">image1</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="remove-symbol">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Convert selected symbol to object, and all symbols of this type to clones of this object</property>
+ <property name="image">image2</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="settings">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="relief">none</property>
+ <property name="direction">up</property>
+ <property name="popover">settings-popover</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">gear</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-text-edit.glade b/share/ui/dialog-text-edit.glade
new file mode 100644
index 0000000..54b1b1c
--- /dev/null
+++ b/share/ui/dialog-text-edit.glade
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkPopover" id="filter_popover">
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkBox" id="popover_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">4</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkListBox" id="collections_list">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="frame_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Font Collections</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="collection_editor_button">
+ <property name="label" translatable="yes">Open Collections Editor</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Open the Font Collections Manager dialogue</property>
+ <property name="margin-top">4</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="reset_image">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">view-refresh</property>
+ </object>
+ <object class="GtkTextBuffer" id="text_buffer"/>
+ <object class="GtkBox" id="contents">
+ <property name="name">TextEdit Dialog Box</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="name">TextEdit Notebook</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkBox" id="font_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">4</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="settings_and_filters_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkSearchEntry" id="search_entry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Search fonts</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Reset filters and show all available fonts</property>
+ <property name="margin-start">2</property>
+ <property name="image">reset_image</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="filter_menu_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Font Collections</property>
+ <property name="margin-start">2</property>
+ <property name="margin-end">4</property>
+ <property name="popover">filter_popover</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="font_count_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="no">label</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">text</property>
+ <property name="justify">center</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">4</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Font</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="feat_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">4</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_label2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">text</property>
+ <property name="justify">center</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">4</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Features</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTextView" id="text_view">
+ <property name="height-request">64</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="wrap-mode">word</property>
+ <property name="buffer">text_buffer</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">_Text</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <property name="layout-style">start</property>
+ <child>
+ <object class="GtkButton" id="setasdefault_button">
+ <property name="label" translatable="yes">Set as _default</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="apply_button">
+ <property name="label" translatable="yes">Apply</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="can-default">True</property>
+ <property name="receives-default">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ <property name="secondary">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">4</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-trace.glade b/share/ui/dialog-trace.glade
new file mode 100644
index 0000000..c34d366
--- /dev/null
+++ b/share/ui/dialog-trace.glade
@@ -0,0 +1,1555 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkAdjustment" id="MS_scans">
+ <property name="lower">2</property>
+ <property name="upper">256</property>
+ <property name="value">8</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="PA_curves">
+ <property name="lower">-10</property>
+ <property name="upper">10</property>
+ <property name="value">1</property>
+ <property name="step-increment">0.20</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="PA_islands">
+ <property name="lower">-20</property>
+ <property name="upper">20</property>
+ <property name="value">5</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="PA_sparse1">
+ <property name="lower">2</property>
+ <property name="upper">8</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="PA_sparse2">
+ <property name="lower">-10</property>
+ <property name="upper">10</property>
+ <property name="value">1</property>
+ <property name="step-increment">0.20</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="SS_AT_ET_T">
+ <property name="lower">1</property>
+ <property name="upper">10</property>
+ <property name="value">2</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="SS_AT_FI_T">
+ <property name="lower">1</property>
+ <property name="upper">20</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="SS_BC_T">
+ <property name="upper">1</property>
+ <property name="value">0.45</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkAdjustment" id="SS_CQ_T">
+ <property name="lower">2</property>
+ <property name="upper">64</property>
+ <property name="value">8</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="SS_ED_T">
+ <property name="upper">1</property>
+ <property name="value">0.65</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkTextBuffer" id="helptext">
+ <property name="text" translatable="yes">This dialog allows you to automatically convert a raster graphic into vector paths. Several options are available for different use cases:
+ * "Brightness cutoff" detects areas that are darker than the threshold value and creates a path enclosing them (using potrace).
+ * "Edge detection" detects changes greater than the given threshold value in the brightness of color patches and creates paths to separate them (using potrace).
+ * "Color quantization" separates the image into the given number of colors, and separates them with a path (using potrace).
+ * "Autotrace" uses the autotrace algorithm with the given option.
+ * "Centerline tracing" tries to vectorize a line drawing (with autotrace).
+ * "Multicolor" options separate the image into a number of scans, depending on brightness, color separation, or gray levels (using potrace), or using the autotrace algorithm, and create several paths for those.
+ * The "Pixel art" tab allows to use an algorithm for pixel recognition or one for depixelizing to vectorize pixel art images.
+
+ * NOTE:
+ 1) Save your work before tracing
+ 2) Watch your pixel count: "Trace pixel art" creates up to one path per pixel. It is not recommended for images that are not pixel art.
+ 3) Autotrace is slower than potrace, it is not recommended for big images. Preprocessing your images to increase contrast is recommended.
+ 4) If your goal is to get few nodes and good precision, manual tracing is always best.</property>
+ </object>
+ <object class="GtkPopover" id="popover1">
+ <property name="width-request">300</property>
+ <property name="height-request">400</property>
+ <property name="can-focus">False</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <object class="GtkTextView">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscroll-policy">natural</property>
+ <property name="vscroll-policy">natural</property>
+ <property name="editable">False</property>
+ <property name="wrap-mode">word</property>
+ <property name="buffer">helptext</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">off-outline-symbolic</property>
+ </object>
+ <object class="GtkAdjustment" id="optimize">
+ <property name="upper">5</property>
+ <property name="value">0.20</property>
+ <property name="step-increment">0.05</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="smooth">
+ <property name="upper">1.34</property>
+ <property name="value">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="speckles">
+ <property name="upper">1000</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkBox" id="mainBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="orient_box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkNotebook" id="choice_tab">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">start</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=4 n-rows=14 -->
+ <object class="GtkGrid" id="_param_grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkCheckButton" id="CB_speckles">
+ <property name="label" translatable="yes">Speckles</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Ignore small spots (speckles) in the bitmap</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_smooth">
+ <property name="label" translatable="yes">Smooth corners</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Smooth out sharp corners of the trace</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="width-request">60</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">speckles</property>
+ <property name="round-digits">1</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">10</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">smooth</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">11</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_optimize">
+ <property name="label" translatable="yes">Optimize</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Try to optimize paths by joining adjacent Bezier curve segments</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">optimize</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">12</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Threshold</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Edge threshold</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Colors</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Filter iterations</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Error threshold</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_invert">
+ <property name="label" translatable="yes">Invert image</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Invert black and white regions</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Details:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_AT_ET_T</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_AT_FI_T</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_CQ_T</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_ED_T</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_BC_T</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="CBT_SS">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="active">0</property>
+ <items>
+ <item id="SS_BC" translatable="yes">Brightness cutoff</item>
+ <item id="SS_ED" translatable="yes">Edge detection</item>
+ <item id="SS_CQ" translatable="yes">Color quantization</item>
+ <item id="SS_AT" translatable="yes">Autotrace</item>
+ <item id="SS_CT" translatable="yes">Centerline tracing (autotrace)</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Detection mode:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_BC_T</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_ED_T</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_CQ_T</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_AT_FI_T</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">SS_AT_ET_T</property>
+ <property name="digits">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Speckles of up to this many pixels will be suppressed</property>
+ <property name="adjustment">speckles</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Increase this to smooth corners more</property>
+ <property name="adjustment">smooth</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Increase this to reduce the number of nodes in the trace by more aggressive optimization</property>
+ <property name="adjustment">optimize</property>
+ <property name="digits">3</property>
+ <property name="value">0.20</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_SIOX">
+ <property name="label" translatable="yes">User-assisted trace</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Cover the area you want to select as the foreground then select both objects</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">13</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Single scan</property>
+ </object>
+ <packing>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=4 n-rows=14 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkComboBoxText" id="CBT_MS">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="active">0</property>
+ <items>
+ <item id="MS_BS" translatable="yes">Brightness steps</item>
+ <item id="MS_C" translatable="yes">Colors</item>
+ <item id="MS_BW" translatable="yes">Grays</item>
+ <item id="MS_AT" translatable="yes">Autotrace (slower)</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Scans</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Detection mode:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_MS_smooth">
+ <property name="label" translatable="yes">Smooth</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Apply Gaussian blur to the bitmap before tracing</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_MS_rb">
+ <property name="label" translatable="yes">Remove background</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Remove bottom (background) layer when done</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The desired number of scans</property>
+ <property name="adjustment">MS_scans</property>
+ <property name="value">8</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Details:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">8</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="width-request">60</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">speckles</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">10</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Speckles of up to this many pixels will be suppressed</property>
+ <property name="adjustment">speckles</property>
+ <property name="value">2</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_speckles1">
+ <property name="label" translatable="yes">Speckles</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Ignore small spots (speckles) in the bitmap</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_optimize1">
+ <property name="label" translatable="yes">Optimize</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Try to optimize paths by joining adjacent Bezier curve segments</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">optimize</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">12</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Increase this to smooth corners more</property>
+ <property name="adjustment">smooth</property>
+ <property name="digits">2</property>
+ <property name="value">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">smooth</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">11</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_smooth1">
+ <property name="label" translatable="yes">Smooth corners</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Smooth out sharp corners of the trace</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Increase this to reduce the number of nodes in the trace by more aggressive optimization</property>
+ <property name="adjustment">optimize</property>
+ <property name="digits">3</property>
+ <property name="value">0.20</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_SIOX1">
+ <property name="label" translatable="yes">User-assisted trace</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Cover the area you want to select as the foreground then select both objects</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">13</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">MS_scans</property>
+ <property name="round-digits">1</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_MS_stack">
+ <property name="label" translatable="yes">Stack</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Stack scans on top of one another (no gaps) instead of tiling (usually with gaps)</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Multicolor</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <!-- n-columns=3 n-rows=10 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">2</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Favors connections that are part of a long curve (multiplier)</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Curves</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Avoid single disconnected pixels (weight)</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Islands</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Favors connections that are part of foreground color</property>
+ <property name="halign">start</property>
+ <property name="margin-top">8</property>
+ <property name="label" translatable="yes">Sparse pixels:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The heuristic computed vote will be multiplied by this value</property>
+ <property name="adjustment">PA_curves</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">A constant vote value</property>
+ <property name="adjustment">PA_islands</property>
+ <property name="numeric">True</property>
+ <property name="value">5</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The radius of the window analyzed</property>
+ <property name="adjustment">PA_sparse1</property>
+ <property name="numeric">True</property>
+ <property name="value">2</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The heuristic computed vote will be multiplied by this value</property>
+ <property name="adjustment">PA_sparse2</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes"> Heuristics:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="width-request">60</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">PA_curves</property>
+ <property name="round-digits">1</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">PA_islands</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">PA_sparse1</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">PA_sparse2</property>
+ <property name="draw-value">False</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="label" translatable="yes">B-splines</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Preserve staircasing artifacts</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">RB_PA_voronoi</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="RB_PA_voronoi">
+ <property name="label" translatable="yes">Voronoi</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Output composed of straight lines</property>
+ <property name="halign">start</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">8</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes"> Output:</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="CB_PA_optimize">
+ <property name="label" translatable="yes">Optimize</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Try to optimize paths by joining adjacent Bezier curve segments</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Favors connections that are part of foreground color</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Multiplier</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Favors connections that are part of foreground color</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Window radius</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Pixel art</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="_preview_frame">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">5</property>
+ <property name="margin-right">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkDrawingArea" id="previewArea">
+ <property name="width-request">100</property>
+ <property name="height-request">100</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">4</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="_live_preview">
+ <property name="label" translatable="yes">Live updates</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="B_Update">
+ <property name="label" translatable="yes">Update preview</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">4</property>
+ <property name="label" translatable="yes">Preview:</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <child>
+ <object class="GtkMenuButton" id="help-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Instructions</property>
+ <property name="margin-end">4</property>
+ <property name="direction">up</property>
+ <property name="popover">popover1</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">info-outline-symbolic</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkStack" id="stack">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="transition-type">crossfade</property>
+ <child>
+ <object class="GtkBox" id="boxchild1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="spacing">3</property>
+ <property name="layout-style">center</property>
+ <child>
+ <object class="GtkButton" id="B_RESET">
+ <property name="label">gtk-revert-to-saved</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="use-stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="B_OK">
+ <property name="label" translatable="yes">Apply</property>
+ <property name="width-request">150</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="boxchild2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="B_STOP">
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Abort trace operation</property>
+ <property name="image">image1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkProgressBar" id="progressbar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">5</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="name">page0</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/dialog-xml.glade b/share/ui/dialog-xml.glade
new file mode 100644
index 0000000..2caee9d
--- /dev/null
+++ b/share/ui/dialog-xml.glade
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">xml-element-new</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">xml-text-new</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">xml-node-duplicate</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">xml-node-delete</property>
+ </object>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">format-indent-less</property>
+ </object>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">format-indent-more</property>
+ </object>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-up</property>
+ </object>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-down</property>
+ </object>
+ <object class="GtkMenu" id="menu-popup">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkRadioMenuItem" id="auto-layout">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Automatic layout</property>
+ <property name="use-underline">True</property>
+ <property name="draw-as-radio">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="horz-layout">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Horizontal layout</property>
+ <property name="use-underline">True</property>
+ <property name="draw-as-radio">True</property>
+ <property name="group">auto-layout</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRadioMenuItem" id="vert-layout">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Vertical layout</property>
+ <property name="use-underline">True</property>
+ <property name="draw-as-radio">True</property>
+ <property name="group">auto-layout</property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="buttons">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">2</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkButton" id="new-elem">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">New element node</property>
+ <property name="image">image1</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="new-text">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">New text node</property>
+ <property name="image">image2</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="dup">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Duplicate node</property>
+ <property name="image">image3</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="del">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Delete node</property>
+ <property name="image">image4</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="unindent">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Unindent node</property>
+ <property name="image">image5</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="indent">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Indent node</property>
+ <property name="image">image6</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="raise">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Raise node</property>
+ <property name="image">image7</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="layout-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="no-show-all">True</property>
+ <property name="relief">none</property>
+ <property name="popup">menu-popup</property>
+ <property name="use-popover">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="layout-img">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">horizontal</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="menu-btn-tight"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="lower">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Lower node</property>
+ <property name="image">image8</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="pane">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="position">200</property>
+ <property name="position-set">True</property>
+ <property name="wide-handle">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="tree-wnd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <property name="overlay-scrolling">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/display-popup.glade b/share/ui/display-popup.glade
new file mode 100644
index 0000000..a7550e3
--- /dev/null
+++ b/share/ui/display-popup.glade
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-management-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">grayscale-mode-symbolic</property>
+ </object>
+ <object class="GtkPopover" id="popover">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="position">left</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <!-- n-columns=3 n-rows=13 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-bottom">5</property>
+ <property name="label" translatable="yes">Display mode:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="normal">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Use normal rendering mode</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.canvas-display-mode</property>
+ <property name="action-target">0</property>
+ <property name="text" translatable="yes">Normal</property>
+ <property name="inverted">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="outline">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Show only object outlines</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.canvas-display-mode</property>
+ <property name="action-target">1</property>
+ <property name="text" translatable="yes">Outline</property>
+ <property name="inverted">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="overlay">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Show objects as outlines, and the actual drawing below them with reduced opacity</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.canvas-display-mode</property>
+ <property name="action-target">4</property>
+ <property name="text" translatable="yes">Outline overlay</property>
+ <property name="inverted">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="enhanced">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Ensure all strokes are displayed on screen as at least 1 pixel wide</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.canvas-display-mode</property>
+ <property name="action-target">3</property>
+ <property name="text" translatable="yes">Enhance thin lines</property>
+ <property name="inverted">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="no-filter">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Do not render filters (for speed)</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.canvas-display-mode</property>
+ <property name="action-target">2</property>
+ <property name="text" translatable="yes">No filters</property>
+ <property name="inverted">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Quick zoom:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Quick preview:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">11</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="zoom-resize">
+ <property name="label" translatable="yes">Zoom with window size</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Zoom drawing when window size changes</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">12</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Hold this key to activate quick zoom</property>
+ <property name="halign">center</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <property name="label" translatable="yes">&lt;b&gt;Q&lt;/b&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="justify">center</property>
+ <property name="width-chars">3</property>
+ <style>
+ <class name="key"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Hold this key for document preview, hiding grids, guides, handles etc.</property>
+ <property name="halign">center</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <property name="label" translatable="yes">&lt;b&gt;F&lt;/b&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="justify">center</property>
+ <property name="width-chars">3</property>
+ <style>
+ <class name="key"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-top">5</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkToggleButton" id="color-managed">
+ <property name="use-action-appearance">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Toggle between normal and color managed modes</property>
+ <property name="action-name">win.canvas-color-manage</property>
+ <property name="image">image1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="grayscale">
+ <property name="use-action-appearance">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Toggle between normal and grayscale modes</property>
+ <property name="action-name">win.canvas-color-mode</property>
+ <property name="image">image2</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/extension-pdfinput.glade b/share/ui/extension-pdfinput.glade
new file mode 100644
index 0000000..6a9df60
--- /dev/null
+++ b/share/ui/extension-pdfinput.glade
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkListStore" id="clip_list">
+ <columns>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">-1</col>
+ <col id="1" translatable="yes">None</col>
+ </row>
+ <row>
+ <col id="0">0</col>
+ <col id="1" translatable="yes">Media Box</col>
+ </row>
+ <row>
+ <col id="0">1</col>
+ <col id="1" translatable="yes">Crop Box</col>
+ </row>
+ <row>
+ <col id="0">2</col>
+ <col id="1" translatable="yes">Trim Box</col>
+ </row>
+ <row>
+ <col id="0">3</col>
+ <col id="1" translatable="yes">Bleed Box</col>
+ </row>
+ <row>
+ <col id="0">4</col>
+ <col id="1" translatable="yes">Art Box</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="font-list">
+ <columns>
+ <!-- column-name id -->
+ <column type="gint"/>
+ <!-- column-name family -->
+ <column type="gchararray"/>
+ <!-- column-name style -->
+ <column type="gchararray"/>
+ <!-- column-name weight -->
+ <column type="gchararray"/>
+ <!-- column-name stretch -->
+ <column type="gchararray"/>
+ <!-- column-name strat_label -->
+ <column type="gchararray"/>
+ <!-- column-name strat_id -->
+ <column type="gint"/>
+ <!-- column-name icon -->
+ <column type="gchararray"/>
+ <!-- column-name em -->
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">0</col>
+ <col id="1">Example</col>
+ <col id="2">Italic</col>
+ <col id="3">Bold</col>
+ <col id="4">Condensed</col>
+ <col id="5">N/A</col>
+ <col id="6">0</col>
+ <col id="7">ok</col>
+ <col id="8">False</col>
+ </row>
+ <row>
+ <col id="0">0</col>
+ <col id="1">Example</col>
+ <col id="2">Normal</col>
+ <col id="3">Normal</col>
+ <col id="4">Normal</col>
+ <col id="5">Thing</col>
+ <col id="6">1</col>
+ <col id="7">cancel</col>
+ <col id="8">True</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="font-options">
+ <columns>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">0</col>
+ <col id="1" translatable="yes">Draw missing fonts</col>
+ </row>
+ <row>
+ <col id="0">2</col>
+ <col id="1" translatable="yes">Substitute missing fonts</col>
+ </row>
+ <row>
+ <col id="0">3</col>
+ <col id="1" translatable="yes">Keep missing fonts' names</col>
+ </row>
+ <row>
+ <col id="0">4</col>
+ <col id="1" translatable="yes">Delete missing font text</col>
+ </row>
+ <row>
+ <col id="0">1</col>
+ <col id="1" translatable="yes">Draw all text</col>
+ </row>
+ <row>
+ <col id="0">5</col>
+ <col id="1" translatable="yes">Delete all text</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkAdjustment" id="mesh-precision">
+ <property name="lower">1</property>
+ <property name="upper">246</property>
+ <property name="value">1</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkListStore" id="stratedgies">
+ <columns>
+ <!-- column-name id -->
+ <column type="gint"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">1</col>
+ <col id="1" translatable="yes">Draw to Shapes</col>
+ </row>
+ <row>
+ <col id="0">3</col>
+ <col id="1" translatable="yes">Use Substitute Font</col>
+ </row>
+ <row>
+ <col id="0">2</col>
+ <col id="1" translatable="yes">Keep Original Font Name</col>
+ </row>
+ <row>
+ <col id="0">0</col>
+ <col id="1" translatable="yes">Delete Text</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkBox" id="content">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkNotebook" id="import-type">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <!-- n-columns=2 n-rows=8 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="row-spacing">7</property>
+ <property name="column-spacing">2</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="label" translatable="yes">&lt;i&gt;Import via internal library. Editable text is reconstructed. Pages, layers and margins are preserved, object fills and strokes are recombined and gradient meshes are converted to tiles.&lt;/i&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">50</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">8</property>
+ <property name="resize-toplevel">True</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-top">2</property>
+ <property name="vexpand">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView">
+ <property name="name">font_list</property>
+ <property name="height-request">200</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">2</property>
+ <property name="margin-end">2</property>
+ <property name="margin-bottom">2</property>
+ <property name="model">font-list</property>
+ <property name="search-column">0</property>
+ <property name="show-expanders">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="font-name">
+ <property name="title" translatable="yes">Family Name</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cell_icon"/>
+ <attributes>
+ <attribute name="icon-name">7</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="cell_name"/>
+ <attributes>
+ <attribute name="style">8</attribute>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="font-style">
+ <property name="title" translatable="yes">Style</property>
+ <child>
+ <object class="GtkCellRendererText" id="cell_style"/>
+ <attributes>
+ <attribute name="style">8</attribute>
+ <attribute name="text">2</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="font-weight">
+ <property name="title" translatable="yes">Weight</property>
+ <child>
+ <object class="GtkCellRendererText" id="cell_weight"/>
+ <attributes>
+ <attribute name="style">8</attribute>
+ <attribute name="text">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="font-stretch">
+ <property name="title" translatable="yes">Stretch</property>
+ <child>
+ <object class="GtkCellRendererText" id="cell_stretch"/>
+ <attributes>
+ <attribute name="style">8</attribute>
+ <attribute name="text">4</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="font-strat">
+ <property name="title" translatable="yes">Strategy</property>
+ <child>
+ <object class="GtkCellRendererCombo" id="cell-strat">
+ <property name="editable">True</property>
+ <property name="has-entry">False</property>
+ <property name="model">stratedgies</property>
+ <property name="text-column">1</property>
+ </object>
+ <attributes>
+ <attribute name="style">8</attribute>
+ <attribute name="text">5</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">List of all PDF Fonts</property>
+ <property name="use-markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="embed-images">
+ <property name="label" translatable="yes">Embed Images</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="margin-start">8</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-start">8</property>
+ <property name="label" translatable="yes">Precision of approximating gradient meshes:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="mesh-slider">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">mesh-precision</property>
+ <property name="fill-level">300</property>
+ <property name="round-digits">1</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="mesh-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">end</property>
+ <property name="label" translatable="yes">rough</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="font-rendering">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="model">font-options</property>
+ <property name="active">0</property>
+ <property name="id-column">0</property>
+ <property name="active-id">0</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Fonts:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Pages:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="page-numbers">
+ <property name="name">page_nums</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Type in the page range you want to import using the format 1-4 or 1,2,3,4 or the keyword 'all' to specifiy all pages.</property>
+ <property name="hexpand">True</property>
+ <property name="text" translatable="yes">all</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Clip to:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="clip-to">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="model">clip_list</property>
+ <property name="active">0</property>
+ <property name="id-column">0</property>
+ <property name="active-id">0</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Internal import&lt;/b&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="label" translatable="yes">&lt;i&gt;Import via external library. Text consists of groups containing cloned glyphs where each glyph is a path. Images are stored internally. Meshes cause entire document to be rendered as a raster image.&lt;/i&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">50</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Cairo import&lt;/b&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkDrawingArea" id="preview-area">
+ <property name="width-request">200</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkButton" id="prev-page">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-previous</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="current-page">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="label" translatable="no">1 / 10</property>
+ <property name="use-markup">True</property>
+ <property name="justify">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="next-page">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-next</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/gradient-edit.glade b/share/ui/gradient-edit.glade
new file mode 100644
index 0000000..b556563
--- /dev/null
+++ b/share/ui/gradient-edit.glade
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.1 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkPopover" id="libraryPopover">
+ <property name="width-request">360</property>
+ <property name="height-request">440</property>
+ <property name="can-focus">False</property>
+ <property name="position">bottom</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="offset">
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.1</property>
+ </object>
+ <object class="GtkMenu" id="repeatMenu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="reserve-toggle-size">False</property>
+ <child>
+ <object class="GtkMenuItem" id="repeatNone">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">None</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="repeatDirect">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Direct</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="repeatReflected">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Reflected</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ </object>
+ <!-- n-columns=2 n-rows=4 -->
+ <object class="GtkGrid" id="mainGrid">
+ <property name="name">mainGrid</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="width-request">65</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-start">4</property>
+ <property name="label" translatable="yes">Gradient:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="libraryBtn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Gradient library</property>
+ <property name="valign">center</property>
+ <property name="margin-left">4</property>
+ <property name="margin-start">4</property>
+ <property name="popover">libraryPopover</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">8</property>
+ <property name="icon-name">gradient-library</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="linearBtn">
+ <property name="sensitive">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="no-show-all">True</property>
+ <property name="tooltip-text" translatable="yes">Linear gradient</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="radialBtn">
+ <property name="sensitive">False</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="no-show-all">True</property>
+ <property name="tooltip-text" translatable="yes">Radial gradient</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="reverseBtn">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Reverse the direction of the gradient</property>
+ <property name="margin-end">16</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Repeat:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="repeatMode">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="relief">none</property>
+ <property name="popup">repeatMenu</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="repeatIco">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">8</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="stopBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkExpander" id="stopsBtn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Stops</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">end</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Stop Offset:</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="offsetSpin">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Offset of selected stop</property>
+ <property name="adjustment">offset</property>
+ <property name="digits">2</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="gradientBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">2</property>
+ <property name="margin-top">2</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkBox" id="stopsGallery">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-left">4</property>
+ <property name="margin-start">4</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">1</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView" id="stopList">
+ <property name="width-request">65</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="border-width">1</property>
+ <property name="headers-visible">False</property>
+ <property name="enable-search">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="stopButtons">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkButton" id="stopAdd">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Insert new stop</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="stopDelete">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Delete stop</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="colorsBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/gradient-stop.svg b/share/ui/gradient-stop.svg
new file mode 100644
index 0000000..c2578ed
--- /dev/null
+++ b/share/ui/gradient-stop.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ inkscape:version="1.1-dev (cafa0e10d4, 2021-01-08, custom)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 16 23"
+ height="23"
+ width="16"
+ sodipodi:docname="gradient-stop.svg"
+ 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"
+ 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/">
+ <style
+ id="style1008">
+.hole {
+ fill:black;
+}
+.selected { opacity:0.5; }
+.opacity { opacity:0.5; }
+.color { fill:#00ff00; }
+.inner { stroke:#ff0000; }
+.outer { fill: yellow; stroke: none; opacity: 0.3; }
+</style>
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ inkscape:showpageshadow="false"
+ width="1100px"
+ units="px"
+ showgrid="true"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="px"
+ inkscape:cy="12"
+ inkscape:cx="10.15625"
+ inkscape:zoom="16"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ objecttolerance="10.0"
+ gridtolerance="10.0"
+ guidetolerance="10.0"
+ inkscape:pagecheckerboard="true"
+ inkscape:document-rotation="0"
+ inkscape:window-width="1500"
+ inkscape:window-height="933"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:snap-global="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid1034" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <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>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <path
+ d="M 8,0 C 7.2449547,0 6.9403102,0.37592866 6.564904,0.75168557 L 1.108173,6.2202604 C 0.42651631,6.8892306 0,7.8276025 0,8.8605325 V 19.303137 C 0,21.340536 1.6574205,23 3.6923077,23 h 8.6153843 c 2.034888,0 3.692309,-1.659464 3.692309,-3.696863 V 8.8605325 c 0,-1.0458251 -0.438787,-1.9917877 -1.134616,-2.6619333 l 0.0096,0.00722 L 9.4350819,0.75168447 C 9,0.38626631 8.7550453,0 8,0 Z"
+ id="path38"
+ sodipodi:nodetypes="zccsssssscccz"
+ class="outer"
+ style="stroke-width:1" />
+ <path
+ id="rect1038"
+ style="fill-opacity:1;stroke-width:1;stroke-linejoin:round"
+ d="M 8.0000002,1.4308745 2.3125,7.1188375 C 1.8116302,7.6094544 1.5000001,8.2919714 1.5000001,9.051476 v 9.743544 c 0,1.499423 1.2079166,2.70654 2.7083333,2.70654 h 7.5833336 c 1.500417,0 2.708334,-1.207117 2.708334,-2.70654 V 9.051476 c 0,-0.768708 -0.319938,-1.4577659 -0.831543,-1.9495545 z"
+ sodipodi:nodetypes="ccsssssscc"
+ class="inner color" />
+ <path
+ id="path871"
+ style="fill:#ffffff;fill-opacity:1;stroke-width:1"
+ d="m 1.9999999,15 v 3.800001 C 1.9999999,20.02832 2.9636501,21 4.181818,21 h 3.8181817 v -6 z"
+ sodipodi:nodetypes="cssccc" />
+ <path
+ id="path878"
+ d="M 14,15 H 7.9999997 v 6.000019 h 3.8181823 c 1.218167,0 2.181817,-0.973616 2.181817,-2.200019 z"
+ style="fill:#cccccc;fill-opacity:1;stroke-width:1"
+ sodipodi:nodetypes="cccssc" />
+ <path
+ id="path970"
+ d="M 13.999999,15 H 1.9999999 v 3.8 c 0,1.226503 0.9636502,2.200029 2.1818181,2.200029 h 7.636364 c 1.218165,0 2.181817,-0.973623 2.181817,-2.200029 z"
+ style="stroke:none;stroke-width:1"
+ class="opacity color"
+ sodipodi:nodetypes="ccssssc" />
+ <g
+ id="g3389"
+ class="selected"
+ style="">
+ <circle
+ style="stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.779775;paint-order:stroke fill markers"
+ id="path3112"
+ cx="8"
+ cy="14"
+ r="3"
+ class="outer" />
+ <circle
+ style="opacity:1;stroke:none;stroke-width:2;stroke-opacity:0.3;paint-order:stroke fill markers"
+ id="path860"
+ cx="8"
+ cy="14"
+ r="2"
+ class="hole" />
+ </g>
+ </g>
+</svg>
diff --git a/share/ui/gradient-tip.svg b/share/ui/gradient-tip.svg
new file mode 100644
index 0000000..2f557b0
--- /dev/null
+++ b/share/ui/gradient-tip.svg
@@ -0,0 +1,76 @@
+<?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"
+ sodipodi:docname="gradient-tip.svg"
+ width="10"
+ height="5"
+ viewBox="0 0 10 5"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ inkscape:document-rotation="0"
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:window-height="933"
+ inkscape:window-width="1500"
+ inkscape:pagecheckerboard="false"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ id="base"
+ pagecolor="#3d3d3d"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="77.388909"
+ inkscape:cx="7.2426399"
+ inkscape:cy="3.2950458"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ width="9px"
+ inkscape:showpageshadow="false">
+ <inkscape:grid
+ id="grid2455"
+ type="xygrid" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <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">
+ <path
+ sodipodi:nodetypes="ccccccc"
+ d="M 0,0 5,5 10,0 H 8.5 L 5,3.5 1.5,0 Z"
+ style="fill:#000000;fill-opacity:0.7"
+ id="path2023" />
+ <path
+ sodipodi:nodetypes="cccc"
+ d="M 1.5,0 5,3.5 8.5,0 Z"
+ style="fill:#ffffff"
+ id="path2025" />
+ </g>
+</svg>
diff --git a/share/ui/highlight-colors.css b/share/ui/highlight-colors.css
new file mode 100644
index 0000000..1739d45
--- /dev/null
+++ b/share/ui/highlight-colors.css
@@ -0,0 +1,59 @@
+/* default highlight colors; variant for light backgrounds
+ *
+ * gray, blue, yellow, red, green, orange, cyan, purple
+ */
+
+.bright .highlight-color-1 {
+ color: #babdb6;
+}
+.bright .highlight-color-2 {
+ color: #729fcf;
+}
+.bright .highlight-color-3 {
+ color: #edd400;
+}
+.bright .highlight-color-4 {
+ color: #eb486a;
+}
+.bright .highlight-color-5 {
+ color: #73b92f;
+}
+.bright .highlight-color-6 {
+ color: #fcaf3e;
+}
+.bright .highlight-color-7 {
+ color: #54d5ba;
+}
+.bright .highlight-color-8 {
+ color: #ad7fa8;
+}
+
+/* default highlight colors; variant for dark backgrounds
+ *
+ * gray, blue, yellow, red, green, orange, cyan, purple
+ */
+
+.dark .highlight-color-1 {
+ color: #b1b5ad;
+}
+.dark .highlight-color-2 {
+ color: #3b80ee;
+}
+.dark .highlight-color-3 {
+ color: #c3e33e;
+}
+.dark .highlight-color-4 {
+ color: #f3215a;
+}
+.dark .highlight-color-5 {
+ color: #36a949;
+}
+.dark .highlight-color-6 {
+ color: #f37f35;
+}
+.dark .highlight-color-7 {
+ color: #3be3c2;
+}
+.dark .highlight-color-8 {
+ color: #b85ac9;
+}
diff --git a/share/ui/image-properties.glade b/share/ui/image-properties.glade
new file mode 100644
index 0000000..5594fa3
--- /dev/null
+++ b/share/ui/image-properties.glade
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">document-open</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">shape-image</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">document-export</property>
+ </object>
+ <!-- n-columns=3 n-rows=7 -->
+ <object class="GtkGrid" id="main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="label" translatable="yes">&lt;b&gt;Image&lt;/b&gt;</property>
+ <property name="use-markup">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkDrawingArea" id="preview">
+ <property name="width-request">120</property>
+ <property name="height-request">80</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="name">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">1</property>
+ <property name="label" translatable="no">&lt;small&gt;#label&lt;/small&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="info">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">&lt;small&gt;123 x 345 px
+RGBA
+Linked&lt;/small&gt;</property>
+ <property name="use-markup">True</property>
+ <property name="ellipsize">end</property>
+ <property name="yalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">URL:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="href">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="change-img">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Change image...</property>
+ <property name="image">image1</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="embed">
+ <property name="label" translatable="yes">Embed</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Embed image in the document</property>
+ <property name="image">image2</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="export">
+ <property name="label" translatable="yes">Save copy...</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Save a copy of this image to a file</property>
+ <property name="image">image3</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Aspect ratio:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkRadioButton" id="preserve">
+ <property name="label" translatable="yes">Preserve</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="stretch">
+ <property name="label" translatable="yes">Stretch image</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">preserve</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Rendering:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="rendering">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="active">0</property>
+ <items>
+ <item id="0" translatable="yes">Automatic</item>
+ <item id="1" translatable="yes">Optimize speed</item>
+ <item id="2" translatable="yes">Optimize quality</item>
+ <item id="3" translatable="yes">Crisp edges</item>
+ <item id="4" translatable="yes">Pixelated</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/inkscape-about.glade b/share/ui/inkscape-about.glade
new file mode 100644
index 0000000..37929c9
--- /dev/null
+++ b/share/ui/inkscape-about.glade
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkImage" id="bug_icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">bug</property>
+ </object>
+ <object class="GtkImage" id="copy-icon">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">3</property>
+ <property name="icon-name">edit-copy</property>
+ </object>
+ <object class="GtkWindow" id="about-screen-window">
+ <property name="name">about</property>
+ <property name="can-focus">False</property>
+ <property name="title" translatable="yes">Inkscape. Draw freely.</property>
+ <property name="resizable">False</property>
+ <property name="window-position">center-always</property>
+ <property name="icon-name">org.inkscape.Inkscape</property>
+ <property name="gravity">north</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkNotebook" id="tabs">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="show-border">False</property>
+ <property name="enable-popup">True</property>
+ <property name="group-name">about_stack</property>
+ <child>
+ <object class="GtkAspectFrame" id="aspect-frame">
+ <property name="width-request">750</property>
+ <property name="height-request">625</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
+ <property name="yalign">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="about-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Official splash artwork of this version</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">About</property>
+ </object>
+ <packing>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="authors-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="header-authors">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;Do you want to get involved with Inkscape? &lt;a href="https://inkscape.org/contribute/"&gt;Check this page!&lt;/a&gt;&lt;/b&gt;&lt;/big&gt;</property>
+ <property name="use-markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="content-author">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkTextView" id="credits-authors">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="editable">False</property>
+ <property name="justification">center</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ <property name="top-margin">10</property>
+ <property name="bottom-margin">10</property>
+ <property name="cursor-visible">False</property>
+ <property name="accepts-tab">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="authors-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">List of authors who contributed to the code</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Authors</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="translators-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="header-translators">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;Do you want to contribute to translation activities? &lt;a href="https://inkscape.org/contribute/translations/"&gt;Join us here!&lt;/a&gt;&lt;/b&gt;&lt;/big&gt;</property>
+ <property name="use-markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="content-translators">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkTextView" id="credits-translators">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="editable">False</property>
+ <property name="justification">center</property>
+ <property name="left-margin">10</property>
+ <property name="right-margin">10</property>
+ <property name="top-margin">10</property>
+ <property name="bottom-margin">10</property>
+ <property name="cursor-visible">False</property>
+ <property name="accepts-tab">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="translators-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">List of translators</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Translators</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="license-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="header-license">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-top">3</property>
+ <property name="label" translatable="yes">&lt;big&gt;&lt;b&gt;See the full details about the Inkscape licenses &lt;a href="https://inkscape.org/about/license/"&gt;here&lt;/a&gt;!&lt;/b&gt;&lt;/big&gt;</property>
+ <property name="use-markup">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">10</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="license-text">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">50</property>
+ <property name="margin-end">50</property>
+ <property name="margin-top">20</property>
+ <property name="margin-bottom">20</property>
+ <property name="label" translatable="yes">License file failed to load.</property>
+ <property name="use-markup">True</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="license-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Inkscape license</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">License</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="about-screen-footer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">1</property>
+ <property name="margin-bottom">5</property>
+ <child>
+ <object class="GtkLabel" id="copyright">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="label" translatable="yes" context="Brief copyright notice at the footer of the About screen; the placeholder '%1' represents the year as a 4-digit number.">© %1 Inkscape Developers</property>
+ <property name="wrap">True</property>
+ <property name="wrap-mode">char</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="website">
+ <property name="label">www.inkscape.org</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Link to the official website</property>
+ <property name="margin-start">15</property>
+ <property name="relief">none</property>
+ <property name="uri">https://inkscape.org/?about-screen=1</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=1 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkRevealer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1000</property>
+ <property name="reveal-child">True</property>
+ <child>
+ <object class="GtkButton" id="version">
+ <property name="label">$version</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Click to copy the version number to the clipboard</property>
+ <property name="image">copy-icon</property>
+ <property name="always-show-image">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRevealer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="transition-type">slide-right</property>
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkLabel" id="version-copied">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Version Copied!</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRevealer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="transition-type">slide-right</property>
+ <property name="transition-duration">1000</property>
+ <child>
+ <object class="GtkLabel" id="debug-info-copied">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Debug Info Copied!</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="debug_info">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Click to copy debug info to the clipboard</property>
+ <property name="margin-start">4</property>
+ <property name="image">bug_icon</property>
+ <property name="always-show-image">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/inkscape-start.glade b/share/ui/inkscape-start.glade
new file mode 100644
index 0000000..9bf72e9
--- /dev/null
+++ b/share/ui/inkscape-start.glade
@@ -0,0 +1,1268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2
+
+Copyright (C) Martin Owens
+
+This file is part of Inkscape Extensions Manager.
+
+Inkscape Extensions Manager 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.
+
+Inkscape Extensions Manager 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 Inkscape Extensions Manager. If not, see <http://www.gnu.org/licenses/>.
+
+-->
+<interface>
+ <requires lib="gtk+" version="3.18"/>
+ <!-- interface-license-type gplv3 -->
+ <!-- interface-name Inkscape Extensions Manager -->
+ <!-- interface-description Download and manage inkscape extensions -->
+ <!-- interface-copyright Martin Owens -->
+ <object class="GtkListStore" id="canvases">
+ <columns>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name preview -->
+ <column type="GdkPixbuf"/>
+ <!-- column-name pagecolor -->
+ <column type="gchararray"/>
+ <!-- column-name checkered -->
+ <column type="gboolean"/>
+ <!-- column-name border -->
+ <column type="gchararray"/>
+ <!-- column-name shadow -->
+ <column type="gboolean"/>
+ <!-- column-name desk -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">light</col>
+ <col id="1" translatable="yes">Default</col>
+ <col id="2">resources/canvas_aw.png</col>
+ <col id="3">rgba(255, 255, 255, 0)</col>
+ <col id="4">False</col>
+ <col id="5">#999999</col>
+ <col id="6">True</col>
+ <col id="7">#d1d1d1</col>
+ </row>
+ <row>
+ <col id="0">dark</col>
+ <col id="1" translatable="yes">Dark</col>
+ <col id="2">resources/canvas_ad.png</col>
+ <col id="3">rgba(80, 80, 80, 0)</col>
+ <col id="4">False</col>
+ <col id="5">#eeeeee</col>
+ <col id="6">False</col>
+ <col id="7">rgb(80, 80, 80)</col>
+ </row>
+ <row>
+ <col id="0">light-check</col>
+ <col id="1" translatable="yes">Light Checkerboard</col>
+ <col id="2">resources/canvas_cw.png</col>
+ <col id="3">rgba(255, 255, 255, 0)</col>
+ <col id="4">True</col>
+ <col id="5">#111111</col>
+ <col id="6">False</col>
+ <col id="7">#d1d1d1</col>
+ </row>
+ <row>
+ <col id="0">dark-check</col>
+ <col id="1" translatable="yes">Dark Checkerboard</col>
+ <col id="2">resources/canvas_cd.png</col>
+ <col id="3">rgba(80, 80, 80, 0)</col>
+ <col id="4">True</col>
+ <col id="5">#ffffff</col>
+ <col id="6">False</col>
+ <col id="7">rgb(80, 80, 80)</col>
+ </row>
+ <row>
+ <col id="0">light-solid</col>
+ <col id="1" translatable="yes">Solid White</col>
+ <col id="2">resources/canvas_sw.png</col>
+ <col id="3">#ffffff</col>
+ <col id="4">False</col>
+ <col id="5">#cccccc</col>
+ <col id="6">False</col>
+ <col id="7">#d1d1d1</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="keyslist">
+ <columns>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name keys_id -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Inkscape (default)</col>
+ <col id="1">default</col>
+ </row>
+ <row>
+ <col id="0">Filled by code</col>
+ <col id="1">nope</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="recent_files">
+ <columns>
+ <!-- column-name filename -->
+ <column type="gchararray"/>
+ <!-- column-name filepath -->
+ <column type="gchararray"/>
+ <!-- column-name unix_datetime -->
+ <column type="gint64"/>
+ <!-- column-name crashfile -->
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">test.svg</col>
+ <col id="1">a</col>
+ <col id="2">1</col>
+ <col id="3">False</col>
+ </row>
+ <row>
+ <col id="0">test2.svg</col>
+ <col id="1">b</col>
+ <col id="2">200</col>
+ <col id="3">False</col>
+ </row>
+ <row>
+ <col id="0">another_example_file.svg</col>
+ <col id="1">c</col>
+ <col id="2">5</col>
+ <col id="3">False</col>
+ </row>
+ <row>
+ <col id="0">drawing.eps</col>
+ <col id="1">d</col>
+ <col id="2">100</col>
+ <col id="3">True</col>
+ </row>
+ <row>
+ <col id="0">test3.svg</col>
+ <col id="1">e</col>
+ <col id="2">50</col>
+ <col id="3">False</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="themelist">
+ <columns>
+ <!-- column-name id -->
+ <column type="gchararray"/>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name theme_id -->
+ <column type="gchararray"/>
+ <!-- column-name icons_id -->
+ <column type="gchararray"/>
+ <!-- column-name base_color -->
+ <column type="gchararray"/>
+ <!-- column-name base_color_dark -->
+ <column type="gchararray"/>
+ <!-- column-name success_color -->
+ <column type="gchararray"/>
+ <!-- column-name warn_color -->
+ <column type="gchararray"/>
+ <!-- column-name error_color -->
+ <column type="gchararray"/>
+ <!-- column-name symbolic_icons -->
+ <column type="gboolean"/>
+ <!-- column-name small_icons -->
+ <column type="gboolean"/>
+ <!-- column-name available -->
+ <column type="gboolean"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">colorful</col>
+ <col id="1" translatable="yes">Colorful</col>
+ <col id="2">Adwaita</col>
+ <col id="3">multicolor</col>
+ <col id="4">#000000</col>
+ <col id="5">#ebebeb</col>
+ <col id="6">#00990a</col>
+ <col id="7">#ff1990</col>
+ <col id="8">#0099e6</col>
+ <col id="9">True</col>
+ <col id="10">False</col>
+ <col id="11">False</col>
+ </row>
+ <row>
+ <col id="0">grayscale</col>
+ <col id="1" translatable="yes">Grayscale</col>
+ <col id="2">Adwaita</col>
+ <col id="3">multicolor</col>
+ <col id="4">#000000</col>
+ <col id="5">#e5e5e5</col>
+ <col id="6">#cccccc</col>
+ <col id="7">#808080</col>
+ <col id="8">#808080</col>
+ <col id="9">True</col>
+ <col id="10">False</col>
+ <col id="11">False</col>
+ </row>
+ <row>
+ <col id="0">symbolic</col>
+ <col id="1" translatable="yes">Classic Symbolic</col>
+ <col id="2">Adwaita</col>
+ <col id="3">Adwaita</col>
+ <col id="4">0</col>
+ <col id="5">0</col>
+ <col id="6">0</col>
+ <col id="7">0</col>
+ <col id="8">0</col>
+ <col id="9">True</col>
+ <col id="10">False</col>
+ <col id="11">False</col>
+ </row>
+ <row>
+ <col id="0">compacted</col>
+ <col id="1" translatable="yes">Compacted (Small Screens)</col>
+ <col id="2">Minwaita-Inkscape</col>
+ <col id="3">hicolor</col>
+ <col id="4">0</col>
+ <col id="5">0</col>
+ <col id="6">0</col>
+ <col id="7">0</col>
+ <col id="8">0</col>
+ <col id="9">True</col>
+ <col id="10">True</col>
+ <col id="11">False</col>
+ </row>
+ <row>
+ <col id="0">system</col>
+ <col id="1" translatable="yes">System Default</col>
+ <col id="2"></col>
+ <col id="3"></col>
+ <col id="4">0</col>
+ <col id="5">0</col>
+ <col id="6">0</col>
+ <col id="7">0</col>
+ <col id="8">0</col>
+ <col id="9">False</col>
+ <col id="10">False</col>
+ <col id="11">True</col>
+ </row>
+ <row>
+ <col id="0">classic</col>
+ <col id="1" translatable="yes">Classic Inkscape</col>
+ <col id="2">Adwaita</col>
+ <col id="3">Adwaita</col>
+ <col id="4">0</col>
+ <col id="5">0</col>
+ <col id="6">0</col>
+ <col id="7">0</col>
+ <col id="8">0</col>
+ <col id="9">False</col>
+ <col id="10">False</col>
+ <col id="11">False</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkWindow" id="start-screen-window">
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="is_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="modal">True</property>
+ <property name="window_position">center</property>
+ <property name="default_width">700</property>
+ <property name="default_height">360</property>
+ <property name="urgency_hint">True</property>
+ <child>
+ <object class="GtkNotebook" id="tabs">
+ <property name="name">startscreennotebook</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_border">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkInfoBar" id="keys_warning">
+ <property name="can_focus">False</property>
+ <property name="message_type">error</property>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox">
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child internal-child="content_area">
+ <object class="GtkBox">
+ <property name="can_focus">False</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-dialog-warning</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">&lt;b&gt;Warning:&lt;/b&gt; Using a non-standard shortcut keyboard layout could make it harder to follow tutorials.</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=3 n-rows=4 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin-top">40</property>
+ <property name="margin-bottom">30</property>
+ <property name="row-spacing">8</property>
+ <property name="column-spacing">4</property>
+ <property name="row-homogeneous">True</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Appearance</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Canvas</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Keyboard</property>
+ <property name="xalign">0</property>
+ <attributes>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="themes">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">themelist</property>
+ <property name="id-column">0</property>
+ <child>
+ <object class="GtkCellRendererText" id="theme_namerenderer"/>
+ <attributes>
+ <attribute name="sensitive">11</attribute>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="keys">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="model">keyslist</property>
+ <property name="active">0</property>
+ <property name="id-column">1</property>
+ <child>
+ <object class="GtkCellRendererText" id="keys_cellrenderer"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="iconrow">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="spacing">3</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">tool-pointer</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">tool-node-editor</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">draw-rectangle</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">draw-polygon-star</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">draw-path</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">draw-freehand</property>
+ <property name="icon_size">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="canvas">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip-text" translatable="yes">Select the default color background for the canvas</property>
+ <property name="model">canvases</property>
+ <property name="id-column">0</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="canvas_preview">
+ <property name="xpad">10</property>
+ </object>
+ <attributes>
+ <attribute name="pixbuf">2</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">end</property>
+ <property name="margin-bottom">2</property>
+ <property name="label" translatable="yes">Dark</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="dark_toggle">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set to dark theme</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="margin-top">2</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">8</property>
+ <property name="margin_right">8</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="save">
+ <property name="label">gtk-save</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ <property name="use-stock">True</property>
+ <style>
+ <class name="primary"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ <property name="secondary">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton">
+ <property name="label">Load Preferences</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Quick Setup</property>
+ </object>
+ <packing>
+ <property name="tab_expand">True</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">30</property>
+ <property name="margin_right">30</property>
+ <property name="margin_top">10</property>
+ <property name="margin_bottom">10</property>
+ <property name="label" translatable="yes">&lt;b&gt;The Inkscape project is supported by users like you.&lt;/b&gt; Through our collective time, money and skill, we have made this software for everyone in the world to enjoy free from restrictions and free from costs. &lt;b&gt;
+If you would like to get involved and make the next version of Inkscape even better, please consider joining the Inkscape project today.&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">50</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">90</property>
+ <property name="margin_right">90</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <property name="baseline-position">top</property>
+ <child>
+ <object class="GtkLinkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <property name="uri">https://inkscape.org/splash/contribute/</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">10</property>
+ <property name="margin_right">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="pixbuf">../pixmaps/user.png</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">8</property>
+ <property name="margin_right">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="label" translatable="yes">Learn how to
+Contribute Time</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.3999999999999999"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLinkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <property name="uri">https://inkscape.org/splash/support/</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="pixbuf">../pixmaps/support.png</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">8</property>
+ <property name="margin_right">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="label" translatable="yes">Learn how to
+Fund Inkscape</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.3999999999999999"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">8</property>
+ <property name="margin_right">8</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="thanks">
+ <property name="label" translatable="yes">Thanks!</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ <style>
+ <class name="primary"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ <property name="secondary">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Supported by You</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_expand">True</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="kinds">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tab_pos">left</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkTreeView" id="recent_treeview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="model">recent_files</property>
+ <property name="search-column">1</property>
+ <property name="tooltip-column">1</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection"/>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="recent_name">
+ <property name="title" translatable="yes" context="Welcome dialog">Recent Files</property>
+ <property name="sort-indicator">True</property>
+ <property name="sort-order">descending</property>
+ <property name="sort-column-id">0</property>
+ <child>
+ <object class="GtkCellRendererText">
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="xpad">4</property>
+ <property name="xalign">1</property>
+ <property name="sensitive">False</property>
+ <property name="alignment">right</property>
+ <property name="scale">0.90</property>
+ <property name="text">Emergency Save</property>
+ </object>
+ <attributes>
+ <attribute name="visible">3</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="Welcome dialog">Existing Files</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButtonBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">8</property>
+ <property name="margin_end">8</property>
+ <property name="spacing">4</property>
+ <property name="layout_style">start</property>
+ <child>
+ <object class="GtkButton" id="load">
+ <property name="label" translatable="yes">Open</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ <property name="secondary">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="show_toggle">
+ <property name="label" translatable="yes">Show this every time</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="new">
+ <property name="label" translatable="yes">New Document</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="focus_on_click">False</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ <property name="secondary">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="padding">4</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Time to Draw</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_expand">True</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="titlebar">
+ <object class="GtkFixed" id="banner">
+ <property name="width-request">700</property>
+ <property name="height-request">220</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkRevealer">
+ <property name="width-request">100</property>
+ <property name="height-request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1500</property>
+ <property name="reveal-child">True</property>
+ <child>
+ <object class="GtkFixed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage">
+ <property name="width-request">100</property>
+ <property name="height-request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">../screens/start-welcome.png</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="welcome_text">
+ <property name="width-request">700</property>
+ <property name="height-request">220</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">../screens/start-welcome-text.svg</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" comments="Not automatic, but will be turned into start-welcome-text.svg">Welcome!</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" comments="Not automatic, but will be turned into start-welcome-text.svg">Let's set up a few things...</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRevealer">
+ <property name="width-request">100</property>
+ <property name="height-request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1500</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">../screens/start-support.png</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkRevealer">
+ <property name="width-request">100</property>
+ <property name="height-request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="transition-type">crossfade</property>
+ <property name="transition-duration">1500</property>
+ <child>
+ <object class="GtkFixed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkImage">
+ <property name="width-request">700</property>
+ <property name="height-request">220</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">../screens/start-splash.png</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <!-- n-columns=1 n-rows=1 -->
+ <object class="GtkGrid">
+ <property name="width-request">700</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkButton" id="close_window">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">end</property>
+ <property name="hexpand">True</property>
+ <property name="relief">none</property>
+ <property name="image-position">right</property>
+ <property name="always-show-image">True</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">window-close</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/inline-css.lang b/share/ui/inline-css.lang
new file mode 100644
index 0000000..29a04df
--- /dev/null
+++ b/share/ui/inline-css.lang
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<language id="inline-css" _name="Inline CSS" version="2.0" _section="Markup">
+ <definitions>
+ <context id="inline-css">
+ <include>
+ <context ref="css:style-block-content"/>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/share/ui/mac.css b/share/ui/mac.css
new file mode 100644
index 0000000..694aa6f
--- /dev/null
+++ b/share/ui/mac.css
@@ -0,0 +1,4 @@
+/* This fix a bad performance on Mac (maybe others) on some themes */
+button,
+spinbutton,
+combobox {box-shadow: none;} \ No newline at end of file
diff --git a/share/ui/marker-popup.glade b/share/ui/marker-popup.glade
new file mode 100644
index 0000000..eb163e6
--- /dev/null
+++ b/share/ui/marker-popup.glade
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adjustment-angle">
+ <property name="lower">-360</property>
+ <property name="upper">360.00999999999999</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">15</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-offset">
+ <property name="lower">-10000</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-offset-2">
+ <property name="lower">-10000</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-scale">
+ <property name="lower">0.001</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-scale-2">
+ <property name="lower">0.001</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkImage" id="image-linked">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">entries-linked-symbolic</property>
+ <property name="icon_size">3</property>
+ </object>
+ <object class="GtkImage" id="image-unlinked">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">entries-unlinked-symbolic</property>
+ <property name="icon_size">3</property>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">orient-auto-reverse</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">orient-auto</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">orient-angle</property>
+ </object>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">object-flip-horizontal-symbolic</property>
+ </object>
+ <object class="GtkRadioButton" id="radio-orient">
+ <property name="label">radiobutton</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <object class="GtkPopover" id="popover">
+ <property name="can-focus">False</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <object class="GtkBox">
+ <property name="width-request">378</property>
+ <property name="height-request">500</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="vscroll-policy">natural</property>
+ <child>
+ <object class="GtkFlowBox" id="flowbox">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="min-children-per-line">8</property>
+ <property name="max-children-per-line">8</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=4 n-rows=8 -->
+ <object class="GtkGrid" id="input-grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Size X:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="scale-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-scale</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">0.0001</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Size Y:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="scale-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-scale-2</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">0.0001</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="scale-with-stroke">
+ <property name="label" translatable="yes">Scale with stroke</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">end</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Orientation:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkRadioButton" id="orient-auto-rev">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Orient along the path, reversing at the start</property>
+ <property name="image">image1</property>
+ <property name="always-show-image">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">radio-orient</property>
+ <style>
+ <class name="tight-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="orient-auto">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Orient along the path</property>
+ <property name="image">image2</property>
+ <property name="always-show-image">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">radio-orient</property>
+ <style>
+ <class name="tight-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="orient-angle">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Fixed specified angle</property>
+ <property name="image">image3</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">radio-orient</property>
+ <style>
+ <class name="tight-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="btn-horz-flip">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Flip marker horizontally</property>
+ <property name="margin-start">8</property>
+ <property name="image">image4</property>
+ <style>
+ <class name="tight-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Fixed angle:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="angle">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-angle</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Offset X:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Offset Y:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="offset-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-offset</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="offset-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-offset-2</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="edit-marker">
+ <property name="label" translatable="yes">Edit on canvas</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">4</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkImage" id="preview">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">4</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="marker-id">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-left">4</property>
+ <property name="margin-right">4</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">ID</property>
+ <property name="use-markup">True</property>
+ <property name="ellipsize">middle</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="height">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="link-scale">
+ <property name="name">LockGuides</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="margin-end">1</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="spacer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="pixel-size">5</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkMenuButton" id="menu-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="popover">popover</property>
+ <child>
+ <object class="GtkBox" id="btn-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="current-img">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/menus.ui b/share/ui/menus.ui
new file mode 100644
index 0000000..82d4393
--- /dev/null
+++ b/share/ui/menus.ui
@@ -0,0 +1,1321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<interface>
+ <requires lib="gtk+" version="3.22" />
+ <menu id="menus">
+ <submenu id="file-menu">
+ <attribute name='label' translatable="yes">_File</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_New</attribute>
+ <attribute name='action'>win.document-new</attribute>
+ <attribute name='icon'>document-new</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">New from _Template...</attribute>
+ <attribute name='action'>win.document-dialog-templates</attribute>
+ <attribute name='icon'>dialog-templates</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Open...</attribute>
+ <attribute name='action'>win.document-open</attribute>
+ <attribute name='icon'>document-open</attribute>
+ </item>
+ </section>
+ <submenu id="recent-files">
+ <attribute name='label' translatable='yes'>Open _Recent</attribute>
+ </submenu>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Re_vert</attribute>
+ <attribute name='action'>win.document-revert</attribute>
+ <attribute name='icon'>document-revert</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Save</attribute>
+ <attribute name='action'>win.document-save</attribute>
+ <attribute name='icon'>document-save</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Save _As...</attribute>
+ <attribute name='action'>win.document-save-as</attribute>
+ <attribute name='icon'>document-save-as</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Save a Cop_y...</attribute>
+ <attribute name='action'>win.document-save-copy</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Save Template...</attribute>
+ <attribute name='action'>win.document-save-template</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Import...</attribute>
+ <attribute name='action'>win.document-import</attribute>
+ <attribute name='icon'>document-import</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Import _Web Image...</attribute>
+ <attribute name='action'>app.org.inkscape.import-web-image</attribute>
+ <attribute name='icon'>document-import-web</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Export...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Export</attribute>
+ <attribute name='icon'>document-export</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Print...</attribute>
+ <attribute name='action'>win.document-print</attribute>
+ <attribute name='icon'>document-print</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Clean _Up Document</attribute>
+ <attribute name='action'>win.document-cleanup</attribute>
+ <attribute name='icon'>document-cleanup</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Document Resources</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>DocumentResources</attribute>
+ <attribute name='icon'>document-resources</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Document Properties...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>DocumentProperties</attribute>
+ <attribute name='icon'>document-properties</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Close</attribute>
+ <attribute name='action'>win.document-close</attribute>
+ <attribute name='icon'>window-close</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Quit</attribute>
+ <attribute name='action'>app.quit</attribute>
+ <attribute name='icon'>application-exit</attribute>
+ <attribute name='hidden-when'>macos-menubar</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="edit-menu">
+ <attribute name='label' translatable="yes">_Edit</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Undo</attribute>
+ <attribute name='action'>doc.undo</attribute>
+ <attribute name='icon'>edit-undo</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Redo</attribute>
+ <attribute name='action'>doc.redo</attribute>
+ <attribute name='icon'>edit-redo</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Undo _History...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>UndoHistory</attribute>
+ <attribute name='icon'>edit-undo-history</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Cu_t</attribute>
+ <attribute name='action'>app.cut</attribute>
+ <attribute name='icon'>edit-cut</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Copy</attribute>
+ <attribute name='action'>app.copy</attribute>
+ <attribute name='icon'>edit-copy</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Paste</attribute>
+ <attribute name='action'>win.paste</attribute>
+ <attribute name='icon'>edit-paste</attribute>
+ </item>
+ </section>
+ <submenu id="paste-size">
+ <attribute name='label' translatable="yes">P_aste...</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_In Place</attribute>
+ <attribute name='action'>win.paste-in-place</attribute>
+ <attribute name='icon'>edit-paste-in-place</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_On Page</attribute>
+ <attribute name='action'>win.paste-on-page</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Style</attribute>
+ <attribute name='action'>app.paste-style</attribute>
+ <attribute name='icon'>edit-paste-style</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Si_ze</attribute>
+ <attribute name='action'>app.paste-size</attribute>
+ <attribute name='icon'>edit-paste-size</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Width</attribute>
+ <attribute name='action'>app.paste-width</attribute>
+ <attribute name='icon'>edit-paste-width</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Height</attribute>
+ <attribute name='action'>app.paste-height</attribute>
+ <attribute name='icon'>edit-paste-height</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Size Separately</attribute>
+ <attribute name='action'>app.paste-size-separately</attribute>
+ <attribute name='icon'>edit-paste-size-separately</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Width Separately</attribute>
+ <attribute name='action'>app.paste-width-separately</attribute>
+ <attribute name='icon'>edit-paste-width-separately</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Height Separately</attribute>
+ <attribute name='action'>app.paste-height-separately</attribute>
+ <attribute name='icon'>edit-paste-height-separately</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Find/Replace...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Find</attribute>
+ <attribute name='icon'>edit-find</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Duplic_ate</attribute>
+ <attribute name='action'>app.duplicate</attribute>
+ <attribute name='icon'>edit-duplicate</attribute>
+ </item>
+ <submenu id="paste-size">
+ <attribute name='label' translatable="yes">Clo_ne</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Create Clo_ne</attribute>
+ <attribute name='action'>app.clone</attribute>
+ <attribute name='icon'>edit-clone</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Create Tiled Clones...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>CloneTiler</attribute>
+ <attribute name='icon'>dialog-tile-clones</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Unlin_k Clone</attribute>
+ <attribute name='action'>app.clone-unlink</attribute>
+ <attribute name='icon'>edit-clone-unlink</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Unlink Clones _recursively</attribute>
+ <attribute name='action'>app.clone-unlink-recursively</attribute>
+ <attribute name='icon'>edit-clone-unlink</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Relink to Copied</attribute>
+ <attribute name='action'>app.clone-link</attribute>
+ <attribute name='icon'>edit-clone-link</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Select _Original</attribute>
+ <attribute name='action'>app.select-original</attribute>
+ <attribute name='icon'>edit-select-original</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Clone original path (LPE)</attribute>
+ <attribute name='action'>app.clone-link-lpe</attribute>
+ <attribute name='icon'>edit-clone-link-lpe</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name='label' translatable="yes">Make a _Bitmap Copy</attribute>
+ <attribute name='action'>app.selection-make-bitmap-copy</attribute>
+ <attribute name='icon'>selection-make-bitmap-copy</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Delete</attribute>
+ <attribute name='action'>app.delete</attribute>
+ <attribute name='icon'>edit-delete</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Select Al_l</attribute>
+ <attribute name='action'>win.select-all</attribute>
+ <attribute name='icon'>edit-select-all</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Select All in All La_yers</attribute>
+ <attribute name='action'>win.select-all-layers</attribute>
+ <attribute name='icon'>edit-select-all-layers</attribute>
+ </item>
+ <submenu id="select-size">
+ <attribute name='label' translatable="yes">Select Sa_me</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Fill _and Stroke</attribute>
+ <attribute name='action'>win.select-same-fill-and-stroke</attribute>
+ <attribute name='icon'>edit-select-same-fill-and-stroke</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Fill Color</attribute>
+ <attribute name='action'>win.select-same-fill</attribute>
+ <attribute name='icon'>edit-select-same-fill</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Stroke Color</attribute>
+ <attribute name='action'>win.select-same-stroke-color</attribute>
+ <attribute name='icon'>edit-select-same-stroke-color</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Stroke St_yle</attribute>
+ <attribute name='action'>win.select-same-stroke-style</attribute>
+ <attribute name='icon'>edit-select-same-stroke-style</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Object Type</attribute>
+ <attribute name='action'>win.select-same-object-type</attribute>
+ <attribute name='icon'>edit-select-same-object-type</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name='label' translatable="yes">In_vert Selection</attribute>
+ <attribute name='action'>win.select-invert</attribute>
+ <attribute name='icon'>edit-select-invert</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">D_eselect</attribute>
+ <attribute name='action'>win.select-none</attribute>
+ <attribute name='icon'>edit-select-none</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Resize Page to Selection</attribute>
+ <attribute name='action'>app.page-fit-to-selection</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Create _Guides Around the Current Page</attribute>
+ <attribute name='action'>doc.create-guides-around-page</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Lock All Guides</attribute>
+ <attribute name='action'>doc.lock-all-guides</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Delete All Guides</attribute>
+ <attribute name='action'>doc.delete-all-guides</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_XML Editor...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>XMLEditor</attribute>
+ <attribute name='icon'>dialog-xml-editor</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Input Devices...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Input</attribute>
+ <attribute name='icon'>dialog-input-devices</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">P_references</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Preferences</attribute>
+ <attribute name='icon'>preferences-system</attribute>
+ <attribute name='use-icon'>true</attribute>
+ <attribute name='hidden-when'>macos-menubar</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="view-menu">
+ <attribute name='label' translatable="yes">_View</attribute>
+ <submenu id="zoom-menu">
+ <attribute name='label' translatable='yes'>_Zoom</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Zoom in</attribute>
+ <attribute name='action'>win.canvas-zoom-in</attribute>
+ <attribute name='icon'>zoom-in</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom out</attribute>
+ <attribute name='action'>win.canvas-zoom-out</attribute>
+ <attribute name='icon'>zoom-out</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Zoom to 1:1</attribute>
+ <attribute name='action'>win.canvas-zoom-1-1</attribute>
+ <attribute name='icon'>zoom-original</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom to 1:2</attribute>
+ <attribute name='action'>win.canvas-zoom-1-2</attribute>
+ <attribute name='icon'>zoom-half-size</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom to 2:1</attribute>
+ <attribute name='action'>win.canvas-zoom-2-1</attribute>
+ <attribute name='icon'>zoom-double-size</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Selection</attribute>
+ <attribute name='action'>win.canvas-zoom-selection</attribute>
+ <attribute name='icon'>zoom-fit-selection</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Drawing</attribute>
+ <attribute name='action'>win.canvas-zoom-drawing</attribute>
+ <attribute name='icon'>zoom-fit-drawing</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Page</attribute>
+ <attribute name='action'>win.canvas-zoom-page</attribute>
+ <attribute name='icon'>zoom-fit-page</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Page Width</attribute>
+ <attribute name='action'>win.canvas-zoom-page-width</attribute>
+ <attribute name='icon'>zoom-fit-width</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Center Page</attribute>
+ <attribute name='action'>win.canvas-zoom-center-page</attribute>
+ <attribute name='icon'>zoom-center-page</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Previous</attribute>
+ <attribute name='action'>win.canvas-zoom-prev</attribute>
+ <attribute name='icon'>zoom-previous</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Zoom Next</attribute>
+ <attribute name='action'>win.canvas-zoom-next</attribute>
+ <attribute name='icon'>zoom-next</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu id="orientation-menu">
+ <attribute name='label' translatable='yes'>_Orientation</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Rotate Clockwise</attribute>
+ <attribute name='action'>win.canvas-rotate-cw</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Rotate Counter-Clockwise</attribute>
+ <attribute name='action'>win.canvas-rotate-ccw</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Reset Rotation</attribute>
+ <attribute name='action'>win.canvas-rotate-reset</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Lock Rotation</attribute>
+ <attribute name='action'>win.canvas-rotate-lock</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Flip Horizontally</attribute>
+ <attribute name='action'>win.canvas-flip-horizontal</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Flip Vertically</attribute>
+ <attribute name='action'>win.canvas-flip-vertical</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Reset Flipping</attribute>
+ <attribute name='action'>win.canvas-flip-reset</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu id="display-mode-menu">
+ <attribute name='label' translatable='yes'>_Display Mode</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Normal</attribute>
+ <attribute name='action'>win.canvas-display-mode</attribute>
+ <attribute name='target' type='i'>0</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Outline</attribute>
+ <attribute name='action'>win.canvas-display-mode</attribute>
+ <attribute name='target' type='i'>1</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Outline Overlay</attribute>
+ <attribute name='action'>win.canvas-display-mode</attribute>
+ <attribute name='target' type='i'>4</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Enhance Thin Lines</attribute>
+ <attribute name='action'>win.canvas-display-mode</attribute>
+ <attribute name='target' type='i'>3</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">No Filters</attribute>
+ <attribute name='action'>win.canvas-display-mode</attribute>
+ <attribute name='target' type='i'>2</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Cycle</attribute>
+ <attribute name='action'>win.canvas-display-mode-cycle</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Toggle</attribute>
+ <attribute name='action'>win.canvas-display-mode-toggle</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu id="split-mode-menu">
+ <attribute name='label' translatable='yes'>_Split Mode</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">None</attribute>
+ <attribute name='action'>win.canvas-split-mode</attribute>
+ <attribute name='target' type='i'>0</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Split</attribute>
+ <attribute name='action'>win.canvas-split-mode</attribute>
+ <attribute name='target' type='i'>1</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">X-Ray</attribute>
+ <attribute name='action'>win.canvas-split-mode</attribute>
+ <attribute name='target' type='i'>2</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Gray Scale</attribute>
+ <attribute name='action'>win.canvas-color-mode</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Color Management</attribute>
+ <attribute name='action'>win.canvas-color-manage</attribute>
+ </item>
+ </section>
+ <item>
+ <attribute name='label' translatable="yes">Page _Grid</attribute>
+ <attribute name='action'>doc.show-grids</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">G_uides</attribute>
+ <attribute name='action'>doc.show-all-guides</attribute>
+ </item>
+ <section>
+ <submenu id="display-show-hide">
+ <attribute name='label' translatable='yes'>Sh_ow/Hide</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Commands Bar</attribute>
+ <attribute name='action'>win.canvas-commands-bar</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Sn_ap Controls Bar</attribute>
+ <attribute name='action'>win.canvas-snap-controls-bar</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">T_ool Controls Bar</attribute>
+ <attribute name='action'>win.canvas-tool-control-bar</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Toolbox</attribute>
+ <attribute name='action'>win.canvas-toolbox</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Rulers</attribute>
+ <attribute name='action'>win.canvas-rulers</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Scroll_bars</attribute>
+ <attribute name='action'>win.canvas-scroll-bars</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Palette</attribute>
+ <attribute name='action'>win.canvas-palette</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Statusbar</attribute>
+ <attribute name='action'>win.canvas-statusbar</attribute>
+ </item>
+ </section>
+ </submenu>
+ <item>
+ <attribute name='label' translatable="yes">Show/Hide D_ialogs</attribute>
+ <attribute name='action'>win.dialog-toggle</attribute>
+ <attribute name='icon'>show-dialogs</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Command Palette</attribute>
+ <attribute name='action'>win.canvas-command-palette</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">S_watches...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Swatches</attribute>
+ <attribute name='icon'>swatches</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Messages...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Messages</attribute>
+ <attribute name='icon'>dialog-messages</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">P_revious Window</attribute>
+ <attribute name='action'>win.window-previous</attribute>
+ <attribute name='icon'>window-previous</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">N_ext Window</attribute>
+ <attribute name='action'>win.window-next</attribute>
+ <attribute name='icon'>window-next</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Icon Preview</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>IconPreview</attribute>
+ <attribute name='icon'>dialog-icon-preview</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Duplic_ate Window</attribute>
+ <attribute name='action'>win.window-new</attribute>
+ <attribute name='icon'>window-new</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Fullscreen</attribute>
+ <attribute name='action'>win.view-fullscreen</attribute>
+ <attribute name='icon'>view-fullscreen</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Wide Screen</attribute>
+ <attribute name='action'>win.canvas-interface-mode</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="layer-menu">
+ <attribute name='label' translatable="yes">_Layer</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Layers and Objects...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Objects</attribute>
+ <attribute name='icon'>dialog-objects</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Add Layer...</attribute>
+ <attribute name='action'>win.layer-new</attribute>
+ <attribute name='icon'>layer-new</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Re_name Layer...</attribute>
+ <attribute name='action'>win.layer-rename</attribute>
+ <attribute name='icon'>layer-rename</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Show/Hide Current Layer</attribute>
+ <attribute name='action'>win.layer-hide-toggle</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Lock/Unlock Current Layer</attribute>
+ <attribute name='action'>win.layer-lock-toggle</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Switch to Layer Abov_e</attribute>
+ <attribute name='action'>win.layer-previous</attribute>
+ <attribute name='icon'>layer-previous</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Switch to Layer Belo_w</attribute>
+ <attribute name='action'>win.layer-next</attribute>
+ <attribute name='icon'>layer-next</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Move Selection to Layer Abo_ve</attribute>
+ <attribute name='action'>win.selection-move-to-layer-above</attribute>
+ <attribute name='icon'>selection-move-to-layer-above</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Move Selection to Layer Bel_ow</attribute>
+ <attribute name='action'>win.selection-move-to-layer-below</attribute>
+ <attribute name='icon'>selection-move-to-layer-below</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Move Selection to Layer...</attribute>
+ <attribute name='action'>win.selection-move-to-layer</attribute>
+ <attribute name='icon'>selection-move-to-layer</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Layer to _Top</attribute>
+ <attribute name='action'>win.layer-top</attribute>
+ <attribute name='icon'>layer-top</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Raise Layer</attribute>
+ <attribute name='action'>win.layer-raise</attribute>
+ <attribute name='icon'>layer-raise</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Lower Layer</attribute>
+ <attribute name='action'>win.layer-lower</attribute>
+ <attribute name='icon'>layer-lower</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Layer to _Bottom</attribute>
+ <attribute name='action'>win.layer-bottom</attribute>
+ <attribute name='icon'>layer-bottom</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">D_uplicate Current Layer</attribute>
+ <attribute name='action'>win.layer-duplicate</attribute>
+ <attribute name='icon'>layer-duplicate</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Delete Current Layer</attribute>
+ <attribute name='action'>win.layer-delete</attribute>
+ <attribute name='icon'>layer-delete</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="object-menu">
+ <attribute name='label' translatable="yes">_Object</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Layers and Objects...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Objects</attribute>
+ <attribute name='icon'>dialog-objects</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Fill and Stroke...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>FillStroke</attribute>
+ <attribute name='icon'>dialog-fill-and-stroke</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Object Properties...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>ObjectProperties</attribute>
+ <attribute name='icon'>dialog-object-properties</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">S_ymbols...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Symbols</attribute>
+ <attribute name='icon'>symbols</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Paint Servers...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>PaintServers</attribute>
+ <attribute name='icon'>symbols</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Selectors and CSS...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Selectors</attribute>
+ <attribute name='icon'>dialog-selectors</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Group</attribute>
+ <attribute name='action'>app.selection-group</attribute>
+ <attribute name='icon'>object-group</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Ungroup</attribute>
+ <attribute name='action'>app.selection-ungroup</attribute>
+ <attribute name='icon'>object-ungroup</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Pop Selected Objects out of Group</attribute>
+ <attribute name='action'>app.selection-ungroup-pop</attribute>
+ <attribute name='icon'>object-ungroup-pop-selection</attribute>
+ </item>
+ </section>
+ <section>
+ <submenu id="object-clip">
+ <attribute name='label' translatable='yes'>Cli_p</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Set Clip</attribute>
+ <attribute name='action'>app.object-set-clip</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Set Inverse Clip (LPE)</attribute>
+ <attribute name='action'>app.object-set-inverse-clip</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Release Clip</attribute>
+ <attribute name='action'>app.object-release-clip</attribute>
+ </item>
+ </section>
+ </submenu>
+ </section>
+ <submenu id="object-mask">
+ <attribute name='label' translatable='yes'>Mas_k</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Set Mask</attribute>
+ <attribute name='action'>app.object-set-mask</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Set Inverse Mask (LPE)</attribute>
+ <attribute name='action'>app.object-set-inverse-mask</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Release Mask</attribute>
+ <attribute name='action'>app.object-release-mask</attribute>
+ </item>
+ </section>
+ </submenu>
+ <submenu id="object-mask">
+ <attribute name='label' translatable='yes'>Patter_n</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Objects to Patter_n</attribute>
+ <attribute name='action'>app.object-to-pattern</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Pattern to _Objects</attribute>
+ <attribute name='action'>app.pattern-to-object</attribute>
+ </item>
+ </section>
+ </submenu>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Objects to _Marker</attribute>
+ <attribute name='action'>app.object-to-marker</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Objects to Gu_ides</attribute>
+ <attribute name='action'>app.object-to-guides</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Raise to _Top</attribute>
+ <attribute name='action'>app.selection-top</attribute>
+ <attribute name='icon'>selection-top</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Raise</attribute>
+ <attribute name='action'>app.selection-raise</attribute>
+ <attribute name='icon'>selection-raise</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Lower</attribute>
+ <attribute name='action'>app.selection-lower</attribute>
+ <attribute name='icon'>selection-lower</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Lower to _Bottom</attribute>
+ <attribute name='action'>app.selection-bottom</attribute>
+ <attribute name='icon'>selection-bottom</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Rotate 90° CW</attribute>
+ <attribute name='action'>app.object-rotate-90-cw</attribute>
+ <attribute name='icon'>object-rotate-right</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Rotate 90° CCW</attribute>
+ <attribute name='action'>app.object-rotate-90-ccw</attribute>
+ <attribute name='icon'>object-rotate-left</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Flip _Horizontal</attribute>
+ <attribute name='action'>app.object-flip-horizontal</attribute>
+ <attribute name='icon'>object-flip-horizontal</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Flip _Vertical</attribute>
+ <attribute name='action'>app.object-flip-vertical</attribute>
+ <attribute name='icon'>object-flip-vertical</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Unhide All</attribute>
+ <attribute name='action'>app.unhide-all</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Unlock All</attribute>
+ <attribute name='action'>app.unlock-all</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Transfor_m...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Transform</attribute>
+ <attribute name='icon'>dialog-transform</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Align and Distribute...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>AlignDistribute</attribute>
+ <attribute name='icon'>dialog-align-and-distribute</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="path-menu">
+ <attribute name='label' translatable="yes">_Path</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Object to Path</attribute>
+ <attribute name='action'>app.object-to-path</attribute>
+ <attribute name='icon'>object-to-path</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Stroke to Path</attribute>
+ <attribute name='action'>app.object-stroke-to-path</attribute>
+ <attribute name='icon'>stroke-to-path</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Trace Bitmap...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Trace</attribute>
+ <attribute name='icon'>bitmap-trace</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Union</attribute>
+ <attribute name='action'>app.path-union</attribute>
+ <attribute name='icon'>path-union</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Difference</attribute>
+ <attribute name='action'>app.path-difference</attribute>
+ <attribute name='icon'>path-difference</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Intersection</attribute>
+ <attribute name='action'>app.path-intersection</attribute>
+ <attribute name='icon'>path-intersection</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">E_xclusion</attribute>
+ <attribute name='action'>app.path-exclusion</attribute>
+ <attribute name='icon'>path-exclusion</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Di_vision</attribute>
+ <attribute name='action'>app.path-division</attribute>
+ <attribute name='icon'>path-division</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Cut _Path</attribute>
+ <attribute name='action'>app.path-cut</attribute>
+ <attribute name='icon'>path-cut</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Combine</attribute>
+ <attribute name='action'>app.path-combine</attribute>
+ <attribute name='icon'>path-combine</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Break _Apart</attribute>
+ <attribute name='action'>app.path-break-apart</attribute>
+ <attribute name='icon'>path-break-apart</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Split Pat_h</attribute>
+ <attribute name='action'>app.path-split</attribute>
+ <attribute name='icon'>path-split</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Fracture</attribute>
+ <attribute name='action'>app.path-fracture</attribute>
+ <attribute name='icon'>path-fracture</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Flatten</attribute>
+ <attribute name='action'>app.path-flatten</attribute>
+ <attribute name='icon'>path-flatten</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">I_nset</attribute>
+ <attribute name='action'>win.path-inset</attribute>
+ <attribute name='icon'>path-inset</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Outs_et</attribute>
+ <attribute name='action'>win.path-offset</attribute>
+ <attribute name='icon'>path-outset</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">D_ynamic Offset</attribute>
+ <attribute name='action'>win.path-offset-dynamic</attribute>
+ <attribute name='icon'>path-offset-dynamic</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Linked Offset</attribute>
+ <attribute name='action'>win.path-offset-linked</attribute>
+ <attribute name='icon'>path-offset-linked</attribute>
+ <attribute name='use-icon'>true</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Fill between paths</attribute>
+ <attribute name='action'>app.path-fill-between-paths</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Si_mplify</attribute>
+ <attribute name='action'>app.path-simplify</attribute>
+ <attribute name='icon'>path-simplify</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Reverse</attribute>
+ <attribute name='action'>win.path-reverse</attribute>
+ <attribute name='icon'>path-reverse</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Path E_ffects...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>LivePathEffect</attribute>
+ <attribute name='icon'>dialog-path-effects</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Paste Path _Effect</attribute>
+ <attribute name='action'>app.paste-path-effect</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Remove Path _Effect</attribute>
+ <attribute name='action'>app.remove-path-effect</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="text-menu">
+ <attribute name='label' translatable="yes">_Text</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Text and Font...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Text</attribute>
+ <attribute name='icon'>dialog-text-and-font</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">SVG Font Editor...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>SVGFonts</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Unicode Characters...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Glyphs</attribute>
+ <attribute name='icon'>accessories-character-map</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Put on Path</attribute>
+ <attribute name='action'>app.text-put-on-path</attribute>
+ <attribute name='icon'>text-put-on-path</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Remove from Path</attribute>
+ <attribute name='action'>app.text-remove-from-path</attribute>
+ <attribute name='icon'>text-remove-from-path</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">_Flow into Frame</attribute>
+ <attribute name='action'>app.text-flow-into-frame</attribute>
+ <attribute name='icon'>text-flow-into-frame</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Set _Subtraction Frames</attribute>
+ <attribute name='action'>app.text-flow-subtract-frame</attribute>
+ <attribute name='icon'>text-flow-subtract-frame</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Unflow</attribute>
+ <attribute name='action'>app.text-unflow</attribute>
+ <attribute name='icon'>text-unflow</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Convert to Text</attribute>
+ <attribute name='action'>app.text-convert-to-regular</attribute>
+ <attribute name='icon'>text-convert-to-regular</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Remove Manual _Kerns</attribute>
+ <attribute name='action'>app.text-unkern</attribute>
+ <attribute name='icon'>text-unkern</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Check Spellin_g...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Spellcheck</attribute>
+ <attribute name='icon'>tools-check-spelling</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="filter-menu">
+ <attribute name='label' translatable="yes">Filter_s</attribute>
+ <section id="filter-menu-filters"/>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Filter _Editor...</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>FilterEffects</attribute>
+ <attribute name='icon'>dialog-filters</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Remove Filters</attribute>
+ <attribute name='action'>app.edit-remove-filter</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="effect-menu">
+ <attribute name='label' translatable="yes">Exte_nsions</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Previous Exte_nsion</attribute>
+ <attribute name='action'>app.last-effect</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Previous Extension Settings...</attribute>
+ <attribute name='action'>app.last-effect-pref</attribute>
+ </item>
+ </section>
+ <section id="effect-menu-effects"/>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Manage Extensions...</attribute>
+ <attribute name='action'>app.org.inkscape.extension.manager</attribute>
+ </item>
+ </section>
+ </submenu>
+
+ <submenu id="help-menu">
+ <attribute name='label' translatable="yes">_Help</attribute>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape Manual</attribute>
+ <attribute name='action'>win.help-url-manual</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Keys and Mouse Reference</attribute>
+ <attribute name='action'>win.help-url-keys</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Ask Us a Question</attribute>
+ <attribute name='action'>win.help-url-ask-question</attribute>
+ </item>
+ <submenu id="tutiorial">
+ <attribute name='label' translatable='yes'>Tutorials</attribute>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: _Basic</attribute>
+ <attribute name='action'>app.tutorial-basic</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: _Shapes</attribute>
+ <attribute name='action'>app.tutorial-shapes</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: _Advanced</attribute>
+ <attribute name='action'>app.tutorial-advanced</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: T_racing</attribute>
+ <attribute name='action'>app.tutorial-tracing</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: Tracing Pixel Art</attribute>
+ <attribute name='action'>app.tutorial-tracing-pixelart</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: _Calligraphy</attribute>
+ <attribute name='action'>app.tutorial-calligraphy</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Inkscape: _Interpolate</attribute>
+ <attribute name='action'>app.tutorial-interpolate</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Elements of Design</attribute>
+ <attribute name='action'>app.tutorial-design</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_Tips and Tricks</attribute>
+ <attribute name='action'>app.tutorial-tips</attribute>
+ </item>
+ </submenu>
+ <item>
+ <attribute name='label' translatable="yes">Command Line Options</attribute>
+ <attribute name='action'>win.help-url-man</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">FAQ</attribute>
+ <attribute name='action'>win.help-url-faq</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">New in This Version</attribute>
+ <attribute name='action'>win.help-url-release-notes</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Report a Bug</attribute>
+ <attribute name='action'>win.help-url-report-bug</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">Donate</attribute>
+ <attribute name='action'>win.help-url-donate</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">SVG 1.1 Specification</attribute>
+ <attribute name='action'>win.help-url-svg11-spec</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">SVG 2 Specification</attribute>
+ <attribute name='action'>win.help-url-svg2-spec</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name='label' translatable="yes">About _Memory</attribute>
+ <attribute name='action'>win.dialog-open</attribute>
+ <attribute name='target'>Memory</attribute>
+ <attribute name='icon'>dialog-memory</attribute>
+ </item>
+ <item>
+ <attribute name='label' translatable="yes">_About Inkscape</attribute>
+ <attribute name='action'>app.about</attribute>
+ <attribute name='icon'>inkscape-logo</attribute>
+ <attribute name='use-icon'>true</attribute>
+ <attribute name='hidden-when'>macos-menubar</attribute>
+ </item>
+ </section>
+ </submenu>
+ </menu>
+
+</interface>
diff --git a/share/ui/object-attributes.glade b/share/ui/object-attributes.glade
new file mode 100644
index 0000000..2793f1e
--- /dev/null
+++ b/share/ui/object-attributes.glade
@@ -0,0 +1,1095 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.40.0 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <!-- n-columns=4 n-rows=5 -->
+ <object class="GtkGrid">
+ <property name="name">text-main</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-el-end">
+ <property name="lower">-360</property>
+ <property name="upper">360</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-el-rx">
+ <property name="upper">1000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-el-ry">
+ <property name="upper">1000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-el-start">
+ <property name="lower">-360</property>
+ <property name="upper">360</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-rect-height">
+ <property name="upper">1000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-rect-rx">
+ <property name="upper">1000000</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-rect-ry">
+ <property name="upper">1000000</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-rect-width">
+ <property name="upper">1000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-star-corner">
+ <property name="lower">3</property>
+ <property name="upper">1024</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-star-ratio">
+ <property name="lower">0.01</property>
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-star-rnd">
+ <property name="lower">-10</property>
+ <property name="upper">10</property>
+ <property name="step-increment">0.010000000000000002</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-star-rounded">
+ <property name="lower">-10</property>
+ <property name="upper">10</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkImage" id="image-arc">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse-arc</property>
+ </object>
+ <object class="GtkImage" id="image-chord">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse-chord</property>
+ </object>
+ <object class="GtkImage" id="image-clea">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-clear-value</property>
+ </object>
+ <object class="GtkImage" id="image-clear1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-clear-value</property>
+ </object>
+ <object class="GtkImage" id="image-clear2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">edit-clear-value</property>
+ </object>
+ <object class="GtkImage" id="image-level">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">object-level</property>
+ </object>
+ <object class="GtkImage" id="image-poly">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-polygon</property>
+ </object>
+ <object class="GtkImage" id="image-round">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">rounding</property>
+ </object>
+ <object class="GtkImage" id="image-round-corners">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">rectangle-make-corners-round</property>
+ </object>
+ <object class="GtkImage" id="image-round1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">rounding</property>
+ </object>
+ <object class="GtkImage" id="image-seg">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse-segment</property>
+ </object>
+ <object class="GtkImage" id="image-sharp">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">rectangle-make-corners-sharp</property>
+ </object>
+ <!-- n-columns=5 n-rows=6 -->
+ <object class="GtkGrid" id="rect-main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Dimensions</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">W:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="rect-width">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Width of rectangle (without stroke)</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-rect-width</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">H:</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="rect-height">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Height of rectangle (without stroke)</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-rect-height</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-top">4</property>
+ <property name="label" translatable="yes">Corner radius</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Rx:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="rect-rx">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Horizontal radius of rounded corners</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-rect-rx</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Ry:</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="rect-ry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Vertical radius of rounded corners</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-rect-ry</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkButton" id="rect-sharp">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Make corners sharp</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="image">image-sharp</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">3</property>
+ <property name="margin-end">3</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="rect-corners">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Make corners independent (path effect)</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="image">image-round-corners</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="rect-round">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Round numbers to nearest integer</property>
+ <property name="image">image-round</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkImage" id="image-star">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-star</property>
+ </object>
+ <!-- n-columns=4 n-rows=6 -->
+ <object class="GtkGrid" id="star-main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Shape</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Corner:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Rounded:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Randomized:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="star-corners">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Number of corners of a polygon or star</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-star-corner</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="star-rounded">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">How rounded are the corners (0 for sharp)</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-star-rounded</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="star-rand">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Scatter randomly the corners and angles</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-star-rnd</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkRadioButton" id="star-poly">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Regular polygon (with one handle) instead of a star</property>
+ <property name="image">image-poly</property>
+ <property name="draw-indicator">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="star-star">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Star instead of a regular polygon (with one handle)</property>
+ <property name="image">image-star</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">star-poly</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">3</property>
+ <property name="margin-end">3</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="star-align">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Level shape</property>
+ <property name="image">image-level</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="star-ratio-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Spoke ratio:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="star-ratio">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Base radius to tip radius ratio</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-star-ratio</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="star-spacer">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="star-rnd-clear">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">start</property>
+ <property name="image">image-clea</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="star-round-clear">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">start</property>
+ <property name="image">image-clear1</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="star-ratio-clear">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">start</property>
+ <property name="image">image-clear2</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="star-spacer1">
+ <property name="width-request">40</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkImage" id="image-whole">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse-whole</property>
+ </object>
+ <!-- n-columns=5 n-rows=6 -->
+ <object class="GtkGrid" id="ellipse-main">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Radii</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Rx:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="el-rx">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Horizontal radius of the circle, ellipse, or arc</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-el-rx</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Ry:</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="el-ry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Vertical radius of the circle, ellipse, or arc</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-el-ry</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-top">4</property>
+ <property name="label" translatable="yes">Angles</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Start:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">End:</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="el-start">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The angle (in degrees) from the horizontal to the arc's start point</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-el-start</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="el-end">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">The angle (in degrees) from the horizontal to the arc's end point</property>
+ <property name="hexpand">True</property>
+ <property name="width-chars">6</property>
+ <property name="adjustment">adjustment-el-end</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkRadioButton" id="el-slice">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Switch to slice (closed shape with two radii)</property>
+ <property name="image">image-seg</property>
+ <property name="draw-indicator">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="el-arc">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Switch to arc (unclosed shape)</property>
+ <property name="image">image-arc</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">el-slice</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="el-chord">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Switch to chord (closed shape)</property>
+ <property name="image">image-chord</property>
+ <property name="draw-indicator">False</property>
+ <property name="group">el-slice</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">3</property>
+ <property name="margin-end">3</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="el-whole">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Make the shape a whole ellipse, not arc or segment</property>
+ <property name="image">image-whole</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="el-round">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Round numbers to nearest integer</property>
+ <property name="image">image-round1</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="small-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">4</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <object class="GtkBox" id="main-widget">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">4</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox" id="main-header">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="main-obj-name">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="no">label</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="main-panel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/page-properties.glade b/share/ui/page-properties.glade
new file mode 100644
index 0000000..4f64105
--- /dev/null
+++ b/share/ui/page-properties.glade
@@ -0,0 +1,1018 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adj-page-height">
+ <property name="lower">0.001</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-page-width">
+ <property name="lower">0.001</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-scale-x">
+ <property name="lower">9.9999999999999995e-07</property>
+ <property name="upper">1000000</property>
+ <property name="value">1</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-viewbox-height">
+ <property name="lower">0.001</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-viewbox-width">
+ <property name="lower">0.001</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-viewbox-x">
+ <property name="lower">-10000000</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adj-viewbox-y">
+ <property name="lower">-10000000</property>
+ <property name="upper">10000000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkImage" id="image-resize">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">pages-resize-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="pixel-size">20</property>
+ <property name="icon-name">page-portrait-symbolic</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="pixel-size">20</property>
+ <property name="icon-name">page-landscape-symbolic</property>
+ </object>
+ <object class="GtkMenu" id="page-templates-menu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="reserve-toggle-size">False</property>
+ </object>
+ <!-- n-columns=3 n-rows=2 -->
+ <object class="GtkGrid" id="main-grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <child>
+ <!-- n-columns=4 n-rows=16 -->
+ <object class="GtkGrid" id="left-grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Front page</property>
+ <style>
+ <class name="heading"/>
+ <class name="top"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Width:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Height:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="page-width">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Width of front page</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-page-width</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="page-height">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Height of front page</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-page-height</property>
+ <property name="digits">3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Resize to content:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Orientation:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="page-landscape">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="margin-end">5</property>
+ <property name="image">image2</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">page-portrait</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="page-portrait">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="margin-end">5</property>
+ <property name="image">image1</property>
+ <property name="active">True</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="page-resize">
+ <property name="width-request">50</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Fit the page to the current selection or the drawing if there's no selection.</property>
+ <property name="halign">end</property>
+ <property name="image">image-resize</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="link-width-height">
+ <property name="name">LockGuides</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">start</property>
+ <property name="margin-start">2</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="link-edit-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">2</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scale-x-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Scale:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="scale-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Document scale establishes size of user units.
+SVG element positions are expressed in user units.</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-scale-x</property>
+ <property name="digits">6</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">X:</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Y:</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Width:</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">13</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Height:</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">14</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="viewbox-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-viewbox-x</property>
+ <property name="digits">3</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">11</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="viewbox-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-viewbox-y</property>
+ <property name="digits">3</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">12</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="viewbox-width">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-viewbox-width</property>
+ <property name="digits">3</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">13</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="viewbox-height">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="width-chars">9</property>
+ <property name="adjustment">adj-viewbox-height</property>
+ <property name="digits">3</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">14</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="margin-end">2</property>
+ <property name="label" translatable="yes">Format:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="page-menu-btn">
+ <property name="width-request">80</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Predefined paper sizes to choose from</property>
+ <property name="margin-end">2</property>
+ <property name="hexpand">True</property>
+ <property name="draw-indicator">True</property>
+ <property name="popup">page-templates-menu</property>
+ <property name="use-popover">False</property>
+ <child>
+ <object class="GtkLabel" id="page-template-name">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">A4</property>
+ <property name="ellipsize">end</property>
+ <property name="single-line-mode">True</property>
+ <property name="max-width-chars">8</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="page-units">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Document's units used to specify document size only</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander" id="viewbox-expander">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-top">6</property>
+ <property name="margin-bottom">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Advanced viewbox scaling options</property>
+ <property name="label" translatable="yes">Viewbox</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">10</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="linked-scale-img">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="margin-start">2</property>
+ <property name="stock">gtk-missing-image</property>
+ <style>
+ <class name="viewbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">13</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="nonuniform-scale">
+ <property name="name">non-uniform-scale</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Non-uniform scale!</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">9</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="user-units">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">xx</property>
+ <style>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">4</property>
+ <property name="label" translatable="yes">per user unit</property>
+ <style>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">8</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="unsupported">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Unsupported percentage size!</property>
+ <attributes>
+ <attribute name="style" value="italic"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=5 n-rows=5 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Display</property>
+ <style>
+ <class name="heading"/>
+ <class name="top"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Display units:</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="display-units">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Units used throughout the user interface</property>
+ <property name="halign">end</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="preview-box">
+ <property name="height-request">132</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=3 n-rows=2 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="margin-bottom">6</property>
+ <property name="row-spacing">2</property>
+ <property name="column-spacing">4</property>
+ <property name="column-homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="background-color">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Page background color used during editing and exporting</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="border-color">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Page border and drop shadow color</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="desk-color">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Desk background color surrounding pages</property>
+ <property name="halign">center</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="label" translatable="yes">Border</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="label" translatable="yes">Page</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <property name="label" translatable="yes">Desk</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="checkerboard">
+ <property name="label" translatable="yes">Checkerboard</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">If set, use a colored checkerboard for the desk background.</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="border">
+ <property name="label" translatable="yes">Border</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">If set, a rectangular page border is shown.</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="border-top">
+ <property name="label" translatable="yes">Always on top</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">If set, the page border is always on top of the drawing.</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ <style>
+ <class name="indent"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="shadow">
+ <property name="label" translatable="yes">Show shadow</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">If set, the page border shows a shadow on its right and lower side.</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ <style>
+ <class name="indent"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="page-label-style">
+ <property name="label" translatable="yes">Show big page labels</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Show the big page labels below the page border.</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Render</property>
+ <style>
+ <class name="heading"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="clip-to-page">
+ <property name="label" translatable="yes">Clip to page</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">Anything that is not on a page will not be displayed</property>
+ <property name="halign">start</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="use-antialias">
+ <property name="label" translatable="yes">Use antialiasing</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="tooltip-text" translatable="yes">If unset, no antialiasing will be done on the drawing.</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/pattern-edit.glade b/share/ui/pattern-edit.glade
new file mode 100644
index 0000000..1decedf
--- /dev/null
+++ b/share/ui/pattern-edit.glade
@@ -0,0 +1,755 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.24"/>
+ <object class="GtkAdjustment" id="adjustment-angle">
+ <property name="lower">-360</property>
+ <property name="upper">360.00999999999999</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">15</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-gap-x">
+ <property name="upper">40</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-gap-y">
+ <property name="upper">40</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">2</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-offset">
+ <property name="lower">-10000</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-offset-2">
+ <property name="lower">-10000</property>
+ <property name="upper">10000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-orient">
+ <property name="lower">-12</property>
+ <property name="upper">12</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-scale">
+ <property name="lower">0.01</property>
+ <property name="upper">1000</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">0.20</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-scale-2">
+ <property name="lower">0.01</property>
+ <property name="upper">1000</property>
+ <property name="step-increment">0.10</property>
+ <property name="page-increment">0.20</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment-tile-size">
+ <property name="upper">20</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkPopover" id="popover-options">
+ <property name="width-request">260</property>
+ <property name="can-focus">False</property>
+ <property name="position">bottom</property>
+ <child>
+ <object class="GtkBox" id="options">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">8</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="show-names">
+ <property name="label" translatable="yes">Show names</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="label" translatable="yes">Tile size:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="tile-slider">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-tile-size</property>
+ <property name="round-digits">0</property>
+ <property name="draw-value">False</property>
+ <property name="has-origin">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image-linked">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">entries-linked-symbolic</property>
+ <property name="icon_size">3</property>
+ </object>
+ <object class="GtkImage" id="image-unlinked">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">entries-unlinked-symbolic</property>
+ <property name="icon_size">3</property>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-previous-symbolic</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">go-next-symbolic</property>
+ <property name="use-fallback">True</property>
+ </object>
+ <object class="GtkBox" id="main-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-bottom">2</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Pattern fill</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSearchEntry" id="search">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">end</property>
+ <property name="width-chars">16</property>
+ <property name="caps-lock-warning">False</property>
+ <property name="primary-icon-name">edit-find-symbolic</property>
+ <property name="primary-icon-activatable">False</property>
+ <property name="primary-icon-sensitive">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">center</property>
+ <property name="relief">none</property>
+ <property name="popover">popover-options</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">gear</property>
+ </object>
+ </child>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="paned">
+ <property name="height-request">50</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="position">50</property>
+ <property name="position-set">True</property>
+ <property name="wide-handle">True</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="vscroll-policy">natural</property>
+ <child>
+ <object class="GtkFlowBox" id="doc-flowbox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="min-children-per-line">2</property>
+ <property name="max-children-per-line">999</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkComboBoxText" id="pattern-combo">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">1</property>
+ <style>
+ <class name="flat-combobox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="previous">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image1</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="next">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="image">image2</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="vscroll-policy">natural</property>
+ <child>
+ <object class="GtkFlowBox" id="flowbox">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="min-children-per-line">2</property>
+ <property name="max-children-per-line">999</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin-top">3</property>
+ <property name="margin-bottom">3</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <!-- n-columns=4 n-rows=8 -->
+ <object class="GtkGrid" id="input-grid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-end">4</property>
+ <property name="margin-top">4</property>
+ <property name="margin-bottom">4</property>
+ <property name="row-spacing">4</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Scale X:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="scale-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-scale</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">0.0001</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Scale Y:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="scale-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-scale-2</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ <property name="value">0.0001</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Orientation:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="angle">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-angle</property>
+ <property name="digits">2</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="orient">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="round-digits">0</property>
+ <property name="draw-value">False</property>
+ <property name="has-origin">False</property>
+ <style>
+ <class name="tight-slider"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Offset X:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Offset Y:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="offset-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-offset</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="offset-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-offset-2</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="gap-x">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-gap-x</property>
+ <property name="round-digits">0</property>
+ <property name="has-origin">False</property>
+ <style>
+ <class name="tight-slider"/>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="gap-y">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="adjustment">adjustment-gap-y</property>
+ <property name="round-digits">0</property>
+ <property name="has-origin">False</property>
+ <style>
+ <class name="tight-slider"/>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Gap X:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Gap Y:</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="edit-pattern">
+ <property name="label" translatable="yes">Edit on canvas</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-top">4</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkEntry" id="pattern-name">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">4</property>
+ <property name="margin-end">4</property>
+ <property name="margin-bottom">3</property>
+ <property name="has-frame">False</property>
+ <property name="width-chars">10</property>
+ <property name="xalign">0.5</property>
+ <property name="caps-lock-warning">False</property>
+ <property name="placeholder-text" translatable="no">name</property>
+ <style>
+ <class name="small-font"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-end">4</property>
+ <property name="hscrollbar-policy">external</property>
+ <property name="vscrollbar-policy">external</property>
+ <child>
+ <object class="GtkViewport" id="preview-box">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImage" id="preview">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="height">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="link-scale">
+ <property name="name">LockGuides</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="margin-end">1</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="height">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="color-label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Color: </property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="color-btn">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="receives-default">True</property>
+ <property name="tooltip-text" translatable="yes">Apply color to the current pattern</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/resources/canvas_ad.png b/share/ui/resources/canvas_ad.png
new file mode 100644
index 0000000..733104d
--- /dev/null
+++ b/share/ui/resources/canvas_ad.png
Binary files differ
diff --git a/share/ui/resources/canvas_aw.png b/share/ui/resources/canvas_aw.png
new file mode 100644
index 0000000..6f4a4e5
--- /dev/null
+++ b/share/ui/resources/canvas_aw.png
Binary files differ
diff --git a/share/ui/resources/canvas_cd.png b/share/ui/resources/canvas_cd.png
new file mode 100644
index 0000000..1005785
--- /dev/null
+++ b/share/ui/resources/canvas_cd.png
Binary files differ
diff --git a/share/ui/resources/canvas_cw.png b/share/ui/resources/canvas_cw.png
new file mode 100644
index 0000000..96f1584
--- /dev/null
+++ b/share/ui/resources/canvas_cw.png
Binary files differ
diff --git a/share/ui/resources/canvas_sw.png b/share/ui/resources/canvas_sw.png
new file mode 100644
index 0000000..ef0cfb6
--- /dev/null
+++ b/share/ui/resources/canvas_sw.png
Binary files differ
diff --git a/share/ui/spinbutton.css b/share/ui/spinbutton.css
new file mode 100644
index 0000000..c87aa5e
--- /dev/null
+++ b/share/ui/spinbutton.css
@@ -0,0 +1,11 @@
+/* those styles make spin buttons narrow; if enabled in preferences they are applied to all themes */
+
+spinbutton > button {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+spinbutton > entry {
+ padding-left: 0.5em;
+ padding-right: 0;
+} \ No newline at end of file
diff --git a/share/ui/style.css b/share/ui/style.css
new file mode 100644
index 0000000..375b15a
--- /dev/null
+++ b/share/ui/style.css
@@ -0,0 +1,1031 @@
+/* GTK3 WIDGET STYLING */
+
+
+/*
+ * Keep in order of:
+ * General -> Specific
+ * Order of appearance in widget tree.
+ * See GtkInspector
+ * GTK_DEBUG=interactive ~/path_to_gtk3/bin/inkscape
+ *
+ * We need a standardized naming scheme.
+ *
+ * As of Gtk 3.20, you cannot use widget names.
+ */
+
+
+/* Standard theme based colors. Prefer these.
+ *
+ * @theme_bg_color
+ * @theme_fg_color
+ * @theme_base_color
+ * @theme_text_color
+ * @theme_selected_bg_color
+ * @theme_selected_fg_color
+ * @theme_tooltip_bg_color
+ * @theme_tooltip_fg_color
+ *
+ */
+
+
+/* Our own custom shades... better not to use.
+ * Lightest to darkest based on linear rgb.
+ */
+
+@define-color bg_color0 #ffffff;
+
+/* White */
+
+@define-color bg_color05 #f8f8f8;
+
+/* Slightly off white */
+
+@define-color bg_color1 #f0f0f0;
+@define-color bg_color2 #e0e0e0;
+@define-color bg_color3 #d0d0d0;
+@define-color bg_color4 #bbbbbb;
+
+/* 50% Gray */
+
+@define-color bg_color5 #a5a5a5;
+@define-color bg_color6 #898989;
+@define-color bg_color7 #636363;
+@define-color bg_color8 #000000;
+
+/* Black */
+
+@import url("highlight-colors.css");
+
+/* Inkscape CSS helper
+ * to add a class to a widget do some thing like
+ * widget->get_style_context()->add_class("mycoolclass");
+ * we define a bunch of helper CSS styles
+ * Each Inkscape desktop has some classes in top level window
+ * called "dark|bright" (syncked with dark or brighrt themes) and "symbolic|regular" (defined by the user in themes preferences)
+ * so you can style using this clases
+ * by this way you can always know if the UI is in dark mode or using symbolic icons
+ * Also added some helper clases:
+ * ".inverted" invert colors fon widhet and childs
+ * ".highlight-dark" highlights with red tint
+ * ".highlight-light" highlights with yellow tint
+ * ".symbolic" Force icon symbolic
+ * ".regular" Force colorful icons
+ * " .forcebright Force darlk even if the towp wingow has clas dark (happends when theme is dark)
+ * " .forcedark" Force darlk even if the towp wingow has clas bright
+ * :::::::: Combo box.
+ * "..combobright" Combo bright
+ */
+
+*{
+ font-feature-settings: "tnum=1";
+}
+
+*:disabled image {
+ opacity: 0.4;
+}
+
+.symbolic image {
+ -gtk-icon-style: symbolic;
+}
+
+.regular image {
+ -gtk-icon-style: regular;
+}
+
+.regular .symbolic image {
+ -gtk-icon-style: symbolic;
+}
+
+.titlebutton > image {
+ -gtk-icon-style: requested;
+}
+
+.inverted,
+.dark .forcebright,
+.bright .forcedark {
+ color: @theme_bg_color;
+ background-color: @theme_fg_color;
+ background-image: image(@theme_fg_color);
+ caret-color: @theme_bg_color;
+ -gtk-secondary-caret-color: @theme_fg_color;
+}
+
+.highlight {
+ color: @theme_fg_color;
+ background-color: alpha(@theme_selected_bg_color,0.5);
+ background-image: image(alpha(@theme_selected_bg_color,0.5));
+ caret-color: @theme_bg_color;
+ border-radius:4px;
+ -gtk-secondary-caret-color: @theme_fg_color;
+}
+
+.noborder{
+ border-width:0;
+}
+
+/* blinking animation for dialogs reopen*/
+@keyframes blink_border {
+ 0% { border-color: @theme_selected_fg_color;}
+ 90% { border-color: @theme_selected_bg_color; }
+ 100% { border-color: @theme_selected_fg_color; }
+}
+@keyframes blink_background {
+ 0% { background-color: @theme_bg_color; }
+ 90% { background-color: @theme_selected_bg_color; }
+ 100% { background-color: @theme_bg_color; }
+}
+
+
+notebook.blink {
+ animation: 0.5s blink_border 0.1s ease 1;
+}
+
+notebook.blink > header > tabs > tab:checked {
+ animation: 0.5s blink_background 0.1s ease 1;
+}
+
+
+.inverted :not(menuitem):not(.rawstyle):not(overshoot):not(undershoot):not(selection),
+.bright .forcedark :not(menuitem):not(.rawstyle):not(overshoot):not(undershoot):not(selection),
+.dark .forcebright :not(menuitem):not(.rawstyle):not(overshoot):not(undershoot):not(selection) {
+ color: inherit;
+ background-color: inherit;
+ background-image: inherit;
+}
+
+.dark .combobright .combo,
+.dark .combobright menu{
+ background-color: @theme_text_color;
+ background-image: linear-gradient(to top, @theme_text_color, @theme_fd_color);
+ caret-color: @theme_base_color;
+ -gtk-secondary-caret-color: @theme_base_color;
+}
+.dark .combobright box *{
+ color: @theme_base_color;
+}
+.dark .combobright .combo *,
+.dark .combobright menu *{
+ color: inherit;
+}
+
+
+/* atribute dialog popup size */
+.attrpop textview {
+ font-size: 1em;
+}
+
+.mono-font {
+ /* note: monospaced font is set by ThemeContext::adjust_global_font_scale() */
+}
+
+/*
+*to get system default colors
+* with Gdk::RGBA success =_symbolic_error_color.get_stseparatole_context()->get_color();
+* _symbolic_error_color has one of this classes applied
+*/
+
+.system_base_color {
+ color: @theme_fg_color;
+ background-color: @theme_bg_color;
+}
+
+.system_error_color {
+ color: @error_color;
+}
+
+.system_warning_color {
+ color: @warning_color;
+}
+
+.system_success_color {
+ color: @success_color;
+}
+
+iconview *:hover {
+ border-width: 1px;
+ border-color: @theme_fg_color;
+ border-style: solid;
+ border-radius: 4px;
+}
+
+.dark iconview *:hover {
+ border-color: @theme_bg_color;
+}
+
+#startscreennotebook iconview *:hover{
+ background-color:@theme_selected_bg_color;
+ border-radius:5px;
+ border-width:0;
+}
+
+#start-screen-window .combo {
+ padding:15px 20px;
+}
+
+.inksmall {
+ font-size: 0.8em;
+}
+
+.menu-category {
+ font-size: smaller;
+ font-weight: bold;
+}
+
+.small-heading {
+ font-size: smaller;
+ font-weight: bold;
+ opacity: 0.5;
+}
+
+.halfrem-vert-space {
+ margin-top: 0.5rem;
+}
+
+#CommandPaletteBase {
+ background-color: @theme_base_color; /* some themes don't seem to have a background color for list rows defined and would end up transparent otherwise */
+ border: 5px solid @theme_bg_color;
+ border-radius: 5px;
+}
+
+#CommandPaletteBase list row:not(:last-child) {
+ border-bottom: 1px solid @bg_color5;
+}
+
+
+/* Selector dialog */
+#SelectorsAndStyleDialog button {
+ padding: 4px;
+ min-height: 16px;
+ margin: 2px;
+ padding: 2px;
+}
+
+#SelectorsAndStyleDialog .toggle {
+ min-width: 18px;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+#SelectorsAndStyleDialog .radio.image-button {
+ margin: 0;
+ padding: 0px;
+ border-radius: 2px 0 0 2px;
+}
+
+#SelectorsAndStyleDialog .radio.image-button:last-child {
+ border-radius: 0 2px 2px 0;
+ border-left-width: 0;
+}
+
+#SelectorsAndStyleDialog treeview button {
+ border-width: 0;
+ margin: 0 0 1px 0;
+}
+
+#SelectorsAndStyleDialog treeview button:nth-child(3),
+#SelectorsAndStyleDialog treeview.style_sheet button:nth-child(4) {
+ border-width: 0 0 0 2px;
+ border-color: @theme_fg_color;
+ border-style: solid;
+ opacity: 0.5;
+}
+
+#SelectorsAndStyleDialog treeview.style_sheet button:nth-child(3) {
+ border-width: 0;
+}
+
+#SelectorsAndStyleDialog #StyleDialog treeview button *{
+ font-size:5px;
+ min-height:1px;
+ padding:0;
+ margin:0;
+}
+
+#SelectorsAndStyleDialog #StyleDialog treeview button {
+ padding:0;
+ min-height:1px;
+ border-left-width:4px;
+ border-color:@success_color;
+}
+
+#InkRuler {
+ /* make size relative */
+ font-size: smaller;
+ color: alpha(@theme_fg_color, 0.6);
+ min-height: 2em;
+}
+
+.bright #InkRuler {
+ /* increase contrast between background and page area */
+ background-color: shade(@theme_bg_color, 0.94);
+}
+
+.bright #InkRuler.shadow {
+ border-color: rgba(0,0,0,0.3);
+}
+.dark #InkRuler.shadow {
+ border-color: rgba(0,0,0,0.5);
+}
+
+.dark #InkRuler.page {
+ background-color: #1d1e1e;
+}
+.bright #InkRuler.page {
+ background-color: #fff;
+}
+#InkRuler.selection {
+ border-color: rgba(22, 169, 249, 0.8);
+ background-color: transparent;
+}
+
+/* The actual canvas (Inkscape's drawing area). */
+SPCanvas {
+ background-color: white;
+}
+
+#TextFontFamilyAction_combobox {
+ -GtkComboBox-appears-as-list: true;
+}
+
+#QuickActions,
+#StickyZoom ,#StickyZoom *,
+#LockGuides, #LockGuides *,
+#PreviewMode,#PreviewMode *,
+#CMS_Adjust, #CMS_Adjust * {
+ padding: 0;
+ min-height:3px;
+ font-size:16px;
+}
+#QuickActions {
+ padding: 2px 0;
+}
+
+/* Keep palette scrollbar from generating warnings. */
+#PreviewHolderScroller .vertical slider {
+ min-height: 15px;
+}
+
+/* Override minimum size of container children for palette. */
+#ColorItemPreview {
+ min-height: 5px;
+ min-width: 5px;
+}
+
+/* Reduce width of Fill and Stroke dialog */
+#ColorModeButton {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+/* InkSpinScale */
+#InkSpinScale {
+ padding: 0px;
+}
+
+#InkSpinScale trough,
+#InkSpinScale slider,
+#InkSpinScale highlight {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+/* Hide slider */
+#InkSpinScale slider {
+ background: none;
+ border: none;
+ outline: none;
+ min-width: 0px;
+ min-height: 0px;
+ padding: 0px;
+ margin: 0px;
+}
+
+#InkSpinScale scale {
+ padding: 0px;
+ margin:0;
+}
+
+#InkSpinScale trough {
+ min-height: 25px;
+ padding: 0; /* remove padding to make inkspinscale the same height as spinbutton */
+}
+#InkSpinScale trough highlight {
+ margin: 0;
+}
+
+#InkSpinScale box.active {
+ box-shadow: 0 0 0 1px rgb(74, 144, 217);
+}
+
+#InkSpinScale spinbutton {
+ box-shadow: none;
+ min-height: 10px;
+ border-left:0;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+#InkSpinScale spinbutton entry {
+ min-height: 25px;
+ outline-style: none;
+}
+
+#UnicodeIconView {
+ font-size: 1.2em;
+}
+
+#ObjectsTreeView.view:focus {
+ outline-style: double;
+ outline-width: 5px;
+ outline-color: alpha (@theme_fg_color, 0.1);
+ -gtk-outline-radius: 50%;
+}
+#ObjectsTreeView.view:hover {
+ border-color: alpha (@theme_fg_color, 0.1);
+ border-style: solid;
+ border-width: 1px 0px;
+}
+#ObjectsTreeView {
+ -GtkTreeView-expander-size: 12;
+ -GtkTreeView-horizontal-separator: 2;
+ -GtkTreeView-vertical-separator: 2;
+}
+#Objects .search {
+ padding: 2px 4px;
+ min-height: 16px;
+ font-size: smaller;
+}
+
+#SimpleFilterModifier #InkSpinScale {
+ padding: 2px 4px;
+}
+
+/* GtkTreeView: clarify drop locations (especially important for XML editor) */
+treeview.view:drop(active) {
+ border-style: solid;
+ border-width: 2px;
+}
+
+treeview.view:drop(active).after {
+ border-style: none none solid none;
+}
+
+treeview.view:drop(active).before {
+ border-style: solid none none none;
+}
+
+treeview.view:drop(active).after,
+treeview.view:drop(active).before {
+ border-width: 4px;
+ border-radius: 10px;
+}
+
+button.close-button{
+ background-image: none;
+ padding: 0px;
+ min-height: 1px;
+ min-width: 1px;
+ border: none;
+ opacity: 0.5;
+ box-shadow: none;
+}
+
+button.close-button:hover{
+ box-shadow: none;
+ opacity: 1;
+}
+
+/*
+ * Inkscape start dialog styles
+ */
+button.primary {
+ background-image: linear-gradient(to bottom, rgba(22, 169, 249, 1), rgba(2, 135, 204, 1));
+ box-shadow: 0 1px rgba(255, 255, 255, 0.3) inset;
+ text-shadow: none;
+}
+button.primary:hover {
+ background-image: linear-gradient(to bottom, rgba(32, 179, 255, 1), rgba(12, 145, 214, 1));
+}
+button.primary:active {
+ background-image: linear-gradient(to top, rgba(12, 149, 219, 1), rgba(0, 115, 184, 1));
+}
+button.primary label {
+ color: white;
+}
+button.link:hover image {
+ -gtk-icon-effect: dim;
+}
+
+.marker-item.box {
+ padding: 4px;
+}
+.marker-separator {
+ padding: 0;
+}
+
+.tight-button {
+ padding: 5px 3px;
+}
+
+.small-button {
+ /* small button in-line with spinbuttons, made small not to inflate height of spinbutton */
+ padding: 1px 3px;
+}
+
+.link-edit-button {
+ padding: 5px 3px;
+ min-width: 0.5em;
+}
+
+/* In some themes stack switcher buttons are extra wide forcing dialogs too wide */
+stackswitcher button {
+ padding-left: 1px;
+ padding-right: 1px;
+ min-width: 40px;
+}
+
+/*removes dashed line (scrolling indicator) on color palette for all themes */
+.color-palette-main-box scrolledwindow undershoot.top,
+.color-palette-main-box scrolledwindow undershoot.right,
+.color-palette-main-box scrolledwindow undershoot.bottom,
+.color-palette-main-box scrolledwindow undershoot.left {
+ background-image: none;
+}
+
+.backgnd-passive {
+ background-color: @theme_bg_color;
+ opacity: 0.5;
+ transition: background-color 300ms linear;
+}
+
+@keyframes pulse {
+ 0% {
+ opacity: 0.3;
+ }
+ 50% {
+ opacity: 0.9;
+ }
+ 100% {
+ opacity: 0.3;
+ }
+}
+
+.backgnd-active {
+ animation-name: pulse;
+ background-color: @theme_selected_bg_color;
+ animation-duration: 1s;
+ animation-timing-function: ease;
+ animation-iteration-count: infinite;
+}
+
+.nb-highlight > header.top {
+ background-color: @theme_selected_bg_color;
+}
+
+.tight-flowbox flowboxchild {
+ margin: 0;
+ padding: 0px;
+}
+.tight-flowbox button {
+ margin: 0;
+ padding: 4px;
+}
+
+/* slider with tighter margins */
+scale.tight-slider {
+ padding: 8px 4px 7px 4px;
+}
+
+/* add .small-marks class to Gtk::Scale to have smaller font used, since markup didn't work there */
+scale.small-marks.marks-after {
+ font-size: smaller;
+}
+
+/* Square toolbar buttons: request square buttons for all toolbars. */
+button.square-button {
+ padding: 3px;
+}
+
+button.square-button image {
+ padding: 0;
+ min-width: 16px;
+ min-height: 16px;
+}
+
+/* Give layer selector button label a highlight color */
+#LayerSelector label
+{
+ padding-left: 6px;
+ border-left: 3px solid white;
+}
+
+#DialogNotebook #Swatches {
+ padding-left: 10px;
+ padding-top: 10px;
+}
+
+#DialogNotebook #Swatches box {
+ margin-bottom: 5px
+}
+
+#DialogNotebook #Swatches box label {
+ padding-left: 7px;
+}
+
+#StyleSwatch label {
+ font-size: smaller;
+}
+
+#DocumentProperties #NotebookPage {
+ margin-left: 4px;
+ margin-right: 4px;
+}
+
+.dialog-heading {
+ font-weight: bold;
+}
+
+/* heading label in dialogs */
+.heading {
+ font-weight: bold;
+ font-size: 1.1em; /* make it optically comparable with non-bold */
+ margin-top: 0.5em;
+}
+/* topmost heading in dialogs */
+.heading.top {
+ margin-top: 0.2em;
+}
+
+/* single-level indentation for labels in a dialog */
+.indent {
+ margin-left: 1em;
+}
+
+.small-font {
+ font-size: smaller;
+}
+
+.toolbar-separator {
+ margin: 7px 3px;
+}
+
+/* for dialogs with "Apply" button (or equivalent) - larger hit target */
+.wide-apply-button {
+ min-width: 150px;
+}
+
+button.menu-btn-tight {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+#DockedDialogNotebook {
+ border: none;
+}
+
+#DialogMenuButton {
+ padding: 3px;
+ border: none;
+ opacity: 0.5;
+}
+
+#DialogMenuButton:hover {
+ opacity: 1;
+}
+
+#DesktopStatusBar {
+ margin-right: 1em;
+}
+/*
+ * Inkscape Export Dialog
+ */
+#ExportDialog #export_selection{
+ border-radius: 0px;
+}
+#ExportDialog #export_preview_single {
+ border: 1px solid;
+}
+#ExportDialog #export_preview_batch {
+ border: 1px solid;
+}
+
+.key {
+ border-radius: 3px;
+ background-color: alpha(@theme_fg_color, 0.15);
+ padding: 2px;
+}
+
+combobox.flat-combobox button {
+ border: none;
+ background-color: transparent;
+ background-image: image(transparent);
+}
+
+.filter-effects, .effects-params {
+ min-height: 50px;
+}
+
+.dark .symbolsoverlay iconview:not(:selected) {
+ background-color: #f0f0f0; /* bright background color for typically black symbols */
+ /* background-color: @theme_fg_color; - this doesn't work for some themes (like MonoThemeDark) */
+ color:@theme_bg_color; /* symbol text labels */
+}
+
+.dark .symbolsoverlay {
+ color: @theme_bg_color; /* this is for overlay widget's children */
+}
+
+/* LPE Dialog add */
+#LPEScrolled {
+ border:none;
+}
+
+#LPESelectorFlowBox GtkFlowBoxChild,
+#LPESelectorFlowBox flowboxchild {
+ border-width: 0px;
+ border-radius: 6px;
+ margin: 10px;
+ padding: 10px;
+ margin-bottom: 0px;
+ padding-bottom: 10px;
+ outline: none;
+}
+
+#LPESelectorFlowBox flowboxchild * {
+ color: @theme_fg_color;
+}
+
+#LPESelectorFlowBox flowboxchild image,
+#LPESelectorFlowBox flowboxchild label {
+ background-color: transparent;
+ background-image: image(transparent);
+}
+
+#LPESelectorFlowBox flowboxchild:selected image,
+#LPESelectorFlowBox flowboxchild:selected label {
+ color: @theme_selected_fg_color;
+}
+
+#LPESelectorFlowBox *:selected #LPESelectorEffectFavTop,
+#LPESelectorFlowBox *:selected:focus #LPESelectorEffectFavTop {
+ opacity: 0;
+}
+
+#LPESelectorFlowBox .lpename {
+ margin-bottom: 5px;
+}
+
+#LPESelectorFlowBox .lpeinfo {
+ padding: 20px;
+}
+
+#LPESelectorFlowBox .lpedisabled {
+ opacity: 0.3;
+}
+
+#LPESelectorEffectInfoPop {
+ padding: 15px;
+}
+
+#LPESelectorEffectInfoName {
+ font-weight: bold;
+ padding: 15px;
+}
+
+#LPEDialogSelector .lpeinfo {
+ padding: 8px;
+ background-color: @theme_bg_color;
+ color: @theme_selected_fg_color;
+ border-color: @theme_selected_bg_color;
+ border-style: solid;
+ margin: 0px 0px 10px 0px;
+ border-radius: 0px;
+ border-width: 0 0 1px 0;
+ padding:5px;
+}
+
+#LPESelectorFlowBox image{
+ background-color:@theme_bg_color;
+ border-color:transparent;
+}
+
+#LPEExperimental image {
+ color: transparent;
+}
+
+#LPEDialogSelector .searchbar entry image,
+#LPEDialogSelector .searchbar label,
+#LPEDialogSelector .searchbar #LPESelectorEffectFavShowImage {
+ color: @theme_fg_color;
+}
+
+#LPEDialogSelector.LPEPackMore flowboxchild {
+margin:5px 1px 0px;
+padding:3px 3px 10px 3px;
+}
+
+
+#LPEDialogSelector.LPEList .lpename {
+ margin-bottom: 1px;
+ font-weight:bold;
+}
+
+#LPEDialogSelector.LPEList flowboxchild {
+ padding:3px 1px 3px 10px;
+ margin:1px 0px 1px;
+ border-radius:0;
+ border-style:dotted;
+ border-color:@theme_fg_color;
+ border-width: 0 0 1px 0;
+}
+
+#LPEDialogSelector.LPEList flowboxchild:selected {
+ border-style:none;
+ margin:-3px 0px 0px;
+ padding:4px 1px 4px 10px;
+}
+
+#LPEDialogSelector.LPEList #LPESelectorFlowBox *:selected #LPESelectorEffectFavTop,
+#LPEDialogSelector.LPEList #LPESelectorFlowBox *:selected:focus #LPESelectorEffectFavTop {
+ opacity: 1;
+}
+
+#LivePathEffect {
+ padding-top:5px;
+}
+
+#LivePathEffect expander:focus, #LivePathEffect expander > label:focus{
+ outline-width:0;
+}
+
+#LivePathEffect list{
+ margin:5px 5px 0 5px;
+}
+
+#LivePathEffect list row{
+ margin:0;
+ padding:0;
+ border-width:0;
+ border-style:none;
+ outline-width:0;
+}
+#LivePathEffect list row > box{
+ margin:0;
+ padding:1px;
+ border-width:1px;
+ border-radius:4px;
+ margin-bottom:5px;
+ border-style:solid;
+ border-color:@borders;
+ outline-width:0;
+}
+
+#LivePathEffect list row:last-child > box{
+ margin-bottom:0px;
+}
+
+#LPEEffectItem{
+ border-radius:3px;
+ padding:2px;
+ outline:0;
+}
+
+#LPEEffectItem .minbutton {
+ padding:0;
+ margin:0;
+ outline:0;
+ border-color:@borders;
+}
+
+#LPEEffectItem expander title label {
+ min-height:26px;
+}
+
+#LPEEffectItem expander,
+#LPEEffectItem expander *,
+#LPEEffectItem expander:focus,
+#LPEEffectItem expander *:focus {
+ outline:0;
+}
+
+.LPEDrag,.LPEDrag:active,.LPEDrag:focus,.LPEDrag:hover {
+ margin:0;
+ padding:0;
+ border-style:none;
+ opacity:0.7;
+ background-color:transparent;
+ background-image:none;
+ outline:0;
+}
+
+.LPEDrag:hover {
+ opacity:1;
+ background-color:transparent;
+ background-image:none;
+}
+
+#LivePathEffect list#LPEParentBox row{
+ border-style:none;
+ outline:0;
+}
+
+#LivePathEffect list#LPEParentBox row > button {
+ padding:2px;
+ margin:0;
+}
+
+#LPEContainer:drop(active) {
+ box-shadow:none;
+}
+
+#LPECurrentItem *{
+ color:@theme_fg_color;
+}
+
+#LPEContainer #LPEListBox{
+ border-style: solid none solid none;
+ border-color: @theme_base_color;
+ border-width:0;
+ padding:0;
+}
+#LPEListBox row:drop(active){
+ box-shadow:none;
+}
+#LPEContainer:drop(active).before row:first-child > box,
+#LPEListBox row:drop(active).before > box{
+ border-width:6px 1px 1px 1px;
+ border-color: @theme_selected_bg_color @borders @borders @borders;
+ box-shadow:none;
+ border-radius:6px 6px 0 0;
+}
+
+#LPEContainer:drop(active).after row:last-child > box,
+#LPEListBox row:drop(active).after > box{
+ border-width:1px 1px 6px 1px;
+ border-color: @borders @borders @theme_selected_bg_color @borders;
+ border-radius:0 0 6px 6px;
+ box-shadow:none;
+}
+
+#LPEEffectItem expander title label {
+ min-height:34px;
+}
+
+#LPEMenu menuitem:not(.menu-category):disabled {
+ color:alpha(@theme_text_color,0.4);
+}
+
+#LPEListBox row > *:disabled * {
+ color:@theme_text_color;
+}
+
+
+#LivePathEffect list row,
+#LPEListBox row.activatable:hover {
+ background-color: transparent;
+}
+
+#LivePathEffect list row .drag-icon,
+#LPEListBox row.activatable .drag-icon:hover {
+ background-color: @theme_base_color;
+ border-width:1px;
+ border-radius:0;
+ margin:0;
+ padding:5px;
+ border-style:solid;
+ border-color:@borders;
+ outline-width:0;
+}
+
+#LivePathEffect list row .drag-icon * {
+ outline:0;
+}
+
+#LPEActionButtons #eventbutton:nth-child(1) button{
+ border-radius:3px 0 0 3px;
+ border-width:1px 0 1px 1px;
+}
+
+#LPEActionButtons #eventbutton:nth-child(2) button{
+ border-radius:0;
+ border-width:1px 0 1px 1px;
+}
+#LPECurrentItem * {
+ border-width:0;
+ border-style:none;
+}
+#LPECurrentItem {
+ margin-top:0;
+}
+#LPECurrentItem image{
+ margin-right:6px;
+}
+#LPECurrentItem {
+ margin-top:0;
+}
+#LPEParentBox{
+ margin:10px 4px;
+ padding:0;
+}
diff --git a/share/ui/svgd.lang b/share/ui/svgd.lang
new file mode 100644
index 0000000..b5422d7
--- /dev/null
+++ b/share/ui/svgd.lang
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of Inkscape.
+
+ Authors:
+ Rafael Siejakowski <rs@rs-math.net>
+
+ Copyright (C) 2022 the Authors.
+
+ Released under GNU GPL v2+, read the file 'COPYING' for more information.
+-->
+<language id="svgd" _name="SVG path attribute 'd'" version="2.0" _section="Markup">
+ <styles>
+ <style id="command" _name="Path command" map-to="def:keyword"/>
+ <style id="error" _name="Error" map-to="def:error"/>
+ <style id="numeric" _name="Path node coordinate" map-to="def:number"/>
+ <style id="alternate-numeric" _name="Control point coordinate" map-to="def:special-constant"/>
+ <style id="angle" _name="Ellipse rotation angle" map-to="def:type"/>
+ <style id="flags" _name="Boolean flags" map-to="def:preprocessor"/>
+ </styles>
+
+ <default-regex-options case-sensitive="false"/>
+
+ <definitions>
+ <!-- Based on SVG2 specification, § 9.3.9. The grammar for path data. -->
+
+ <define-regex id="maybecwsp">(?m)[\s,\r\n]*</define-regex>
+ <define-regex id="exponent">e[+\-]?\d+</define-regex>
+ <define-regex id="fractional-constant">\d*\.\d+|\d+</define-regex>
+ <define-regex id="number">\%{fractional-constant}(\%{exponent})?</define-regex>
+ <define-regex id="coordinate">[+\-]?\%{number}</define-regex>
+ <define-regex id="positive-coordinate">\+?\%{number}</define-regex>
+ <define-regex id="command-letter">[MLHVCSQTAZ]</define-regex>
+ <define-regex id="invalid">[^\-+\s\r\n,\.MLHVCSQTAZmlhvcsqtaz0-9Ee]</define-regex>
+ <define-regex id="command-end">(?m)(?=\%{command-letter}|\%{invalid})</define-regex>
+
+ <!-- Define error contexts -->
+ <context id="command-not-allowed" style-ref="error" extend-parent="false" end-parent="true">
+ <match>(\%{command-letter}|e)</match>
+ </context>
+
+ <context id="invalid-char" style-ref="error" extend-parent="false" end-parent="true">
+ <match>\%{invalid}</match>
+ </context>
+
+ <!-- Coordinate pair is defined as a region (allows for two numbers on separate lines). -->
+ <context id="point">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ </include>
+ </context>
+
+ <!-- PRIVATE: A pair of numbers with different highlighting. -->
+ <context id="PRIVATE-heterochromic4-inner2" extend-parent="true" once-only="true">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ </include>
+ </context>
+
+ <!-- A 4-tuple of numbers with different highlighting for the first two than for the last two. -->
+ <context id="heterochromic4" extend-parent="false">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context id="heterochromic4-first" sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context id="heterochromic4-last" sub-pattern="0" where="end" style-ref="numeric"/>
+ <context ref="PRIVATE-heterochromic4-inner2"/>
+ </include>
+ </context>
+
+ <!-- PRIVATE: A pair of numbers with alternate highlighting. -->
+ <context id="PRIVATE-heterochromic6-inner4-inner2" extend-parent="true" once-only="true">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="alternate-numeric"/>
+ </include>
+ </context>
+
+ <!-- PRIVATE: A 4-tuple of numbers with different highlighting for the first three than for the last one. -->
+ <context id="PRIVATE-heterochromic6-inner4" extend-parent="true" once-only="true">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ <context ref="PRIVATE-heterochromic6-inner4-inner2"/>
+ </include>
+ </context>
+
+ <!-- A 6-tuple of numbers with different highlighting for the first four than for the last two. -->
+ <context id="heterochromic6" extend-parent="false">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ <context ref="PRIVATE-heterochromic6-inner4"/>
+ </include>
+ </context>
+
+ <!-- PRIVATE: The third shell of arcto arguments. -->
+ <context id="PRIVATE-arcto-shell3" extend-parent="true" once-only="true">
+ <start>\%{coordinate}</start><!-- rotation angle -->
+ <end>(0|1)\%{maybecwsp}(0|1)</end><!-- flags -->
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="angle"/>
+ <context sub-pattern="0" where="end" style-ref="flags"/>
+ </include>
+ </context>
+
+ <!-- PRIVATE: The second shell of arcto arguments. -->
+ <context id="PRIVATE-arcto-shell2" extend-parent="true" once-only="true">
+ <start>\%{positive-coordinate}</start><!-- ray y -->
+ <end>\%{coordinate}</end><!-- endpoint x -->
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ <context ref="PRIVATE-arcto-shell3"/>
+ </include>
+ </context>
+
+ <!-- The arguments of an arcto command. -->
+ <context id="arcto-args" extend-parent="false">
+ <start>\%{positive-coordinate}</start><!-- ray x -->
+ <end>\%{coordinate}</end><!-- endpoint y -->
+ <include>
+ <context ref="command-not-allowed"/>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="alternate-numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ <context ref="PRIVATE-arcto-shell2"/>
+ </include>
+ </context>
+
+ <!-- A valid SVG coordinate. -->
+ <context id="coord" style-ref="numeric">
+ <match>\%{coordinate}</match>
+ </context>
+
+ <!-- Start the SVG path `d` definition. -->
+ <context id="svgd">
+ <include>
+
+ <!-- An M, L or T command (expecting a sequence of points). -->
+ <context id="moveto">
+ <start>M|L|T</start>
+ <end>\%{command-end}</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="command"/>
+ <context ref="point"/>
+ </include>
+ </context>
+
+ <!-- An H or V command (expecting a sequence of coordinates). -->
+ <context id="paraxial">
+ <start>H|V</start>
+ <end>\%{command-end}</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="command"/>
+ <context ref="coord"/>
+ </include>
+ </context>
+
+ <!-- S and Q commands: expecting a sequence of **pairs** of points. -->
+ <context id="smooth-cubic-or-quadratic">
+ <start>S|Q</start>
+ <end>\%{command-end}</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="command"/>
+ <!-- The argument of the S/Q command is 4*n numbers; in each 4-tuple we
+ highlight the first two coords differently than the last two. -->
+ <context ref="heterochromic4"/>
+ </include>
+ </context>
+
+ <!-- C command: expecting a sequence of **triples** of points. -->
+ <context id="cubic-bezier">
+ <start>C</start>
+ <end>\%{command-end}</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="command"/>
+ <!-- In each 6-tuple we highlight the first four numbers differently than the last two. -->
+ <context ref="heterochromic6"/>
+ </include>
+ </context>
+
+ <!-- A command: elliptical arc. -->
+ <context id="elliptical-arc">
+ <start>A</start>
+ <end>\%{command-end}</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="command"/>
+ <context ref="arcto-args"/>
+ </include>
+ </context>
+
+ <context id="z-command" style-ref="command">
+ <keyword>Z</keyword>
+ </context>
+
+ <context ref="invalid-char"/>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/share/ui/svgpoints.lang b/share/ui/svgpoints.lang
new file mode 100644
index 0000000..f341af6
--- /dev/null
+++ b/share/ui/svgpoints.lang
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of Inkscape.
+
+ Authors:
+ Rafael Siejakowski <rs@rs-math.net>
+
+ Copyright (C) 2022 the Authors.
+
+ Released under GNU GPL v2+, read the file 'COPYING' for more information.
+-->
+<language id="svgpoints" _name="SVG attribute 'points' of polygon and polyline elements" version="2.0" _section="Markup">
+ <styles>
+ <style id="error" _name="Error" map-to="def:error"/>
+ <style id="numeric" _name="Vertex coordinate" map-to="def:number"/>
+ </styles>
+
+ <definitions>
+ <define-regex id="exponent">e[+\-]?\d+</define-regex>
+ <define-regex id="fractional-constant">\d*\.\d+|\d+</define-regex>
+ <define-regex id="number">\%{fractional-constant}(\%{exponent})?</define-regex>
+ <define-regex id="coordinate">[+\-]?\%{number}</define-regex>
+ <define-regex id="invalid">[^\-+\s\r\n,\.0-9eE]</define-regex>
+
+ <!-- Invalid character (not allowed in the 'points' attribute). -->
+ <context id="invalid-char" style-ref="error" extend-parent="false" end-parent="true">
+ <match>\%{invalid}</match>
+ </context>
+
+ <!-- The 'points' attribute. -->
+ <context id="svgpoints">
+ <include>
+ <!-- Coordinate pair is defined as a region (allows for two numbers on separate lines). -->
+ <context id="point">
+ <start>\%{coordinate}</start>
+ <end>\%{coordinate}</end>
+ <include>
+ <context ref="invalid-char"/>
+ <context sub-pattern="0" where="start" style-ref="numeric"/>
+ <context sub-pattern="0" where="end" style-ref="numeric"/>
+ </include>
+ </context>
+ <context ref="invalid-char"/>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/share/ui/syntax-themes/syntax-theme-dark.xml b/share/ui/syntax-themes/syntax-theme-dark.xml
new file mode 100644
index 0000000..74ddf0b
--- /dev/null
+++ b/share/ui/syntax-themes/syntax-theme-dark.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of Inkscape.
+
+ Copyright (C) 2022 the Authors.
+
+ Released under GNU GPL v2+, read the file 'COPYING' for more information.
+-->
+
+<style-scheme id="inkscape-dark" _name="Inkscape Dark" version="1.0">
+
+ <author>MK</author>
+ <_description>Dark color scheme for syntax highlighting</_description>
+
+ <color name="green" value="#a6e22e"/>
+ <color name="purple" value="#af83f8"/>
+ <color name="yellow" value="#f2d375"/>
+ <color name="cyan" value="#87dbe8"/>
+ <color name="pale-yellow" value="#795b07"/>
+ <color name="pale-red" value="#96242f"/>
+ <color name="orange" value="#ee9d70"/>
+ <color name="selection" value="#094bac"/>
+ <color name="white" value="#f0f0f0"/>
+ <color name="blue" value="#6d9eeb"/>
+ <color name="gray" value="#7f7f7f"/>
+ <color name="red" value="#f98691"/>
+
+ <!-- Global Settings -->
+ <style name="text" foreground="white" />
+ <style name="selection" foreground="white" background="selection"/>
+ <style name="cursor" foreground="white" bold="true" />
+ <style name="secondary-cursor" foreground="white" bold="true" />
+ <style name="line-numbers" foreground="gray"/>
+ <style name="draw-spaces" foreground="gray"/>
+ <style name="background-pattern" />
+ <style name="current-line" />
+
+ <!-- Bracket Matching -->
+ <style name="bracket-match" foreground="red"/>
+ <style name="bracket-mismatch" foreground="purple" background="pale-yellow"/>
+
+ <!-- Search Matching -->
+ <style name="search-match" foreground="white" background="pale-yellow"/>
+
+ <!-- Comments -->
+ <style name="def:comment" foreground="orange"/>
+
+ <!-- Constants -->
+ <style name="def:constant" foreground="cyan"/>
+ <style name="def:string" foreground="yellow"/>
+ <style name="def:special-char" foreground="red"/>
+ <style name="def:special-constant" foreground="cyan"/>
+ <style name="def:number" foreground="red"/>
+ <style name="def:decimal" foreground="red"/>
+ <style name="def:floating-point" foreground="red"/>
+
+ <!-- Identifiers -->
+ <style name="def:identifier" foreground="green"/>
+ <style name="def:keyword" foreground="blue" bold="true"/>
+ <style name="def:function" foreground="purple" bold="false"/>
+
+ <!-- Statements -->
+ <style name="def:statement" foreground="blue" bold="false"/>
+
+ <!-- Types -->
+ <style name="def:type" foreground="yellow" bold="false"/>
+
+ <!-- Others -->
+ <style name="css:delimiter" foreground="gray"/>
+ <style name="def:complex" foreground="green"/>
+ <style name="def:preprocessor" foreground="green"/>
+ <style name="def:error" foreground="white" background="pale-red" bold="false"/>
+ <style name="def:warning" foreground="white" background="pale-yellow"/>
+ <style name="def:note" foreground="gray" bold="false"/>
+ <style name="def:underlined" italic="true" underline="single"/>
+
+</style-scheme>
diff --git a/share/ui/syntax-themes/syntax-theme-light.xml b/share/ui/syntax-themes/syntax-theme-light.xml
new file mode 100644
index 0000000..78e6ae1
--- /dev/null
+++ b/share/ui/syntax-themes/syntax-theme-light.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of Inkscape.
+
+ Copyright (C) 2022 the Authors.
+
+ Released under GNU GPL v2+, read the file 'COPYING' for more information.
+-->
+
+<style-scheme id="inkscape-light" _name="Inkscape Light" version="1.0">
+
+ <author>MK</author>
+ <_description>Light color scheme for syntax highlighting</_description>
+
+ <color name="green" value="#1E8806"/>
+ <color name="purple" value="#6321cf"/>
+ <color name="yellow" value="#ae8305"/>
+ <color name="cyan" value="#038387"/>
+ <color name="pale-yellow" value="#ffe9a6"/>
+ <color name="pale-red" value="#f2b6bc"/>
+ <color name="orange" value="#de6502"/>
+ <color name="selection" value="#a8cbfe"/>
+ <color name="blue" value="#0b5cd5"/>
+ <color name="black" value="#000000"/>
+ <color name="gray" value="#a0a0a0"/>
+ <color name="red" value="#dc3545"/>
+ <color name="lime" value="#799E00"/>
+ <color name="brown" value="#a84a00"/>
+
+ <!-- Global Settings -->
+ <style name="text" foreground="black" />
+ <style name="selection" foreground="black" background="selection"/>
+ <style name="cursor" foreground="black" bold="true" />
+ <style name="secondary-cursor" foreground="black" bold="true" />
+ <style name="line-numbers" foreground="gray"/>
+ <style name="draw-spaces" foreground="gray"/>
+ <style name="background-pattern" />
+ <style name="current-line" />
+
+ <!-- Bracket Matching -->
+ <style name="bracket-match" foreground="red"/>
+ <style name="bracket-mismatch" foreground="purple" background="pale-yellow"/>
+
+ <!-- Search Matching -->
+ <style name="search-match" foreground="black" background="pale-yellow"/>
+
+ <!-- Comments -->
+ <style name="def:comment" foreground="lime"/>
+
+ <!-- Constants -->
+ <style name="def:constant" foreground="cyan"/>
+ <style name="def:string" foreground="yellow"/>
+ <style name="def:special-char" foreground="brown"/>
+ <style name="def:special-constant" foreground="cyan"/>
+ <style name="def:number" foreground="red"/>
+ <style name="def:decimal" foreground="red"/>
+ <style name="def:floating-point" foreground="red"/>
+
+ <!-- Identifiers -->
+ <style name="def:identifier" foreground="green"/>
+ <style name="def:keyword" foreground="blue" bold="true"/>
+ <style name="def:function" foreground="purple" bold="false"/>
+
+ <!-- Statements -->
+ <style name="def:statement" foreground="blue" bold="false"/>
+
+ <!-- Types -->
+ <style name="def:type" foreground="orange" bold="false"/>
+
+ <!-- Others -->
+ <style name="css:delimiter" foreground="gray"/>
+ <style name="def:complex" foreground="purple"/>
+ <style name="def:preprocessor" foreground="purple"/>
+ <style name="def:error" foreground="black" background="pale-red" bold="false"/>
+ <style name="def:warning" foreground="black" background="pale-yellow"/>
+ <style name="def:note" foreground="gray" bold="false"/>
+ <style name="def:underlined" italic="true" underline="single"/>
+
+</style-scheme>
diff --git a/share/ui/syntax-themes/syntax-theme-none.xml b/share/ui/syntax-themes/syntax-theme-none.xml
new file mode 100644
index 0000000..307f032
--- /dev/null
+++ b/share/ui/syntax-themes/syntax-theme-none.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This file is part of Inkscape.
+
+ Copyright (C) 2022 the Authors.
+
+ Released under GNU GPL v2+, read the file 'COPYING' for more information.
+-->
+
+<style-scheme id="-none-" _name="&#x25cf; No coloring" version="1.0">
+
+ <author>MK</author>
+ <_description>Empty color scheme to disable syntax highlighting</_description>
+
+ <style name="text" />
+
+</style-scheme>
diff --git a/share/ui/toolbar-booleans.ui b/share/ui/toolbar-booleans.ui
new file mode 100644
index 0000000..10d28de
--- /dev/null
+++ b/share/ui/toolbar-booleans.ui
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkToolbar" id="booleans-toolbar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkRadioToolButton" id="shape-add">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Add to the Shape</property>
+ <property name="action-name">win.shape-builder-mode</property>
+ <property name="action-target">0</property>
+ <property name="label" translatable="yes">Add</property>
+ <property name="icon-name">shapebuilder-tool-union</property>
+ <property name="active">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioToolButton" id="shape-delete">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="tooltip-text" translatable="yes">Remove from Shape</property>
+ <property name="action-name">win.shape-builder-mode</property>
+ <property name="action-target">1</property>
+ <property name="label" translatable="yes">Delete</property>
+ <property name="icon-name">shapebuilder-tool-difference</property>
+ <property name="group">shape-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">4</property>
+ <property name="label" translatable="yes">Finish:</property>
+ <property name="xalign">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="confirm">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Accept</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">on</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="cancel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Cancel</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">off</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/toolbar-commands.ui b/share/ui/toolbar-commands.ui
new file mode 100644
index 0000000..ab71615
--- /dev/null
+++ b/share/ui/toolbar-commands.ui
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+
+ <!-- Commands Toolbar -->
+
+ <object class="GtkToolbar" id="commands-toolbar">
+ <property name="visible">True</property>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.document-new</property>
+ <property name="icon_name">document-new</property>
+ <property name="label" translatable="true">_New</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.document-open</property>
+ <property name="icon_name">document-open</property>
+ <property name="label" translatable="true">_Open...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.document-save</property>
+ <property name="icon_name">document-save</property>
+ <property name="label" translatable="true">_Save</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.document-print</property>
+ <property name="icon_name">document-print</property>
+ <property name="label" translatable="true">_Print...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.document-import</property>
+ <property name="icon_name">document-import</property>
+ <property name="label" translatable="true">_Import...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'Export'</property>
+ <property name="icon_name">document-export</property>
+ <property name="label" translatable="true">_Export...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">doc.undo</property>
+ <property name="icon_name">edit-undo</property>
+ <property name="label" translatable="true">_Undo</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">doc.redo</property>
+ <property name="icon_name">edit-redo</property>
+ <property name="label" translatable="true">_Redo</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.copy</property>
+ <property name="icon_name">edit-copy</property>
+ <property name="label" translatable="true">_Copy</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.cut</property>
+ <property name="icon_name">edit-cut</property>
+ <property name="label" translatable="true">Cu_t</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.paste</property>
+ <property name="icon_name">edit-paste</property>
+ <property name="label" translatable="true">_Paste</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-selection</property>
+ <property name="icon_name">zoom-fit-selection</property>
+ <property name="label" translatable="true">Zoom _Selection</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-drawing</property>
+ <property name="icon_name">zoom-fit-drawing</property>
+ <property name="label" translatable="true">Zoom _Drawing</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-page</property>
+ <property name="icon_name">zoom-fit-page</property>
+ <property name="label" translatable="true">Zoom _Page</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-center-page</property>
+ <property name="icon_name">zoom-center-page</property>
+ <property name="label" translatable="true">Zoom _Center Page</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.duplicate</property>
+ <property name="icon_name">edit-duplicate</property>
+ <property name="label" translatable="true">Duplic_ate</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.clone</property>
+ <property name="icon_name">edit-clone</property>
+ <property name="label" translatable="true">Create Clo_ne</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.clone-unlink</property>
+ <property name="icon_name">edit-clone-unlink</property>
+ <property name="label" translatable="true">Unlin_k Clone</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.selection-group</property>
+ <property name="icon_name">object-group</property>
+ <property name="label" translatable="true">_Group</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">app.selection-ungroup</property>
+ <property name="icon_name">object-ungroup</property>
+ <property name="label" translatable="true">_Ungroup</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'FillStroke'</property>
+ <property name="icon_name">dialog-fill-and-stroke</property>
+ <property name="label" translatable="true">_Fill and Stroke...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'Text'</property>
+ <property name="icon_name">dialog-text-and-font</property>
+ <property name="label" translatable="true">_Text and Font...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'Objects'</property>
+ <property name="icon_name">dialog-objects</property>
+ <property name="label" translatable="true">Layers and Objects...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'XMLEditor'</property>
+ <property name="icon_name">dialog-xml-editor</property>
+ <property name="label" translatable="true">_XML Editor...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'Selectors'</property>
+ <property name="icon_name">dialog-selectors</property>
+ <property name="label" translatable="true">_Selectors and CSS...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'AlignDistribute'</property>
+ <property name="icon_name">dialog-align-and-distribute</property>
+ <property name="label" translatable="true">_Align and Distribute...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'DocumentProperties'</property>
+ <property name="icon_name">document-properties</property>
+ <property name="label" translatable="true">_Document Properties...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.dialog-open</property>
+ <property name='action-target'>'Preferences'</property>
+ <property name="icon_name">preferences-system</property>
+ <property name="label" translatable="true">P_references...</property>
+ <property name="use-underline">True</property>
+ </object>
+ </child>
+
+ </object>
+</interface>
diff --git a/share/ui/toolbar-page.ui b/share/ui/toolbar-page.ui
new file mode 100644
index 0000000..a287b5c
--- /dev/null
+++ b/share/ui/toolbar-page.ui
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkAdjustment" id="adjust_margin_bottom">
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjust_margin_left">
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjust_margin_right">
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjust_margin_top">
+ <property name="upper">1000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkListStore" id="page_sizes_list">
+ <columns>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ <!-- column-name preset_key -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkListStore" id="page_sizes_search">
+ <columns>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ <!-- column-name preset_key -->
+ <column type="gchararray"/>
+ </columns>
+ </object>
+ <object class="GtkEntryCompletion" id="sizes_searcher">
+ <property name="model">page_sizes_search</property>
+ <property name="text-column">0</property>
+ <child>
+ <object class="GtkCellRendererText"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="xalign">1</property>
+ <property name="alignment">right</property>
+ <property name="scale">0.90</property>
+ </object>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ <object class="GtkToolbar" id="page-toolbar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkToolButton" id="page_new">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">win.page-new</property>
+ <property name="label" translatable="yes">New Page</property>
+ <property name="icon-name">pages-add</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="page_sizes_container">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkComboBoxText" id="page_sizes">
+ <property name="model">page_sizes_list</property>
+ <property name="width-request">250</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="active">0</property>
+ <property name="has-entry">True</property>
+ <property name="active-id">-1</property>
+ <items>
+ <item id="" translatable="yes">Custom</item>
+ </items>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="xalign">1</property>
+ <property name="alignment">right</property>
+ </object>
+ <attributes>
+ <attribute name="markup">1</attribute>
+ </attributes>
+ </child>
+ <child internal-child="entry">
+ <object class="GtkEntry">
+ <property name="can-focus">True</property>
+ <property name="completion">sizes_searcher</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="page_margin_container">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkEntry" id="page_margins">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes">Page Margins</property>
+ <property name="primary-icon-name">view-restore</property>
+ <property name="placeholder-text" translatable="yes">Margins</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="page_backward">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">doc.page-move-backward</property>
+ <property name="label" translatable="yes">Move Before Previous</property>
+ <property name="icon-name">pages-order-backwards</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="page_pos_container">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkLabel" id="page_pos">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <!--TRANSLATORS: This is a fixed value meaning a single page document-->
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">1/-</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="page_foreward">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">doc.page-move-forward</property>
+ <property name="label" translatable="yes">Move After Next</property>
+ <property name="icon-name">pages-order-forwards</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="page_label_container">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkEntry" id="page_label">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="placeholder-text" translatable="yes">Page Label</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="page_delete">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">win.page-delete</property>
+ <property name="label" translatable="yes">New Page</property>
+ <property name="icon-name">pages-remove</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem" id="sep1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="page_move_objects">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">doc.page-move-objects</property>
+ <property name="label" translatable="yes">Move Objects</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">pages-move-toggle</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkPopover" id="margin_popover">
+ <property name="can-focus">False</property>
+ <property name="relative-to">page_margins</property>
+ <property name="position">bottom</property>
+ <child>
+ <!-- n-columns=3 n-rows=4 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="row-spacing">3</property>
+ <property name="column-spacing">3</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="label" translatable="yes">Margins</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="margin_right">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="overwrite-mode">True</property>
+ <property name="placeholder-text" translatable="no">0px</property>
+ <property name="adjustment">adjust_margin_right</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="height">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="margin_top">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="placeholder-text" translatable="no">0px</property>
+ <property name="adjustment">adjust_margin_top</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="margin_left">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="adjustment">adjust_margin_left</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="height">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="margin_bottom">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="valign">center</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="placeholder-text" translatable="no">0px</property>
+ <property name="adjustment">adjust_margin_bottom</property>
+ <property name="numeric">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkExpander">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <child>
+ <object class="GtkEntry" id="page_bleeds">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ <property name="margin-top">5</property>
+ <property name="margin-bottom">5</property>
+ <property name="placeholder-text" translatable="yes">e.g. 1.2mm 2mm</property>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes">Page Bleed</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/toolbar-select.ui b/share/ui/toolbar-select.ui
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/share/ui/toolbar-select.ui
diff --git a/share/ui/toolbar-snap.ui b/share/ui/toolbar-snap.ui
new file mode 100644
index 0000000..4740a45
--- /dev/null
+++ b/share/ui/toolbar-snap.ui
@@ -0,0 +1,1665 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkPopover" id="advanced">
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=3 n-rows=35 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">16</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <child>
+ <object class="GtkCheckButton" id="snap-toggle">
+ <property name="label" translatable="yes">Enable snapping</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-global-toggle</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-bbox">
+ <property name="label" translatable="yes">Bounding boxes</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-bbox</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-bbox-edge">
+ <property name="label" translatable="yes">Edges</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-bbox-edge</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-bbox-corner">
+ <property name="label" translatable="yes">Corners</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-bbox-corner</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-bbox-midpoint">
+ <property name="label" translatable="yes">Edge midpoints</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-bbox-edge-midpoint</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-bbox-center">
+ <property name="label" translatable="yes">Centers</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-bbox-center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-nodes">
+ <property name="label" translatable="yes">Nodes</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-node-category</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Paths</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-path</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Path intersections</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-path-intersection</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Cusp nodes</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-node-cusp</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Smooth nodes</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-node-smooth</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">13</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Line midpoints</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-line-midpoint</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">14</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Object midpoints</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-object-midpoint</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">19</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-other">
+ <property name="label" translatable="yes">Other points</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-others</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">18</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Object rotation centers</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-rotation-center</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">20</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Text baselines and anchors</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-text-baseline</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">21</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-grid">
+ <property name="label" translatable="yes">Grids</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-grid</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">29</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-guides">
+ <property name="label" translatable="yes">Guide lines</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-guide</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">30</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-page-border">
+ <property name="label" translatable="yes">Page borders</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-page-border</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">31</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="align-sna">
+ <property name="label" translatable="yes">Alignment</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-alignment</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">25</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="align-snap-self">
+ <property name="label" translatable="yes">Nodes in same path</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-alignment-self</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">26</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="simple-link">
+ <property name="label" translatable="yes">Reset to simple snapping mode</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">33</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-bounding-box-edges</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-bounding-box-corners</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-bounding-box-midpoints</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-bounding-box-center</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-path</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-intersection</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">11</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-cusp</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">12</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-smooth</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">13</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-midpoint</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">14</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-center</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">19</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-nodes-rotation-center</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">20</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-text-baseline</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">21</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">grid-rectangular</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">29</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">guides</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">30</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-page</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">31</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Masks</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-path-mask</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">22</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Clips</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-path-clip</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">23</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">path-mask-edit</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">22</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">path-clip-edit</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">23</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Same distances</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-distribution</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">27</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-alignment</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">25</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-alignment-self</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">26</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-distribution</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">27</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Perpendicular lines</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-line-perpendicular</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">15</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton">
+ <property name="label" translatable="yes">Tangential lines</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-line-tangential</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">16</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-lines-perpendicular</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">15</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-lines-tangential</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">16</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator" id="indent-space">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ <property name="margin-start">5</property>
+ <property name="margin-end">5</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">17</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">24</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">28</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="opacity">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">32</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="snap-page-margin">
+ <property name="label" translatable="yes">Page margins</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-page-margin</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">32</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="icon-name">snap-page</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">32</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-bounding-box-center</property>
+ </object>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">snap-nodes-cusp</property>
+ </object>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">align-horizontal-left-to-anchor-symbolic</property>
+ </object>
+ <object class="GtkPopover" id="simple">
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=4 n-rows=9 -->
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin-start">8</property>
+ <property name="margin-end">16</property>
+ <property name="margin-top">8</property>
+ <property name="margin-bottom">8</property>
+ <property name="row-spacing">4</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkCheckButton" id="simple-snap-toggle">
+ <property name="label" translatable="yes">Enable snapping</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">start</property>
+ <property name="action-name">win.snap-global-toggle</property>
+ <property name="draw-indicator">True</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ <property name="width">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="simple-snap-bbox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.simple-snap-bbox</property>
+ <property name="image">image1</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Bounding boxes</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="simple-snap-nodes">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.simple-snap-nodes</property>
+ <property name="image">image2</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Nodes</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="align-snap">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="action-name">win.simple-snap-alignment</property>
+ <property name="image">image3</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="simple-align-snap">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Alignment</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label"> </property>
+ <attributes>
+ <attribute name="scale" value="0.5"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="advanced-link">
+ <property name="label" translatable="yes">Advanced mode</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
+ <property name="halign">end</property>
+ <property name="relief">none</property>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkToolbar" id="snap-toolbar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="action-name">win.snap-global-toggle</property>
+ <property name="icon-name">snap</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="tool-item-advanced">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-vertical">False</property>
+ <child>
+ <object class="GtkMenuButton" id="btn-advanced">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="direction">left</property>
+ <property name="popover">advanced</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="tool-item-simple">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-vertical">False</property>
+ <child>
+ <object class="GtkMenuButton" id="btn-simple">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="focus-on-click">False</property>
+ <property name="receives-default">True</property>
+ <property name="direction">left</property>
+ <property name="popover">simple</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="visible-horizontal">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-bbox</property>
+ <property name="label" translatable="yes">Bounding boxes</property>
+ <property name="icon-name">snap-bounding-box</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-bbox-edge</property>
+ <property name="label" translatable="yes">Edges</property>
+ <property name="icon-name">snap-bounding-box-edges</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-bbox-corner</property>
+ <property name="label" translatable="yes">Corners</property>
+ <property name="icon-name">snap-bounding-box-corners</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-bbox-edge-midpoint</property>
+ <property name="label" translatable="yes">Edge midpoints</property>
+ <property name="icon-name">snap-bounding-box-midpoints</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-bbox-center</property>
+ <property name="label" translatable="yes">Centers</property>
+ <property name="icon-name">snap-bounding-box-center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="visible-horizontal">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-node-category</property>
+ <property name="label" translatable="yes">Nodes</property>
+ <property name="icon-name">snap-nodes</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-path</property>
+ <property name="label" translatable="yes">Paths</property>
+ <property name="icon-name">snap-nodes-path</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-path-intersection</property>
+ <property name="label" translatable="yes">Path intersections</property>
+ <property name="icon-name">snap-nodes-intersection</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-node-cusp</property>
+ <property name="label" translatable="yes">Cusp nodes</property>
+ <property name="icon-name">snap-nodes-cusp</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-node-smooth</property>
+ <property name="label" translatable="yes">Smooth nodes</property>
+ <property name="icon-name">snap-nodes-smooth</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-line-midpoint</property>
+ <property name="label" translatable="yes">Line midpoints</property>
+ <property name="icon-name">snap-nodes-midpoint</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-line-perpendicular</property>
+ <property name="label" translatable="yes">Perpendicular lines</property>
+ <property name="icon-name">snap-lines-perpendicular</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-line-tangential</property>
+ <property name="label" translatable="yes">Tangential lines</property>
+ <property name="icon-name">snap-lines-tangential</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="visible-horizontal">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-others</property>
+ <property name="label" translatable="yes">Other points</property>
+ <property name="icon-name">snap-others</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-object-midpoint</property>
+ <property name="label" translatable="yes">Object midpoints</property>
+ <property name="icon-name">snap-nodes-center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-rotation-center</property>
+ <property name="label" translatable="yes">Object rotation centers</property>
+ <property name="icon-name">snap-nodes-rotation-center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-text-baseline</property>
+ <property name="label" translatable="yes">Text baselines and anchors</property>
+ <property name="icon-name">snap-text-baseline</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-path-mask</property>
+ <property name="label" translatable="yes">Masks</property>
+ <property name="icon-name">path-mask-edit</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-path-clip</property>
+ <property name="label" translatable="yes">Clips</property>
+ <property name="icon-name">path-clip-edit</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="visible-horizontal">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-alignment</property>
+ <property name="label" translatable="yes">Alignment</property>
+ <property name="icon-name">snap-alignment</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-alignment-self</property>
+ <property name="label" translatable="yes">Nodes in same path</property>
+ <property name="icon-name">snap-alignment-self</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-distribution</property>
+ <property name="label" translatable="yes">Same distances</property>
+ <property name="icon-name">snap-distribution</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="visible-horizontal">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-grid</property>
+ <property name="label" translatable="yes">Grids</property>
+ <property name="icon-name">grid-rectangular</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-guide</property>
+ <property name="label" translatable="yes">Guide lines</property>
+ <property name="icon-name">guides</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="visible-horizontal">False</property>
+ <property name="action-name">win.snap-page-border</property>
+ <property name="label" translatable="yes">Page borders</property>
+ <property name="icon-name">snap-page</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/toolbar-tool-prefs.ui b/share/ui/toolbar-tool-prefs.ui
new file mode 100644
index 0000000..98e452a
--- /dev/null
+++ b/share/ui/toolbar-tool-prefs.ui
@@ -0,0 +1,880 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkImage" id="icon-bucket">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-fill</property>
+ </object>
+ <object class="GtkImage" id="icon-booleans">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-booleans</property>
+ </object>
+ <object class="GtkImage" id="icon-calligraphic">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-calligraphic</property>
+ </object>
+ <object class="GtkImage" id="icon-connector">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-connector</property>
+ </object>
+ <object class="GtkImage" id="icon-dropper">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-picker</property>
+ </object>
+ <object class="GtkImage" id="icon-ellipse">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse</property>
+ </object>
+ <object class="GtkImage" id="icon-eraser">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-eraser</property>
+ </object>
+ <object class="GtkImage" id="icon-geometry">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-geometry</property>
+ </object>
+ <object class="GtkImage" id="icon-gradient">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-gradient</property>
+ </object>
+ <object class="GtkImage" id="icon-measure">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-measure</property>
+ </object>
+ <object class="GtkImage" id="icon-mesh-gradient">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">mesh-gradient</property>
+ </object>
+ <object class="GtkImage" id="icon-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-node-editor</property>
+ </object>
+ <object class="GtkImage" id="icon-pages">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-pages</property>
+ </object>
+ <object class="GtkImage" id="icon-pen">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-path</property>
+ </object>
+ <object class="GtkImage" id="icon-pencil">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-freehand</property>
+ </object>
+ <object class="GtkImage" id="icon-rect">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-rectangle</property>
+ </object>
+ <object class="GtkImage" id="icon-select">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-pointer</property>
+ </object>
+ <object class="GtkImage" id="icon-spiral">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-spiral</property>
+ </object>
+ <object class="GtkImage" id="icon-spray">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-spray</property>
+ </object>
+ <object class="GtkImage" id="icon-star">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-polygon-star</property>
+ </object>
+ <object class="GtkImage" id="icon-threedee">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-cuboid</property>
+ </object>
+ <object class="GtkImage" id="icon-tweak">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-tweak</property>
+ </object>
+ <object class="GtkImage" id="icon-zoom">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">zoom</property>
+ </object>
+ <object class="GtkImage" id="image-text-tool">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-text</property>
+ </object>
+ <object class="GtkBox" id="tool-toolbar-prefs">
+ <property name="name">tool-toolbar</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">1</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">SELECTING</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Select'</property>
+ <property name="image">icon-select</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Node'</property>
+ <property name="image">icon-node</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Booleans'</property>
+ <property name="image">icon-booleans</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">SHAPES</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Rect'</property>
+ <property name="image">icon-rect</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Arc'</property>
+ <property name="image">icon-ellipse</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Star'</property>
+ <property name="image">icon-star</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'3DBox'</property>
+ <property name="image">icon-threedee</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Spiral'</property>
+ <property name="image">icon-spiral</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">CREATING NEW</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pen'</property>
+ <property name="image">icon-pen</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pencil'</property>
+ <property name="image">icon-pencil</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Calligraphic'</property>
+ <property name="image">icon-calligraphic</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Text'</property>
+ <property name="image">image-text-tool</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">COLORS AND STYLES</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Gradient'</property>
+ <property name="image">icon-gradient</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Mesh'</property>
+ <property name="image">icon-mesh-gradient</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Dropper'</property>
+ <property name="image">icon-dropper</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'PaintBucket'</property>
+ <property name="image">icon-bucket</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">OTHER</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Tweak'</property>
+ <property name="image">icon-tweak</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Spray'</property>
+ <property name="image">icon-spray</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Eraser'</property>
+ <property name="image">icon-eraser</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Connector'</property>
+ <property name="image">icon-connector</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'LPETool'</property>
+ <property name="image">icon-geometry</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">CANVAS TOOLS</property>
+ <style>
+ <class name="small-heading"/>
+ <class name="halfrem-vert-space"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="column-spacing">3</property>
+ <property name="max-children-per-line">10</property>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Measure'</property>
+ <property name="image">icon-measure</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Zoom'</property>
+ <property name="image">icon-zoom</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkToggleButton">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pages'</property>
+ <property name="image">icon-pages</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">11</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/toolbar-tool.ui b/share/ui/toolbar-tool.ui
new file mode 100644
index 0000000..a6df5d7
--- /dev/null
+++ b/share/ui/toolbar-tool.ui
@@ -0,0 +1,865 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkImage" id="icon-select">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-pointer</property>
+ </object>
+ <object class="GtkImage" id="icon-booleans">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-booleans</property>
+ </object>
+ <object class="GtkImage" id="icon-calligraphic">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-calligraphic</property>
+ </object>
+ <object class="GtkImage" id="image-text-tool">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-text</property>
+ </object>
+ <object class="GtkImage" id="icon-gradient">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-gradient</property>
+ </object>
+ <object class="GtkImage" id="icon-mesh-gradient">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">mesh-gradient</property>
+ </object>
+ <object class="GtkImage" id="icon-dropper">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-picker</property>
+ </object>
+ <object class="GtkImage" id="icon-bucket">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">color-fill</property>
+ </object>
+ <object class="GtkImage" id="icon-tweak">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-tweak</property>
+ </object>
+ <object class="GtkImage" id="icon-spray">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-spray</property>
+ </object>
+ <object class="GtkImage" id="icon-eraser">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-eraser</property>
+ </object>
+ <object class="GtkImage" id="icon-connector">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-connector</property>
+ </object>
+ <object class="GtkImage" id="icon-node">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-node-editor</property>
+ </object>
+ <object class="GtkImage" id="icon-geometry">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-geometry</property>
+ </object>
+ <object class="GtkImage" id="icon-zoom">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">zoom</property>
+ </object>
+ <object class="GtkImage" id="icon-measure">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-measure</property>
+ </object>
+ <object class="GtkImage" id="icon-rect">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-rectangle</property>
+ </object>
+ <object class="GtkImage" id="icon-ellipse">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-ellipse</property>
+ </object>
+ <object class="GtkImage" id="icon-star">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-polygon-star</property>
+ </object>
+ <object class="GtkImage" id="icon-threedee">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-cuboid</property>
+ </object>
+ <object class="GtkImage" id="icon-spiral">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-spiral</property>
+ </object>
+ <object class="GtkImage" id="icon-pen">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-path</property>
+ </object>
+ <object class="GtkImage" id="icon-pencil">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">draw-freehand</property>
+ </object>
+ <object class="GtkImage" id="icon-pages">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="icon-name">tool-pages</property>
+ </object>
+ <object class="GtkScrolledWindow" id="tool-toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="shadow_type">none</property>
+ <property name="hexpand">False</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <property name="vscrollbar-policy">external</property>
+ <child>
+ <object class="GtkBox">
+ <property name="name">tool-toolbar</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="halign">start</property>
+ <property name="valign">fill</property>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">2</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Select'</property>
+ <property name="image">icon-select</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton" id="toolsradio">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Node'</property>
+ <property name="image">icon-node</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Booleans'</property>
+ <property name="image">icon-booleans</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">5</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Rect'</property>
+ <property name="image">icon-rect</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Arc'</property>
+ <property name="image">icon-ellipse</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Star'</property>
+ <property name="image">icon-star</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'3DBox'</property>
+ <property name="image">icon-threedee</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Spiral'</property>
+ <property name="image">icon-spiral</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">6</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pen'</property>
+ <property name="image">icon-pen</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pencil'</property>
+ <property name="image">icon-pencil</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Calligraphic'</property>
+ <property name="image">icon-calligraphic</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Text'</property>
+ <property name="image">image-text-tool</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">5</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Gradient'</property>
+ <property name="image">icon-gradient</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Mesh'</property>
+ <property name="image">icon-mesh-gradient</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Dropper'</property>
+ <property name="image">icon-dropper</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'PaintBucket'</property>
+ <property name="image">icon-bucket</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">5</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Tweak'</property>
+ <property name="image">icon-tweak</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Spray'</property>
+ <property name="image">icon-spray</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Eraser'</property>
+ <property name="image">icon-eraser</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Connector'</property>
+ <property name="image">icon-connector</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSeparator">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFlowBox">
+ <property name="homogeneous">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="orientation">horizontal</property>
+ <property name="max_children_per_line">5</property>
+ <style>
+ <class name="tight-flowbox"/>
+ </style>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Measure'</property>
+ <property name="image">icon-measure</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Zoom'</property>
+ <property name="image">icon-zoom</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBoxChild">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <child>
+ <object class="GtkRadioButton">
+ <property name="group">toolsradio</property>
+ <property name="draw_indicator">False</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="action-name">win.tool-switch</property>
+ <property name="action-target">'Pages'</property>
+ <property name="image">icon-pages</property>
+ <property name="relief">none</property>
+ <style>
+ <class name="square-button"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">10</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/toolbar-zoom.ui b/share/ui/toolbar-zoom.ui
new file mode 100644
index 0000000..09c1a98
--- /dev/null
+++ b/share/ui/toolbar-zoom.ui
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<interface>
+ <requires lib="gtk+" version="3.22"/>
+
+ <!-- Zoom Toolbar -->
+
+ <object class="GtkToolbar" id="zoom-toolbar">
+ <property name="visible">True</property>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-in</property>
+ <property name="icon_name">zoom-in</property>
+ <property name="label" translatable="true">Zoom In</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-out</property>
+ <property name="icon_name">zoom-out</property>
+ <property name="label" translatable="true">Zoom Out</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-1-1</property>
+ <property name="icon_name">zoom-original</property>
+ <property name="label" translatable="true">Zoom 1-1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-1-2</property>
+ <property name="icon_name">zoom-half-size</property>
+ <property name="label" translatable="true">Zoom 1-2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-2-1</property>
+ <property name="icon_name">zoom-double-size</property>
+ <property name="label" translatable="true">Zoom 2-1</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-selection</property>
+ <property name="icon_name">zoom-fit-selection</property>
+ <property name="label" translatable="true">Zoom Selection</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-drawing</property>
+ <property name="icon_name">zoom-fit-drawing</property>
+ <property name="label" translatable="true">Zoom Drawing</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-page</property>
+ <property name="icon_name">zoom-fit-page</property>
+ <property name="label" translatable="true">Zoom Page</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-page-width</property>
+ <property name="icon_name">zoom-fit-width</property>
+ <property name="label" translatable="true">Zoom Page Width</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-center-page</property>
+ <property name="icon_name">zoom-center-page</property>
+ <property name="label" translatable="true">Center Page</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkSeparatorToolItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-prev</property>
+ <property name="icon_name">zoom-previous</property>
+ <property name="label" translatable="true">Zoom Previous</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToolButton">
+ <property name="visible">True</property>
+ <property name="action_name">win.canvas-zoom-next</property>
+ <property name="icon_name">zoom-next</property>
+ <property name="label" translatable="true">Zoom Next</property>
+ </object>
+ </child>
+ </object>
+
+</interface>
diff --git a/share/ui/units.xml b/share/ui/units.xml
new file mode 100644
index 0000000..713a538
--- /dev/null
+++ b/share/ui/units.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<unitdefs>
+<unit type="DIMENSIONLESS" pri="y">
+ <name>%</name>
+ <plural>%</plural>
+ <abbr>%</abbr>
+ <factor>1.00</factor>
+ <description>Percentage</description>
+</unit>
+<unit type="LINEAR" pri="y">
+ <name>pixel</name>
+ <plural>pixels</plural>
+ <abbr>px</abbr>
+ <factor>1.00</factor>
+ <description>CSS Pixels (96/inch)</description>
+</unit>
+<unit type="LINEAR" pri="n">
+ <name>point</name>
+ <plural>points</plural>
+ <abbr>pt</abbr>
+ <factor>1.333333333333333</factor>
+ <description>PostScript points (72/inch)</description>
+</unit>
+<unit type="LINEAR" pri="n">
+ <name>pica</name>
+ <plural>picas</plural>
+ <abbr>pc</abbr>
+ <factor>16.0</factor>
+ <description>12 points</description>
+</unit>
+<unit type="LINEAR" pri="n">
+ <name>inch</name>
+ <plural>inches</plural>
+ <abbr>in</abbr>
+ <factor>96.0</factor>
+ <description>Inches (96 px/in)</description>
+</unit>
+<unit type="LINEAR" pri="n">
+ <name>millimeter</name>
+ <plural>millimeters</plural>
+ <abbr>mm</abbr>
+ <factor>3.779527559055119</factor>
+ <description>Millimeters (25.4 mm/in)</description>
+</unit>
+<unit type="LINEAR" pri="n">
+ <name>centimeter</name>
+ <plural>centimeters</plural>
+ <abbr>cm</abbr>
+ <factor>37.79527559055119</factor>
+ <description>Centimeters (10 mm/cm)</description>
+</unit>
+<unit type="RADIAL" pri="y">
+ <name>degree</name>
+ <plural>degrees</plural>
+ <abbr>°</abbr>
+ <factor>1.00</factor>
+ <description>Degrees</description>
+</unit>
+<unit type="RADIAL" pri="n">
+ <name>radian</name>
+ <plural>radians</plural>
+ <abbr>rad</abbr>
+ <factor>57.29577951308232</factor>
+ <description>Radians (180/pi deg/rad)</description>
+</unit>
+<unit type="RADIAL" pri="n">
+ <name>gradian</name>
+ <plural>gradians</plural>
+ <abbr>grad</abbr>
+ <factor>0.9</factor>
+ <description>Gradians (360/400 deg/grad)</description>
+</unit>
+<unit type="RADIAL" pri="n">
+ <name>turn</name>
+ <plural>turns</plural>
+ <abbr>turn</abbr>
+ <factor>360</factor>
+ <description>Turns (360 deg/turn)</description>
+</unit>
+<unit type="FONT_HEIGHT" pri="y">
+ <name>font-height</name>
+ <plural>font-heights</plural>
+ <abbr>em</abbr>
+ <factor>1.00</factor>
+ <description>Font height</description>
+</unit>
+<unit type="FONT_HEIGHT" pri="n">
+ <name>x-height</name>
+ <plural>x-heights</plural>
+ <abbr>ex</abbr>
+ <factor>0.50</factor>
+ <description>Height of letter 'x'</description>
+</unit>
+<unit type="FONT_HEIGHT" pri="n">
+ <name>half-em</name>
+ <plural>half-ems</plural>
+ <abbr>en</abbr>
+ <factor>0.50</factor>
+ <description>Half of font height</description>
+</unit>
+</unitdefs>
diff --git a/share/ui/user.css b/share/ui/user.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/share/ui/user.css
diff --git a/share/ui/widget-new-from-template.ui b/share/ui/widget-new-from-template.ui
new file mode 100644
index 0000000..9c3edd1
--- /dev/null
+++ b/share/ui/widget-new-from-template.ui
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <!-- interface-license-type gplv3 -->
+ <!-- interface-name Inkscape -->
+ <!-- interface-copyright Martin Owens -->
+ <object class="GtkListStore" id="liststore">
+ <columns>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name label -->
+ <column type="gchararray"/>
+ <!-- column-name icon -->
+ <column type="GdkPixbuf"/>
+ <!-- column-name key -->
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0">Example Item</col>
+ <col id="1">Label</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkScrolledWindow" id="container">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="shadow-type">in</property>
+ <child>
+ <object class="GtkIconView" id="iconview">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="margin">6</property>
+ <property name="model">liststore</property>
+ <property name="spacing">1</property>
+ <child>
+ <object class="GtkCellRendererPixbuf">
+ <property name="xpad">6</property>
+ <property name="ypad">6</property>
+ </object>
+ <attributes>
+ <attribute name="pixbuf">2</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="xalign">0.5</property>
+ <property name="alignment">center</property>
+ <property name="wrap-mode">word</property>
+ <property name="wrap-width">16</property>
+ </object>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="xalign">0.5</property>
+ <property name="alignment">center</property>
+ <property name="scale">0.90</property>
+ <property name="wrap-mode">word</property>
+ <property name="wrap-width">32</property>
+ <property name="foreground-rgba">rgb(136,138,133)</property>
+ </object>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/share/ui/win32.css b/share/ui/win32.css
new file mode 100644
index 0000000..a260e21
--- /dev/null
+++ b/share/ui/win32.css
@@ -0,0 +1,176 @@
+/* Appearance of switches */
+
+switch slider {
+ background-image: none;
+ background-color: @selected_bg_color;
+ border-radius: 3px;
+}
+
+switch image {
+ background-color: -gtk-win32-color(button, 10);
+ border-radius: 1px;
+}
+
+
+/* Menu appearance */
+
+menu separator {
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ margin-left: 5px;
+ margin-right: 5px;
+}
+
+toolbar separator {
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ margin: 2px;
+}
+
+menuitem arrow {
+ min-width: 10px;
+ min-height: 10px;
+}
+
+menuitem arrow.right {
+ -gtk-icon-source: -gtk-icontheme("pan-end-symbolic");
+}
+
+menuitem arrow.left {
+ -gtk-icon-source: -gtk-icontheme("pan-start-symbolic");
+}
+
+
+/* Add margin to images */
+
+widget>box>image,
+toolbar button image {
+ margin: 2px;
+}
+
+
+/* Style spinbuttons, GTK style (see discussion in https://gitlab.com/inkscape/inkscape/-/issues/762) */
+
+spinbutton {
+ background-image: none;
+}
+
+spinbutton button {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ background-size: 20px 100%;
+ border-width: 1px;
+ border-style: solid;
+ background-image: none;
+ color: black;
+ background-color: white;
+ border-color: shade(-gtk-win32-color(button, menu), 0.6);
+}
+
+spinbutton button.down {
+ margin-right: 15px;
+}
+
+spinbutton button:hover {
+ background-image: -gtk-win32-theme-part(button, 1, 2);
+ background-size: 200% 200%;
+ ;
+ background-position: center;
+ border-color: #add8e6;
+}
+
+spinbutton button:disabled {
+ background-color: blue;
+}
+
+spinbutton entry:not(:disabled) {
+ border: 1px solid shade(-gtk-win32-color(button, menu), 0.6);
+ background-color: white;
+}
+
+spinbutton entry:disabled,
+spinbutton button:disabled {
+ background-color: -gtk-win32-color(button, 4);
+}
+
+spinbutton entry:disabled {
+ border-width: 1px;
+ border-style: solid;
+}
+
+
+/* Fix height of sliders in F&S dialog */
+
+#InkSpinScale spinbutton {
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+
+
+/* Fix colors in LPE dialog */
+
+@define-color theme_fg_color black;
+#LPEDialogSelector separator {
+ border-color: black;
+ border-right: 1px solid;
+ margin: 2px;
+}
+
+
+/* Fix hidden palette */
+
+#InkscapePanel #PreviewHolderGrid {
+ padding-bottom: 20px;
+}
+
+
+/* Fix right button of horizontal scrollbar */
+
+scrollbar.horizontal:hover button.down:disabled {
+ background-image: -gtk-win32-theme-part(scrollbar, 1, 16);
+}
+
+scrollbar.horizontal:hover button.down:active {
+ background-image: -gtk-win32-theme-part(scrollbar, 1, 15);
+}
+
+
+/* Make room for the scroll bar of the dialog region*/
+
+#DockBox {
+ margin-right: 15px;
+}
+
+#InkSpinScale spinbutton {
+ margin-right: 5px;
+}
+
+/* Fix text contrast issues while hovering */
+
+treeview.view:selected {
+ color: #000;
+}
+
+treeview.view:selected:focus {
+ background-color: #a0d4fc;
+}
+
+/*fix context-menu decoration */
+
+.popup decoration {
+ all: unset;
+}
+
+/*add expander arrow*/
+
+expander arrow {
+ -gtk-icon-source: -gtk-icontheme("pan-end-symbolic");
+}
+
+expander arrow:dir(rtl) {
+ -gtk-icon-source: -gtk-icontheme("pan-end-symbolic-rtl");
+}
+
+expander arrow:checked {
+ -gtk-icon-source: -gtk-icontheme("pan-down-symbolic");
+}