summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLex Neva <lexelby@users.noreply.github.com>2020-08-20 22:13:02 -0400
committerGitHub <noreply@github.com>2020-08-20 22:13:02 -0400
commiteedcd016f620e8e3fe939978becf496d77d4080c (patch)
treeb27caab4f3942b9e9f27eff7efc2bf6c468cca48
parent4dcb07c3d801d033df94c2a400adc7ce163d2d4e (diff)
parent6e34f5f7fc8598e564adf9b3e08e6cb4275923b5 (diff)
Merge pull request #793 from inkstitch/lexelby/install-extension-electron
migrate install extension to electron
-rw-r--r--.github/workflows/build.yml1
-rw-r--r--electron/.electron-vue/webpack.renderer.config.js26
-rw-r--r--electron/.electron-vue/webpack.web.config.js26
-rw-r--r--electron/package.json14
-rw-r--r--electron/src/renderer/App.vue14
-rw-r--r--electron/src/renderer/components/InstallPalettes.vue109
-rw-r--r--electron/src/renderer/main.js20
-rw-r--r--electron/src/renderer/router/index.js23
-rw-r--r--electron/yarn.lock235
-rw-r--r--lib/api/install.py47
-rw-r--r--lib/api/server.py8
-rw-r--r--lib/extensions/install.py124
-rw-r--r--lib/extensions/simulate.py19
-rw-r--r--symbols/inkstitch.svg418
-rw-r--r--templates/install.inx2
15 files changed, 499 insertions, 587 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 391db4c7..f91e5f55 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -81,6 +81,7 @@ jobs:
with:
python-version: '2.7.x'
architecture: 'x86'
+ - uses: microsoft/setup-msbuild@v1.0.1
- name: download dependencies
shell: bash
run: |
diff --git a/electron/.electron-vue/webpack.renderer.config.js b/electron/.electron-vue/webpack.renderer.config.js
index 82727c04..89f8cd78 100644
--- a/electron/.electron-vue/webpack.renderer.config.js
+++ b/electron/.electron-vue/webpack.renderer.config.js
@@ -21,7 +21,7 @@ const { VueLoaderPlugin } = require('vue-loader')
*/
// 'vue-slider-component' needed here due to this issue:
// https://github.com/SimulatedGREG/electron-vue/issues/725
-let whiteListedModules = ['vue', 'vue-slider-component']
+let whiteListedModules = ['vue', 'vue-slider-component', 'vuetify']
let rendererConfig = {
devtool: '#cheap-module-eval-source-map',
@@ -95,6 +95,30 @@ let rendererConfig = {
name: 'fonts/[name]--[folder].[ext]'
}
}
+ },
+ {
+ test: /\.s(c|a)ss$/,
+ use: [
+ 'vue-style-loader',
+ 'css-loader',
+ {
+ loader: 'sass-loader',
+ // Requires sass-loader@^7.0.0
+ options: {
+ implementation: require('sass'),
+ fiber: require('fibers'),
+ indentedSyntax: true // optional
+ },
+ // Requires sass-loader@^8.0.0
+ options: {
+ implementation: require('sass'),
+ sassOptions: {
+ fiber: require('fibers'),
+ indentedSyntax: true // optional
+ },
+ },
+ },
+ ],
}
]
},
diff --git a/electron/.electron-vue/webpack.web.config.js b/electron/.electron-vue/webpack.web.config.js
index c942c0c7..913518a2 100644
--- a/electron/.electron-vue/webpack.web.config.js
+++ b/electron/.electron-vue/webpack.web.config.js
@@ -69,7 +69,31 @@ let webConfig = {
name: 'fonts/[name].[ext]'
}
}
- }
+ },
+ {
+ test: /\.s(c|a)ss$/,
+ use: [
+ 'vue-style-loader',
+ 'css-loader',
+ {
+ loader: 'sass-loader',
+ // Requires sass-loader@^7.0.0
+ options: {
+ implementation: require('sass'),
+ fiber: require('fibers'),
+ indentedSyntax: true // optional
+ },
+ // Requires sass-loader@^8.0.0
+ options: {
+ implementation: require('sass'),
+ sassOptions: {
+ fiber: require('fibers'),
+ indentedSyntax: true // optional
+ },
+ },
+ },
+ ],
+ },
]
},
plugins: [
diff --git a/electron/package.json b/electron/package.json
index 123a6e2a..e66eb7ec 100644
--- a/electron/package.json
+++ b/electron/package.json
@@ -38,14 +38,15 @@
"@fortawesome/fontawesome-svg-core": "^1.2.22",
"@fortawesome/free-solid-svg-icons": "^5.10.2",
"@fortawesome/vue-fontawesome": "^0.1.6",
+ "@mdi/font": "^5.5.55",
+ "@svgdotjs/svg.filter.js": "^3.0.7",
+ "@svgdotjs/svg.js": "^3.0.16",
+ "@svgdotjs/svg.panzoom.js": "https://github.com/inkstitch/svg.panzoom.js",
"axios": "^0.19.0",
"electron-compile": "^6.4.4",
"lodash.throttle": "^4.1.1",
"mousetrap": "^1.6.3",
"query-string": "^6.8.2",
- "@svgdotjs/svg.js": "^3.0.16",
- "@svgdotjs/svg.panzoom.js": "https://github.com/inkstitch/svg.panzoom.js",
- "@svgdotjs/svg.filter.js": "^3.0.7",
"svgpath": "^2.2.3",
"tmp": "0.1.0",
"vue": "^2.5.16",
@@ -53,7 +54,8 @@
"vue-loading-overlay": "^3.2.0",
"vue-router": "^3.0.1",
"vue-slider-component": "^3.0.38",
- "vue2-transitions": "^0.3.0"
+ "vue2-transitions": "^0.3.0",
+ "vuetify": "^2.3.9"
},
"devDependencies": {
"ajv": "^6.5.0",
@@ -70,6 +72,7 @@
"copy-webpack-plugin": "^4.5.1",
"cross-env": "^5.1.6",
"css-loader": "^0.28.11",
+ "deepmerge": "^4.2.2",
"del": "^3.0.0",
"devtron": "^1.4.0",
"easygettext": "^2.7.0",
@@ -87,11 +90,14 @@
"eslint-plugin-node": "^6.0.1",
"eslint-plugin-promise": "^3.8.0",
"eslint-plugin-standard": "^3.1.0",
+ "fibers": "^5.0.0",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "0.4.0",
"multispinner": "^0.2.1",
"node-loader": "^0.6.0",
+ "sass": "^1.26.10",
+ "sass-loader": "^9.0.3",
"style-loader": "^0.21.0",
"url-loader": "^1.0.1",
"vue-html-loader": "^1.2.4",
diff --git a/electron/src/renderer/App.vue b/electron/src/renderer/App.vue
index 7888d968..7495dd05 100644
--- a/electron/src/renderer/App.vue
+++ b/electron/src/renderer/App.vue
@@ -1,15 +1,19 @@
<template>
<div id="app">
- <router-view></router-view>
+ <v-app>
+ <v-main>
+ <router-view></router-view>
+ </v-main>
+ </v-app>
</div>
</template>
<script>
- export default {
- name: 'my-project'
- }
+export default {
+ name: 'my-project'
+}
</script>
<style>
- /* CSS */
+@import url('https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons');
</style>
diff --git a/electron/src/renderer/components/InstallPalettes.vue b/electron/src/renderer/components/InstallPalettes.vue
new file mode 100644
index 00000000..85bf5578
--- /dev/null
+++ b/electron/src/renderer/components/InstallPalettes.vue
@@ -0,0 +1,109 @@
+<template>
+ <v-dialog max-width="500px" value="true">
+ <v-card v-if="step == 'pick'" key="pick" rounded="lg" :loading="installing" :disabled="installing">
+ <v-card-title>
+ <translate>
+ Install Palettes
+ </translate>
+ </v-card-title>
+ <v-card-text class="text--primary">
+ <translate>Ink/Stitch can install palettes for Inkscape matching the thread colors from popular machine embroidery thread manufacturers.
+ </translate>
+ </v-card-text>
+ <v-file-input class="mb-3 mx-3" webkitdirectory hide-details v-model="path"
+ :label="$gettext('Choose Inkscape directory')"></v-file-input>
+ <v-card-actions>
+ <v-btn text color="primary" v-on:click="install">
+ <v-icon>mdi-palette</v-icon>
+ <translate>Install</translate>
+ </v-btn>
+ <v-btn text color="primary" v-on:click="close">
+ <translate>Cancel</translate>
+ </v-btn>
+ </v-card-actions>
+ </v-card>
+ <v-card v-if="step == 'done'" key="done">
+ <v-card-title>
+ <translate>
+ Installation Completed
+ </translate>
+ </v-card-title>
+ <v-card-text class="text--primary">
+ <translate>
+ Inkscape palettes have been installed. Please restart Inkscape to load the new palettes.
+ </translate>
+ </v-card-text>
+ <v-card-actions>
+ <v-btn text color="primary" v-on:click="close">
+ Done
+ </v-btn>
+ </v-card-actions>
+ </v-card>
+ <v-card v-if="step == 'error'" key="error">
+ <v-card-title>
+ <translate>
+ Installation Failed
+ </translate>
+ </v-card-title>
+ <v-card-text class="text--primary">
+ <translate>Inkscape add-on installation failed</translate>
+ </v-card-text>
+ <v-card-text class="text--secondary">
+ {{ error }}
+ </v-card-text>
+ <v-card-actions>
+ <v-btn text color="primary" v-on:click="retry">
+ <translate>Try again</translate>
+ </v-btn>
+ <v-btn text color="primary" v-on:click="close">
+ <translate>Cancel</translate>
+ </v-btn>
+ </v-card-actions>
+ </v-card>
+ </v-dialog>
+</template>
+
+<script>
+const inkStitch = require("../../lib/api")
+
+export default {
+ name: "InstallPalettes",
+ data: function () {
+ return {
+ path: null,
+ installing: false,
+ step: "pick",
+ error: null
+ }
+ },
+ methods: {
+ install() {
+ this.installing = true
+ inkStitch.post('install/palettes', {path: this.path.path || this.path.name}).then(response => {
+ this.step = "done"
+ }).catch(error => {
+ this.step = "error"
+ this.error = error.response.data.error
+ }).then(() => {
+ this.installing = false
+ })
+ },
+ close() {
+ window.close()
+ },
+ retry() {
+ this.installing = false
+ this.step = "pick"
+ }
+ },
+ created: function () {
+ inkStitch.get("install/default-path").then(response => {
+ this.path = new File([""], response.data, {})
+ })
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/electron/src/renderer/main.js b/electron/src/renderer/main.js
index 3502ed6a..25a3f7f1 100644
--- a/electron/src/renderer/main.js
+++ b/electron/src/renderer/main.js
@@ -20,6 +20,7 @@ import {
faHorse,
faInfo,
faMinus,
+ faPalette,
faPause,
faPlay,
faPlus,
@@ -34,6 +35,9 @@ import Transitions from 'vue2-transitions'
import GetTextPlugin from 'vue-gettext'
import translations from './assets/translations.json'
import {selectLanguage} from '../lib/i18n'
+import Vuetify from 'vuetify'
+import 'vuetify/dist/vuetify.min.css'
+import '@mdi/font/css/materialdesignicons.css'
// We have to add to the library every icon we use anywhere in the UI.
// This avoids the need to bundle the entire font-awesome icon set with
@@ -52,6 +56,7 @@ library.add(
faHorse,
faInfo,
faMinus,
+ faPalette,
faPause,
faPlay,
faPlus,
@@ -75,8 +80,23 @@ Vue.use(GetTextPlugin, {
Vue.http = Vue.prototype.$http = axios
Vue.config.productionTip = false
+Vue.use(Vuetify)
+const vuetify = new Vuetify({
+ theme: {
+ themes: {
+ light: {
+ primary: '#003399',
+ secondary: '#000000',
+ accent: '#8c9eff',
+ error: '#b71c1c',
+ },
+ },
+ },
+})
+
/* eslint-disable no-new */
new Vue({
+ vuetify,
components: {App},
router,
template: '<App/>'
diff --git a/electron/src/renderer/router/index.js b/electron/src/renderer/router/index.js
index 3a27c4bc..63e2f415 100644
--- a/electron/src/renderer/router/index.js
+++ b/electron/src/renderer/router/index.js
@@ -5,14 +5,19 @@ Vue.use(Router)
export default new Router({
routes: [
- {
- path: '/simulator',
- name: 'simulator',
- component: require('@/components/Simulator').default
- },
- {
- path: '*',
- redirect: '/'
- }
+ {
+ path: '/simulator',
+ name: 'simulator',
+ component: require('@/components/Simulator').default
+ },
+ {
+ path: '/install',
+ name: 'install',
+ component: require('@/components/InstallPalettes').default
+ },
+ {
+ path: '*',
+ redirect: '/'
+ }
]
})
diff --git a/electron/yarn.lock b/electron/yarn.lock
index 4174c00e..38cad0df 100644
--- a/electron/yarn.lock
+++ b/electron/yarn.lock
@@ -126,6 +126,11 @@
resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.6.tgz#18a0f4263b90f65180fc927325ba01896276ea04"
integrity sha512-HAGRbrOuGDwwUmCYdpzR0hhNQ3EE30dOS4JiJKcoZ+S4M210CxyU0OXCgzIg3HzK/23rlpHbV8zi9PDDZDnuIw==
+"@mdi/font@^5.5.55":
+ version "5.5.55"
+ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-5.5.55.tgz#7f83d640f0692651f5e59558da99975f42114123"
+ integrity sha512-xrVCXiRMz7ubB8mu6ehDhMADmGpLBsk3GWZccs39jWmhoTxatFnOvW8STJjqMGtePPNgGYYu/6m/AJVyMjBxnw==
+
"@paulcbetts/mime-db@~1.22.0":
version "1.22.4"
resolved "https://registry.yarnpkg.com/@paulcbetts/mime-db/-/mime-db-1.22.4.tgz#b8ff8e78087a40992990f702f8d9c65499be2ef1"
@@ -160,6 +165,24 @@
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+"@svgdotjs/svg.filter.js@^3.0.7":
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.7.tgz#206a670fd56a75d5e1d6c2899398c3fd11402b23"
+ integrity sha512-OxCDe37EEiHSfR+3y9k7oNAdx7SNEDKoD3nDSAQW9RG1nSeeMh/C0xKY1J61NrqDWa0GoFPtN5nVRxb5ecnBMg==
+ dependencies:
+ "@svgdotjs/svg.js" "^3.0.13"
+
+"@svgdotjs/svg.js@^3.0.10", "@svgdotjs/svg.js@^3.0.13", "@svgdotjs/svg.js@^3.0.16":
+ version "3.0.16"
+ resolved "https://registry.yarnpkg.com/@svgdotjs/svg.js/-/svg.js-3.0.16.tgz#7044754e45daf62c8e2b115c45ca33ca5b967aff"
+ integrity sha512-yZ4jfP/SeLHEnCi9PIrzienKCrA4vW9+jm5uUV3N5DG2e9zgXLY5FgywK2u8/gMFIeKO0HuqTLFFfWJj+MfMLA==
+
+"@svgdotjs/svg.panzoom.js@https://github.com/inkstitch/svg.panzoom.js":
+ version "2.0.3"
+ resolved "https://github.com/inkstitch/svg.panzoom.js#98c25f32925ac62f49b81d3054d99b8c183afad8"
+ dependencies:
+ "@svgdotjs/svg.js" "^3.0.10"
+
"@szmarczak/http-timer@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
@@ -198,6 +221,11 @@
"@types/minimatch" "*"
"@types/node" "*"
+"@types/json-schema@^7.0.4":
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
+ integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
+
"@types/minimatch@*":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@@ -602,6 +630,16 @@ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.2:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^6.12.2:
+ version "6.12.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234"
+ integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -690,6 +728,14 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
+anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
app-builder-bin@2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.7.1.tgz#9f690af65093821b8a6149aa29ce9f8c81fc554c"
@@ -2000,6 +2046,11 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+binary-extensions@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
+ integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
+
bluebird-lst@^1.0.7, bluebird-lst@^1.0.9:
version "1.0.9"
resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.9.tgz#a64a0e4365658b9ab5fe875eb9dfb694189bb41c"
@@ -2095,6 +2146,13 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -2548,6 +2606,21 @@ cheerio@^1.0.0-rc.2:
lodash "^4.15.0"
parse5 "^3.0.1"
+"chokidar@>=2.0.0 <4.0.0":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
+ integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
chokidar@^2.0.2, chokidar@^2.1.6:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
@@ -3389,6 +3462,11 @@ deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+deepmerge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
default-gateway@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
@@ -3501,7 +3579,7 @@ detect-indent@^4.0.0:
dependencies:
repeating "^2.0.0"
-detect-libc@^1.0.2:
+detect-libc@^1.0.2, detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
@@ -3992,6 +4070,11 @@ emojis-list@^2.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -4534,6 +4617,11 @@ fast-deep-equal@^2.0.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
@@ -4570,6 +4658,13 @@ fd-slicer@~1.0.1:
dependencies:
pend "~1.2.0"
+fibers@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/fibers/-/fibers-5.0.0.tgz#3a60e0695b3ee5f6db94e62726716fa7a59acc41"
+ integrity sha512-UpGv/YAZp7mhKHxDvC1tColrroGRX90sSvh8RMZV9leo+e5+EkRVgCEZPlmXeo3BUNQTZxUaVdLskq1Q2FyCPg==
+ dependencies:
+ detect-libc "^1.0.3"
+
figgy-pudding@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
@@ -4616,6 +4711,13 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
finalhandler@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
@@ -4851,6 +4953,11 @@ fsevents@^1.2.7:
nan "^2.12.1"
node-pre-gyp "^0.12.0"
+fsevents@~2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+ integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -4929,6 +5036,13 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
+glob-parent@~5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
glob@7.0.x:
version "7.0.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
@@ -5684,6 +5798,13 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
is-buffer@^1.0.2, is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -5794,7 +5915,7 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-glob@^4.0.0:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
@@ -5828,6 +5949,11 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -6194,6 +6320,13 @@ json5@^2.1.0:
dependencies:
minimist "^1.2.0"
+json5@^2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
+ integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
+ dependencies:
+ minimist "^1.2.5"
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -6285,6 +6418,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+klona@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/klona/-/klona-1.1.2.tgz#a79e292518a5a5412ec8d097964bff1571a64db0"
+ integrity sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==
+
latest-version@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
@@ -6391,6 +6529,15 @@ loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
+loader-utils@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0"
+ integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
locate-path@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
@@ -6877,6 +7024,11 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
@@ -7059,6 +7211,11 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+neo-async@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
nib@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/nib/-/nib-1.1.2.tgz#6a69ede4081b95c0def8be024a4c8ae0c2cbb6c7"
@@ -7179,7 +7336,7 @@ normalize-path@^2.1.1:
dependencies:
remove-trailing-separator "^1.0.1"
-normalize-path@^3.0.0:
+normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@@ -7726,6 +7883,11 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+picomatch@^2.0.4, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
pify@^2.0.0, pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -8580,6 +8742,13 @@ readdirp@^2.2.1:
micromatch "^3.1.10"
readable-stream "^2.0.2"
+readdirp@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
+ integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
+ dependencies:
+ picomatch "^2.2.1"
+
recast@~0.11.12:
version "0.11.23"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
@@ -9002,6 +9171,17 @@ sanitize-filename@^1.6.1:
dependencies:
truncate-utf8-bytes "^1.0.0"
+sass-loader@^9.0.3:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-9.0.3.tgz#086adcf0bfdcc9d920413e2cdc3ba3321373d547"
+ integrity sha512-fOwsP98ac1VMme+V3+o0HaaMHp8Q/C9P+MUazLFVi3Jl7ORGHQXL1XeRZt3zLSGZQQPC8xE42Y2WptItvGjDQg==
+ dependencies:
+ klona "^1.1.2"
+ loader-utils "^2.0.0"
+ neo-async "^2.6.2"
+ schema-utils "^2.7.0"
+ semver "^7.3.2"
+
sass-lookup@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-1.1.0.tgz#da44a21beea5955f14effdb81bdee2751b6d15e2"
@@ -9015,6 +9195,13 @@ sass.js@^0.10.1:
resolved "https://registry.yarnpkg.com/sass.js/-/sass.js-0.10.13.tgz#6f39698755a14d7a7795f9dc85175f122ad91d9b"
integrity sha512-kgx2iuK+Rg2GM9mNTL9nYsJVTRp64JcHTIgkkHb+TsZY/+C2X6gd3rD7j+SPohNNHewEIBLZ9zpTpDGXX/3Ksg==
+sass@^1.26.10:
+ version "1.26.10"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760"
+ integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==
+ dependencies:
+ chokidar ">=2.0.0 <4.0.0"
+
sax@0.5.x:
version "0.5.8"
resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
@@ -9042,6 +9229,15 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
+schema-utils@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+ dependencies:
+ "@types/json-schema" "^7.0.4"
+ ajv "^6.12.2"
+ ajv-keywords "^3.4.1"
+
select-hose@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
@@ -9071,6 +9267,11 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.2.0, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^7.3.2:
+ version "7.3.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
+ integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+
send@0.17.1:
version "0.17.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@@ -9703,17 +9904,6 @@ supports-color@^5.3.0, supports-color@^5.4.0:
dependencies:
has-flag "^3.0.0"
-svg.js@^2.6.6, svg.js@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/svg.js/-/svg.js-2.7.1.tgz#eb977ed4737001eab859949b4a398ee1bb79948d"
- integrity sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==
-
-"svg.panzoom.js@https://github.com/inkstitch/svg.panzoom.js":
- version "1.2.3"
- resolved "https://github.com/inkstitch/svg.panzoom.js#83dacab3117c6774e8fc2f2cf1ce3b17c090ea55"
- dependencies:
- svg.js "^2.6.6"
-
svgo@^0.7.0:
version "0.7.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
@@ -9727,6 +9917,11 @@ svgo@^0.7.0:
sax "~1.2.1"
whet.extend "~0.9.9"
+svgpath@^2.2.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/svgpath/-/svgpath-2.3.0.tgz#efc76705deab6bd1774e9f0ed038bb661b5e4d23"
+ integrity sha512-N/4UDu3Y2ICik0daMmFW1tplw0XPs1nVIEVYkTiQfj9/JQZeEtAKaSYwheCwje1I4pQ5r22fGpoaNIvGgsyJyg==
+
swap-case@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3"
@@ -9919,6 +10114,13 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
@@ -10439,6 +10641,11 @@ vue@^2.5.16, vue@^2.6.10:
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==
+vuetify@^2.3.9:
+ version "2.3.9"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-2.3.9.tgz#6dcd1de647e1ce2c7cfaebb7068a0cf8929360b3"
+ integrity sha512-E5K9flTvS21tCkHgqDBMl0BY/Rld4SLUaJpQ+sQdL8/2uPcWmWLrdumn4SI8LBFojE0UP1GSaH4zKuxLL36fYg==
+
watchpack@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
diff --git a/lib/api/install.py b/lib/api/install.py
new file mode 100644
index 00000000..20138973
--- /dev/null
+++ b/lib/api/install.py
@@ -0,0 +1,47 @@
+import os
+import sys
+from glob import glob
+
+from flask import Blueprint, jsonify, request
+
+from ..utils import get_bundled_dir, guess_inkscape_config_path
+
+install = Blueprint('install', __name__)
+
+
+@install.route('/palettes', methods=["POST"])
+def palettes():
+ try:
+ base_path = request.json.get('path') or guess_inkscape_config_path()
+ path = os.path.join(base_path, 'palettes')
+ src_dir = get_bundled_dir('palettes')
+ copy_files(glob(os.path.join(src_dir, "*")), path)
+ except Exception, exc:
+ return jsonify({"error": str(exc)}), 500
+
+ return jsonify({"status": "success"})
+
+
+if sys.platform == "win32":
+ # If we try to just use shutil.copy it says the operation requires elevation.
+ def copy_files(files, dest):
+ import winutils
+
+ if not os.path.exists(dest):
+ os.makedirs(dest)
+
+ winutils.copy(files, dest)
+else:
+ def copy_files(files, dest):
+ import shutil
+
+ if not os.path.exists(dest):
+ os.makedirs(dest)
+
+ for palette_file in files:
+ shutil.copy(palette_file, dest)
+
+
+@install.route('/default-path')
+def default_path():
+ return guess_inkscape_config_path()
diff --git a/lib/api/server.py b/lib/api/server.py
index c57a1785..bdfa4573 100644
--- a/lib/api/server.py
+++ b/lib/api/server.py
@@ -1,15 +1,16 @@
import errno
import logging
import socket
-from threading import Thread
import time
+from threading import Thread
-from flask import Flask, request, g
import requests
+from flask import Flask, g, request
-from ..utils.json import InkStitchJSONEncoder
+from .install import install
from .simulator import simulator
from .stitch_plan import stitch_plan
+from ..utils.json import InkStitchJSONEncoder
class APIServer(Thread):
@@ -31,6 +32,7 @@ class APIServer(Thread):
self.app.register_blueprint(simulator, url_prefix="/simulator")
self.app.register_blueprint(stitch_plan, url_prefix="/stitch_plan")
+ self.app.register_blueprint(install, url_prefix="/install")
@self.app.before_request
def store_extension():
diff --git a/lib/extensions/install.py b/lib/extensions/install.py
index f9ffe958..9756fb83 100644
--- a/lib/extensions/install.py
+++ b/lib/extensions/install.py
@@ -1,116 +1,16 @@
-# -*- coding: UTF-8 -*-
+from .base import InkstitchExtension
+from ..api import APIServer
+from ..gui import open_url
-import sys
-import traceback
-import os
-from glob import glob
-import wx
-import inkex
-from ..utils import guess_inkscape_config_path, get_bundled_dir
-from ..i18n import _
-
-
-class InstallerFrame(wx.Frame):
- def __init__(self, *args, **kwargs):
- wx.Frame.__init__(self, *args, **kwargs)
-
- self.path = guess_inkscape_config_path()
-
- panel = wx.Panel(self)
- sizer = wx.BoxSizer(wx.VERTICAL)
-
- text_sizer = wx.BoxSizer(wx.HORIZONTAL)
-
- text = (_('Ink/Stitch can install files ("add-ons") that make it easier to use Inkscape to create machine embroidery designs. '
- 'These add-ons will be installed:') +
- u"\n\n • " + _("thread manufacturer color palettes") +
- u"\n • " + _("Ink/Stitch visual commands (Object -> Symbols...)"))
-
- static_text = wx.StaticText(panel, label=text)
- font = wx.Font(12, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
- static_text.SetFont(font)
- text_sizer.Add(static_text, proportion=0, flag=wx.ALL | wx.EXPAND, border=10)
- sizer.Add(text_sizer, proportion=3, flag=wx.ALL | wx.EXPAND, border=0)
-
- buttons_sizer = wx.BoxSizer(wx.HORIZONTAL)
- install_button = wx.Button(panel, wx.ID_ANY, _("Install"))
- install_button.SetBitmap(wx.ArtProvider.GetBitmap(wx.ART_TICK_MARK))
- buttons_sizer.Add(install_button, proportion=0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
- cancel_button = wx.Button(panel, wx.ID_CANCEL, _("Cancel"))
- buttons_sizer.Add(cancel_button, proportion=0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
- sizer.Add(buttons_sizer, proportion=1, flag=wx.ALIGN_RIGHT | wx.ALIGN_BOTTOM)
-
- panel.SetSizer(sizer)
- panel.Layout()
-
- cancel_button.Bind(wx.EVT_BUTTON, self.cancel_button_clicked)
- install_button.Bind(wx.EVT_BUTTON, self.install_button_clicked)
-
- def cancel_button_clicked(self, event):
- self.Destroy()
-
- def chooser_button_clicked(self, event):
- dialog = wx.DirDialog(self, _("Choose Inkscape directory"))
- if dialog.ShowModal() != wx.ID_CANCEL:
- self.path_input.SetValue(dialog.GetPath())
-
- def install_button_clicked(self, event):
- if sys.platform == "win32":
- # On windows, the default icon shows as a broken image. No idea
- # why. Workaround: don't show an icon.
- style = wx.ICON_NONE
- else:
- style = 0
-
- try:
- self.install_addons('palettes')
- self.install_addons('symbols')
- except Exception:
- wx.MessageDialog(self,
- _('Inkscape add-on installation failed') + ': \n' + traceback.format_exc(),
- _('Installation Failed'),
- wx.OK | style).ShowModal()
- else:
- wx.MessageDialog(self,
- _('Inkscape add-on files have been installed. Please restart Inkscape to load the new add-ons.'),
- _('Installation Completed'),
- wx.OK | style).ShowModal()
-
- self.Destroy()
-
- def install_addons(self, type):
- path = os.path.join(self.path, type)
- src_dir = get_bundled_dir(type)
- self.copy_files(glob(os.path.join(src_dir, "*")), path)
-
- if (sys.platform == "win32"):
- # If we try to just use shutil.copy it says the operation requires elevation.
- def copy_files(self, files, dest):
- import winutils
-
- if not os.path.exists(dest):
- os.makedirs(dest)
-
- winutils.copy(files, dest)
- else:
- def copy_files(self, files, dest):
- import shutil
-
- if not os.path.exists(dest):
- os.makedirs(dest)
-
- for palette_file in files:
- shutil.copy(palette_file, dest)
-
-
-class Install(inkex.Effect):
- @classmethod
- def name(cls):
- return "install"
+class Install(InkstitchExtension):
+ def __init__(self):
+ InkstitchExtension.__init__(self)
def effect(self):
- app = wx.App()
- installer_frame = InstallerFrame(None, title=_("Ink/Stitch Add-ons Installer"), size=(550, 250))
- installer_frame.Show()
- app.MainLoop()
+ api_server = APIServer(self)
+ port = api_server.start_server()
+ electron = open_url("/install?port=%d" % port)
+ electron.wait()
+ api_server.stop()
+ api_server.join()
diff --git a/lib/extensions/simulate.py b/lib/extensions/simulate.py
deleted file mode 100644
index a4da26d5..00000000
--- a/lib/extensions/simulate.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from ..gui import show_simulator
-from ..stitch_plan import patches_to_stitch_plan
-from .base import InkstitchExtension
-
-
-class Simulate(InkstitchExtension):
- def __init__(self):
- InkstitchExtension.__init__(self)
- self.OptionParser.add_option("-P", "--path",
- action="store", type="string",
- dest="path", default=".",
- help="Directory in which to store output file")
-
- def effect(self):
- if not self.get_elements():
- return
- patches = self.elements_to_patches(self.elements)
- stitch_plan = patches_to_stitch_plan(patches)
- show_simulator(stitch_plan)
diff --git a/symbols/inkstitch.svg b/symbols/inkstitch.svg
deleted file mode 100644
index 4a67ae1c..00000000
--- a/symbols/inkstitch.svg
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="100mm"
- height="100mm"
- viewBox="0 0 377.95276 377.95276"
- id="svg8375"
- version="1.1"
- inkscape:version="0.92.3 (unknown)"
- sodipodi:docname="inkstitch.svg">
- <sodipodi:namedview
- inkscape:snap-object-midpoints="true"
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.9999999"
- inkscape:cx="160.57712"
- inkscape:cy="279.26165"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="mm"
- inkscape:window-width="1366"
- inkscape:window-height="705"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- inkscape:window-maximized="1"
- inkscape:measure-start="128.23,226.536"
- inkscape:measure-end="114.217,226.536"
- inkscape:snap-global="true"
- showguides="false"
- inkscape:snap-others="true"
- inkscape:object-nodes="false"
- inkscape:snap-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid5001"
- units="mm"
- spacingx="18.897638"
- spacingy="18.897638"
- color="#f03fff"
- opacity="0.1254902"
- empspacing="2" />
- </sodipodi:namedview>
- <title
- id="title9425">Ink/Stitch Commands</title>
- <defs
- id="defs8377">
- <symbol
- id="inkstitch_fill_end">
- <title
- id="inkstitch_title9427">Fill stitch ending point</title>
- <path
- id="inkstitch_circle13166"
- d="m 9.220113,0.0792309 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553,9.24655 -5.1067293,0 -9.2465521,-4.139821 -9.246554,-9.24655 1e-7,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.5383009,-2.708252 5.1067301,0 9.2465528,4.139823 9.246553,9.246553 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.27154255;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m -4.570439,-4.5704391 c 0,0 9.140878,0 9.140878,0 0,0 0,9.14087 0,9.14087 0,0 -9.140878,0 -9.140878,0 0,0 0,-9.14087 0,-9.14087"
- id="inkstitch_rect5371-2"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="inkstitch_trim">
- <title
- id="inkstitch_title9282">Trim the thread after sewing this object.</title>
- <path
- id="inkstitch_circle13405"
- d="m 9.2465284,-8.6e-6 c 1.8e-6,2.452339 -0.9741847,4.804237 -2.7082493,6.538304 C 4.8042146,8.2723614 2.4523174,9.2465504 -2.1625959e-5,9.2465514 -2.4523623,9.2465534 -4.8042621,8.2723654 -6.5383288,6.5382984 -8.2723956,4.8042314 -9.2465834,2.4523324 -9.2465816,-8.6e-6 c 6e-7,-2.452339 0.9741895,-4.804237 2.708256,-6.538301 1.7340665,-1.734065 4.0859648,-2.708252 6.538303974041,-2.70825 C 5.1067066,-9.2465576 9.2465271,-5.1067366 9.2465284,-8.6e-6 c 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#050505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.41421342;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m -3.0000256,-5.9834096 c -1.30575,0 -2.375,1.06924 -2.375,2.375 0,1.30575 1.06925,2.375 2.375,2.375 0.58687,0 1.11944,-0.22369 1.53516,-0.58007 0,0 0.61717997,1.62109 0.61717997,1.62109 0,0 -2.29881997,6.01758 -2.29881997,6.01758 0.98655,-0.12511 1.23728,-0.26171 1.67382,-0.97461 0,0 1.33007997,-3.18945 1.33007997,-3.18945 0,0 1.23633003,3.25 1.23633003,3.25 0.23227,0.77906 0.84315,0.79218 1.57813,1.07226 0,0 -2.05469003,-6.14258 -2.05469003,-6.14258 0,0 0.73047003,-1.75 0.73047003,-1.75 0.42849,0.41682 1.01136,0.67578 1.65234,0.67578 1.30575,0 2.375,-1.06925 2.375,-2.375 0,-1.30576 -1.06925,-2.375 -2.375,-2.375 -1.06233,0 -1.95701,0.71265 -2.25781003,1.67969 0,0 -0.0117,-0.0156 -0.0117,-0.0156 0,0 -0.80274,2.10156 -0.80274,2.10156 0,0 -0.59179,-1.76562 -0.59179,-1.76562 -0.18242,-1.12808 -1.15864997,-2 -2.33593997,-2 0,0 -2e-5,-3e-5 -2e-5,-3e-5 m 0,1 c 0.76531,0 1.375,0.60968 1.375,1.375 0,0.76531 -0.60969,1.375 -1.375,1.375 -0.76531,0 -1.375,-0.60969 -1.375,-1.375 0,-0.76532 0.60969,-1.375 1.375,-1.375 0,0 0,0 0,0 m 6,0 c 0.76531,0 1.375,0.60968 1.375,1.375 0,0.76531 -0.60969,1.375 -1.375,1.375 -0.76531,0 -1.375,-0.60969 -1.375,-1.375 0,-0.76532 0.60969,-1.375 1.375,-1.375 0,0 0,0 0,0"
- id="inkstitch_path13416"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="inkstitch_fill_start">
- <title
- id="inkstitch_title9432">Fill stitch starting point</title>
- <path
- id="inkstitch_circle13166-6"
- d="m 9.2465269,-2.6e-6 c -1.9e-6,5.106729 -4.1398247,9.24655 -9.246554026709,9.24655 C -5.106756,9.2465474 -9.2465782,5.1067264 -9.2465801,-2.6e-6 c 2e-7,-5.10673 4.1398229,-9.246553 9.246552973291,-9.246553 2.452338526709,0 4.804235626709,0.974187 6.538300926709,2.708252 1.7340652,1.734066 2.708253,4.085963 2.7082531,6.538301 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.74180555;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 6.5728129,0.0035574 c 0,0 -10.4514,6.03412 -10.4514,6.03412 0,0 0,-12.06823 0,-12.06823 0,0 10.4514,6.03411 10.4514,6.03411"
- id="inkstitch_path4183"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="inkstitch_stop">
- <title
- id="inkstitch_title13328">Stop the machine after sewing this object (for applique, etc)</title>
- <path
- id="inkstitch_circle13330"
- d="m 9.2465269,-2.6e-6 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553026709,9.24655 C -5.1067554,9.2465474 -9.2465782,5.1067264 -9.2465801,-2.6e-6 c 10e-8,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.538300873291,-2.708252 C 5.106704,-9.2465556 9.2465267,-5.1067326 9.2465269,-2.6e-6 c 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- id="inkstitch_path13332"
- d="m -3.1690251,-4.6497026 c 0,0 2.51587797,0 2.51587797,0 0,0 0,9.14087 0,9.14087 0,0 -2.51587797,0 -2.51587797,0 0,0 0,-9.14087 0,-9.14087"
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60622311;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- inkscape:connector-curvature="0" />
- <path
- id="inkstitch_path13333"
- d="m 0.83097287,-4.6497026 c 0,0 2.51588003,0 2.51588003,0 0,0 0,9.14087 0,9.14087 0,0 -2.51588003,0 -2.51588003,0 0,0 0,-9.14087 0,-9.14087"
- style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.60622311;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- id="inkstitch_ignore_object">
- <title
- id="title25366">Ignore object when generating stitch plan</title>
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9.2465269,-2.6e-6 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553026709,9.24655 C -5.1067554,9.2465474 -9.2465782,5.1067264 -9.2465801,-2.6e-6 c 10e-8,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.538300873291,-2.708252 C 5.106704,-9.2465556 9.2465267,-5.1067326 9.2465269,-2.6e-6 v 0"
- id="inkstitch_path25368"
- sodipodi:nodetypes="csssscc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.36500001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 5.9670459,-7.182445 -7.5106053,5.8067489 c -0.1726626,0.167055 -0.1205449,0.382287 0.051259,0.540886 0.4472376,0.445359 0.9095461,0.890719 1.44712,1.336078 L 7.8945309,-5.7539019 c -0.444712,-0.4981949 -0.762678,-1.0407509 -1.340795,-1.4922541 -0.129647,-0.1296467 -0.384848,-0.1381312 -0.58669,0.063711 z"
- id="inkstitch_path31147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.36500001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m -6.3778509,-7.3863915 c -0.4163674,0.3694232 -0.8327348,0.8218035 -1.2491022,1.2906927 L 5.9335939,7.7988319 7.6269529,6.1484419 -5.6213616,-7.4261673 c -0.1943465,-0.1943465 -0.5493765,-0.1905301 -0.7564893,0.039776 z"
- inkstitch_id="path31147-7"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc"
- id="path19494" />
- </symbol>
- <symbol
- id="inkstitch_ignore_layer">
- <title
- id="title9694">Ignore entire layer when generating stitch plan</title>
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9.2465269,-4.9265995e-6 C 9.246525,5.1067241 5.1067028,9.2465451 -2.615882e-5,9.2465451 -5.1067554,9.2465451 -9.2465782,5.1067241 -9.2465801,-4.9265995e-6 -9.24658,-2.4523429 -8.2723922,-4.8042399 -6.538327,-6.5383059 c 1.7340653,-1.734065 4.0859624,-2.708252 6.53830084118,-2.708252 5.10673015882,0 9.24655285882,4.139823 9.24655305882,9.2465529734005 0,0 0,0 0,0"
- id="inkstitch_path25368-7" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- style="color:#000000;fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.63330007;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1"
- d="M 4,4.452769 1.46667,1.286102 H -5.5 l 2.53333,3.166667 z"
- id="use5800" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- style="color:#000000;opacity:0.5;fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:#858585;stroke-width:0.63339424;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:0;stroke-opacity:1"
- d="M 4,2.552769 1.46667,-0.613898 H -5.5 l 2.53333,3.166667 z"
- id="use5864" />
- <g
- id="g5771">
- <path
- sodipodi:nodetypes="ccccccccc"
- inkscape:connector-curvature="0"
- style="fill:#aa0000;fill-rule:evenodd;stroke:#aa0000;stroke-width:1px"
- d="m -1.0666699,-5.0472339 h 4.4333333 l 0.6333333,0.6333333 V 0.01943274 L 3.3666634,0.65276607 H -1.0666699 L -1.7000032,0.01943274 V -4.4139006 Z"
- id="path8011" />
- <path
- inkscape:connector-curvature="0"
- id="path8023"
- d="m -0.43333658,-3.8755672 c 0,0 3.16666668,3.16666661 3.16666668,3.16666661"
- style="fill:none;stroke:#ffffff;stroke-width:1.70000005" />
- <path
- inkscape:connector-curvature="0"
- id="path8025"
- d="m 2.7333301,-3.8755672 c 0,0 -3.16666668,3.16666661 -3.16666668,3.16666661"
- style="fill:none;stroke:#ffffff;stroke-width:1.79999995;stroke-linejoin:round" />
- </g>
- </symbol>
- <symbol
- id="inkstitch_stop_position"
- style="display:inline">
- <title
- id="inkstitch_title9427-6">Jump destination for Stop commands (a.k.a. &quot;Frame Out position&quot;).</title>
- <path
- id="inkstitch_circle13166-7"
- d="m 9.220113,0.07922893 c -1.9e-6,5.10672897 -4.1398241,9.24654997 -9.24655297,9.24654997 -5.10672933,0 -9.24655213,-4.139821 -9.24655403,-9.24654997 1e-7,-2.45233803 0.9741879,-4.80423503 2.7082531,-6.53830103 1.7340653,-1.734065 4.0859624,-2.708252 6.53830093,-2.708252 5.10673007,0 9.24655277,4.139823 9.24655297,9.24655303 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.27154255;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m 4.570439,1.4295589 c 0,0 0,2.32837 0,2.32837 0,0 -9.140878,0 -9.140878,0 0,0 0,-2.32837 0,-2.32837 0,0 9.140878,0 9.140878,0"
- id="inkstitch_rect5371-2-5"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.27154255;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m 4.570439,0.00792594 c 0,0 -9.140878,0 -9.140878,0 0,0 4.570439028610238,-4.51587004 4.570439028610238,-4.51587004 0,0 4.570438971389763,4.51587004 4.570438971389763,4.51587004"
- id="inkstitch_rect5371-2-5-3"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- style="display:inline"
- id="inkstitch_origin">
- <title
- id="inkstitch_title9427-67">Origin for exported embroidery files</title>
- <path
- inkscape:connector-curvature="0"
- id="inkstitch_circle13166-5"
- d="m 9.220113,0.07922893 c -1.9e-6,5.10672897 -4.1398241,9.24654997 -9.24655297,9.24654997 -5.10672933,0 -9.24655213,-4.139821 -9.24655403,-9.24654997 1e-7,-2.45233803 0.9741879,-4.80423503 2.7082531,-6.53830103 1.7340653,-1.734065 4.0859624,-2.708252 6.53830093,-2.708252 5.10673007,0 9.24655277,4.139823 9.24655297,9.24655303 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1" />
- <g
- id="g27211">
- <path
- inkscape:connector-curvature="0"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.95000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m -3.8183594,-6.3222656 c 0,0 -1.9511718,3.375 -1.9511718,3.375 0,0 0.9746093,0 0.9746093,0 0,0 0,2.33984372 0,2.33984372 0,0 -0.703125,0 -0.703125,0 0,0 0,0.6484375 0,0.6484375 0,0 0.703125,0 0.703125,0 0,0 0,1.60156248 0,1.60156248 0,0 -0.703125,0 -0.703125,0 0,0 0,0.6484375 0,0.6484375 0,0 0.703125,0 0.703125,0 0,0 0,2.9003906 0,2.9003906 0,0 3.7675781,0 3.7675781,0 0,0 0,0.7265626 0,0.7265626 0,0 0.65039068,0 0.65039068,0 0,0 0,-0.7265626 0,-0.7265626 0,0 1.59960932,0 1.59960932,0 0,0 0,0.7265626 0,0.7265626 0,0 0.6503907,0 0.6503907,0 0,0 0,-0.7265626 0,-0.7265626 0,0 1.8242187,0 1.8242187,0 0,0 0,0.9746094 0,0.9746094 0,0 3.3730469,-1.9492187 3.3730469,-1.9492187 0,0 -3.3730469,-1.9492188 -3.3730469,-1.9492188 0,0 0,0.9746094 0,0.9746094 0,0 -1.8242187,0 -1.8242187,0 0,0 0,-0.7265625 0,-0.7265625 0,0 -0.6503907,0 -0.6503907,0 0,0 0,0.7265625 0,0.7265625 0,0 -1.59960932,0 -1.59960932,0 0,0 0,-0.7265625 0,-0.7265625 0,0 -0.65039068,0 -0.65039068,0 0,0 0,0.7265625 0,0.7265625 0,0 -1.8164062,0 -1.8164062,0 0,0 0,-0.9511719 0,-0.9511719 0,0 0.75,0 0.75,0 0,0 0,-0.6484375 0,-0.6484375 0,0 -0.75,0 -0.75,0 0,0 0,-1.60156248 0,-1.60156248 0,0 0.75,0 0.75,0 0,0 0,-0.6484375 0,-0.6484375 0,0 -0.75,0 -0.75,0 0,0 0,-2.33984372 0,-2.33984372 0,0 0.9746094,0 0.9746094,0 0,0 -1.9492188,-3.375 -1.9492188,-3.375"
- id="inkstitch_rect5371-2-3" />
- </g>
- <path
- inkscape:connector-curvature="0"
- id="path16421-8"
- d="m 0.57260898,-3.1777344 c -0.071734,-1.477e-4 -0.1459261,0.023966 -0.203125,0.070312 -0.001979,0.00126 -0.003933,0.00257 -0.00586,0.00391 -0.1089887,0.095935 -0.2036022,0.1946157 -0.2851562,0.2988281 -0.080937,0.103424 -0.1496356,0.2111305 -0.203125,0.3242187 -0.053925,0.1140093 -0.092467,0.2338978 -0.1171875,0.3554688 -0.024626,0.1211014 -0.037109,0.2469313 -0.037109,0.3769531 0,0 0,0.00391 0,0.00391 -1e-7,0.1308008 0.012438,0.2575792 0.037109,0.3789062 0.024772,0.1208588 0.063476,0.2399564 0.1171875,0.3535156 0.053489,0.1130885 0.1221879,0.2207947 0.203125,0.3242188 0.079746,0.1019017 0.1731573,0.2012789 0.28125,0.296875 0.057512,0.054401 0.1230095,0.072299 0.1816406,0.076172 0.058631,0.00387 0.1145272,-0.00646 0.171875,-0.037109 0.057348,-0.030654 0.123751,-0.098677 0.1328125,-0.1914063 0.00897,-0.091756 -0.035792,-0.1679217 -0.087891,-0.2226562 0,0 -0.00195,-0.00196 -0.00195,-0.00196 -0.042833,-0.045359 -0.0821932,-0.091351 -0.1171901,-0.1367188 -0.0646652,-0.085061 -0.1178725,-0.1718145 -0.1582031,-0.2597656 -0.0404721,-0.08826 -0.0692154,-0.1791742 -0.0898438,-0.2753906 0,0 0,-0.00195 0,-0.00195 -0.019368,-0.095905 -0.029297,-0.1972936 -0.029297,-0.3046876 0,-0.1073939 0.00993,-0.2087828 0.029297,-0.3046874 0,0 0,-0.00195 0,-0.00195 0.020577,-0.095962 0.049404,-0.1859964 0.089844,-0.2734375 0.040331,-0.087951 0.093538,-0.1747036 0.1582031,-0.2597656 0.034608,-0.045272 0.072382,-0.090974 0.1132813,-0.1347656 0.1100322,-0.1004922 0.106643,-0.2892446 0.00977,-0.3847657 -0.048439,-0.04776 -0.1177191,-0.072118 -0.1894532,-0.072266 0,0 -4.1e-6,-6.4e-6 -4.1e-6,-6.4e-6 m 5.98828132,0 c -0.071651,7.8e-5 -0.1408014,0.023039 -0.1894531,0.070312 -0.097304,0.094548 -0.1026997,0.2857883 0.00781,0.3867188 0.042446,0.045212 0.082141,0.091474 0.1152343,0.1347656 0.063728,0.083829 0.1151348,0.1701035 0.15625,0.2597656 0.041495,0.089724 0.071628,0.1807109 0.091797,0.2753907 0.019368,0.095905 0.029297,0.1972939 0.029297,0.3046874 0,0.1080768 -0.00969,0.210199 -0.029297,0.3066407 -0.020235,0.094281 -0.050544,0.1854295 -0.091797,0.2753906 -0.041114,0.089661 -0.092522,0.1759365 -0.15625,0.2597656 -0.035531,0.046061 -0.07555,0.092638 -0.1191406,0.1386719 -0.052099,0.054735 -0.096857,0.1309001 -0.087891,0.2226562 0.00906,0.092729 0.075465,0.1607525 0.1328125,0.1914063 0.057348,0.030654 0.1132438,0.040982 0.171875,0.037109 0.058631,-0.00387 0.1241291,-0.021771 0.1816406,-0.076172 0.1080928,-0.095596 0.2015041,-0.1949734 0.2812503,-0.296875 0.08094,-0.1034241 0.149635,-0.2111302 0.203125,-0.3242188 0.05371,-0.1135599 0.09242,-0.2326573 0.117187,-0.3535156 0.02467,-0.1213269 0.03711,-0.2481053 0.03711,-0.3789062 0,0 0,-0.00391 0,-0.00391 0,-0.1300217 -0.01248,-0.2558514 -0.03711,-0.3769531 -0.02472,-0.1215662 -0.06326,-0.2414547 -0.117184,-0.3554641 -0.05349,-0.1130875 -0.122188,-0.2207943 -0.203125,-0.3242187 -0.081554,-0.1042124 -0.176168,-0.2028933 -0.2851566,-0.2988281 -0.00193,-0.00134 -0.00388,-0.00265 -0.00586,-0.00391 -0.05737,-0.046485 -0.1314738,-0.07039 -0.203125,-0.070312 0,0 6e-7,3.2e-6 6e-7,3.2e-6 m -4.7011719,0.3515625 c -0.1283255,0 -0.2496161,0.018417 -0.3613281,0.052734 -0.1205672,0.03623 -0.231977,0.1029821 -0.3222656,0.1953125 -0.092899,0.095 -0.158771,0.2147859 -0.20507822,0.3535156 -3.58e-6,6.5e-4 -3.58e-6,0.0013 0,0.00195 -0.047143,0.1440141 -0.068359,0.3107544 -0.068359,0.5058593 0,0.187956 0.021404,0.3526519 0.068359,0.4960938 -3.58e-6,6.5e-4 -3.58e-6,0.0013 0,0.00195 0.046821,0.138265 0.11525652,0.2561727 0.20312502,0.3496094 6.449e-4,6.5506e-4 0.00129,0.001305 0.00195,0.00195 0.086822,0.090925 0.1925294,0.1619069 0.3144532,0.203125 0.113825,0.038479 0.2343925,0.056641 0.359375,0.056641 0.1240896,-10e-8 0.2463111,-0.01819 0.3613281,-0.056641 0.1227637,-0.04104 0.2290582,-0.1116491 0.3164063,-0.203125 0.090879,-0.094856 0.160379,-0.2144584 0.2070312,-0.3515625 0,0 0,-0.00195 0,-0.00195 0.04963,-0.1446454 0.070315,-0.3097522 0.070315,-0.4960938 0,-0.1944243 -0.019335,-0.3619907 -0.068359,-0.5078125 C 2.6898173,-2.3649775 2.6213826,-2.484308 2.5296403,-2.578125 2.4412783,-2.668486 2.3312446,-2.7348378 2.2112809,-2.7714844 c -0.1098451,-0.034511 -0.2276775,-0.054687 -0.3515625,-0.054687 0,0 0,0 0,0 m 3.40625,0 c -0.1283255,0 -0.2509177,0.018217 -0.3632812,0.052734 -0.1211815,0.036426 -0.2311771,0.1041614 -0.3203125,0.1953125 -0.0929,0.095001 -0.1587709,0.2147864 -0.2050781,0.3535156 -3.6e-6,6.5e-4 -3.6e-6,0.0013 0,0.00195 -0.047144,0.144015 -0.068359,0.3107548 -0.068359,0.5058593 0,0.1879556 0.021403,0.352651 0.068359,0.4960938 -3.6e-6,6.5e-4 -3.6e-6,0.0013 0,0.00195 0.04626,0.13661 0.1121532,0.2549502 0.2011718,0.3496094 6.449e-4,6.5506e-4 0.00129,0.001305 0.00195,0.00195 0.087964,0.092121 0.195188,0.1621455 0.3164062,0.203125 0.1138248,0.038479 0.2343924,0.056641 0.359375,0.056641 0.1240899,0 0.2450506,-0.018421 0.359375,-0.056641 0.1227636,-0.04104 0.2290582,-0.1116493 0.3164062,-0.203125 0.090879,-0.094856 0.160379,-0.2144583 0.2070313,-0.3515625 0,0 0,-0.00195 0,-0.00195 0.04909,-0.1430335 0.072266,-0.3084325 0.072266,-0.4960938 0,-0.1956861 -0.021841,-0.3636373 -0.070312,-0.5078125 C 6.0946613,-2.3633389 6.02879,-2.4831245 5.9358903,-2.578125 5.8475279,-2.6684863 5.7374948,-2.7348378 5.6175309,-2.7714844 c -0.1098451,-0.034511 -0.2276775,-0.054687 -0.3515625,-0.054687 0,0 0,0 0,0 m -3.40625,0.5429688 c 0.055432,0 0.1009954,0.00891 0.1367188,0.023437 6.5e-4,3.6e-6 0.0013,3.6e-6 0.00195,0 0.02557,0.00985 0.045222,0.025496 0.070312,0.060547 6.5e-4,3.6e-6 0.0013,3.6e-6 0.00195,0 0.022095,0.030406 0.047135,0.083247 0.064453,0.1621094 -3.6e-6,6.5e-4 -3.6e-6,0.0013 0,0.00195 0.016958,0.076535 0.025391,0.1828146 0.025391,0.3183593 0,0.1285689 -0.010757,0.2344819 -0.029297,0.3105469 -0.0184,0.079083 -0.042145,0.132477 -0.066406,0.1660156 -6.5e-4,-3.6e-6 -0.0013,-3.6e-6 -0.00195,0 -0.02365,0.033039 -0.047699,0.051825 -0.076172,0.064453 -0.036523,0.01511 -0.077371,0.023437 -0.1328125,0.023437 -0.058078,0 -0.1013487,-0.0088 -0.1367188,-0.023437 -0.02914,-0.012911 -0.055461,-0.032877 -0.080078,-0.066406 -0.022766,-0.033187 -0.04635,-0.085255 -0.064453,-0.1621094 0,0 0,-0.00195 0,-0.00195 -0.016808,-0.07661 -0.025391,-0.1812575 -0.025391,-0.3105469 0,-0.1346383 0.00848,-0.2420437 0.025391,-0.3183593 3.6e-6,-6.5e-4 3.6e-6,-0.0013 0,-0.00195 0.017622,-0.080248 0.04212,-0.1316854 0.0625,-0.1601562 0.023285,-0.031716 0.046461,-0.05007 0.078125,-0.0625 0.038881,-0.015263 0.085765,-0.023437 0.1464844,-0.023437 0,0 3.1e-6,-3.4e-6 3.1e-6,-3.4e-6 m 3.40625,0 c 0.055432,0 0.097781,0.0084 0.1347656,0.023437 6.5e-4,3.6e-6 0.0013,3.6e-6 0.00195,0 0.02677,0.010311 0.048719,0.027653 0.072266,0.060547 6.5e-4,3.6e-6 0.0013,3.6e-6 0.00195,0 0.022095,0.030406 0.047135,0.083247 0.064453,0.1621094 -3.6e-6,6.5e-4 -3.6e-6,0.0013 0,0.00195 0.016958,0.076535 0.025391,0.1828146 0.025391,0.3183593 1e-6,0.1285671 -0.010756,0.2344806 -0.029297,0.3105469 -0.0184,0.079083 -0.042145,0.132477 -0.066406,0.1660156 -6.5e-4,-3.6e-6 -0.0013,-3.6e-6 -0.00195,0 -0.02365,0.033039 -0.047699,0.051825 -0.076172,0.064453 -0.036523,0.01511 -0.077371,0.023437 -0.1328126,0.023437 -0.058078,0 -0.1045526,-0.00932 -0.1386718,-0.023437 -0.027839,-0.012332 -0.052016,-0.030845 -0.078125,-0.066406 -0.024212,-0.035177 -0.048775,-0.087353 -0.066406,-0.1621094 0,0 0,-0.00195 0,-0.00195 -0.016808,-0.07661 -0.025391,-0.1812576 -0.025391,-0.3105469 0,-0.1346383 0.00848,-0.2420434 0.025391,-0.3183593 3.6e-6,-6.5e-4 3.6e-6,-0.0013 0,-0.00195 0.017138,-0.078042 0.042536,-0.1295963 0.064453,-0.1601562 0.024828,-0.033817 0.045701,-0.050539 0.076172,-0.0625 0.037688,-0.014795 0.087718,-0.023437 0.1484375,-0.023437 0,0 2.3e-6,-3.4e-6 2.3e-6,-3.4e-6 m -1.5664062,1.0058593 c -0.097876,-0.029355 -0.2049377,-0.028281 -0.3144532,0.00781 -0.1691652,0.055752 -0.26201,0.2041752 -0.2441406,0.3730468 0.00893,0.084436 0.065507,0.1795074 0.1523438,0.2265625 0.00174,9.428e-4 0.00411,-9.08e-4 0.00586,0 -0.03157,0.046422 -0.066871,0.097993 -0.056641,0.1542969 0.013731,0.075568 0.061485,0.1250427 0.109375,0.1542969 0.095781,0.058508 0.2242885,0.048199 0.3203125,-0.025391 0.024113,-0.01848 0.051789,-0.03993 0.080078,-0.070312 0,0 0.00195,-0.00195 0.00195,-0.00195 0.028338,-0.029789 0.049476,-0.061384 0.066406,-0.089844 0,0 0.00195,-0.00195 0.00195,-0.00195 0.04171,-0.070204 0.043422,-0.1104433 0.052734,-0.1542969 0.020331,-0.067932 0.046748,-0.1800329 0.033203,-0.3085938 10e-4,-0.071525 -0.027523,-0.1432706 -0.068359,-0.1835937 -0.044315,-0.043758 -0.091687,-0.0654 -0.140625,-0.080078 0,0 6.5e-6,-3.7e-6 6.5e-6,-3.7e-6"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.23560667px;line-height:100%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;display:inline;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18200287;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
- </symbol>
- <symbol
- id="inkstitch_satin_cut_point"
- style="display:inline">
- <title
- id="inkstitch_title9427-675">Satin Column cut point</title>
- <path
- id="inkstitch_circle13166-3"
- d="m 9.220113,0.07922893 c -1.9e-6,5.10672897 -4.1398241,9.24654997 -9.24655297,9.24654997 -5.10672933,0 -9.24655213,-4.139821 -9.24655403,-9.24654997 1e-7,-2.45233803 0.9741879,-4.80423503 2.7082531,-6.53830103 1.7340653,-1.734065 4.0859624,-2.708252 6.53830093,-2.708252 5.10673007,0 9.24655277,4.139823 9.24655297,9.24655303 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- id="path24356"
- d="m -7.8132269,-1.4510415 c -0.4413094,0.88338563 -0.07931,1.96814513 0.8040823,2.40945763 0.8833854,0.44130937 1.9681488,0.079303 2.4094581,-0.8040818 0.1983467,-0.3970378 0.2270074,-0.8329413 0.1264064,-1.23463743 0,0 1.3053145,0.13034233 1.3053145,0.13034233 0,0 3.29416163,3.58901577 3.29416163,3.58901577 0.2487872,-0.7097192 0.2411124,-0.9255141 -0.09365,-1.4617903 0,0 -1.70824193,-1.97779537 -1.70824193,-1.97779537 0,0 2.61658533,0.2619947 2.61658533,0.2619947 0.60556237,0.1061633 0.82089997,-0.3026842 1.25878787,-0.70526413 0,0 -4.8501007,-0.6859624 -4.8501007,-0.6859624 0,0 -0.9370561,-1.0856429 -0.9370561,-1.0856429 0.4268116,-0.1490142 0.7990019,-0.4558243 1.0156363,-0.8894695 0.4413094,-0.8833854 0.079303,-1.9681487 -0.8040822,-2.4094581 -0.8833921,-0.4413128 -1.9681487,-0.079303 -2.4094581,0.8040822 -0.3590398,0.7187033 -0.1792857,1.5648425 0.373288,2.0951784 0,0 -0.014508,0.00264 -0.014508,0.00264 0,0 1.1504733,1.2533541 1.1504733,1.2533541 0,0 -1.3945129,-0.196367 -1.3945129,-0.196367 -0.8248385,-0.2578481 -1.7446631,0.1079194 -2.1425563,0.9043974 0,0 -2.71e-5,3.4e-6 -2.71e-5,3.4e-6 m 0.6765348,0.337974 c 0.2586549,-0.517759 0.877184,-0.7241797 1.3949495,-0.4655215 0.5177589,0.2586549 0.7241761,0.87719093 0.4655214,1.39494953 -0.2586548,0.5177587 -0.8771906,0.7241758 -1.3949494,0.4655211 -0.5177657,-0.2586579 -0.7241762,-0.8771902 -0.4655215,-1.39494913 0,0 0,0 0,0 m 2.0278432,-4.0592094 c 0.2586548,-0.5177589 0.8771839,-0.7241794 1.3949495,-0.4655213 0.5177588,0.2586548 0.724176,0.8771905 0.4655213,1.3949494 -0.2586548,0.5177588 -0.8771906,0.7241761 -1.3949494,0.4655213 -0.5177656,-0.2586581 -0.7241761,-0.8771906 -0.4655214,-1.3949494 0,0 0,0 0,0"
- style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.37812883;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- inkscape:connector-curvature="0" />
- <path
- id="path24362"
- d="m 4.4798843,-4.3110508 c 0.219827,2.414579 -0.180079,4.01786863 -1.429103,5.5454305 0,0 2.023437,1.0507812 2.023437,1.0507812 1.715964,-1.67359867 1.847271,-3.9809016 1.75755,-6.660665 0,0 -2.351884,0.064453 -2.351884,0.064453 m -2.097072,6.2192586 c -2.10168637,1.4056146 -3.14434337,3.5358281 -3.667017,6.0218201 0,0 2.3918915,0.212651 2.3918915,0.212651 0.3238246,-2.741001 2.2229845,-4.191785 3.3298135,-5.1368148 0,0 -2.054688,-1.0976563 -2.054688,-1.0976563"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#242424;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- </symbol>
- <symbol
- style="display:inline"
- id="inkstitch_satin_start">
- <title
- id="inkstitch_title9432-1">Satin column starting point</title>
- <path
- inkscape:connector-curvature="0"
- id="inkstitch_circle13166-6-2"
- d="M 9.2465269,-4.9265995e-6 C 9.246525,5.1067241 5.1067022,9.2465451 -2.715882e-5,9.2465451 -5.106756,9.2465451 -9.2465782,5.1067241 -9.2465801,-4.9265995e-6 -9.2465799,-5.1067349 -5.1067572,-9.2465579 -2.715882e-5,-9.2465579 c 2.45233855882,0 4.80423565882,0.974187 6.53830095882,2.708252 1.7340652,1.734066 2.708253,4.085963 2.7082531,6.5383009734005 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06501234;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19503705, 3.19503705;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.74180555;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 6.5728129,0.00355507 c 0,0 -10.4514,6.03412003 -10.4514,6.03412003 0,0 0,-12.06823 0,-12.06823 0,0 10.4514,6.03410997 10.4514,6.03410997"
- id="inkstitch_path4183-7" />
- <path
- inkscape:connector-curvature="0"
- style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m -3.0312502,1.577739 c 0,0 0.25,-3.6875002 0.25,-3.6875002 0,0 1.0312501,3.8437502 1.0312501,3.8437502 0,0 0.34375,-3.6250002 0.34375,-3.6250002 0,0 0.96874997,3.5625002 0.96874997,3.5625002 0,0 0.28125,-3.3125002 0.28125,-3.3125002 0,0 0.9375001,3.3125002 0.9375001,3.3125002 0,0 0.21875,-3.0937502 0.21875,-3.0937502 0,0 1.03125013,2.9687502 1.03125013,2.9687502 0,0 0.0625,-2.7187501 0.0625,-2.7187501 0,0 0.96875,2.4687501 0.96875,2.4687501 0,0 0.15625,-2.18750023 0.15625,-2.18750023"
- id="path31975" />
- </symbol>
- <symbol
- id="inkstitch_satin_end"
- style="display:inline">
- <title
- id="inkstitch_title9427-3">Satin column ending point</title>
- <path
- id="inkstitch_circle13166-60"
- d="m 9.220113,0.0792309 c -1.9e-6,5.106729 -4.1398241,9.24655 -9.246553,9.24655 -5.1067293,0 -9.2465521,-4.139821 -9.246554,-9.24655 1e-7,-2.452338 0.9741879,-4.804235 2.7082531,-6.538301 1.7340653,-1.734065 4.0859624,-2.708252 6.5383009,-2.708252 5.1067301,0 9.2465528,4.139823 9.246553,9.246553 0,0 0,0 0,0"
- style="opacity:1;vector-effect:none;fill:#fafafa;fill-opacity:1;fill-rule:evenodd;stroke:#003399;stroke-width:1.06500006;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.27154255;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4.81866985, 4.81866985;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m -4.570439,-4.5704391 c 0,0 9.140878,0 9.140878,0 0,0 0,9.14087 0,9.14087 0,0 -9.140878,0 -9.140878,0 0,0 0,-9.14087 0,-9.14087"
- id="inkstitch_rect5371-2-6"
- inkscape:connector-curvature="0" />
- <path
- style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- d="m -3.2964153,1.5777408 0.25,-3.6875001 1.0312501,3.8437501 0.34375,-3.6250001 0.9687501,3.5625001 0.28125,-3.3125001 0.9375,3.3125001 0.21875,-3.0937501 1.0312499,2.9687501 0.0625,-2.7187501 0.96875,2.4687501 0.15625,-2.1875"
- id="path31975-0-2"
- inkscape:connector-curvature="0" />
- </symbol>
- </defs>
- <metadata
- id="metadata8380">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="display:inline">
- <flowRoot
- transform="translate(0,58.409503)"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.33333302px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#050505;stroke-width:1.06500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:3.19500017, 3.19500017;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
- id="flowRoot37658"
- xml:space="preserve"><flowRegion
- id="flowRegion37660"><rect
- y="71.702759"
- x="20.75"
- height="62.5"
- width="217.5"
- id="rect37662" /></flowRegion><flowPara
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="flowPara37664">Create symbols carefully! They must be centered about the origin before being converted to a symbol.</flowPara></flowRoot> <use
- xlink:href="#inkstitch_fill_end"
- id="use9454"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(37.82169,75.511319)" />
- <use
- xlink:href="#inkstitch_trim"
- id="use9461"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(75.590552,75.590552)" />
- <use
- xlink:href="#inkstitch_fill_start"
- id="use9468"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(113.38583,75.590552)" />
- <use
- xlink:href="#inkstitch_stop"
- id="use9476"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(151.1811,75.590552)" />
- <use
- xlink:href="#inkstitch_ignore_object"
- id="use31203"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(188.83762,75.41843)" />
- <use
- transform="translate(226.77166,75.590554)"
- height="100%"
- width="100%"
- y="0"
- x="0"
- id="use58774"
- xlink:href="#inkstitch_ignore_layer" />
- <use
- xlink:href="#inkstitch_stop_position"
- id="use9692"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(264.59335,75.511321)" />
- <use
- transform="translate(302.38862,75.511321)"
- height="100%"
- width="100%"
- y="0"
- x="0"
- id="use27375"
- xlink:href="#inkstitch_origin" />
- <use
- xlink:href="#inkstitch_satin_cut_point"
- id="use24520"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(340.1839,75.511321)" />
- <use
- transform="translate(113.29209,37.983158)"
- height="100%"
- width="100%"
- y="0"
- x="0"
- id="use32163"
- xlink:href="#inkstitch_satin_start" />
- <use
- xlink:href="#inkstitch_satin_end"
- id="use37077"
- x="0"
- y="0"
- width="100%"
- height="100%"
- transform="translate(37.966704,37.983156)" />
- </g>
-</svg>
diff --git a/templates/install.inx b/templates/install.inx
index 0ab22b0b..ffcb9b7b 100644
--- a/templates/install.inx
+++ b/templates/install.inx
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
- <name>{% trans %}Install add-ons for Inkscape{% endtrans %}</name>
+ <name>{% trans %}Install thread color palettes for Inkscape{% endtrans %}</name>
<id>org.inkstitch.install.{{ locale }}</id>
<param name="extension" type="string" gui-hidden="true">install</param>
<effect>