From 7bf8c2d871eb012ad2fbbf34433bd6ea0affb9e5 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Fri, 24 Aug 2018 21:20:59 -0400 Subject: helpful error message for empty path "d" attribute (fixes #220) also internationalizes "error:" string --- lib/elements/element.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib/elements') diff --git a/lib/elements/element.py b/lib/elements/element.py index 4edb00c0..bca743c2 100644 --- a/lib/elements/element.py +++ b/lib/elements/element.py @@ -197,7 +197,11 @@ class EmbroideryElement(object): # In a path, each element in the 3-tuple is itself a tuple of (x, y). # Tuples all the way down. Hasn't anyone heard of using classes? - return cubicsuperpath.parsePath(self.node.get("d")) + d = self.node.get("d", "") + if not d: + self.fatal(_("Object %(id)s has an empty 'd' attribute. Please delete this object from your document.") % dict(id=self.node.get("id"))) + + return cubicsuperpath.parsePath(d) @cache def parse_path(self): @@ -264,5 +268,7 @@ class EmbroideryElement(object): return patches def fatal(self, message): - print >> sys.stderr, "error:", message + # L10N used when showing an error message to the user such as "satin column: One or more of the rungs doesn't + # intersect both rails." + print >> sys.stderr, _("error:"), message sys.exit(1) -- cgit v1.2.3 From 05327d56dbdcc9392c447fc72ef8dbd5c16f0ddc Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 1 Sep 2018 16:38:53 -0400 Subject: stop showing 'None' in Params --- lib/elements/auto_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/elements') diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index cfee6d7d..9801b610 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -55,7 +55,7 @@ class AutoFill(Fill): def fill_underlay_angle(self): underlay_angle = self.get_float_param("fill_underlay_angle") - if underlay_angle: + if underlay_angle is not None: return math.radians(underlay_angle) else: return self.angle + math.pi / 2.0 -- cgit v1.2.3 From 29f0e31ccdce084abf5f49d366733558cd288cfa Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 1 Sep 2018 19:54:13 -0400 Subject: name AutoFill tabs consistently --- lib/elements/auto_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/elements') diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index 9801b610..65b11fb1 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -8,7 +8,7 @@ from .fill import Fill class AutoFill(Fill): - element_name = _("Auto-Fill") + element_name = _("AutoFill") @property @param('auto_fill', _('Automatically routed fill stitching'), type='toggle', default=True) -- cgit v1.2.3 From 1c2dc2d95442b3663eebf1e2b633f3bb388982c0 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 1 Sep 2018 20:06:39 -0400 Subject: add error message for invalid geometries (#216) --- lib/elements/fill.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/elements') diff --git a/lib/elements/fill.py b/lib/elements/fill.py index 626573e6..4156a24b 100644 --- a/lib/elements/fill.py +++ b/lib/elements/fill.py @@ -120,7 +120,10 @@ class Fill(EmbroideryElement): poly_ary.sort(key=lambda point_list: shgeo.Polygon(point_list).area, reverse=True) polygon = shgeo.MultiPolygon([(poly_ary[0], poly_ary[1:])]) - # print >> sys.stderr, "polygon valid:", polygon.is_valid + + if not polygon.is_valid: + self.fatal(_("shape is not valid. This can happen if the border crosses over itself.")) + return polygon def to_patches(self, last_patch): -- cgit v1.2.3 From 71643ba280d251b6bf7727d5f6841d8cda1a5bca Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 1 Sep 2018 20:09:18 -0400 Subject: make error messages more useful --- lib/elements/element.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/elements') diff --git a/lib/elements/element.py b/lib/elements/element.py index bca743c2..ec50ce22 100644 --- a/lib/elements/element.py +++ b/lib/elements/element.py @@ -270,5 +270,5 @@ class EmbroideryElement(object): def fatal(self, message): # L10N used when showing an error message to the user such as "satin column: One or more of the rungs doesn't # intersect both rails." - print >> sys.stderr, _("error:"), message + print >> sys.stderr, self.node.get("id") + ":", _("error:"), message sys.exit(1) -- cgit v1.2.3