summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLex Neva <lexelby@users.noreply.github.com>2018-04-15 19:40:46 -0400
committerGitHub <noreply@github.com>2018-04-15 19:40:46 -0400
commitb134a8dafad390f9c197d9439669db7001f4e8d8 (patch)
tree338fd72785708189dbbdf7cd06f4f0f8f90717d9
parent69c64bf3a7619b070768d68ccecf62bb97306864 (diff)
parent28e2250d8c937e1c7dcd114b6392b1a0f90251da (diff)
Merge pull request #145 from lexelby/lexelby-embroidery-input
input extension for all libembroidery-supported formats
-rw-r--r--Makefile4
-rwxr-xr-xbin/gen-input-inx45
-rwxr-xr-xbin/gen-output-format-option-list (renamed from bin/gen-format-list)0
-rw-r--r--embroider_input.py61
-rw-r--r--inkstitch/stitch_plan/stitch_plan.py35
-rw-r--r--inkstitch/svg.py13
-rw-r--r--inx/embroider.inx (renamed from embroider.inx)0
-rw-r--r--inx/embroider_input_100.inx16
-rw-r--r--inx/embroider_input_10O.inx16
-rw-r--r--inx/embroider_input_BRO.inx16
-rw-r--r--inx/embroider_input_COL.inx16
-rw-r--r--inx/embroider_input_CSD.inx16
-rw-r--r--inx/embroider_input_CSV.inx16
-rw-r--r--inx/embroider_input_DAT.inx16
-rw-r--r--inx/embroider_input_DSB.inx16
-rw-r--r--inx/embroider_input_DST.inx16
-rw-r--r--inx/embroider_input_DSZ.inx16
-rw-r--r--inx/embroider_input_EDR.inx16
-rw-r--r--inx/embroider_input_EMD.inx16
-rw-r--r--inx/embroider_input_EXP.inx16
-rw-r--r--inx/embroider_input_EXY.inx16
-rw-r--r--inx/embroider_input_FXY.inx16
-rw-r--r--inx/embroider_input_GT.inx16
-rw-r--r--inx/embroider_input_HUS.inx16
-rw-r--r--inx/embroider_input_INB.inx16
-rw-r--r--inx/embroider_input_INF.inx16
-rw-r--r--inx/embroider_input_JEF.inx16
-rw-r--r--inx/embroider_input_KSM.inx16
-rw-r--r--inx/embroider_input_MAX.inx16
-rw-r--r--inx/embroider_input_MIT.inx16
-rw-r--r--inx/embroider_input_NEW.inx16
-rw-r--r--inx/embroider_input_OFM.inx16
-rw-r--r--inx/embroider_input_PCD.inx16
-rw-r--r--inx/embroider_input_PCM.inx16
-rw-r--r--inx/embroider_input_PCQ.inx16
-rw-r--r--inx/embroider_input_PCS.inx16
-rw-r--r--inx/embroider_input_PEC.inx16
-rw-r--r--inx/embroider_input_PES.inx16
-rw-r--r--inx/embroider_input_PHB.inx16
-rw-r--r--inx/embroider_input_PHC.inx16
-rw-r--r--inx/embroider_input_PLT.inx16
-rw-r--r--inx/embroider_input_RGB.inx16
-rw-r--r--inx/embroider_input_SEW.inx16
-rw-r--r--inx/embroider_input_SHV.inx16
-rw-r--r--inx/embroider_input_SST.inx16
-rw-r--r--inx/embroider_input_STX.inx16
-rw-r--r--inx/embroider_input_T01.inx16
-rw-r--r--inx/embroider_input_T09.inx16
-rw-r--r--inx/embroider_input_TAP.inx16
-rw-r--r--inx/embroider_input_THR.inx16
-rw-r--r--inx/embroider_input_U00.inx16
-rw-r--r--inx/embroider_input_VIP.inx16
-rw-r--r--inx/embroider_input_VP3.inx16
-rw-r--r--inx/embroider_input_XXX.inx16
-rw-r--r--inx/embroider_input_ZSK.inx16
-rw-r--r--inx/embroider_params.inx (renamed from embroider_params.inx)0
-rw-r--r--inx/embroider_print.inx (renamed from embroider_print.inx)0
-rw-r--r--inx/embroider_simulate.inx (renamed from embroider_simulate.inx)0
-rw-r--r--templates/embroider_input.inx17
59 files changed, 934 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index 1f639dc1..21c3582c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-EXTENSIONS:=embroider embroider_params embroider_simulate embroider_print
+EXTENSIONS:=embroider embroider_params embroider_simulate embroider_print embroider_input
# This gets the branch name or the name of the tag
VERSION:=$(TRAVIS_BRANCH)
@@ -7,7 +7,7 @@ ARCH:=$(shell uname -m)
dist: distclean locales
bin/build-dist $(EXTENSIONS)
- cp *.inx dist
+ cp inx/*.inx dist
cp -a images/examples dist/inkstitch
mkdir -p dist/inkstitch/bin/locales
cp -a locales/* dist/inkstitch/bin/locales
diff --git a/bin/gen-input-inx b/bin/gen-input-inx
new file mode 100755
index 00000000..918adfb9
--- /dev/null
+++ b/bin/gen-input-inx
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import sys, os
+from os.path import dirname
+from libembroidery import *
+from jinja2 import Environment, FileSystemLoader, select_autoescape
+
+
+def build_environment():
+ template_dir = os.path.join(dirname(dirname(os.path.realpath(__file__))), "templates")
+
+ return Environment(
+ loader = FileSystemLoader(template_dir),
+ autoescape = True
+ )
+
+
+def libembroidery_input_formats():
+ formatList = embFormatList_create()
+ curFormat = formatList
+ while(curFormat):
+ extension = embFormat_extension(curFormat)
+ description = embFormat_description(curFormat)
+ writerState = embFormat_readerState(curFormat)
+
+ if writerState.strip() and embFormat_type(curFormat) != EMBFORMAT_OBJECTONLY:
+ # extension includes the dot, so we'll remove it
+ yield extension[1:], description
+
+ curFormat = curFormat.next
+
+
+def main():
+ env = build_environment()
+ template = env.get_template('embroider_input.inx')
+
+ for format, description in libembroidery_input_formats():
+ inx = template.render(format=format, description=description)
+
+ with open("inx/embroider_input_%s.inx" % format.upper(), 'w') as inx_file:
+ inx_file.write(inx)
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/bin/gen-format-list b/bin/gen-output-format-option-list
index 674813bb..674813bb 100755
--- a/bin/gen-format-list
+++ b/bin/gen-output-format-option-list
diff --git a/embroider_input.py b/embroider_input.py
new file mode 100644
index 00000000..04d79d4f
--- /dev/null
+++ b/embroider_input.py
@@ -0,0 +1,61 @@
+import sys
+import os
+from libembroidery import *
+from inkex import etree
+import inkex
+from inkstitch import PIXELS_PER_MM, INKSCAPE_LABEL, _
+from inkstitch.stitch_plan import StitchPlan
+from inkstitch.svg import render_stitch_plan
+
+
+def pattern_stitches(pattern):
+ stitch_pointer = pattern.stitchList
+ while stitch_pointer:
+ yield stitch_pointer.stitch
+ stitch_pointer = stitch_pointer.next
+
+
+def main(embroidery_file):
+ pattern = embPattern_create()
+ embPattern_read(pattern, embroidery_file)
+ embPattern_flipVertical(pattern)
+
+ stitch_plan = StitchPlan()
+ color_block = None
+ current_color = None
+
+ for stitch in pattern_stitches(pattern):
+ if stitch.color != current_color:
+ thread = embThreadList_getAt(pattern.threadList, stitch.color)
+ color = thread.color
+ color_block = stitch_plan.new_color_block((color.r, color.g, color.b))
+ current_color = stitch.color
+
+ if not stitch.flags & END:
+ color_block.add_stitch(stitch.xx * PIXELS_PER_MM, stitch.yy * PIXELS_PER_MM,
+ jump=stitch.flags & JUMP,
+ stop=stitch.flags & STOP,
+ trim=stitch.flags & TRIM)
+
+ extents = stitch_plan.extents
+ svg = etree.Element("svg", nsmap=inkex.NSS, attrib=
+ {
+ "width": str(extents[0] * 2),
+ "height": str(extents[1] * 2),
+ "viewBox": "0 0 %s %s" % (extents[0] * 2, extents[1] * 2),
+ })
+ render_stitch_plan(svg, stitch_plan)
+
+ # rename the Stitch Plan layer so that it doesn't get overwritten by Embroider
+ layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']")
+ layer.set(INKSCAPE_LABEL, os.path.basename(embroidery_file))
+ layer.attrib.pop('id')
+
+ # Shift the design so that its origin is at the center of the canvas
+ # Note: this is NOT the same as centering the design in the canvas!
+ layer.set('transform', 'translate(%s,%s)' % (extents[0], extents[1]))
+
+ print etree.tostring(svg)
+
+if __name__ == '__main__':
+ sys.exit(main(*sys.argv[1:]))
diff --git a/inkstitch/stitch_plan/stitch_plan.py b/inkstitch/stitch_plan/stitch_plan.py
index 82584bbc..fab87876 100644
--- a/inkstitch/stitch_plan/stitch_plan.py
+++ b/inkstitch/stitch_plan/stitch_plan.py
@@ -97,10 +97,30 @@ class StitchPlan(object):
return sum(block.num_stitches for block in self)
@property
+ def bounding_box(self):
+ color_block_bounding_boxes = [cb.bounding_box for cb in self]
+ minx = min(bb[0] for bb in color_block_bounding_boxes)
+ miny = min(bb[1] for bb in color_block_bounding_boxes)
+ maxx = max(bb[2] for bb in color_block_bounding_boxes)
+ maxy = max(bb[3] for bb in color_block_bounding_boxes)
+
+ return minx, miny, maxx, maxy
+
+ @property
+ def dimensions(self):
+ minx, miny, maxx, maxy = self.bounding_box
+ return (maxx - minx, maxy - miny)
+
+ @property
+ def extents(self):
+ minx, miny, maxx, maxy = self.bounding_box
+
+ return max(-minx, maxx), max(-miny, maxy)
+
+ @property
def dimensions_mm(self):
- # TODO: implement this. Should do a bounding box calculation and
- # convert to millimeters.
- return ""
+ dimensions = self.dimensions
+ return (dimensions[0] / PIXELS_PER_MM, dimensions[1] / PIXELS_PER_MM)
class ColorBlock(object):
@@ -196,3 +216,12 @@ class ColorBlock(object):
def replace_stitches(self, stitches):
self.stitches = stitches
+
+ @property
+ def bounding_box(self):
+ minx = min(stitch.x for stitch in self)
+ miny = min(stitch.y for stitch in self)
+ maxx = max(stitch.x for stitch in self)
+ maxy = max(stitch.y for stitch in self)
+
+ return minx, miny, maxx, maxy
diff --git a/inkstitch/svg.py b/inkstitch/svg.py
index 66806d7a..0728309b 100644
--- a/inkstitch/svg.py
+++ b/inkstitch/svg.py
@@ -28,12 +28,12 @@ def get_correction_transform(svg):
def color_block_to_paths(color_block, svg):
- polylines = []
+ paths = []
# We could emit just a single path with one subpath per point list, but
# emitting multiple paths makes it easier for the user to manipulate them.
for point_list in color_block_to_point_lists(color_block):
color = color_block.color.visible_on_white.to_hex_str()
- polylines.append(inkex.etree.Element(
+ paths.append(inkex.etree.Element(
SVG_PATH_TAG,
{'style': simplestyle.formatStyle(
{'stroke': color,
@@ -41,10 +41,15 @@ def color_block_to_paths(color_block, svg):
'fill': 'none'}),
'd': "M" + " ".join(" ".join(str(coord) for coord in point) for point in point_list),
'transform': get_correction_transform(svg),
- 'embroider_manual_stitch': 'true'
+ 'embroider_manual_stitch': 'true',
+ 'embroider_trim_after': 'true',
}))
- return polylines
+ # no need to trim at the end of a thread color
+ if paths:
+ paths[-1].attrib.pop('embroider_trim_after')
+
+ return paths
def render_stitch_plan(svg, stitch_plan):
diff --git a/embroider.inx b/inx/embroider.inx
index 74217b73..74217b73 100644
--- a/embroider.inx
+++ b/inx/embroider.inx
diff --git a/inx/embroider_input_100.inx b/inx/embroider_input_100.inx
new file mode 100644
index 00000000..9bbad780
--- /dev/null
+++ b/inx/embroider_input_100.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>100 file input</_name>
+ <id>org.inkstitch.input.100</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.100</extension>
+ <mimetype>application/x-embroidery-100</mimetype>
+ <_filetypename>Ink/Stitch: Toyota Embroidery Format (.100)</_filetypename>
+ <_filetypetooltip>convert 100 file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_10O.inx b/inx/embroider_input_10O.inx
new file mode 100644
index 00000000..42f1850e
--- /dev/null
+++ b/inx/embroider_input_10O.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>10O file input</_name>
+ <id>org.inkstitch.input.10o</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.10o</extension>
+ <mimetype>application/x-embroidery-10o</mimetype>
+ <_filetypename>Ink/Stitch: Toyota Embroidery Format (.10o)</_filetypename>
+ <_filetypetooltip>convert 10O file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_BRO.inx b/inx/embroider_input_BRO.inx
new file mode 100644
index 00000000..0dc576bf
--- /dev/null
+++ b/inx/embroider_input_BRO.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>BRO file input</_name>
+ <id>org.inkstitch.input.bro</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.bro</extension>
+ <mimetype>application/x-embroidery-bro</mimetype>
+ <_filetypename>Ink/Stitch: Bits &amp; Volts Embroidery Format (.bro)</_filetypename>
+ <_filetypetooltip>convert BRO file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_COL.inx b/inx/embroider_input_COL.inx
new file mode 100644
index 00000000..81002dd7
--- /dev/null
+++ b/inx/embroider_input_COL.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>COL file input</_name>
+ <id>org.inkstitch.input.col</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.col</extension>
+ <mimetype>application/x-embroidery-col</mimetype>
+ <_filetypename>Ink/Stitch: Embroidery Thread Color Format (.col)</_filetypename>
+ <_filetypetooltip>convert COL file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_CSD.inx b/inx/embroider_input_CSD.inx
new file mode 100644
index 00000000..8ebb94b9
--- /dev/null
+++ b/inx/embroider_input_CSD.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>CSD file input</_name>
+ <id>org.inkstitch.input.csd</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.csd</extension>
+ <mimetype>application/x-embroidery-csd</mimetype>
+ <_filetypename>Ink/Stitch: Singer Embroidery Format (.csd)</_filetypename>
+ <_filetypetooltip>convert CSD file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_CSV.inx b/inx/embroider_input_CSV.inx
new file mode 100644
index 00000000..c3f972d9
--- /dev/null
+++ b/inx/embroider_input_CSV.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>CSV file input</_name>
+ <id>org.inkstitch.input.csv</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.csv</extension>
+ <mimetype>application/x-embroidery-csv</mimetype>
+ <_filetypename>Ink/Stitch: Comma Separated Values Format (.csv)</_filetypename>
+ <_filetypetooltip>convert CSV file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_DAT.inx b/inx/embroider_input_DAT.inx
new file mode 100644
index 00000000..1045153a
--- /dev/null
+++ b/inx/embroider_input_DAT.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>DAT file input</_name>
+ <id>org.inkstitch.input.dat</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.dat</extension>
+ <mimetype>application/x-embroidery-dat</mimetype>
+ <_filetypename>Ink/Stitch: Barudan Embroidery Format (.dat)</_filetypename>
+ <_filetypetooltip>convert DAT file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_DSB.inx b/inx/embroider_input_DSB.inx
new file mode 100644
index 00000000..f81c7ca2
--- /dev/null
+++ b/inx/embroider_input_DSB.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>DSB file input</_name>
+ <id>org.inkstitch.input.dsb</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.dsb</extension>
+ <mimetype>application/x-embroidery-dsb</mimetype>
+ <_filetypename>Ink/Stitch: Barudan Embroidery Format (.dsb)</_filetypename>
+ <_filetypetooltip>convert DSB file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_DST.inx b/inx/embroider_input_DST.inx
new file mode 100644
index 00000000..414b7470
--- /dev/null
+++ b/inx/embroider_input_DST.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>DST file input</_name>
+ <id>org.inkstitch.input.dst</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.dst</extension>
+ <mimetype>application/x-embroidery-dst</mimetype>
+ <_filetypename>Ink/Stitch: Tajima Embroidery Format (.dst)</_filetypename>
+ <_filetypetooltip>convert DST file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_DSZ.inx b/inx/embroider_input_DSZ.inx
new file mode 100644
index 00000000..9c81a0ad
--- /dev/null
+++ b/inx/embroider_input_DSZ.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>DSZ file input</_name>
+ <id>org.inkstitch.input.dsz</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.dsz</extension>
+ <mimetype>application/x-embroidery-dsz</mimetype>
+ <_filetypename>Ink/Stitch: ZSK USA Embroidery Format (.dsz)</_filetypename>
+ <_filetypetooltip>convert DSZ file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_EDR.inx b/inx/embroider_input_EDR.inx
new file mode 100644
index 00000000..9276fd17
--- /dev/null
+++ b/inx/embroider_input_EDR.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>EDR file input</_name>
+ <id>org.inkstitch.input.edr</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.edr</extension>
+ <mimetype>application/x-embroidery-edr</mimetype>
+ <_filetypename>Ink/Stitch: Embird Embroidery Format (.edr)</_filetypename>
+ <_filetypetooltip>convert EDR file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_EMD.inx b/inx/embroider_input_EMD.inx
new file mode 100644
index 00000000..bb20f977
--- /dev/null
+++ b/inx/embroider_input_EMD.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>EMD file input</_name>
+ <id>org.inkstitch.input.emd</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.emd</extension>
+ <mimetype>application/x-embroidery-emd</mimetype>
+ <_filetypename>Ink/Stitch: Elna Embroidery Format (.emd)</_filetypename>
+ <_filetypetooltip>convert EMD file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_EXP.inx b/inx/embroider_input_EXP.inx
new file mode 100644
index 00000000..41bae8ce
--- /dev/null
+++ b/inx/embroider_input_EXP.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>EXP file input</_name>
+ <id>org.inkstitch.input.exp</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.exp</extension>
+ <mimetype>application/x-embroidery-exp</mimetype>
+ <_filetypename>Ink/Stitch: Melco Embroidery Format (.exp)</_filetypename>
+ <_filetypetooltip>convert EXP file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_EXY.inx b/inx/embroider_input_EXY.inx
new file mode 100644
index 00000000..a2e792c4
--- /dev/null
+++ b/inx/embroider_input_EXY.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>EXY file input</_name>
+ <id>org.inkstitch.input.exy</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.exy</extension>
+ <mimetype>application/x-embroidery-exy</mimetype>
+ <_filetypename>Ink/Stitch: Eltac Embroidery Format (.exy)</_filetypename>
+ <_filetypetooltip>convert EXY file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_FXY.inx b/inx/embroider_input_FXY.inx
new file mode 100644
index 00000000..4d77022e
--- /dev/null
+++ b/inx/embroider_input_FXY.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>FXY file input</_name>
+ <id>org.inkstitch.input.fxy</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.fxy</extension>
+ <mimetype>application/x-embroidery-fxy</mimetype>
+ <_filetypename>Ink/Stitch: Fortron Embroidery Format (.fxy)</_filetypename>
+ <_filetypetooltip>convert FXY file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_GT.inx b/inx/embroider_input_GT.inx
new file mode 100644
index 00000000..3b482244
--- /dev/null
+++ b/inx/embroider_input_GT.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>GT file input</_name>
+ <id>org.inkstitch.input.gt</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.gt</extension>
+ <mimetype>application/x-embroidery-gt</mimetype>
+ <_filetypename>Ink/Stitch: Gold Thread Embroidery Format (.gt)</_filetypename>
+ <_filetypetooltip>convert GT file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_HUS.inx b/inx/embroider_input_HUS.inx
new file mode 100644
index 00000000..3b19ee87
--- /dev/null
+++ b/inx/embroider_input_HUS.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>HUS file input</_name>
+ <id>org.inkstitch.input.hus</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.hus</extension>
+ <mimetype>application/x-embroidery-hus</mimetype>
+ <_filetypename>Ink/Stitch: Husqvarna Viking Embroidery Format (.hus)</_filetypename>
+ <_filetypetooltip>convert HUS file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_INB.inx b/inx/embroider_input_INB.inx
new file mode 100644
index 00000000..24c6535d
--- /dev/null
+++ b/inx/embroider_input_INB.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>INB file input</_name>
+ <id>org.inkstitch.input.inb</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.inb</extension>
+ <mimetype>application/x-embroidery-inb</mimetype>
+ <_filetypename>Ink/Stitch: Inbro Embroidery Format (.inb)</_filetypename>
+ <_filetypetooltip>convert INB file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_INF.inx b/inx/embroider_input_INF.inx
new file mode 100644
index 00000000..db7e5d57
--- /dev/null
+++ b/inx/embroider_input_INF.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>INF file input</_name>
+ <id>org.inkstitch.input.inf</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.inf</extension>
+ <mimetype>application/x-embroidery-inf</mimetype>
+ <_filetypename>Ink/Stitch: Embroidery Color Format (.inf)</_filetypename>
+ <_filetypetooltip>convert INF file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_JEF.inx b/inx/embroider_input_JEF.inx
new file mode 100644
index 00000000..c2030622
--- /dev/null
+++ b/inx/embroider_input_JEF.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>JEF file input</_name>
+ <id>org.inkstitch.input.jef</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.jef</extension>
+ <mimetype>application/x-embroidery-jef</mimetype>
+ <_filetypename>Ink/Stitch: Janome Embroidery Format (.jef)</_filetypename>
+ <_filetypetooltip>convert JEF file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_KSM.inx b/inx/embroider_input_KSM.inx
new file mode 100644
index 00000000..2869ea07
--- /dev/null
+++ b/inx/embroider_input_KSM.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>KSM file input</_name>
+ <id>org.inkstitch.input.ksm</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.ksm</extension>
+ <mimetype>application/x-embroidery-ksm</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.ksm)</_filetypename>
+ <_filetypetooltip>convert KSM file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_MAX.inx b/inx/embroider_input_MAX.inx
new file mode 100644
index 00000000..2dbbe2cc
--- /dev/null
+++ b/inx/embroider_input_MAX.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>MAX file input</_name>
+ <id>org.inkstitch.input.max</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.max</extension>
+ <mimetype>application/x-embroidery-max</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.max)</_filetypename>
+ <_filetypetooltip>convert MAX file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_MIT.inx b/inx/embroider_input_MIT.inx
new file mode 100644
index 00000000..10f5dfd3
--- /dev/null
+++ b/inx/embroider_input_MIT.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>MIT file input</_name>
+ <id>org.inkstitch.input.mit</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.mit</extension>
+ <mimetype>application/x-embroidery-mit</mimetype>
+ <_filetypename>Ink/Stitch: Mitsubishi Embroidery Format (.mit)</_filetypename>
+ <_filetypetooltip>convert MIT file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_NEW.inx b/inx/embroider_input_NEW.inx
new file mode 100644
index 00000000..f13a7009
--- /dev/null
+++ b/inx/embroider_input_NEW.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>NEW file input</_name>
+ <id>org.inkstitch.input.new</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.new</extension>
+ <mimetype>application/x-embroidery-new</mimetype>
+ <_filetypename>Ink/Stitch: Ameco Embroidery Format (.new)</_filetypename>
+ <_filetypetooltip>convert NEW file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_OFM.inx b/inx/embroider_input_OFM.inx
new file mode 100644
index 00000000..9086900d
--- /dev/null
+++ b/inx/embroider_input_OFM.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>OFM file input</_name>
+ <id>org.inkstitch.input.ofm</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.ofm</extension>
+ <mimetype>application/x-embroidery-ofm</mimetype>
+ <_filetypename>Ink/Stitch: Melco Embroidery Format (.ofm)</_filetypename>
+ <_filetypetooltip>convert OFM file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PCD.inx b/inx/embroider_input_PCD.inx
new file mode 100644
index 00000000..fc9c7362
--- /dev/null
+++ b/inx/embroider_input_PCD.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PCD file input</_name>
+ <id>org.inkstitch.input.pcd</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pcd</extension>
+ <mimetype>application/x-embroidery-pcd</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcd)</_filetypename>
+ <_filetypetooltip>convert PCD file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PCM.inx b/inx/embroider_input_PCM.inx
new file mode 100644
index 00000000..fe6c3e22
--- /dev/null
+++ b/inx/embroider_input_PCM.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PCM file input</_name>
+ <id>org.inkstitch.input.pcm</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pcm</extension>
+ <mimetype>application/x-embroidery-pcm</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcm)</_filetypename>
+ <_filetypetooltip>convert PCM file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PCQ.inx b/inx/embroider_input_PCQ.inx
new file mode 100644
index 00000000..932a9568
--- /dev/null
+++ b/inx/embroider_input_PCQ.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PCQ file input</_name>
+ <id>org.inkstitch.input.pcq</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pcq</extension>
+ <mimetype>application/x-embroidery-pcq</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcq)</_filetypename>
+ <_filetypetooltip>convert PCQ file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PCS.inx b/inx/embroider_input_PCS.inx
new file mode 100644
index 00000000..d9d058c0
--- /dev/null
+++ b/inx/embroider_input_PCS.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PCS file input</_name>
+ <id>org.inkstitch.input.pcs</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pcs</extension>
+ <mimetype>application/x-embroidery-pcs</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.pcs)</_filetypename>
+ <_filetypetooltip>convert PCS file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PEC.inx b/inx/embroider_input_PEC.inx
new file mode 100644
index 00000000..382dedff
--- /dev/null
+++ b/inx/embroider_input_PEC.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PEC file input</_name>
+ <id>org.inkstitch.input.pec</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pec</extension>
+ <mimetype>application/x-embroidery-pec</mimetype>
+ <_filetypename>Ink/Stitch: Brother Embroidery Format (.pec)</_filetypename>
+ <_filetypetooltip>convert PEC file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PES.inx b/inx/embroider_input_PES.inx
new file mode 100644
index 00000000..451a4da6
--- /dev/null
+++ b/inx/embroider_input_PES.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PES file input</_name>
+ <id>org.inkstitch.input.pes</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.pes</extension>
+ <mimetype>application/x-embroidery-pes</mimetype>
+ <_filetypename>Ink/Stitch: Brother Embroidery Format (.pes)</_filetypename>
+ <_filetypetooltip>convert PES file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PHB.inx b/inx/embroider_input_PHB.inx
new file mode 100644
index 00000000..ab4daf67
--- /dev/null
+++ b/inx/embroider_input_PHB.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PHB file input</_name>
+ <id>org.inkstitch.input.phb</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.phb</extension>
+ <mimetype>application/x-embroidery-phb</mimetype>
+ <_filetypename>Ink/Stitch: Brother Embroidery Format (.phb)</_filetypename>
+ <_filetypetooltip>convert PHB file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PHC.inx b/inx/embroider_input_PHC.inx
new file mode 100644
index 00000000..e36739af
--- /dev/null
+++ b/inx/embroider_input_PHC.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PHC file input</_name>
+ <id>org.inkstitch.input.phc</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.phc</extension>
+ <mimetype>application/x-embroidery-phc</mimetype>
+ <_filetypename>Ink/Stitch: Brother Embroidery Format (.phc)</_filetypename>
+ <_filetypetooltip>convert PHC file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_PLT.inx b/inx/embroider_input_PLT.inx
new file mode 100644
index 00000000..ec2374da
--- /dev/null
+++ b/inx/embroider_input_PLT.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>PLT file input</_name>
+ <id>org.inkstitch.input.plt</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.plt</extension>
+ <mimetype>application/x-embroidery-plt</mimetype>
+ <_filetypename>Ink/Stitch: AutoCAD Plot Drawing Format (.plt)</_filetypename>
+ <_filetypetooltip>convert PLT file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_RGB.inx b/inx/embroider_input_RGB.inx
new file mode 100644
index 00000000..a73955c1
--- /dev/null
+++ b/inx/embroider_input_RGB.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>RGB file input</_name>
+ <id>org.inkstitch.input.rgb</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.rgb</extension>
+ <mimetype>application/x-embroidery-rgb</mimetype>
+ <_filetypename>Ink/Stitch: RGB Embroidery Format (.rgb)</_filetypename>
+ <_filetypetooltip>convert RGB file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_SEW.inx b/inx/embroider_input_SEW.inx
new file mode 100644
index 00000000..8cb41136
--- /dev/null
+++ b/inx/embroider_input_SEW.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>SEW file input</_name>
+ <id>org.inkstitch.input.sew</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.sew</extension>
+ <mimetype>application/x-embroidery-sew</mimetype>
+ <_filetypename>Ink/Stitch: Janome Embroidery Format (.sew)</_filetypename>
+ <_filetypetooltip>convert SEW file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_SHV.inx b/inx/embroider_input_SHV.inx
new file mode 100644
index 00000000..20735cc8
--- /dev/null
+++ b/inx/embroider_input_SHV.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>SHV file input</_name>
+ <id>org.inkstitch.input.shv</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.shv</extension>
+ <mimetype>application/x-embroidery-shv</mimetype>
+ <_filetypename>Ink/Stitch: Husqvarna Viking Embroidery Format (.shv)</_filetypename>
+ <_filetypetooltip>convert SHV file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_SST.inx b/inx/embroider_input_SST.inx
new file mode 100644
index 00000000..61f7c782
--- /dev/null
+++ b/inx/embroider_input_SST.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>SST file input</_name>
+ <id>org.inkstitch.input.sst</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.sst</extension>
+ <mimetype>application/x-embroidery-sst</mimetype>
+ <_filetypename>Ink/Stitch: Sunstar Embroidery Format (.sst)</_filetypename>
+ <_filetypetooltip>convert SST file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_STX.inx b/inx/embroider_input_STX.inx
new file mode 100644
index 00000000..5043d6f2
--- /dev/null
+++ b/inx/embroider_input_STX.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>STX file input</_name>
+ <id>org.inkstitch.input.stx</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.stx</extension>
+ <mimetype>application/x-embroidery-stx</mimetype>
+ <_filetypename>Ink/Stitch: Data Stitch Embroidery Format (.stx)</_filetypename>
+ <_filetypetooltip>convert STX file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_T01.inx b/inx/embroider_input_T01.inx
new file mode 100644
index 00000000..5090310e
--- /dev/null
+++ b/inx/embroider_input_T01.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>T01 file input</_name>
+ <id>org.inkstitch.input.t01</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.t01</extension>
+ <mimetype>application/x-embroidery-t01</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.t01)</_filetypename>
+ <_filetypetooltip>convert T01 file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_T09.inx b/inx/embroider_input_T09.inx
new file mode 100644
index 00000000..5c64541d
--- /dev/null
+++ b/inx/embroider_input_T09.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>T09 file input</_name>
+ <id>org.inkstitch.input.t09</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.t09</extension>
+ <mimetype>application/x-embroidery-t09</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.t09)</_filetypename>
+ <_filetypetooltip>convert T09 file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_TAP.inx b/inx/embroider_input_TAP.inx
new file mode 100644
index 00000000..496105e2
--- /dev/null
+++ b/inx/embroider_input_TAP.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>TAP file input</_name>
+ <id>org.inkstitch.input.tap</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.tap</extension>
+ <mimetype>application/x-embroidery-tap</mimetype>
+ <_filetypename>Ink/Stitch: Happy Embroidery Format (.tap)</_filetypename>
+ <_filetypetooltip>convert TAP file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_THR.inx b/inx/embroider_input_THR.inx
new file mode 100644
index 00000000..d01d6184
--- /dev/null
+++ b/inx/embroider_input_THR.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>THR file input</_name>
+ <id>org.inkstitch.input.thr</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.thr</extension>
+ <mimetype>application/x-embroidery-thr</mimetype>
+ <_filetypename>Ink/Stitch: ThredWorks Embroidery Format (.thr)</_filetypename>
+ <_filetypetooltip>convert THR file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_U00.inx b/inx/embroider_input_U00.inx
new file mode 100644
index 00000000..a98ddaa1
--- /dev/null
+++ b/inx/embroider_input_U00.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>U00 file input</_name>
+ <id>org.inkstitch.input.u00</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.u00</extension>
+ <mimetype>application/x-embroidery-u00</mimetype>
+ <_filetypename>Ink/Stitch: Barudan Embroidery Format (.u00)</_filetypename>
+ <_filetypetooltip>convert U00 file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_VIP.inx b/inx/embroider_input_VIP.inx
new file mode 100644
index 00000000..f607bfd7
--- /dev/null
+++ b/inx/embroider_input_VIP.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>VIP file input</_name>
+ <id>org.inkstitch.input.vip</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.vip</extension>
+ <mimetype>application/x-embroidery-vip</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.vip)</_filetypename>
+ <_filetypetooltip>convert VIP file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_VP3.inx b/inx/embroider_input_VP3.inx
new file mode 100644
index 00000000..cb24f60a
--- /dev/null
+++ b/inx/embroider_input_VP3.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>VP3 file input</_name>
+ <id>org.inkstitch.input.vp3</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.vp3</extension>
+ <mimetype>application/x-embroidery-vp3</mimetype>
+ <_filetypename>Ink/Stitch: Pfaff Embroidery Format (.vp3)</_filetypename>
+ <_filetypetooltip>convert VP3 file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_XXX.inx b/inx/embroider_input_XXX.inx
new file mode 100644
index 00000000..64093628
--- /dev/null
+++ b/inx/embroider_input_XXX.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>XXX file input</_name>
+ <id>org.inkstitch.input.xxx</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.xxx</extension>
+ <mimetype>application/x-embroidery-xxx</mimetype>
+ <_filetypename>Ink/Stitch: Singer Embroidery Format (.xxx)</_filetypename>
+ <_filetypetooltip>convert XXX file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/inx/embroider_input_ZSK.inx b/inx/embroider_input_ZSK.inx
new file mode 100644
index 00000000..badb36da
--- /dev/null
+++ b/inx/embroider_input_ZSK.inx
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>ZSK file input</_name>
+ <id>org.inkstitch.input.zsk</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.zsk</extension>
+ <mimetype>application/x-embroidery-zsk</mimetype>
+ <_filetypename>Ink/Stitch: ZSK USA Embroidery Format (.zsk)</_filetypename>
+ <_filetypetooltip>convert ZSK file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
diff --git a/embroider_params.inx b/inx/embroider_params.inx
index f3987502..f3987502 100644
--- a/embroider_params.inx
+++ b/inx/embroider_params.inx
diff --git a/embroider_print.inx b/inx/embroider_print.inx
index cbba82cc..cbba82cc 100644
--- a/embroider_print.inx
+++ b/inx/embroider_print.inx
diff --git a/embroider_simulate.inx b/inx/embroider_simulate.inx
index 9c38ec97..9c38ec97 100644
--- a/embroider_simulate.inx
+++ b/inx/embroider_simulate.inx
diff --git a/templates/embroider_input.inx b/templates/embroider_input.inx
new file mode 100644
index 00000000..3af8f79e
--- /dev/null
+++ b/templates/embroider_input.inx
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <_name>{{ format | upper }} file input</_name>
+ <id>org.inkstitch.input.{{ format }}</id>
+ <dependency type="executable" location="extensions">embroider_input.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <input>
+ <extension>.{{ format }}</extension>
+ <mimetype>application/x-embroidery-{{ format }}</mimetype>
+ <_filetypename>Ink/Stitch: {{ description }} (.{{ format }})</_filetypename>
+ <_filetypetooltip>convert {{ format | upper }} file to Ink/Stitch manual-stitch paths</_filetypetooltip>
+ </input>
+ <script>
+ <command reldir="extensions" interpreter="python">embroider_input.py</command>
+ </script>
+</inkscape-extension>
+