summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2022-07-04 13:13:05 +0200
committerGitHub <noreply@github.com>2022-07-04 13:13:05 +0200
commit8d9a469ae2c289d2fde46c64d6d6d37e27dc9520 (patch)
treeb5c9337ff16f90b4fe71f590f33fe6686bf92b40 /lib
parent4c3a11bb8252aaaeb9abbd7f5f26c43e8a495d6b (diff)
Ignore invalid palettes (#1718)
Diffstat (limited to 'lib')
-rw-r--r--lib/extensions/palette_to_text.py4
-rw-r--r--lib/threads/catalog.py3
-rw-r--r--lib/threads/palette.py5
3 files changed, 11 insertions, 1 deletions
diff --git a/lib/extensions/palette_to_text.py b/lib/extensions/palette_to_text.py
index 0944c649..db0c50cf 100644
--- a/lib/extensions/palette_to_text.py
+++ b/lib/extensions/palette_to_text.py
@@ -27,6 +27,10 @@ class PaletteToText(InkstitchExtension):
return
thread_palette = ThreadPalette(palette_file)
+ if not thread_palette.is_gimp_palette:
+ inkex.errormsg(_("Cannot read palette: invalid GIMP palette header"))
+ return
+
current_layer = self.svg.get_current_layer()
x = 0
diff --git a/lib/threads/catalog.py b/lib/threads/catalog.py
index c12ca1fe..68dc2009 100644
--- a/lib/threads/catalog.py
+++ b/lib/threads/catalog.py
@@ -42,6 +42,9 @@ class _ThreadCatalog(Sequence):
for palette_file in glob(os.path.join(path, 'InkStitch*.gpl')):
palette_basename = os.path.basename(palette_file)
if palette_basename not in palettes:
+ palette = ThreadPalette(palette_file)
+ if not palette.is_gimp_palette:
+ continue
self.palettes.append(ThreadPalette(palette_file))
palettes.append(palette_basename)
diff --git a/lib/threads/palette.py b/lib/threads/palette.py
index 7a6bf153..e0e3a0ab 100644
--- a/lib/threads/palette.py
+++ b/lib/threads/palette.py
@@ -40,8 +40,11 @@ class ThreadPalette(Set):
with open(palette_file, encoding='utf8') as palette:
line = palette.readline().strip()
+
+ self.is_gimp_palette = True
if line.lower() != "gimp palette":
- raise ValueError("Invalid gimp palette header")
+ self.is_gimp_palette = False
+ return
self.name = palette.readline().strip()
if self.name.lower().startswith('name: ink/stitch: '):