summaryrefslogtreecommitdiff
path: root/lib/extensions/import_threadlist.py
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2022-04-24 08:27:42 +0200
committerGitHub <noreply@github.com>2022-04-24 08:27:42 +0200
commitf9d57f6ea51ea8da186c41b70950b7d87fa2c20b (patch)
tree7c2664fc201933b64cc224adb28ff717e6f08c61 /lib/extensions/import_threadlist.py
parent4058712139b56a2419e01db700581b3c9554a88a (diff)
Fix lettering scale, etc. (#1620)
* fix lettering scale * adapt to updated inkex: transform operator, selections * fix #1597 * no traceback error message on broken satin columns * highlight troubleshoot "steps to solve" through additional headline * set a minimum value for running stitch repeats * rename "import" thread list to "apply" thread list
Diffstat (limited to 'lib/extensions/import_threadlist.py')
-rw-r--r--lib/extensions/import_threadlist.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/lib/extensions/import_threadlist.py b/lib/extensions/import_threadlist.py
deleted file mode 100644
index f7fe0bcc..00000000
--- a/lib/extensions/import_threadlist.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Authors: see git history
-#
-# Copyright (c) 2010 Authors
-# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
-
-import os
-import re
-import sys
-
-import inkex
-
-from ..i18n import _
-from ..threads import ThreadCatalog
-from .base import InkstitchExtension
-
-
-class ImportThreadlist(InkstitchExtension):
- def __init__(self, *args, **kwargs):
- InkstitchExtension.__init__(self, *args, **kwargs)
- self.arg_parser.add_argument("-f", "--filepath", type=str, default="", dest="filepath")
- self.arg_parser.add_argument("-m", "--method", type=int, default=1, dest="method")
- self.arg_parser.add_argument("-t", "--palette", type=str, default=None, dest="palette")
-
- def effect(self):
- # Remove selection, we want all the elements in the document
- self.svg.selected.clear()
-
- if not self.get_elements():
- return
-
- path = self.options.filepath
- if not os.path.exists(path):
- inkex.errormsg(_("File not found."))
- sys.exit(1)
- if os.path.isdir(path):
- inkex.errormsg(_("The filepath specified is not a file but a dictionary.\nPlease choose a threadlist file to import."))
- sys.exit(1)
-
- method = self.options.method
- if method == 1:
- colors = self.parse_inkstitch_threadlist(path)
- else:
- colors = self.parse_threadlist_by_catalog_number(path)
-
- if all(c is None for c in colors):
- inkex.errormsg(_("Couldn't find any matching colors in the file."))
- if method == 1:
- inkex.errormsg(_('Please try to import as "other threadlist" and specify a color palette below.'))
- else:
- inkex.errormsg(_("Please chose an other color palette for your design."))
- sys.exit(1)
-
- # Iterate through the color blocks to apply colors
- element_color = ""
- i = -1
- for element in self.elements:
- if element.color != element_color:
- element_color = element.color
- i += 1
-
- # No more colors in the list, stop here
- if i == len(colors):
- break
-
- style = element.node.get('style').replace("%s" % element_color, "%s" % colors[i])
- element.node.set('style', style)
-
- def parse_inkstitch_threadlist(self, path):
- colors = []
- with open(path) as threadlist:
- for line in threadlist:
- if line[0].isdigit():
- m = re.search(r"\((#[0-9A-Fa-f]{6})\)", line)
- if m:
- colors.append(m.group(1))
- else:
- # Color not found
- colors.append(None)
- return colors
-
- def parse_threadlist_by_catalog_number(self, path):
- palette_name = self.options.palette
- palette = ThreadCatalog().get_palette_by_name(palette_name)
-
- colors = []
- palette_numbers = []
- palette_colors = []
-
- for color in palette:
- palette_numbers.append(color.number)
- palette_colors.append('#%s' % color.hex_digits.lower())
- with open(path) as threadlist:
- for line in threadlist:
- if line[0].isdigit():
- # some threadlists may add a # in front of the catalof number
- # let's remove it from the entire string before splitting it up
- thread = line.replace('#', '').split()
- catalog_number = set(thread[1:]).intersection(palette_numbers)
- if catalog_number:
- color_index = palette_numbers.index(next(iter(catalog_number)))
- colors.append(palette_colors[color_index])
- else:
- # No color found
- colors.append(None)
- return colors
-
- def find_elements(self, xpath):
- svg = self.document.getroot()
- elements = svg.xpath(xpath, namespaces=inkex.NSS)
- return elements