From 0b9f95ed88f6d4eb47c774c69e4fa9a03546b4b5 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Wed, 6 Mar 2019 17:49:43 +0100 Subject: [PATCH 01/54] keep color when convert to satin column --- lib/extensions/convert_to_satin.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/extensions/convert_to_satin.py b/lib/extensions/convert_to_satin.py index 2b586e360..1227b2074 100644 --- a/lib/extensions/convert_to_satin.py +++ b/lib/extensions/convert_to_satin.py @@ -40,6 +40,7 @@ class ConvertToSatin(InkstitchExtension): index = parent.index(element.node) correction_transform = get_correction_transform(element.node) style_args = self.join_style_args(element) + path_style = self.path_style(element) for path in element.paths: path = self.remove_duplicate_points(path) @@ -62,7 +63,7 @@ class ConvertToSatin(InkstitchExtension): return - parent.insert(index, self.satin_to_svg_node(rails, rungs, correction_transform)) + parent.insert(index, self.satin_to_svg_node(rails, rungs, correction_transform, path_style)) parent.remove(element.node) @@ -273,7 +274,11 @@ class ConvertToSatin(InkstitchExtension): return rungs - def satin_to_svg_node(self, rails, rungs, correction_transform): + def path_style(self, element): + color = element.get_style('stroke', '#000000') + return "stroke:%s;stroke-width:1px;fill:none" % (color) + + def satin_to_svg_node(self, rails, rungs, correction_transform, path_style): d = "" for path in chain(rails, rungs): d += "M" @@ -284,7 +289,7 @@ class ConvertToSatin(InkstitchExtension): return inkex.etree.Element(SVG_PATH_TAG, { "id": self.uniqueId("path"), - "style": "stroke:#000000;stroke-width:1px;fill:none", + "style": path_style, "transform": correction_transform, "d": d, "embroider_satin_column": "true", From 110dca3c9a6861fda9eac555157396d532ef9c3a Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sun, 10 Mar 2019 18:24:10 -0400 Subject: [PATCH 02/54] make debugging auto-fill easier --- lib/elements/auto_fill.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index b8d8d15fb..1308b9e3e 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -1,4 +1,5 @@ import math +import sys import traceback from shapely import geometry as shgeo @@ -185,6 +186,10 @@ class AutoFill(Fill): # for one of our exceptions, just print the message self.fatal(_("Unable to autofill: ") + str(exc)) except Exception, exc: + if hasattr(sys, 'gettrace') and sys.gettrace(): + # if we're debugging, let the exception bubble up + raise + # for an uncaught exception, give a little more info so that they can create a bug report message = "" message += _("Error during autofill! This means that there is a problem with Ink/Stitch.") From 0a06fa740cbaa64f0c7d0541a88c6db59d6e51d8 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 12 Mar 2019 22:32:56 -0400 Subject: [PATCH 03/54] shapely.geometry -> shgeo for brevity --- lib/stitches/auto_fill.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 0f07b7952..bf660a93b 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -3,7 +3,7 @@ from itertools import groupby, izip import sys import networkx -import shapely +from shapely import geometry as shgeo from ..exceptions import InkstitchException from ..i18n import _ @@ -78,7 +78,7 @@ def which_outline(shape, coords): # I'd use an intersection check, but floating point errors make it # fail sometimes. - point = shapely.geometry.Point(*coords) + point = shgeo.Point(*coords) outlines = enumerate(list(shape.boundary)) closest = min(outlines, key=lambda index_outline: index_outline[1].distance(point)) @@ -92,7 +92,7 @@ def project(shape, coords, outline_index): """ outline = list(shape.boundary)[outline_index] - return outline.project(shapely.geometry.Point(*coords)) + return outline.project(shgeo.Point(*coords)) def build_graph(shape, segments, angle, row_spacing, max_stitch_length): @@ -320,9 +320,9 @@ def insert_loop(path, loop): def nearest_node_on_outline(graph, point, outline_index=0): - point = shapely.geometry.Point(*point) + point = shgeo.Point(*point) outline_nodes = [node for node, data in graph.nodes(data=True) if data['index'] == outline_index] - nearest = min(outline_nodes, key=lambda node: shapely.geometry.Point(*node).distance(point)) + nearest = min(outline_nodes, key=lambda node: shgeo.Point(*node).distance(point)) return nearest @@ -483,9 +483,9 @@ def connect_points(shape, start, end, running_stitch_length, row_spacing): # First, figure out the start and end position along the outline. The # projection gives us the distance travelled down the outline to get to # that point. - start = shapely.geometry.Point(start) + start = shgeo.Point(start) start_projection = outline.project(start) - end = shapely.geometry.Point(end) + end = shgeo.Point(end) end_projection = outline.project(end) # If the points are pretty close, just jump there. There's a slight @@ -519,7 +519,7 @@ def connect_points(shape, start, end, running_stitch_length, row_spacing): # Make a new outline, starting from the starting point. This is # like rotating the clock so that now our starting point is # at 12 o'clock. - outline = shapely.geometry.LineString(list(after.coords) + list(before.coords)) + outline = shgeo.LineString(list(after.coords) + list(before.coords)) # Now figure out where our ending point is on the newly-rotated clock. end_projection = outline.project(end) From 8ffa9ca90e28a3dd0cb47bf0379735d915eb72bb Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 12 Mar 2019 22:33:44 -0400 Subject: [PATCH 04/54] faster, simpler auto-fill algorithm --- lib/stitches/auto_fill.py | 82 +++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index bf660a93b..3b2b56dcc 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -392,50 +392,64 @@ def find_stitch_path(graph, segments, starting_point=None, ending_point=None): """ graph = graph.copy() - num_segments = len(segments) - segments_visited = 0 - nodes_visited = deque() if starting_point is None: starting_point = segments[0][0] - path = find_initial_path(graph, starting_point, ending_point) - - # Our graph is Eulerian: every node has an even degree. An Eulerian graph - # must have an Eulerian Circuit which visits every edge and ends where it - # starts. - # - # However, we're starting with a path and _not_ removing the edges of that - # path from the graph. By doing this, we're implicitly adding those edges - # to the graph, after which the starting and ending point (and only those - # two) will now have odd degree. A graph that's Eulerian except for two - # nodes must have an Eulerian Path that starts and ends at those two nodes. - # That's how we force the starting and ending point. - - nodes_visited.append(path[0][0]) - - while segments_visited < num_segments: - loop = find_loop(graph, nodes_visited) - - if not loop: - print >> sys.stderr, _("Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github.") - break - - segments_visited += sum(1 for edge in loop if edge.is_segment()) - nodes_visited.extend(edge[0] for edge in loop) - graph.remove_edges_from(loop) - - insert_loop(path, loop) + starting_node = nearest_node_on_outline(graph, starting_point) if ending_point is None: - # If they didn't specify an ending point, then the end of the path travels - # around the outline back to the start (see find_initial_path()). This - # isn't necessary, so remove it. - trim_end(path) + ending_node = starting_node + else: + ending_node = nearest_node_on_outline(graph, ending_point) + + # The algorithm below is adapted from networkx.eulerian_circuit(). + path = [] + vertex_stack = [(ending_node, None)] + last_vertex = None + last_key = None + + while vertex_stack: + current_vertex, current_key = vertex_stack[-1] + if graph.degree(current_vertex) == 0: + if last_vertex is not None: + path.append(PathEdge((last_vertex, current_vertex), last_key)) + last_vertex, last_key = current_vertex, current_key + vertex_stack.pop() + else: + ignore, next_vertex, next_key = pick_edge(graph.edges(current_vertex, keys=True)) + vertex_stack.append((next_vertex, next_key)) + graph.remove_edge(current_vertex, next_vertex, next_key) + + # The above has the excellent property that it tends to do travel stitches + # before the rows in that area, so we can hide the travel stitches under + # the rows. + # + # The only downside is that the path is a loop starting and ending at the + # ending node. We need to start at the starting node, so we'll just + # start off by traveling to the ending node. + # + # Note, it's quite possible that part of this PathEdge will be eliminated by + # collapse_sequential_outline_edges(). + + if starting_node is not ending_node: + path.insert(0, PathEdge((starting_node, ending_node), key="initial")) return path +def pick_edge(edges): + """Pick the next edge to traverse in the pathfinding algorithm""" + + # Prefer a segment if one is available. This has the effect of + # creating long sections of back-and-forth row traversal. + for source, node, key in edges: + if key == 'segment': + return source, node, key + + return list(edges)[0] + + def collapse_sequential_outline_edges(graph, path): """collapse sequential edges that fall on the same outline From 8323bd5f0ffb708a116bc826792ee571cbc930f0 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 12 Mar 2019 22:53:40 -0400 Subject: [PATCH 05/54] remove unused code --- lib/stitches/auto_fill.py | 220 ++------------------------------------ 1 file changed, 9 insertions(+), 211 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 3b2b56dcc..7386e08f6 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -12,10 +12,6 @@ from .fill import intersect_region_with_grating, row_num, stitch_row from .running_stitch import running_stitch -class MaxQueueLengthExceeded(InkstitchException): - pass - - class InvalidPath(InkstitchException): pass @@ -55,17 +51,14 @@ def auto_fill(shape, skip_last, starting_point, ending_point=None): - stitches = [] rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing) segments = [segment for row in rows_of_segments for segment in row] - - graph = build_graph(shape, segments, angle, row_spacing, max_stitch_length) + graph = build_graph(shape, segments) + check_graph(graph, shape, max_stitch_length) path = find_stitch_path(graph, segments, starting_point, ending_point) - stitches.extend(path_to_stitches(graph, path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last)) - - return stitches + return path_to_stitches(path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) def which_outline(shape, coords): @@ -95,7 +88,7 @@ def project(shape, coords, outline_index): return outline.project(shgeo.Point(*coords)) -def build_graph(shape, segments, angle, row_spacing, max_stitch_length): +def build_graph(shape, segments): """build a graph representation of the grating segments This function builds a specialized graph (as in graph theory) that will @@ -150,36 +143,14 @@ def build_graph(shape, segments, angle, row_spacing, max_stitch_length): for outline_index, nodes in groupby(nodes, key=lambda node: node[1]['index']): nodes = [node for node, data in nodes] - # heuristic: change the order I visit the nodes in the outline if necessary. - # If the start and endpoints are in the same row, I can't tell which row - # I should treat it as being in. - for i in xrange(len(nodes)): - row0 = row_num(InkstitchPoint(*nodes[0]), angle, row_spacing) - row1 = row_num(InkstitchPoint(*nodes[1]), angle, row_spacing) - - if row0 == row1: - nodes = nodes[1:] + [nodes[0]] - else: - break - - # heuristic: it's useful to try to keep the duplicated edges in the same rows. - # this prevents the BFS from having to search a ton of edges. - min_row_num = min(row0, row1) - if min_row_num % 2 == 0: - edge_set = 0 - else: - edge_set = 1 - # add an edge between each successive node for i, (node1, node2) in enumerate(zip(nodes, nodes[1:] + [nodes[0]])): graph.add_edge(node1, node2, key="outline") - # duplicate every other edge around this outline - if i % 2 == edge_set: + # duplicate every other edge + if i % 2 == 0: graph.add_edge(node1, node2, key="extra") - check_graph(graph, shape, max_stitch_length) - return graph @@ -193,132 +164,6 @@ def check_graph(graph, shape, max_stitch_length): "This most often happens because your shape is made up of multiple sections that aren't connected.")) -def node_list_to_edge_list(node_list): - return zip(node_list[:-1], node_list[1:]) - - -def bfs_for_loop(graph, starting_node, max_queue_length=2000): - to_search = deque() - to_search.append((None, set())) - - while to_search: - if len(to_search) > max_queue_length: - raise MaxQueueLengthExceeded() - - path, visited_edges = to_search.pop() - - if path is None: - # This is the very first time through the loop, so initialize. - path = [] - ending_node = starting_node - else: - ending_node = path[-1][-1] - - # get a list of neighbors paired with the key of the edge I can follow to get there - neighbors = [ - (node, key) - for node, adj in graph.adj[ending_node].iteritems() - for key in adj - ] - - # heuristic: try grating segments first - neighbors.sort(key=lambda dest_key: dest_key[1] == "segment", reverse=True) - - for next_node, key in neighbors: - # skip if I've already followed this edge - edge = PathEdge((ending_node, next_node), key) - if edge in visited_edges: - continue - - new_path = path + [edge] - - if next_node == starting_node: - # ignore trivial loops (down and back a doubled edge) - if len(new_path) > 3: - return new_path - - new_visited_edges = visited_edges.copy() - new_visited_edges.add(edge) - - to_search.appendleft((new_path, new_visited_edges)) - - -def find_loop(graph, starting_nodes): - """find a loop in the graph that is connected to the existing path - - Start at a candidate node and search through edges to find a path - back to that node. We'll use a breadth-first search (BFS) in order to - find the shortest available loop. - - In most cases, the BFS should not need to search far to find a loop. - The queue should stay relatively short. - - An added heuristic will be used: if the BFS queue's length becomes - too long, we'll abort and try a different starting point. Due to - the way we've set up the graph, there's bound to be a better choice - somewhere else. - """ - - loop = None - retry = [] - max_queue_length = 2000 - - while not loop: - while not loop and starting_nodes: - starting_node = starting_nodes.pop() - - try: - # Note: if bfs_for_loop() returns None, no loop can be - # constructed from the starting_node (because the - # necessary edges have already been consumed). In that - # case we discard that node and try the next. - loop = bfs_for_loop(graph, starting_node, max_queue_length) - - except MaxQueueLengthExceeded: - # We're giving up on this node for now. We could try - # this node again later, so add it to the bottm of the - # stack. - retry.append(starting_node) - - # Darn, couldn't find a loop. Try harder. - starting_nodes.extendleft(retry) - max_queue_length *= 2 - - starting_nodes.extendleft(retry) - return loop - - -def insert_loop(path, loop): - """insert a sub-loop into an existing path - - The path will be a series of edges describing a path through the graph - that ends where it starts. The loop will be similar, and its starting - point will be somewhere along the path. - - Insert the loop into the path, resulting in a longer path. - - Both the path and the loop will be a list of edges specified as a - start and end point. The points will be specified in order, such - that they will look like this: - - ((p1, p2), (p2, p3), (p3, p4), ...) - - path will be modified in place. - """ - - loop_start = loop[0][0] - - for i, (start, end) in enumerate(path): - if start == loop_start: - break - else: - # if we didn't find the start of the loop in the list at all, it must - # be the endpoint of the last segment - i += 1 - - path[i:i] = loop - - def nearest_node_on_outline(graph, point, outline_index=0): point = shgeo.Point(*point) outline_nodes = [node for node, data in graph.nodes(data=True) if data['index'] == outline_index] @@ -327,48 +172,6 @@ def nearest_node_on_outline(graph, point, outline_index=0): return nearest -def get_outline_nodes(graph, outline_index=0): - outline_nodes = [(node, data['projection']) - for node, data - in graph.nodes(data=True) - if data['index'] == outline_index] - outline_nodes.sort(key=lambda node_projection: node_projection[1]) - outline_nodes = [node for node, data in outline_nodes] - - return outline_nodes - - -def find_initial_path(graph, starting_point, ending_point=None): - starting_node = nearest_node_on_outline(graph, starting_point) - - if ending_point is not None: - ending_node = nearest_node_on_outline(graph, ending_point) - - if ending_point is None or starting_node is ending_node: - # If they didn't give an ending point, pick either neighboring node - # along the outline -- doesn't matter which. We do this because - # the algorithm requires we start with _some_ path. - neighbors = [n for n, keys in graph.adj[starting_node].iteritems() if 'outline' in keys] - return [PathEdge((starting_node, neighbors[0]), "initial")] - else: - outline_nodes = get_outline_nodes(graph) - - # Multiply the outline_nodes list by 2 (duplicate it) because - # the ending_node may occur first. - outline_nodes *= 2 - start_index = outline_nodes.index(starting_node) - end_index = outline_nodes.index(ending_node, start_index) - nodes = outline_nodes[start_index:end_index + 1] - - # we have a series of sequential points, but we need to - # turn it into an edge list - path = [] - for start, end in izip(nodes[:-1], nodes[1:]): - path.append(PathEdge((start, end), "initial")) - - return path - - def find_stitch_path(graph, segments, starting_point=None, ending_point=None): """find a path that visits every grating segment exactly once @@ -450,7 +253,7 @@ def pick_edge(edges): return list(edges)[0] -def collapse_sequential_outline_edges(graph, path): +def collapse_sequential_outline_edges(path): """collapse sequential edges that fall on the same outline When the path follows multiple edges along the outline of the region, @@ -559,13 +362,8 @@ def connect_points(shape, start, end, running_stitch_length, row_spacing): return stitches[1:] -def trim_end(path): - while path and path[-1].is_outline(): - path.pop() - - -def path_to_stitches(graph, path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): - path = collapse_sequential_outline_edges(graph, path) +def path_to_stitches(path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): + path = collapse_sequential_outline_edges(path) stitches = [] From 30ea54dc6de707b084ea1fc4a66a64bbd7a9c974 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 13 Mar 2019 20:11:07 -0400 Subject: [PATCH 06/54] tidy up the code a bit --- lib/stitches/auto_fill.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 7386e08f6..c2e2e0bbf 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -52,13 +52,11 @@ def auto_fill(shape, starting_point, ending_point=None): - rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing) - segments = [segment for row in rows_of_segments for segment in row] - graph = build_graph(shape, segments) + graph = build_graph(shape, angle, row_spacing, end_row_spacing) check_graph(graph, shape, max_stitch_length) - path = find_stitch_path(graph, segments, starting_point, ending_point) + path = find_stitch_path(graph, starting_point, ending_point) - return path_to_stitches(path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) + return path_to_stitches(path, graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) def which_outline(shape, coords): @@ -88,7 +86,7 @@ def project(shape, coords, outline_index): return outline.project(shgeo.Point(*coords)) -def build_graph(shape, segments): +def build_graph(shape, angle, row_spacing, end_row_spacing): """build a graph representation of the grating segments This function builds a specialized graph (as in graph theory) that will @@ -121,6 +119,10 @@ def build_graph(shape, segments): path must exist. """ + # Convert the shape into a set of parallel line segments. + rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing) + segments = [segment for row in rows_of_segments for segment in row] + graph = networkx.MultiGraph() # First, add the grating segments as edges. We'll use the coordinates @@ -172,7 +174,7 @@ def nearest_node_on_outline(graph, point, outline_index=0): return nearest -def find_stitch_path(graph, segments, starting_point=None, ending_point=None): +def find_stitch_path(graph, starting_point=None, ending_point=None): """find a path that visits every grating segment exactly once Theoretically, we just need to find an Eulerian Path in the graph. @@ -197,7 +199,7 @@ def find_stitch_path(graph, segments, starting_point=None, ending_point=None): graph = graph.copy() if starting_point is None: - starting_point = segments[0][0] + starting_point = graph.nodes.keys()[0] starting_node = nearest_node_on_outline(graph, starting_point) @@ -283,7 +285,7 @@ def collapse_sequential_outline_edges(path): return new_path -def connect_points(shape, start, end, running_stitch_length, row_spacing): +def connect_points(graph, shape, start, end, running_stitch_length, row_spacing): """Create stitches to get from one point on an outline of the shape to another. An outline is essentially a loop (a path of points that ends where it starts). @@ -294,16 +296,16 @@ def connect_points(shape, start, end, running_stitch_length, row_spacing): """ # We may be on the outer boundary or on on of the hole boundaries. - outline_index = which_outline(shape, start) + outline_index = graph.nodes[start]['index'] outline = shape.boundary[outline_index] # First, figure out the start and end position along the outline. The # projection gives us the distance travelled down the outline to get to # that point. + start_projection = graph.nodes[start]['projection'] start = shgeo.Point(start) - start_projection = outline.project(start) + end_projection = graph.nodes[end]['projection'] end = shgeo.Point(end) - end_projection = outline.project(end) # If the points are pretty close, just jump there. There's a slight # risk that we're going to sew outside the shape here. The way to @@ -362,7 +364,7 @@ def connect_points(shape, start, end, running_stitch_length, row_spacing): return stitches[1:] -def path_to_stitches(path, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): +def path_to_stitches(path, graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): path = collapse_sequential_outline_edges(path) stitches = [] @@ -371,6 +373,6 @@ def path_to_stitches(path, shape, angle, row_spacing, max_stitch_length, running if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) else: - stitches.extend(connect_points(shape, edge[0], edge[1], running_stitch_length, row_spacing)) + stitches.extend(connect_points(graph, shape, edge[0], edge[1], running_stitch_length, row_spacing)) return stitches From e616061e85fda0160ebfc7d071358d730b0c613f Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 14 Mar 2019 21:02:47 -0400 Subject: [PATCH 07/54] underpathing! --- lib/stitches/auto_fill.py | 137 ++++++++++++++++---------------------- lib/stitches/fill.py | 4 +- 2 files changed, 59 insertions(+), 82 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index c2e2e0bbf..2e424267c 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -1,14 +1,14 @@ -from collections import deque -from itertools import groupby, izip -import sys +from itertools import groupby, chain +import math import networkx from shapely import geometry as shgeo from ..exceptions import InkstitchException from ..i18n import _ +from ..svg import PIXELS_PER_MM from ..utils.geometry import Point as InkstitchPoint, cut -from .fill import intersect_region_with_grating, row_num, stitch_row +from .fill import intersect_region_with_grating, stitch_row from .running_stitch import running_stitch @@ -50,13 +50,16 @@ def auto_fill(shape, staggers, skip_last, starting_point, - ending_point=None): + ending_point=None, + underpath=True): graph = build_graph(shape, angle, row_spacing, end_row_spacing) check_graph(graph, shape, max_stitch_length) + travel_graph = build_travel_graph(graph, shape, angle, underpath) path = find_stitch_path(graph, starting_point, ending_point) + result = path_to_stitches(path, graph, travel_graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) - return path_to_stitches(path, graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) + return result def which_outline(shape, coords): @@ -156,6 +159,48 @@ def build_graph(shape, angle, row_spacing, end_row_spacing): return graph +def build_travel_graph(top_stitch_graph, shape, top_stitch_angle, underpath): + graph = networkx.Graph() + graph.add_nodes_from(top_stitch_graph.nodes(data=True)) + + if underpath: + # need to concatenate all the rows + grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) + grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + + endpoints = [coord for mls in (grating1, grating2) + for ls in mls + for coord in ls.coords] + + for node in endpoints: + outline_index = which_outline(shape, node) + outline_projection = project(shape, node, outline_index) + + # Tag each node with its index and projection. + graph.add_node(node, index=outline_index, projection=outline_projection) + + nodes = list(graph.nodes(data=True)) # returns a list of tuples: [(node, {data}), (node, {data}) ...] + nodes.sort(key=lambda node: (node[1]['index'], node[1]['projection'])) + + for outline_index, nodes in groupby(nodes, key=lambda node: node[1]['index']): + nodes = [node for node, data in nodes] + + # add an edge between each successive node + for node1, node2 in zip(nodes, nodes[1:] + [nodes[0]]): + p1 = InkstitchPoint(*node1) + p2 = InkstitchPoint(*node2) + graph.add_edge(node1, node2, weight=3 * p1.distance(p2)) + + if underpath: + interior_edges = grating1.symmetric_difference(grating2) + for ls in interior_edges.geoms: + p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] + + graph.add_edge(p1.as_tuple(), p2.as_tuple(), weight=p1.distance(p2)) + + return graph + + def check_graph(graph, shape, max_stitch_length): if networkx.is_empty(graph) or not networkx.is_eulerian(graph): if shape.area < max_stitch_length ** 2: @@ -285,86 +330,18 @@ def collapse_sequential_outline_edges(path): return new_path -def connect_points(graph, shape, start, end, running_stitch_length, row_spacing): - """Create stitches to get from one point on an outline of the shape to another. +def travel(graph, travel_graph, shape, start, end, running_stitch_length, row_spacing): + """Create stitches to get from one point on an outline of the shape to another.""" - An outline is essentially a loop (a path of points that ends where it starts). - Given point A and B on that loop, we want to take the shortest path from one - to the other. Due to the way our path-finding algorithm above works, it may - have had to take the long way around the shape to get from A to B, but we'd - rather ignore that and just get there the short way. - """ - - # We may be on the outer boundary or on on of the hole boundaries. - outline_index = graph.nodes[start]['index'] - outline = shape.boundary[outline_index] - - # First, figure out the start and end position along the outline. The - # projection gives us the distance travelled down the outline to get to - # that point. - start_projection = graph.nodes[start]['projection'] - start = shgeo.Point(start) - end_projection = graph.nodes[end]['projection'] - end = shgeo.Point(end) - - # If the points are pretty close, just jump there. There's a slight - # risk that we're going to sew outside the shape here. The way to - # avoid that is to use running_stitch() even for these really short - # connections, but that would be really slow for all of the - # connections from one row to the next. - # - # This seems to do a good job of avoiding going outside the shape in - # most cases. 1.4 is chosen as approximately the length of the - # stitch connecting two rows if the side of the shape is at a 45 - # degree angle to the rows of stitches (sqrt(2)). - direct_distance = abs(end_projection - start_projection) - if direct_distance < row_spacing * 1.4 and direct_distance < running_stitch_length: - return [InkstitchPoint(end.x, end.y)] - - # The outline path has a "natural" starting point. Think of this as - # 0 or 12 on an analog clock. - - # Cut the outline into two paths at the starting point. The first - # section will go from 12 o'clock to the starting point. The second - # section will go from the starting point all the way around and end - # up at 12 again. - result = cut(outline, start_projection) - - # result[0] will be None if our starting point happens to already be at - # 12 o'clock. - if result[0] is not None: - before, after = result - - # Make a new outline, starting from the starting point. This is - # like rotating the clock so that now our starting point is - # at 12 o'clock. - outline = shgeo.LineString(list(after.coords) + list(before.coords)) - - # Now figure out where our ending point is on the newly-rotated clock. - end_projection = outline.project(end) - - # Cut the new path at the ending point. before and after now represent - # two ways to get from the starting point to the ending point. One - # will most likely be longer than the other. - before, after = cut(outline, end_projection) - - if before.length <= after.length: - points = list(before.coords) - else: - # after goes from the ending point to the starting point, so reverse - # it to get from start to end. - points = list(reversed(after.coords)) - - # Now do running stitch along the path we've found. running_stitch() will - # avoid cutting sharp corners. - path = [InkstitchPoint(*p) for p in points] + path = networkx.shortest_path(travel_graph, start, end, weight='weight') + path = [InkstitchPoint(*p) for p in path] stitches = running_stitch(path, running_stitch_length) # The row of stitches already stitched the first point, so skip it. return stitches[1:] -def path_to_stitches(path, graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): +def path_to_stitches(path, graph, travel_graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): path = collapse_sequential_outline_edges(path) stitches = [] @@ -373,6 +350,6 @@ def path_to_stitches(path, graph, shape, angle, row_spacing, max_stitch_length, if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) else: - stitches.extend(connect_points(graph, shape, edge[0], edge[1], running_stitch_length, row_spacing)) + stitches.extend(travel(graph, travel_graph, shape, edge[0], edge[1], running_stitch_length, row_spacing)) return stitches diff --git a/lib/stitches/fill.py b/lib/stitches/fill.py index e00d66dec..924f64f6d 100644 --- a/lib/stitches/fill.py +++ b/lib/stitches/fill.py @@ -140,7 +140,7 @@ def intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing=Non res = grating_line.intersection(shape) if (isinstance(res, shapely.geometry.MultiLineString)): - runs = map(lambda line_string: line_string.coords, res.geoms) + runs = [line_string.coords for line_string in res.geoms] else: if res.is_empty or len(res.coords) == 1: # ignore if we intersected at a single point or no points @@ -153,7 +153,7 @@ def intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing=Non if flip: runs.reverse() - runs = map(lambda run: tuple(reversed(run)), runs) + runs = [tuple(reversed(run)) for run in runs] rows.append(runs) From 200e2ac5f73c207b95ff815e754e42c427ccc58e Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 14 Mar 2019 21:46:44 -0400 Subject: [PATCH 08/54] deduplicate and comment code --- lib/stitches/auto_fill.py | 117 +++++++++++++++++++++++++++----------- 1 file changed, 84 insertions(+), 33 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 2e424267c..82b4a99e8 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -1,3 +1,5 @@ +# -*- coding: UTF-8 -*- + from itertools import groupby, chain import math @@ -74,7 +76,7 @@ def which_outline(shape, coords): point = shgeo.Point(*coords) outlines = enumerate(list(shape.boundary)) - closest = min(outlines, key=lambda index_outline: index_outline[1].distance(point)) + closest = min(outlines, key=lambda (index, outline): outline.distance(point)) return closest[0] @@ -135,6 +137,8 @@ def build_graph(shape, angle, row_spacing, end_row_spacing): # mark this one as a grating segment. graph.add_edge(*segment, key="segment") + tag_nodes_with_outline_and_projection(graph, shape, graph.nodes()) + for node in graph.nodes(): outline_index = which_outline(shape, node) outline_projection = project(shape, node, outline_index) @@ -142,54 +146,101 @@ def build_graph(shape, angle, row_spacing, end_row_spacing): # Tag each node with its index and projection. graph.add_node(node, index=outline_index, projection=outline_projection) - nodes = list(graph.nodes(data=True)) # returns a list of tuples: [(node, {data}), (node, {data}) ...] - nodes.sort(key=lambda node: (node[1]['index'], node[1]['projection'])) - - for outline_index, nodes in groupby(nodes, key=lambda node: node[1]['index']): - nodes = [node for node, data in nodes] - - # add an edge between each successive node - for i, (node1, node2) in enumerate(zip(nodes, nodes[1:] + [nodes[0]])): - graph.add_edge(node1, node2, key="outline") + add_edges_between_outline_nodes(graph, key="outline") + for node1, node2, key, data in graph.edges(keys=True, data=True): + if key == "outline": # duplicate every other edge - if i % 2 == 0: + if data['index'] % 2 == 0: graph.add_edge(node1, node2, key="extra") return graph -def build_travel_graph(top_stitch_graph, shape, top_stitch_angle, underpath): - graph = networkx.Graph() - graph.add_nodes_from(top_stitch_graph.nodes(data=True)) +def tag_nodes_with_outline_and_projection(graph, shape, nodes): + for node in nodes: + outline_index = which_outline(shape, node) + outline_projection = project(shape, node, outline_index) - if underpath: - # need to concatenate all the rows - grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) - grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + graph.add_node(node, outline=outline_index, projection=outline_projection) - endpoints = [coord for mls in (grating1, grating2) - for ls in mls - for coord in ls.coords] - for node in endpoints: - outline_index = which_outline(shape, node) - outline_projection = project(shape, node, outline_index) +def add_edges_between_outline_nodes(graph, key=None): + """Add edges around the outlines of the graph, connecting sequential nodes. - # Tag each node with its index and projection. - graph.add_node(node, index=outline_index, projection=outline_projection) + This function assumes that all nodes in the graph are on the outline of the + shape. It figures out which nodes are next to each other on the shape and + connects them in the graph with an edge. + + Edges are tagged with their outline number and their position on that + outline. + """ nodes = list(graph.nodes(data=True)) # returns a list of tuples: [(node, {data}), (node, {data}) ...] - nodes.sort(key=lambda node: (node[1]['index'], node[1]['projection'])) + nodes.sort(key=lambda node: (node[1]['outline'], node[1]['projection'])) - for outline_index, nodes in groupby(nodes, key=lambda node: node[1]['index']): + for outline_index, nodes in groupby(nodes, key=lambda node: node[1]['outline']): nodes = [node for node, data in nodes] # add an edge between each successive node - for node1, node2 in zip(nodes, nodes[1:] + [nodes[0]]): - p1 = InkstitchPoint(*node1) - p2 = InkstitchPoint(*node2) - graph.add_edge(node1, node2, weight=3 * p1.distance(p2)) + for i, (node1, node2) in enumerate(zip(nodes, nodes[1:] + [nodes[0]])): + data = dict(outline=outline_index, index=i) + if key: + graph.add_edge(node1, node2, key=key, **data) + else: + graph.add_edge(node1, node2, **data) + + +def build_travel_graph(top_stitch_graph, shape, top_stitch_angle, underpath): + """Build a graph for travel stitches. + + This graph will be used to find a stitch path between two spots on the + outline of the shape. + + If underpath is False, we'll just be traveling + around the outline of the shape, so the graph will only contain outline + edges. + + If underpath is True, we'll also allow travel inside the shape. We'll + fill the shape with a cross-hatched grid of lines 2mm apart, at ±45 + degrees from the fill stitch angle. This will ensure that travel stitches + won't be visible and won't disrupt the fill stitch. + + When underpathing, we "encourage" the travel() function to travel inside + the shape rather than on the boundary. We do this by weighting the + boundary edges extra so that they're more "expensive" in the shortest path + calculation. + """ + + graph = networkx.Graph() + + # Add all the nodes from the main graph. This will be all of the endpoints + # of the rows of stitches. Every node will be on the outline of the shape. + # They'll all already have their `outline` and `projection` tags set. + graph.add_nodes_from(top_stitch_graph.nodes(data=True)) + + if underpath: + # These two MultiLineStrings will make up the cross-hatched grid. + grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) + grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + + # We'll add the endpoints of the crosshatch grating lines too These + # will all be on the outline of the shape. This will ensure that a + # path traveling inside the shape can reach its target on the outline, + # which will be one of the points added above. + endpoints = [coord for mls in (grating1, grating2) + for ls in mls + for coord in ls.coords] + tag_nodes_with_outline_and_projection(graph, shape, endpoints) + + add_edges_between_outline_nodes(graph) + for start, end in graph.edges: + p1 = InkstitchPoint(*start) + p2 = InkstitchPoint(*end) + + # Set the weight equal to triple the edge length, to encourage travel() + # to avoid them when underpathing is enabled. + graph.add_edge(start, end, weight=3 * p1.distance(p2)) if underpath: interior_edges = grating1.symmetric_difference(grating2) @@ -213,7 +264,7 @@ def check_graph(graph, shape, max_stitch_length): def nearest_node_on_outline(graph, point, outline_index=0): point = shgeo.Point(*point) - outline_nodes = [node for node, data in graph.nodes(data=True) if data['index'] == outline_index] + outline_nodes = [node for node, data in graph.nodes(data=True) if data['outline'] == outline_index] nearest = min(outline_nodes, key=lambda node: shgeo.Point(*node).distance(point)) return nearest From ec14fe7343e966286ce30ff329146feb3af4476b Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 14 Mar 2019 21:54:51 -0400 Subject: [PATCH 09/54] more cleanup --- lib/stitches/auto_fill.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 82b4a99e8..f64f6f285 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -9,7 +9,7 @@ from shapely import geometry as shgeo from ..exceptions import InkstitchException from ..i18n import _ from ..svg import PIXELS_PER_MM -from ..utils.geometry import Point as InkstitchPoint, cut +from ..utils.geometry import Point as InkstitchPoint from .fill import intersect_region_with_grating, stitch_row from .running_stitch import running_stitch @@ -55,11 +55,11 @@ def auto_fill(shape, ending_point=None, underpath=True): - graph = build_graph(shape, angle, row_spacing, end_row_spacing) - check_graph(graph, shape, max_stitch_length) - travel_graph = build_travel_graph(graph, shape, angle, underpath) - path = find_stitch_path(graph, starting_point, ending_point) - result = path_to_stitches(path, graph, travel_graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) + fill_stitch_graph = build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing) + check_graph(fill_stitch_graph, shape, max_stitch_length) + travel_graph = build_travel_graph(fill_stitch_graph, shape, angle, underpath) + path = find_stitch_path(fill_stitch_graph, starting_point, ending_point) + result = path_to_stitches(path, travel_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) return result @@ -75,10 +75,11 @@ def which_outline(shape, coords): # fail sometimes. point = shgeo.Point(*coords) - outlines = enumerate(list(shape.boundary)) - closest = min(outlines, key=lambda (index, outline): outline.distance(point)) + outlines = list(shape.boundary) + outline_indices = range(len(outlines)) + closest = min(outline_indices, key=lambda index: outlines[index].distance(point)) - return closest[0] + return closest def project(shape, coords, outline_index): @@ -91,7 +92,7 @@ def project(shape, coords, outline_index): return outline.project(shgeo.Point(*coords)) -def build_graph(shape, angle, row_spacing, end_row_spacing): +def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): """build a graph representation of the grating segments This function builds a specialized graph (as in graph theory) that will @@ -191,7 +192,7 @@ def add_edges_between_outline_nodes(graph, key=None): graph.add_edge(node1, node2, **data) -def build_travel_graph(top_stitch_graph, shape, top_stitch_angle, underpath): +def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): """Build a graph for travel stitches. This graph will be used to find a stitch path between two spots on the @@ -217,12 +218,12 @@ def build_travel_graph(top_stitch_graph, shape, top_stitch_angle, underpath): # Add all the nodes from the main graph. This will be all of the endpoints # of the rows of stitches. Every node will be on the outline of the shape. # They'll all already have their `outline` and `projection` tags set. - graph.add_nodes_from(top_stitch_graph.nodes(data=True)) + graph.add_nodes_from(fill_stitch_graph.nodes(data=True)) if underpath: # These two MultiLineStrings will make up the cross-hatched grid. - grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) - grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, top_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) + grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) # We'll add the endpoints of the crosshatch grating lines too These # will all be on the outline of the shape. This will ensure that a @@ -381,7 +382,7 @@ def collapse_sequential_outline_edges(path): return new_path -def travel(graph, travel_graph, shape, start, end, running_stitch_length, row_spacing): +def travel(travel_graph, start, end, running_stitch_length): """Create stitches to get from one point on an outline of the shape to another.""" path = networkx.shortest_path(travel_graph, start, end, weight='weight') @@ -392,7 +393,7 @@ def travel(graph, travel_graph, shape, start, end, running_stitch_length, row_sp return stitches[1:] -def path_to_stitches(path, graph, travel_graph, shape, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): +def path_to_stitches(path, travel_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): path = collapse_sequential_outline_edges(path) stitches = [] @@ -401,6 +402,6 @@ def path_to_stitches(path, graph, travel_graph, shape, angle, row_spacing, max_s if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) else: - stitches.extend(travel(graph, travel_graph, shape, edge[0], edge[1], running_stitch_length, row_spacing)) + stitches.extend(travel(travel_graph, edge[0], edge[1], running_stitch_length)) return stitches From 2ba333c8a74245ee86b213809c734fcd7509c823 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Mon, 18 Mar 2019 20:57:05 -0400 Subject: [PATCH 10/54] avoid putting underpathing on top --- lib/stitches/auto_fill.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index f64f6f285..1eabfac94 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -59,7 +59,8 @@ def auto_fill(shape, check_graph(fill_stitch_graph, shape, max_stitch_length) travel_graph = build_travel_graph(fill_stitch_graph, shape, angle, underpath) path = find_stitch_path(fill_stitch_graph, starting_point, ending_point) - result = path_to_stitches(path, travel_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) + result = path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, + max_stitch_length, running_stitch_length, staggers, skip_last) return result @@ -136,7 +137,7 @@ def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): for segment in segments: # networkx allows us to label nodes with arbitrary data. We'll # mark this one as a grating segment. - graph.add_edge(*segment, key="segment") + graph.add_edge(*segment, key="segment", underpath_edges=[]) tag_nodes_with_outline_and_projection(graph, shape, graph.nodes()) @@ -244,11 +245,21 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): graph.add_edge(start, end, weight=3 * p1.distance(p2)) if underpath: + segments = [] + for start, end, key, data in fill_stitch_graph.edges(keys=True, data=True): + if key == 'segment': + segments.append((shgeo.LineString((start, end)), data)) + interior_edges = grating1.symmetric_difference(grating2) for ls in interior_edges.geoms: p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] + edge = (p1.as_tuple(), p2.as_tuple()) - graph.add_edge(p1.as_tuple(), p2.as_tuple(), weight=p1.distance(p2)) + for segment, data in segments: + if ls.crosses(segment): + data['underpath_edges'].append(edge) + + graph.add_edge(*edge, weight=p1.distance(p2)) return graph @@ -393,7 +404,7 @@ def travel(travel_graph, start, end, running_stitch_length): return stitches[1:] -def path_to_stitches(path, travel_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): +def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): path = collapse_sequential_outline_edges(path) stitches = [] @@ -401,6 +412,7 @@ def path_to_stitches(path, travel_graph, angle, row_spacing, max_stitch_length, for edge in path: if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) + travel_graph.remove_edges_from(fill_stitch_graph[edge[0]][edge[1]]['segment'].get('underpath_edges', [])) else: stitches.extend(travel(travel_graph, edge[0], edge[1], running_stitch_length)) From ba2b78d3499f3b274611440b9b2257b9ee0f1820 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 19 Mar 2019 19:59:40 -0400 Subject: [PATCH 11/54] use blazing-fast STRtree for intersection detection --- lib/stitches/auto_fill.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 1eabfac94..c4132fcc8 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -5,6 +5,7 @@ import math import networkx from shapely import geometry as shgeo +from shapely.strtree import STRtree from ..exceptions import InkstitchException from ..i18n import _ @@ -248,16 +249,22 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): segments = [] for start, end, key, data in fill_stitch_graph.edges(keys=True, data=True): if key == 'segment': - segments.append((shgeo.LineString((start, end)), data)) + segments.append(shgeo.LineString((start, end))) + + # The shapely documentation is pretty unclear on this. An STRtree + # allows for building a set of shapes and then efficiently testing + # the set for intersection. This allows us to do blazing-fast + # queries of which line segments overlap each underpath edge. + rtree = STRtree(segments) interior_edges = grating1.symmetric_difference(grating2) for ls in interior_edges.geoms: p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] edge = (p1.as_tuple(), p2.as_tuple()) - for segment, data in segments: - if ls.crosses(segment): - data['underpath_edges'].append(edge) + for segment in rtree.query(ls): + start, end = segment.coords + fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) graph.add_edge(*edge, weight=p1.distance(p2)) From 8520d4e63c8ad05bc8edf67d29fc797b0f335c3e Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 19 Mar 2019 20:26:25 -0400 Subject: [PATCH 12/54] avoid cutting corners --- lib/stitches/auto_fill.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index c4132fcc8..7ca354bbb 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -400,15 +400,27 @@ def collapse_sequential_outline_edges(path): return new_path -def travel(travel_graph, start, end, running_stitch_length): +def travel(travel_graph, start, end, running_stitch_length, skip_last): """Create stitches to get from one point on an outline of the shape to another.""" path = networkx.shortest_path(travel_graph, start, end, weight='weight') path = [InkstitchPoint(*p) for p in path] stitches = running_stitch(path, running_stitch_length) - # The row of stitches already stitched the first point, so skip it. - return stitches[1:] + # The path's first stitch will start at the end of a row of stitches. We + # don't want to double that last stitch, so we'd like to skip it. + if skip_last and len(path) > 2: + # However, we don't want to skip it if we've had to do any actual + # travel in the interior of the shape. The reason is that we can + # potentially cut a corner and stitch outside the shape. + # + # If the path is longer than two nodes, then it is not a simple + # transition from one row to the next, so we'll keep the stitch. + return stitches + else: + # Just a normal transition from one row to the next, so skip the first + # stitch. + return stitches[1:] def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): @@ -421,6 +433,6 @@ def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) travel_graph.remove_edges_from(fill_stitch_graph[edge[0]][edge[1]]['segment'].get('underpath_edges', [])) else: - stitches.extend(travel(travel_graph, edge[0], edge[1], running_stitch_length)) + stitches.extend(travel(travel_graph, edge[0], edge[1], running_stitch_length, skip_last)) return stitches From 6b8121fb04075b135f6f67954a9f7686460ce5f5 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 19 Mar 2019 22:30:07 -0400 Subject: [PATCH 13/54] add underpath checkboxes for underlay and top stitching --- lib/elements/auto_fill.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index 1308b9e3e..e78943ec0 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -119,6 +119,28 @@ class AutoFill(Fill): def expand(self): return self.get_float_param('expand_mm', 0) + @property + @param('underpath', + _('Underpath'), + tooltip=_('Travel inside the shape when moving from section to section. Underpath ' + 'stitches avoid traveling in the direction of the row angle so that they ' + 'are not visible. This gives them a jagged appearance.'), + type='boolean', + default=True) + def underpath(self): + return self.get_boolean_param('underpath', True) + + @property + @param('underlay_underpath', + _('Underpath'), + tooltip=_('Travel inside the shape when moving from section to section. Underpath ' + 'stitches avoid traveling in the direction of the row angle so that they ' + 'are not visible. This gives them a jagged appearance.'), + type='boolean', + default=False) + def underlay_underpath(self): + return self.get_boolean_param('underpath', False) + def shrink_or_grow_shape(self, amount): if amount: shape = self.shape.buffer(amount) @@ -169,7 +191,8 @@ class AutoFill(Fill): self.running_stitch_length, self.staggers, self.fill_underlay_skip_last, - starting_point)) + starting_point, + underpath=self.underlay_underpath)) starting_point = stitches[-1] stitches.extend(auto_fill(self.fill_shape, @@ -181,7 +204,8 @@ class AutoFill(Fill): self.staggers, self.skip_last, starting_point, - ending_point)) + ending_point, + self.underpath)) except InkstitchException, exc: # for one of our exceptions, just print the message self.fatal(_("Unable to autofill: ") + str(exc)) From 68590492f55af51bf681a73200f12eb4d9a4f27a Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 19 Mar 2019 22:36:05 -0400 Subject: [PATCH 14/54] allow starting and ending on the border of a hole --- lib/stitches/auto_fill.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 7ca354bbb..3dff3d96f 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -281,10 +281,9 @@ def check_graph(graph, shape, max_stitch_length): "This most often happens because your shape is made up of multiple sections that aren't connected.")) -def nearest_node_on_outline(graph, point, outline_index=0): +def nearest_node_on_outline(graph, point): point = shgeo.Point(*point) - outline_nodes = [node for node, data in graph.nodes(data=True) if data['outline'] == outline_index] - nearest = min(outline_nodes, key=lambda node: shgeo.Point(*node).distance(point)) + nearest = min(graph.nodes, key=lambda node: shgeo.Point(*node).distance(point)) return nearest From 685df3b3f05f8e81751bde2e7bb59c50b658f764 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 19 Mar 2019 23:28:19 -0400 Subject: [PATCH 15/54] fix start/end at top or bottom of shape --- lib/stitches/auto_fill.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 3dff3d96f..b85d335e5 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -59,7 +59,7 @@ def auto_fill(shape, fill_stitch_graph = build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing) check_graph(fill_stitch_graph, shape, max_stitch_length) travel_graph = build_travel_graph(fill_stitch_graph, shape, angle, underpath) - path = find_stitch_path(fill_stitch_graph, starting_point, ending_point) + path = find_stitch_path(fill_stitch_graph, travel_graph, starting_point, ending_point) result = path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last) @@ -281,14 +281,14 @@ def check_graph(graph, shape, max_stitch_length): "This most often happens because your shape is made up of multiple sections that aren't connected.")) -def nearest_node_on_outline(graph, point): +def nearest_node(graph, point): point = shgeo.Point(*point) nearest = min(graph.nodes, key=lambda node: shgeo.Point(*node).distance(point)) return nearest -def find_stitch_path(graph, starting_point=None, ending_point=None): +def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None): """find a path that visits every grating segment exactly once Theoretically, we just need to find an Eulerian Path in the graph. @@ -315,12 +315,13 @@ def find_stitch_path(graph, starting_point=None, ending_point=None): if starting_point is None: starting_point = graph.nodes.keys()[0] - starting_node = nearest_node_on_outline(graph, starting_point) + starting_node = nearest_node(graph, starting_point) if ending_point is None: + ending_point = starting_point ending_node = starting_node else: - ending_node = nearest_node_on_outline(graph, ending_point) + ending_node = nearest_node(graph, ending_point) # The algorithm below is adapted from networkx.eulerian_circuit(). path = [] @@ -354,6 +355,14 @@ def find_stitch_path(graph, starting_point=None, ending_point=None): if starting_node is not ending_node: path.insert(0, PathEdge((starting_node, ending_node), key="initial")) + real_start = nearest_node(travel_graph, starting_point) + if real_start != starting_node: + path.insert(0, PathEdge((real_start, starting_node), key="outline")) + + real_end = nearest_node(travel_graph, ending_point) + if real_end != ending_node: + path.append(PathEdge((ending_node, real_end), key="outline")) + return path From 69df0271b5e9c5be8ff0d16fe6e24f1e7ed8e6fc Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 20:35:54 -0400 Subject: [PATCH 16/54] protect against shapely error --- lib/stitches/auto_fill.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index b85d335e5..8435d156c 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -268,6 +268,11 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): graph.add_edge(*edge, weight=p1.distance(p2)) + # otherwise we sometimes get exceptions like this: + # Exception AttributeError: "'NoneType' object has no attribute 'GEOSSTRtree_destroy'" in + # > ignored + del rtree + return graph From 4c1f1bc2bbf9277e399dc8ddbed5c0d81d930a34 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 20:45:29 -0400 Subject: [PATCH 17/54] tidy up start/end travel code --- lib/stitches/auto_fill.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 8435d156c..2414e937a 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -360,13 +360,14 @@ def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None if starting_node is not ending_node: path.insert(0, PathEdge((starting_node, ending_node), key="initial")) + # If the starting and/or ending point falls far away from the end of a row + # of stitches (like can happen at the top of a square), then we need to + # add travel stitch to that point. real_start = nearest_node(travel_graph, starting_point) - if real_start != starting_node: - path.insert(0, PathEdge((real_start, starting_node), key="outline")) + path.insert(0, PathEdge((real_start, starting_node), key="outline")) real_end = nearest_node(travel_graph, ending_point) - if real_end != ending_node: - path.append(PathEdge((ending_node, real_end), key="outline")) + path.append(PathEdge((ending_node, real_end), key="outline")) return path From 1e5733bbcdb000b27a0569b2b838cc0c04ffb461 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 20:46:26 -0400 Subject: [PATCH 18/54] add first stitch --- lib/stitches/auto_fill.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 2414e937a..8ad9fa166 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -442,6 +442,10 @@ def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, stitches = [] + # If the very first stitch is travel, we'll omit it in travel(), so add it here. + if not path[0].is_segment(): + stitches.append(InkstitchPoint(*path[0].nodes[0])) + for edge in path: if edge.is_segment(): stitch_row(stitches, edge[0], edge[1], angle, row_spacing, max_stitch_length, staggers, skip_last) From 97ced89e8793ff608588324304e53427d180ee1e Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 22:41:57 -0400 Subject: [PATCH 19/54] switch to multigraph to avoid accidentally deleting outline edges --- lib/stitches/auto_fill.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 8ad9fa166..a7ac49e78 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -149,7 +149,7 @@ def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): # Tag each node with its index and projection. graph.add_node(node, index=outline_index, projection=outline_projection) - add_edges_between_outline_nodes(graph, key="outline") + add_edges_between_outline_nodes(graph) for node1, node2, key, data in graph.edges(keys=True, data=True): if key == "outline": @@ -168,7 +168,7 @@ def tag_nodes_with_outline_and_projection(graph, shape, nodes): graph.add_node(node, outline=outline_index, projection=outline_projection) -def add_edges_between_outline_nodes(graph, key=None): +def add_edges_between_outline_nodes(graph): """Add edges around the outlines of the graph, connecting sequential nodes. This function assumes that all nodes in the graph are on the outline of the @@ -188,10 +188,7 @@ def add_edges_between_outline_nodes(graph, key=None): # add an edge between each successive node for i, (node1, node2) in enumerate(zip(nodes, nodes[1:] + [nodes[0]])): data = dict(outline=outline_index, index=i) - if key: - graph.add_edge(node1, node2, key=key, **data) - else: - graph.add_edge(node1, node2, **data) + graph.add_edge(node1, node2, key="outline", **data) def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): @@ -215,7 +212,7 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): calculation. """ - graph = networkx.Graph() + graph = networkx.MultiGraph() # Add all the nodes from the main graph. This will be all of the endpoints # of the rows of stitches. Every node will be on the outline of the shape. @@ -237,13 +234,13 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): tag_nodes_with_outline_and_projection(graph, shape, endpoints) add_edges_between_outline_nodes(graph) - for start, end in graph.edges: + for start, end, key in graph.edges: p1 = InkstitchPoint(*start) p2 = InkstitchPoint(*end) # Set the weight equal to triple the edge length, to encourage travel() # to avoid them when underpathing is enabled. - graph.add_edge(start, end, weight=3 * p1.distance(p2)) + graph[start][end][key]["weight"] = 3 * p1.distance(p2) if underpath: segments = [] @@ -260,7 +257,7 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): interior_edges = grating1.symmetric_difference(grating2) for ls in interior_edges.geoms: p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] - edge = (p1.as_tuple(), p2.as_tuple()) + edge = (p1.as_tuple(), p2.as_tuple(), 'travel') for segment in rtree.query(ls): start, end = segment.coords From 90fe0451695dafc8fff2272b122c9112dd205bd6 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 22:43:36 -0400 Subject: [PATCH 20/54] don't try to end inside the shape --- lib/stitches/auto_fill.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index a7ac49e78..e9c9b9e53 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -283,9 +283,9 @@ def check_graph(graph, shape, max_stitch_length): "This most often happens because your shape is made up of multiple sections that aren't connected.")) -def nearest_node(graph, point): +def nearest_node(nodes, point, attr=None): point = shgeo.Point(*point) - nearest = min(graph.nodes, key=lambda node: shgeo.Point(*node).distance(point)) + nearest = min(nodes, key=lambda node: shgeo.Point(*node).distance(point)) return nearest @@ -363,7 +363,13 @@ def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None real_start = nearest_node(travel_graph, starting_point) path.insert(0, PathEdge((real_start, starting_node), key="outline")) - real_end = nearest_node(travel_graph, ending_point) + # We're willing to start inside the shape, since we'll just cover the + # stitches. We have to end on the outline of the shape. This is mostly + # relevant in the case that the user specifies an underlay with an inset + # value, because the starting point (and possibly ending point) can be + # inside the shape. + outline_nodes = [node for node, outline in travel_graph.nodes(data="outline") if outline is not None] + real_end = nearest_node(outline_nodes, ending_point) path.append(PathEdge((ending_node, real_end), key="outline")) return path From eada4bed7eb5cf8671eed8e208889db88552815b Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Mar 2019 22:43:54 -0400 Subject: [PATCH 21/54] don't let simulator preview thread crash --- lib/gui/simulator.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/gui/simulator.py b/lib/gui/simulator.py index e0d78983c..c601ab66d 100644 --- a/lib/gui/simulator.py +++ b/lib/gui/simulator.py @@ -699,7 +699,14 @@ class SimulatorPreview(Thread): self.update_patches() def update_patches(self): - patches = self.parent.generate_patches(self.refresh_needed) + try: + patches = self.parent.generate_patches(self.refresh_needed) + except: + # If something goes wrong when rendering patches, it's not great, + # but we don't really want the simulator thread to crash. Instead, + # just swallow the exception and abort. It'll show up when they + # try to actually embroider the shape. + return if patches and not self.refresh_needed.is_set(): stitch_plan = patches_to_stitch_plan(patches) From e7a8a3677b805d338362be6556aa702d40791fa2 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 21 Mar 2019 21:07:48 -0400 Subject: [PATCH 22/54] put underlay underpath checkbox in the right tab --- lib/elements/auto_fill.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index e78943ec0..a30bb6df3 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -131,13 +131,15 @@ class AutoFill(Fill): return self.get_boolean_param('underpath', True) @property - @param('underlay_underpath', - _('Underpath'), - tooltip=_('Travel inside the shape when moving from section to section. Underpath ' - 'stitches avoid traveling in the direction of the row angle so that they ' - 'are not visible. This gives them a jagged appearance.'), - type='boolean', - default=False) + @param( + 'underlay_underpath', + _('Underpath'), + tooltip=_('Travel inside the shape when moving from section to section. Underpath ' + 'stitches avoid traveling in the direction of the row angle so that they ' + 'are not visible. This gives them a jagged appearance.'), + group=_('AutoFill Underlay'), + type='boolean', + default=False) def underlay_underpath(self): return self.get_boolean_param('underpath', False) From e54b9d7d8dae59321c6bfbc2de1b02e06c58466d Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 21 Mar 2019 21:25:14 -0400 Subject: [PATCH 23/54] default underlay underpathing to enabled as well --- lib/elements/auto_fill.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index a30bb6df3..bbb2aff17 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -139,9 +139,9 @@ class AutoFill(Fill): 'are not visible. This gives them a jagged appearance.'), group=_('AutoFill Underlay'), type='boolean', - default=False) + default=True) def underlay_underpath(self): - return self.get_boolean_param('underpath', False) + return self.get_boolean_param('underpath', True) def shrink_or_grow_shape(self, amount): if amount: From cf6621d0dd748376ed0fc8b138458a37d75b5180 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Fri, 22 Mar 2019 20:08:47 -0400 Subject: [PATCH 24/54] make travel stitch prefer the center of the shape --- lib/stitches/auto_fill.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index e9c9b9e53..39a924fea 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -238,9 +238,9 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): p1 = InkstitchPoint(*start) p2 = InkstitchPoint(*end) - # Set the weight equal to triple the edge length, to encourage travel() + # Set the weight equal to 5x the edge length, to encourage travel() # to avoid them when underpathing is enabled. - graph[start][end][key]["weight"] = 3 * p1.distance(p2) + graph[start][end][key]["weight"] = 5 * p1.distance(p2) if underpath: segments = [] @@ -263,7 +263,16 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): start, end = segment.coords fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) - graph.add_edge(*edge, weight=p1.distance(p2)) + # The weight of a travel edge is the length of the line segment. + weight = p1.distance(p2) + + # Give a bonus to edges that are far from the outline of the shape. + # This includes the outer outline and the outlines of the holes. + # The result is that travel stitching will tend to hug the center + # of the shape. + weight /= ls.distance(shape.boundary) + 0.1 + + graph.add_edge(*edge, weight=weight) # otherwise we sometimes get exceptions like this: # Exception AttributeError: "'NoneType' object has no attribute 'GEOSSTRtree_destroy'" in From af6588a4426c0998fa51daf29d9b8f8f983bb0dd Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sun, 24 Mar 2019 14:50:49 -0400 Subject: [PATCH 25/54] 'fix' style --- lib/gui/simulator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gui/simulator.py b/lib/gui/simulator.py index c601ab66d..6a2a08a93 100644 --- a/lib/gui/simulator.py +++ b/lib/gui/simulator.py @@ -701,7 +701,7 @@ class SimulatorPreview(Thread): def update_patches(self): try: patches = self.parent.generate_patches(self.refresh_needed) - except: + except: # noqa: E722 # If something goes wrong when rendering patches, it's not great, # but we don't really want the simulator thread to crash. Instead, # just swallow the exception and abort. It'll show up when they From f6e6d099d2ada30cda3ee2ece9a7cf93d8442040 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sun, 24 Mar 2019 14:57:47 -0400 Subject: [PATCH 26/54] penalize outline edges more --- lib/stitches/auto_fill.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 39a924fea..9ccc93b2c 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -238,9 +238,9 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): p1 = InkstitchPoint(*start) p2 = InkstitchPoint(*end) - # Set the weight equal to 5x the edge length, to encourage travel() + # Set the weight equal to 10x the edge length, to encourage travel() # to avoid them when underpathing is enabled. - graph[start][end][key]["weight"] = 5 * p1.distance(p2) + graph[start][end][key]["weight"] = 10 * p1.distance(p2) if underpath: segments = [] From f435520663d59378546426ea7263e78d51362c44 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Tue, 26 Mar 2019 18:24:02 +0100 Subject: [PATCH 27/54] Add Custom Page to Print PDF (#418) --- lib/extensions/print_pdf.py | 8 +- print/resources/inkstitch-logo.svg | 125 +++++++++++--- print/resources/inkstitch.js | 218 ++++++++++++++----------- print/resources/style.css | 139 +++++++++------- print/templates/custom-page.html | 40 +++++ print/templates/index.html | 19 ++- print/templates/operator_overview.html | 2 +- print/templates/ui.html | 67 +++++--- 8 files changed, 402 insertions(+), 216 deletions(-) create mode 100644 print/templates/custom-page.html diff --git a/lib/extensions/print_pdf.py b/lib/extensions/print_pdf.py index c718fa092..4913a32a0 100644 --- a/lib/extensions/print_pdf.py +++ b/lib/extensions/print_pdf.py @@ -353,7 +353,13 @@ class Print(InkstitchExtension): template = env.get_template('index.html') return template.render( - view={'client_overview': False, 'client_detailedview': False, 'operator_overview': True, 'operator_detailedview': True}, + view={ + 'client_overview': False, + 'client_detailedview': False, + 'operator_overview': True, + 'operator_detailedview': True, + 'custom_page': False + }, logo={'src': '', 'title': 'LOGO'}, date=date.today(), client="", diff --git a/print/resources/inkstitch-logo.svg b/print/resources/inkstitch-logo.svg index d9a298cfe..138318b90 100644 --- a/print/resources/inkstitch-logo.svg +++ b/print/resources/inkstitch-logo.svg @@ -1,27 +1,98 @@ - - - - - - - - - - - - - - - - - + + + +image/svg+xml + + + + + + + + + + + + + \ No newline at end of file diff --git a/print/resources/inkstitch.js b/print/resources/inkstitch.js index ac8c72b4c..79c6d9c3c 100644 --- a/print/resources/inkstitch.js +++ b/print/resources/inkstitch.js @@ -285,7 +285,7 @@ $(function() { /* Contendeditable Fields */ - $('body').on('focusout', '[contenteditable="true"]:not(.footer-info)', function() { + $('body').on('focusout', '[contenteditable="true"]:not(.info-text)', function() { /* change svg scale */ var content = $(this).text(); var field_name = $(this).attr('data-field-name'); @@ -326,6 +326,8 @@ $(function() { } else if (item.is('div.footer-info')) { $('#footer-info-text').html(value); item.html(value); + } else if (item.is('#custom-page-content')) { + $('#custom-page-content').html(value); } else { item.text(value); } @@ -339,7 +341,7 @@ $(function() { }, 500); }); - $('body').on('keypress', '[contenteditable="true"]:not(#footer-info-text)', function(e) { + $('body').on('keypress', '[contenteditable="true"]:not(.info-text)', function(e) { if (e.which == 13) { // pressing enter defocuses the element this.blur(); @@ -360,8 +362,8 @@ $(function() { } }); - $('#footer-info-text[contenteditable="true"]').focusout(function() { - updateFooter(); + $('.info-text[contenteditable="true"]').focusout(function() { + updateEditableText($(this)); }); /* Settings Bar */ @@ -415,119 +417,142 @@ $(function() { }); // Footer - function getEditMode(){ - return $('#switch-mode').prop('checked'); + function getEditMode(element){ + return element.closest('fieldset').find('.switch-mode').prop('checked'); } - $('#switch-mode').change(function() { - var editMode = getEditMode(); + $('.switch-mode').change(function() { + var element = $(this); + var info_text = element.closest('fieldset').find('.info-text'); + var editMode = getEditMode(element); if (editMode) { - $('#footer-info-text').text( $('#footer-info-text' ).html()); - $('#tool-bar .edit-only').prop("disabled", true); + info_text.text( info_text.html() ); + element.closest('.tool-bar').find('.tb-button.edit-only').prop("disabled", true); } else { - $('#footer-info-text').css('display', 'block'); - var sourceText = $('#footer-info-text').text(); - $('#footer-info-text').html( sourceText ); - $('#tool-bar .tb-button.edit-only').prop('disabled', false); + info_text.css('display', 'block'); + var sourceText = info_text.text(); + info_text.html( sourceText ); + element.closest('.tool-bar').find('.tb-button.edit-only').prop('disabled', false); } }); - function updateFooter() { - var editMode = getEditMode(); - var footerText = ''; + function updateEditableText(element) { + var editMode = getEditMode(element); + var info_text = element.closest('fieldset').find('.info-text'); + var content = info_text.html(); + var editableText = ''; + if (editMode) { - footerText = $('#footer-info-text' ).text(); + editableText = info_text.text(); } else { - footerText = $('#footer-info-text').html(); + editableText = info_text.html(); + } + + if(info_text.is('#footer-info-text')) { + $('div.footer-info').html(editableText); + $.postJSON('/settings/footer-info', {value: content}); + } else { + $.postJSON('/settings/custom-page-content', {value: content}); } - $('.footer-info').html(footerText); - var content = $('.footer-info').html(); - $.postJSON('/settings/footer-info', {value: content}); } function formatText(selection, value) { - var htmlMode = getEditMode(); - if(!htmlMode) { if(window.getSelection().toString()){ document.execCommand(selection, false, value); - updateFooter(); } - } } - $('#tb-bold').click(function(selection) { - formatText('bold'); - }); - - $('#tb-italic').click(function() { - formatText('italic'); - }); - - $('#tb-underline').click(function() { - formatText('underline'); - }); - - $('#tb-remove').click(function() { - formatText('removeFormat'); - }); - - $('#tb-hyperlink').click(function() { - formatText('createlink', 'tempurl'); - $('#footer-url').css('display', 'block'); - }); - - $('#url-ok').click(function() { - var link = $('#footer-link').val(); - $('#footer-info-text a[href="tempurl"]').attr('href', link); - $('#footer-link').val('https://'); - $('#footer-url').css('display', 'none'); - updateFooter(); - }); - - $('#url-cancel').click(function() { - $('#footer-info-text a[href="tempurl"]').contents().unwrap(); - $('#footer-link').val('https://'); - $('#footer-url').css('display', 'none'); - updateFooter(); - }); - - $('#tb-mail').click(function() { - formatText('createlink', 'tempurl'); - $('#footer-email').css('display', 'block'); - }); - - $('#mail-ok').click(function() { - var link = 'mailto:' + $('#footer-mail').val(); - $('#footer-info-text a[href="tempurl"]').attr('href', link); - $('#footer-mail').val('@'); - $('#footer-email').css('display', 'none'); - updateFooter(); - }); - - $('#mail-cancel').click(function() { - $('#footer-info-text a[href="tempurl"]').contents().unwrap(); - $('#footer-mail').val('@'); - $('#footer-email').css('display', 'none'); - updateFooter(); - }); - - $('#tb-reset').click(function() { - $('#footer-reset').css('display', 'block'); - }); - - $('#reset-ok').click(function() { - var htmlMode = getEditMode(); - if(!htmlMode) { - $('#footer-info-text').html($('#footer-info-original').html()); - } else { - $('#footer-info-text').text($('#footer-info-original').html()); + $('.tb-bold').click(function() { + if(!getEditMode($(this))) { + formatText('bold'); + updateEditableText($(this)); } - $('#footer-reset').css('display', 'none'); - updateFooter(); }); - $('#reset-cancel').click(function() { - $('#footer-reset').css('display', 'none'); + $('.tb-italic').click(function() { + if(!getEditMode($(this))) { + formatText('italic'); + updateEditableText($(this)); + } + }); + + $('.tb-underline').click(function() { + if(!getEditMode($(this))) { + formatText('underline'); + updateEditableText($(this)); + } + }); + + $('.tb-remove').click(function() { + if(!getEditMode($(this))) { + formatText('removeFormat'); + updateEditableText($(this)); + } + }); + + $('.tb-hyperlink').click(function() { + if(!getEditMode($(this))) { + formatText('createlink', 'tempurl'); + updateEditableText($(this)); + $(this).closest('.tool-bar').children('.url-window').css('display', 'block'); + } + }); + + $('.url-ok').click(function() { + var link = $(this).closest('.tool-bar').find('.user-url').val(); + $(this).closest('fieldset').find('.info-text').find('a[href="tempurl"]').attr('href', link); + $('.user-url').val('https://'); + $('.url-window').css('display', 'none'); + updateEditableText($(this)); + }); + + $('.url-cancel').click(function() { + $(this).closest('fieldset').find('.info-text').find('a[href="tempurl"]').contents().unwrap(); + $('.user-url').val('https://'); + $('.url-window').css('display', 'none'); + updateEditableText($(this)); + }); + + $('.tb-mail').click(function() { + if(!getEditMode($(this))) { + formatText('createlink', 'tempurl'); + updateEditableText($(this)); + $(this).closest('.tool-bar').find('.mail-window').css('display', 'block'); + } + }); + + $('.mail-ok').click(function() { + var link = 'mailto:' + $(this).closest('.tool-bar').find('.user-mail').val(); + $(this).closest('fieldset').find('.info-text').find('a[href="tempurl"]').attr('href', link); + $('.user-mail').val('@'); + $('.mail-window').css('display', 'none'); + updateEditableText($(this)); + }); + + $('.mail-cancel').click(function() { + $(this).closest('fieldset').find('.info-text').find('a[href="tempurl"]').contents().unwrap(); + $('.user-mail').val('@'); + $('.mail-window').css('display', 'none'); + updateEditableText($(this)); + }); + + $('.tb-reset').click(function() { + $(this).closest('.tool-bar').find('.reset-window').css('display', 'block'); + }); + + $('.reset-ok').click(function() { + var htmlMode = getEditMode($(this)); + if(!htmlMode) { + $(this).closest('fieldset').find('.info-text').html($(this).closest('.tool-bar').find('.original-info').html()); + } else { + $(this).closest('fieldset').find('.info-text').text($(this).closest('.tool-bar').find('.original-info').html()); + } + $('.reset-window').css('display', 'none'); + updateEditableText($(this)); + }); + + $('.reset-cancel').click(function() { + $('.reset-window').css('display', 'none'); }); $('body').on("click", ".edit-footer-link", function() { @@ -713,6 +738,7 @@ $(function() { settings["operator-overview"] = $("[data-field-name='operator-overview']").is(':checked'); settings["operator-detailedview"] = $("[data-field-name='operator-detailedview']").is(':checked'); settings["operator-detailedview-thumbnail-size"] = $("[data-field-name='operator-detailedview-thumbnail-size']").val(); + settings["custom-page"] = $("[data-field-name='custom-page']").is(':checked'); settings["paper-size"] = $('select#printing-size').find(':selected').val(); var logo = $("figure.brandlogo img").attr('src'); diff --git a/print/resources/style.css b/print/resources/style.css index f697c7dca..9ffff07d8 100644 --- a/print/resources/style.css +++ b/print/resources/style.css @@ -66,30 +66,6 @@ body { position: relative; } -/* Printing Size */ - .page.a4 { - width: 205mm; - height: 292mm; - padding: 15mm; - } - - .page.client-overview.a4 header, .page.operator-overview.a4 header { - height: 50mm; - flex-direction: row; - } - - .page.client-overview.a4 div.job-details, .page.operator-overview.a4 div.job-details { - width: 100%; - } - - .page.client-overview.a4 .client-overview-main figure.inksimulation { - height: 150mm; - } - - .page.client-overview.a4 figure.brandlogo, .page.operator-overview.a4 figure.brandlogo { - margin: -6mm 2.5mm; - } - /* Settings */ .ui { @@ -289,7 +265,7 @@ body { position: relative; } - #footer-info-text { + .info-text { width: 100%; min-height: 5em; border: 1px solid darkgrey; @@ -298,23 +274,25 @@ body { background: white; } - #tool-bar .tb-button { - border: 1px solid darkgrey; + .tb-button { + border: 1px solid darkgrey !important; border-bottom: none; margin-bottom: -0.2em; - cursor: pointer; - color: #413232; height: 2.2em; vertical-align: top; + padding: 5px; + cursor: pointer; + background: white; + color: black; } - #tool-bar .tb-button:disabled { - background: #eaeaea; - color: white; - cursor: auto; + .tb-button:disabled { + background: #eaeaea !important; + color: white !important; + cursor: auto !important; } - #edit-mode { + .edit-mode { display: inline; position: relative; border: 1px solid darkgray; @@ -322,18 +300,18 @@ body { vertical-align: top; } - #edit-mode input { + .edit-mode input { visibility: hidden; } - #edit-mode label { + .edit-mode label { cursor: pointer; vertical-align: middle; background: white; color: #413232; } - #edit-mode label:after { + .edit-mode label:after { opacity: 0.1; content: ''; position: absolute; @@ -348,21 +326,21 @@ body { transform: rotate(-45deg); } - #edit-mode label:hover::after { + .edit-mode label:hover::after { opacity: 0.5; } - #edit-mode input[type=checkbox]:checked + label:after { + .edit-mode input[type=checkbox]:checked + label:after { opacity: 1; } - #edit-mode span { + .edit-mode span { margin-left: 1em; } - div#footer-url, div#footer-email, div#footer-reset { + div.tb-popup { display: none; - position: absolute; + position: absolute !important; background: white; border: 1px solid black; padding: 5mm; @@ -371,7 +349,7 @@ body { z-index: 10; } - div#footer-info-original { + div.original-info { visibility: hidden; width: 0; height: 0; @@ -418,7 +396,6 @@ body { /* Header */ - header { width: 100%; height: 40mm; @@ -434,13 +411,11 @@ body { figure.brandlogo { height: 30mm; width: 30mm; - margin: 2.5mm; + margin: 0 4mm 0 0; } figure.brandlogo label { display: block; - width: 100%; - height: 100%; text-align: center; position: relative; } @@ -472,13 +447,6 @@ body { cursor: pointer; } - .operator-detailedview figure.brandlogo { - height: 20mm; - width: 30mm; - margin: 0 2.5mm; - text-align: left; - } - .operator-detailedview figure.brandlogo img { max-width: 30mm; max-height: 20mm; @@ -488,7 +456,7 @@ body { display: flex; display: -webkit-flex; /* old webkit */ display: -ms-flexbox; /* IE 10 */ - width: calc(100% - 50mm); + width: calc(100% - 40mm); height: 50%; flex-grow: 1; } @@ -515,6 +483,10 @@ body { padding-top: 6mm; } + .operator-overview figure.inksimulation { + height: 210mm; + } + .operator-overview div.job-details, .client-overview div.job-details { padding-top: 2mm; } @@ -904,6 +876,11 @@ body { .opd-color-block.large { display: block; margin: 5mm 0; + font-size: 14pt; + } + + .opd-color-block.large .operator-colorswatch { + font-size: 8pt; } .opd-color-block.large:first-child { @@ -987,6 +964,23 @@ body { display: none; } +/* Custom information sheet */ + .custom-page header { + height: 30mm; + } + + .custom-page main { + height: 230mm + } + #custom-page-tool-bar { + margin-bottom: 0.5em; + } + + #custom-page-content { + height: 200mm; + overflow-y: hidden; + text-align: left; + } /* Color Swatch Logic */ /* reference : http://jsfiddle.net/jrulle/btg63ezy/3/ */ @@ -1120,7 +1114,33 @@ body { height: calc(100% / 5); width: calc(100% / 12); } - + + +/* Print Size A4 */ + + .page.a4 { + width: 210mm; + height: 296mm; + padding: 15mm; + } + + .page.client-overview.a4 header, .page.operator-overview.a4 header { + height: 50mm; + flex-direction: row; + } + + .page.client-overview.a4 div.job-details, .page.operator-overview.a4 div.job-details { + width: 100%; + } + + .page.client-overview.a4 .client-overview-main figure.inksimulation { + height: 150mm; + } + + .page.client-overview.a4 figure.brandlogo, .page.operator-overview.a4 figure.brandlogo { + margin: 0 4mm -2mm 0; + } + @media screen { .page { margin-top: 20mm !important; @@ -1153,8 +1173,11 @@ body { .ui, #settings-ui, #errors, - span.logo-instructions { - display: none; + span.logo-instructions, + #custom-page-tool-bar, + #custom-page-content, + .notice--warning { + display: none !important; } .header-field:not(:empty)::before { diff --git a/print/templates/custom-page.html b/print/templates/custom-page.html new file mode 100644 index 000000000..1ed15dae9 --- /dev/null +++ b/print/templates/custom-page.html @@ -0,0 +1,40 @@ +
+ {% include 'headline.html' %} +
+
+
+
+ + + + + + + +

+ + +

+
+

{{ _("Enter URL") }}:

+

+
+
+

{{ _("Enter E-Mail") }}:

+

+
+
{{ _("Custom Information Sheet") }}
+
+

{{ _("This will reset your custom text to the default.") }}

+

{{ _("All changes will be lost.") }}

+

+
+
+
{{ _("Custom Information Sheet") }}
+

Note: If you are using Firefox, use visible URLs. Links will not be printed to PDF with this browser.

+
+
+ {% include 'footer.html' %} diff --git a/print/templates/index.html b/print/templates/index.html index c7fa5d745..d0ab848f3 100644 --- a/print/templates/index.html +++ b/print/templates/index.html @@ -9,22 +9,23 @@ {% include 'ui.html' %} - {# client overview #} -
{% include 'print_overview.html' %}
+
{% include 'print_overview.html' %}
{# client detailedview #} - {% set printview = 'detailedview' %} - {% for color_block in color_blocks %} - {% set outer_loop = loop %} -
{% include 'print_detail.html' %}
- {% endfor %} + {% set printview = 'detailedview' %} + {% for color_block in color_blocks %} + {% set outer_loop = loop %} +
{% include 'print_detail.html' %}
+ {% endfor %} {# operator overview #} -
{% include 'operator_overview.html' %}
+
{% include 'operator_overview.html' %}
{# operator detailed view #} - {% include 'operator_detailedview.html' %} + {% include 'operator_detailedview.html' %} +{# custom pages #} +
{% include 'custom-page.html' %}
diff --git a/print/templates/operator_overview.html b/print/templates/operator_overview.html index 8f70b4f01..a3090c1f1 100644 --- a/print/templates/operator_overview.html +++ b/print/templates/operator_overview.html @@ -25,7 +25,7 @@
-
+
{{ svg_overview|replace("
  • ", "")|replace("
  • ", "")|safe }} {% include 'ui_svg_action_buttons.html' %}
    diff --git a/print/templates/ui.html b/print/templates/ui.html index 71908b52f..23e391453 100644 --- a/print/templates/ui.html +++ b/print/templates/ui.html @@ -36,11 +36,30 @@
    {{ _('Print Layouts') }} -

    -

    -

    -

    -

    {{ _('Thumbnail size') }}: 15mm

    +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +

    {{ _('Thumbnail size') }}: + + 15mm +

    +

    + + +

    @@ -58,31 +77,31 @@ From 5315c34c4dac3e7efee9039de74b831d49f1970a Mon Sep 17 00:00:00 2001 From: Ink/Stitch Crowdin integration Date: Wed, 27 Mar 2019 02:53:07 +0000 Subject: [PATCH 28/54] new translations from Crowdin --- translations/messages_af_ZA.po | 125 ++++++++++++++++++--------------- translations/messages_ar_SA.po | 125 ++++++++++++++++++--------------- translations/messages_ca_ES.po | 125 ++++++++++++++++++--------------- translations/messages_cs_CZ.po | 125 ++++++++++++++++++--------------- translations/messages_da_DK.po | 125 ++++++++++++++++++--------------- translations/messages_de_DE.po | 125 ++++++++++++++++++--------------- translations/messages_el_GR.po | 125 ++++++++++++++++++--------------- translations/messages_en_US.po | 125 ++++++++++++++++++--------------- translations/messages_es_ES.po | 125 ++++++++++++++++++--------------- translations/messages_fi_FI.po | 125 ++++++++++++++++++--------------- translations/messages_fr_FR.po | 125 ++++++++++++++++++--------------- translations/messages_he_IL.po | 125 ++++++++++++++++++--------------- translations/messages_hu_HU.po | 125 ++++++++++++++++++--------------- translations/messages_it_IT.po | 125 ++++++++++++++++++--------------- translations/messages_ja_JP.po | 125 ++++++++++++++++++--------------- translations/messages_ko_KR.po | 125 ++++++++++++++++++--------------- translations/messages_nl_NL.po | 125 ++++++++++++++++++--------------- translations/messages_no_NO.po | 125 ++++++++++++++++++--------------- translations/messages_pl_PL.po | 125 ++++++++++++++++++--------------- translations/messages_pt_BR.po | 125 ++++++++++++++++++--------------- translations/messages_pt_PT.po | 125 ++++++++++++++++++--------------- translations/messages_ro_RO.po | 125 ++++++++++++++++++--------------- translations/messages_ru_RU.po | 125 ++++++++++++++++++--------------- translations/messages_sr_SP.po | 125 ++++++++++++++++++--------------- translations/messages_sv_SE.po | 125 ++++++++++++++++++--------------- translations/messages_tr_TR.po | 125 ++++++++++++++++++--------------- translations/messages_uk_UA.po | 125 ++++++++++++++++++--------------- translations/messages_vi_VN.po | 125 ++++++++++++++++++--------------- translations/messages_zh_CN.po | 125 ++++++++++++++++++--------------- translations/messages_zh_TW.po | 125 ++++++++++++++++++--------------- 30 files changed, 2040 insertions(+), 1710 deletions(-) diff --git a/translations/messages_af_ZA.po b/translations/messages_af_ZA.po index 3fbe3bd64..0fd01c333 100644 --- a/translations/messages_af_ZA.po +++ b/translations/messages_af_ZA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Afrikaans\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ar_SA.po b/translations/messages_ar_SA.po index 6f292a7c4..ba4322325 100644 --- a/translations/messages_ar_SA.po +++ b/translations/messages_ar_SA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Arabic\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ca_ES.po b/translations/messages_ca_ES.po index 281035a19..3b5b3c235 100644 --- a/translations/messages_ca_ES.po +++ b/translations/messages_ca_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Catalan\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_cs_CZ.po b/translations/messages_cs_CZ.po index 759e8c903..f06b2a852 100644 --- a/translations/messages_cs_CZ.po +++ b/translations/messages_cs_CZ.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_da_DK.po b/translations/messages_da_DK.po index f9f903dc3..700e02891 100644 --- a/translations/messages_da_DK.po +++ b/translations/messages_da_DK.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Danish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_de_DE.po b/translations/messages_de_DE.po index 285246ac2..682eaddda 100644 --- a/translations/messages_de_DE.po +++ b/translations/messages_de_DE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -510,7 +510,7 @@ msgstr "Bitte wähle mindestens eine Zeile aus, die in eine Satinkolumne konvert msgid "Only simple lines may be converted to satin columns." msgstr "Nur einfache Linien können in Satinkolumnen konvertiert werden." -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "%s kann nicht in eine Satinkolumne konvertiert werden, da sie sich selbst berührt. Versuche es in mehrere Pfade aufzuteilen." @@ -552,8 +552,10 @@ msgid "Install" msgstr "Installieren" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "Abbrechen" @@ -682,7 +684,7 @@ msgid "A print preview has been opened in your web browser. This window will st msgstr "Eine Druckvorschau wurde im Webbrowser geöffnet. Dieses Fenster dient zur Sicherstellung der Kommunikation zwischen Inkscape und dem Browser.\n\n" "Dieses Fenster schließt automatisch, wenn die Druckvorschau geschlossen wird. Es kann auch manuell beendet werden, falls nötig." -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "Ink/Stitch Drucken" @@ -901,12 +903,38 @@ msgstr "nein" msgid "Enter thread name..." msgstr "Garnbezeichnung eingeben..." +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "URL eingeben" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "OK" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "E-Mail eingeben" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "Dadurch wird Ihr benutzerdefinierter Text auf den Standard zurückgesetzt." + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "Alle Änderungen gehen verloren." + #: print/templates/footer.html:2 msgid "Page" msgstr "Seite" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "Erstellt mit" @@ -1059,11 +1087,11 @@ msgstr "Dokumenteinstellungen" msgid "Branding" msgstr "Branding" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "Voraussichtliche Dauer" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "Design" @@ -1075,125 +1103,108 @@ msgstr "Papierformat" msgid "Print Layouts" msgstr "Druck-Layouts" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "Kundenlayout: Übersicht" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "Kundenlayout: Detailansicht" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "Ausführungslayout: Übersicht" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "Ausführungslayout: Detailansicht" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "Vorschaugröße" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "Dies umfasst die Einstellungen zum Dokument, zur Berechnung der voraussichtlichen Dauer und das Logo." -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "Als Standardeinstellung speichern" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "Logo" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "Fußzeile: Kontaktinformationen des Bedieners" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "URL eingeben" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "OK" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "E-Mail eingeben" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "Dadurch wird Ihr benutzerdefinierter Text auf den Standard zurückgesetzt." - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "Alle Änderungen gehen verloren." - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "Angaben zur Stickmaschine" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "Durchschnittliche Geschwindigkeit" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "Stiche pro Minute " -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "Zeitfaktoren" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "Umfasst die durchschnittliche Zeit für die Vorbereitung der Maschine, Fadenbruch und/oder das Wechseln der Spule, etc." -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "Sekunden die der berechneten Gesamtdauer hinzugefügt werden*" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "Dies wird auf die Gesamtdauer angerechnet." -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "Sekunden für den Farbwechsel*" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "Sekunden die beim Trim-Befehl benötigt werden" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "Zeige Dauer in" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "Enthält Seiteneinrichtung, geschätzte Zeit und auch das Branding." -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "Garnpalette" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "Keine" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "Bei einer Änderung der Garnpalette werden die Garnnamen und Bestellnummern neu berechnet. Vorherige Änderungen gehen dabei verloren. Soll die Aktion ausgeführt werden?" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "Ja" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "Nein" diff --git a/translations/messages_el_GR.po b/translations/messages_el_GR.po index c0032cc93..11f2ba415 100644 --- a/translations/messages_el_GR.po +++ b/translations/messages_el_GR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Greek\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_en_US.po b/translations/messages_en_US.po index e6d4246c7..dfa008d84 100644 --- a/translations/messages_en_US.po +++ b/translations/messages_en_US.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:53\n" "Last-Translator: lexelby \n" "Language-Team: English\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_es_ES.po b/translations/messages_es_ES.po index e830af7af..37e85589b 100644 --- a/translations/messages_es_ES.po +++ b/translations/messages_es_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_fi_FI.po b/translations/messages_fi_FI.po index 97a7abf65..cf99d5895 100644 --- a/translations/messages_fi_FI.po +++ b/translations/messages_fi_FI.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Finnish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_fr_FR.po b/translations/messages_fr_FR.po index 1b27fd04a..37f1ef709 100644 --- a/translations/messages_fr_FR.po +++ b/translations/messages_fr_FR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "Veuillez sélectionner au moins une ligne pour convertir en colonne sati msgid "Only simple lines may be converted to satin columns." msgstr "Seulement les lignes simples peuvent être converties en colonnes satinées." -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "Impossible de convertir %s à une colonne satinée, car elle se croise elle-même. Essayez de la séparer en plusieurs chemins." @@ -551,8 +551,10 @@ msgid "Install" msgstr "Installer" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "Quitter" @@ -680,7 +682,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "Un aperçu avant impression a été ouvert dans votre navigateur web. Cette fenêtre reste ouverte pour communiquer avec le code JavaScript s’exécutant dans votre navigateur. Cette fenêtre se fermera après avoir fermer l’aperçu avant impression dans le navigateur, vous pouvez la fermer manuellement si nécessaire." -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "Imprimer Ink/Stitch" @@ -899,12 +901,38 @@ msgstr "non" msgid "Enter thread name..." msgstr "Entrez le nom du fil..." +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "Entrez l’URL" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "OK" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "Entrez votre adresse E-Mail" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "Cela réinitialisera votre texte personnalisé au défaut." + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "Toutes les modifications seront perdues." + #: print/templates/footer.html:2 msgid "Page" msgstr "Page" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "Fièrement généré avec" @@ -1057,11 +1085,11 @@ msgstr "Mise en page" msgid "Branding" msgstr "Image de marque" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "Durée estimée" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "Conception" @@ -1073,125 +1101,108 @@ msgstr "Taille d’impression" msgid "Print Layouts" msgstr "Mises en page d’impression" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "Vue d’ensemble du client" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "Vue détaillée de client" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "Vue d’ensemble de l’exécution" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "Vue détaillée de l'exécution" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "Taille de la miniature" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "Comprend ces paramètres de mise en page, le réglage de l'heure et l’icône." -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "Enregistrer comme valeurs par défaut" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "Logo" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "Pied de page : Coordonnées de l'opérateur" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "Entrez l’URL" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "OK" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "Entrez votre adresse E-Mail" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "Cela réinitialisera votre texte personnalisé au défaut." - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "Toutes les modifications seront perdues." - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "Réglages de la machine" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "Vitesse moyenne de la machine" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "Points par minute " -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "Facteurs de temps" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "Comprend le temps moyen de préparation de la machine, coupures de fils et/ou changement de canette, etc." -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "secondes à ajouter à la durée totale *" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "Cela s’ajoutera à la durée totale." -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "secondes nécessaires pour un changement de couleur *" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "secondes nécessaires pour une coupe de fil" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "Affichage de l’heure sur" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "Comprend la mise en page, temps estimé et aussi l’image de marque." -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "Palette de fil" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "Aucune" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "Changer la palette de fil recalculera les noms de fils et les numéros de catalogue, basé sur la nouvelle palette. Toutes les modifications apportées aux couleurs ou noms de fils seront perdues. Êtes-vous sûr/e ?" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "Oui" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "Non" diff --git a/translations/messages_he_IL.po b/translations/messages_he_IL.po index 505c22927..8265e963e 100644 --- a/translations/messages_he_IL.po +++ b/translations/messages_he_IL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_hu_HU.po b/translations/messages_hu_HU.po index 0880e3da3..15e585b87 100644 --- a/translations/messages_hu_HU.po +++ b/translations/messages_hu_HU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Hungarian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_it_IT.po b/translations/messages_it_IT.po index 1e1c890c7..d11514aaa 100644 --- a/translations/messages_it_IT.po +++ b/translations/messages_it_IT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ja_JP.po b/translations/messages_ja_JP.po index 5eb6df0d5..2ace3a01b 100644 --- a/translations/messages_ja_JP.po +++ b/translations/messages_ja_JP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ko_KR.po b/translations/messages_ko_KR.po index ff42f4f48..bcca397ed 100644 --- a/translations/messages_ko_KR.po +++ b/translations/messages_ko_KR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_nl_NL.po b/translations/messages_nl_NL.po index 7b19727f7..42db96510 100644 --- a/translations/messages_nl_NL.po +++ b/translations/messages_nl_NL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Dutch\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_no_NO.po b/translations/messages_no_NO.po index d05cc5ffc..5c302c7f3 100644 --- a/translations/messages_no_NO.po +++ b/translations/messages_no_NO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Norwegian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_pl_PL.po b/translations/messages_pl_PL.po index 6a65e847a..0993f50a1 100644 --- a/translations/messages_pl_PL.po +++ b/translations/messages_pl_PL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Polish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_pt_BR.po b/translations/messages_pt_BR.po index 9081f1b05..b5309cdd9 100644 --- a/translations/messages_pt_BR.po +++ b/translations/messages_pt_BR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:53\n" "Last-Translator: lexelby \n" "Language-Team: Portuguese, Brazilian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_pt_PT.po b/translations/messages_pt_PT.po index 7e2f9e9e0..55e787403 100644 --- a/translations/messages_pt_PT.po +++ b/translations/messages_pt_PT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -551,8 +551,10 @@ msgid "Install" msgstr "Instalar" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "Cancelar" @@ -680,7 +682,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -899,12 +901,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "Página" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1057,11 +1085,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1073,125 +1101,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ro_RO.po b/translations/messages_ro_RO.po index d51c10297..da820fab3 100644 --- a/translations/messages_ro_RO.po +++ b/translations/messages_ro_RO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:33\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_ru_RU.po b/translations/messages_ru_RU.po index 7fb8754c7..b58a38dc2 100644 --- a/translations/messages_ru_RU.po +++ b/translations/messages_ru_RU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_sr_SP.po b/translations/messages_sr_SP.po index 0802ad40b..c6685d1b3 100644 --- a/translations/messages_sr_SP.po +++ b/translations/messages_sr_SP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Serbian (Cyrillic)\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_sv_SE.po b/translations/messages_sv_SE.po index ba221f534..5359654b7 100644 --- a/translations/messages_sv_SE.po +++ b/translations/messages_sv_SE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Swedish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_tr_TR.po b/translations/messages_tr_TR.po index 026038686..e5b0e8066 100644 --- a/translations/messages_tr_TR.po +++ b/translations/messages_tr_TR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_uk_UA.po b/translations/messages_uk_UA.po index 43adbf45e..3609cd746 100644 --- a/translations/messages_uk_UA.po +++ b/translations/messages_uk_UA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:52\n" "Last-Translator: lexelby \n" "Language-Team: Ukrainian\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_vi_VN.po b/translations/messages_vi_VN.po index 376c61cc9..6a78625a1 100644 --- a/translations/messages_vi_VN.po +++ b/translations/messages_vi_VN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:53\n" "Last-Translator: lexelby \n" "Language-Team: Vietnamese\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_zh_CN.po b/translations/messages_zh_CN.po index 3aedc1a8c..980c46a50 100644 --- a/translations/messages_zh_CN.po +++ b/translations/messages_zh_CN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:53\n" "Last-Translator: lexelby \n" "Language-Team: Chinese Simplified\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" diff --git a/translations/messages_zh_TW.po b/translations/messages_zh_TW.po index 72b2e41a1..8100d71a7 100644 --- a/translations/messages_zh_TW.po +++ b/translations/messages_zh_TW.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-02-17 02:33+0000\n" -"PO-Revision-Date: 2019-02-17 02:34\n" +"POT-Creation-Date: 2019-03-27 02:52+0000\n" +"PO-Revision-Date: 2019-03-27 02:53\n" "Last-Translator: lexelby \n" "Language-Team: Chinese Traditional\n" "MIME-Version: 1.0\n" @@ -509,7 +509,7 @@ msgstr "" msgid "Only simple lines may be converted to satin columns." msgstr "" -#: lib/extensions/convert_to_satin.py:57 +#: lib/extensions/convert_to_satin.py:58 #, python-format msgid "Cannot convert %s to a satin column because it intersects itself. Try breaking it up into multiple paths." msgstr "" @@ -550,8 +550,10 @@ msgid "Install" msgstr "" #: lib/extensions/install.py:40 lib/extensions/lettering.py:50 -#: lib/extensions/params.py:327 print/templates/ui.html:72 -#: print/templates/ui.html:76 print/templates/ui.html:82 +#: lib/extensions/params.py:327 print/templates/custom-page.html:23 +#: print/templates/custom-page.html:27 print/templates/custom-page.html:33 +#: print/templates/ui.html:91 print/templates/ui.html:95 +#: print/templates/ui.html:101 msgid "Cancel" msgstr "" @@ -679,7 +681,7 @@ msgid "A print preview has been opened in your web browser. This window will st "This window will close after you close the print preview in your browser, or you can close it manually if necessary." msgstr "" -#: lib/extensions/print_pdf.py:411 +#: lib/extensions/print_pdf.py:417 msgid "Ink/Stitch Print" msgstr "" @@ -898,12 +900,38 @@ msgstr "" msgid "Enter thread name..." msgstr "" +#: print/templates/custom-page.html:22 print/templates/ui.html:90 +msgid "Enter URL" +msgstr "" + +#: print/templates/custom-page.html:23 print/templates/custom-page.html:27 +#: print/templates/custom-page.html:33 print/templates/ui.html:91 +#: print/templates/ui.html:95 print/templates/ui.html:101 +msgid "OK" +msgstr "" + +#: print/templates/custom-page.html:26 print/templates/ui.html:94 +msgid "Enter E-Mail" +msgstr "" + +#: print/templates/custom-page.html:29 print/templates/custom-page.html:36 +msgid "Custom Information Sheet" +msgstr "" + +#: print/templates/custom-page.html:31 print/templates/ui.html:99 +msgid "This will reset your custom text to the default." +msgstr "" + +#: print/templates/custom-page.html:32 print/templates/ui.html:100 +msgid "All changes will be lost." +msgstr "" + #: print/templates/footer.html:2 msgid "Page" msgstr "" -#: print/templates/footer.html:3 print/templates/ui.html:78 -#: print/templates/ui.html:85 +#: print/templates/footer.html:3 print/templates/ui.html:97 +#: print/templates/ui.html:104 msgid "Proudly generated with" msgstr "" @@ -1056,11 +1084,11 @@ msgstr "" msgid "Branding" msgstr "" -#: print/templates/ui.html:20 print/templates/ui.html:92 +#: print/templates/ui.html:20 print/templates/ui.html:111 msgid "Estimated Time" msgstr "" -#: print/templates/ui.html:21 print/templates/ui.html:126 +#: print/templates/ui.html:21 print/templates/ui.html:145 msgid "Design" msgstr "" @@ -1072,125 +1100,108 @@ msgstr "" msgid "Print Layouts" msgstr "" -#: print/templates/ui.html:39 print/templates/ui.html:116 +#: print/templates/ui.html:41 print/templates/ui.html:135 msgid "Client Overview" msgstr "" -#: print/templates/ui.html:40 print/templates/ui.html:117 +#: print/templates/ui.html:45 print/templates/ui.html:136 msgid "Client Detailed View" msgstr "" -#: print/templates/ui.html:41 print/templates/ui.html:118 +#: print/templates/ui.html:49 print/templates/ui.html:137 msgid "Operator Overview" msgstr "" -#: print/templates/ui.html:42 print/templates/ui.html:119 +#: print/templates/ui.html:53 print/templates/ui.html:138 msgid "Operator Detailed View" msgstr "" -#: print/templates/ui.html:43 +#: print/templates/ui.html:55 msgid "Thumbnail size" msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 +#: print/templates/ui.html:61 +msgid "Custom information sheet" +msgstr "" + +#: print/templates/ui.html:64 print/templates/ui.html:107 msgid "Includes these Page Setup, estimated time settings and also the icon." msgstr "" -#: print/templates/ui.html:45 print/templates/ui.html:88 -#: print/templates/ui.html:122 +#: print/templates/ui.html:64 print/templates/ui.html:107 +#: print/templates/ui.html:141 msgid "Save as defaults" msgstr "" -#: print/templates/ui.html:50 +#: print/templates/ui.html:69 msgid "Logo" msgstr "" -#: print/templates/ui.html:60 +#: print/templates/ui.html:79 msgid "Footer: Operator contact information" msgstr "" -#: print/templates/ui.html:71 -msgid "Enter URL" -msgstr "" - -#: print/templates/ui.html:72 print/templates/ui.html:76 -#: print/templates/ui.html:82 -msgid "OK" -msgstr "" - -#: print/templates/ui.html:75 -msgid "Enter E-Mail" -msgstr "" - -#: print/templates/ui.html:80 -msgid "This will reset your custom text to the default." -msgstr "" - -#: print/templates/ui.html:81 -msgid "All changes will be lost." -msgstr "" - -#: print/templates/ui.html:94 +#: print/templates/ui.html:113 msgid "Machine Settings" msgstr "" -#: print/templates/ui.html:96 +#: print/templates/ui.html:115 msgid "Average Machine Speed" msgstr "" -#: print/templates/ui.html:97 +#: print/templates/ui.html:116 msgid "stitches per minute " msgstr "" -#: print/templates/ui.html:101 +#: print/templates/ui.html:120 msgid "Time Factors" msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "Includes average time for preparing the machine, thread breaks and/or bobbin changes, etc." msgstr "" -#: print/templates/ui.html:104 +#: print/templates/ui.html:123 msgid "seconds to add to total time*" msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "This will be added to the total time." msgstr "" -#: print/templates/ui.html:108 +#: print/templates/ui.html:127 msgid "seconds needed for a color change*" msgstr "" -#: print/templates/ui.html:111 +#: print/templates/ui.html:130 msgid "seconds needed for trim" msgstr "" -#: print/templates/ui.html:114 +#: print/templates/ui.html:133 msgid "Display Time On" msgstr "" -#: print/templates/ui.html:122 +#: print/templates/ui.html:141 msgid "Includes page setup, estimated time and also the branding." msgstr "" -#: print/templates/ui.html:127 +#: print/templates/ui.html:146 msgid "Thread Palette" msgstr "" -#: print/templates/ui.html:130 +#: print/templates/ui.html:149 msgid "None" msgstr "" -#: print/templates/ui.html:146 +#: print/templates/ui.html:165 msgid "Changing the thread palette will cause thread names and catalog numbers to be recalculated based on the new palette. Any changes you have made to color or thread names will be lost. Are you sure?" msgstr "" -#: print/templates/ui.html:149 +#: print/templates/ui.html:168 msgid "Yes" msgstr "" -#: print/templates/ui.html:150 +#: print/templates/ui.html:169 msgid "No" msgstr "" From 8aa86f66199a2657ab01ac1a8c52ed1312be2804 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 28 Mar 2019 14:47:05 -0400 Subject: [PATCH 29/54] set up debug logging --- .gitignore | 2 +- inkstitch.py | 12 ++------ lib/debug.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 lib/debug.py diff --git a/.gitignore b/.gitignore index 55c210775..08d9f2794 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ messages.po /DEBUG .pydevproject .project - +/debug.log diff --git a/inkstitch.py b/inkstitch.py index 9b040265b..8a3ac626f 100644 --- a/inkstitch.py +++ b/inkstitch.py @@ -7,6 +7,7 @@ from argparse import ArgumentParser from lib import extensions from lib.utils import save_stderr, restore_stderr +import lib.debug as debug logger = logging.getLogger('shapely.geos') @@ -34,16 +35,7 @@ parser.add_argument("--extension") my_args, remaining_args = parser.parse_known_args() if os.path.exists(os.path.join(os.path.dirname(os.path.realpath(__file__)), "DEBUG")): - # How to debug Ink/Stitch: - # - # 1. Install LiClipse (liclipse.com) -- no need to install Eclipse first - # 2. Start debug server as described here: http://www.pydev.org/manual_adv_remote_debugger.html - # * follow the "Note:" to enable the debug server menu item - # 3. Create a file named "DEBUG" next to inkstitch.py in your git clone. - # 4. Run any extension and PyDev will start debugging. - - import pydevd - pydevd.settrace() + debug.enable() extension_name = my_args.extension diff --git a/lib/debug.py b/lib/debug.py new file mode 100644 index 000000000..33d30d4fc --- /dev/null +++ b/lib/debug.py @@ -0,0 +1,84 @@ +from datetime import datetime +import os +import socket +import sys +import time + + +class Debug(object): + def __init__(self): + self.last_log_time = None + + def enable(self): + self.enable_log() + self.enable_debugger() + + def enable_log(self): + self.log = self._log + self.raw_log = self._raw_log + self.log_file = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), "debug.log"), "w") + self.log("Debug logging enabled.") + + def enable_debugger(self): + # How to debug Ink/Stitch: + # + # 1. Install LiClipse (liclipse.com) -- no need to install Eclipse first + # 2. Start debug server as described here: http://www.pydev.org/manual_adv_remote_debugger.html + # * follow the "Note:" to enable the debug server menu item + # 3. Create a file named "DEBUG" next to inkstitch.py in your git clone. + # 4. Run any extension and PyDev will start debugging. + + try: + import pydevd + except ImportError: + self.log("importing pydevd failed (debugger disabled)") + + # pydevd likes to shout about errors to stderr whether I want it to or not + with open(os.devnull, 'w') as devnull: + stderr = sys.stderr + sys.stderr = devnull + + try: + pydevd.settrace() + except socket.error, error: + self.log("Debugging: connection to pydevd failed: %s", error) + self.log("Be sure to run 'Start debugging server' in PyDev to enable debugging.") + else: + self.log("Enabled PyDev debugger.") + + sys.stderr = stderr + + def _noop(self, *args, **kwargs): + pass + + log = _noop + raw_log = _noop + + def _log(self, message, *args): + if self.last_log_time: + message = "(+%s) %s" % (datetime.now() - self.last_log_time, message) + + self.raw_log(message, *args) + + def _raw_log(self, message, *args): + now = datetime.now() + timestamp = now.isoformat() + self.last_log_time = now + + print >> self.log_file, timestamp, message % args + self.log_file.flush() + + def time(self, func): + def decorated(*args, **kwargs): + self.raw_log("entering %s()", func.func_name) + start = time.time() + result = func(*args, **kwargs) + end = time.time() + self.raw_log("leaving %s(), duration = %s", func.func_name, round(end - start, 6)) + return result + + return decorated + + +debug = Debug() +enable = debug.enable From 56f1d856473836cb59ff226ebb60753ca63960ed Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 28 Mar 2019 15:22:11 -0400 Subject: [PATCH 30/54] add timing logging for auto-fill --- lib/stitches/auto_fill.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 9ccc93b2c..496ac442c 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -7,6 +7,7 @@ import networkx from shapely import geometry as shgeo from shapely.strtree import STRtree +from ..debug import debug from ..exceptions import InkstitchException from ..i18n import _ from ..svg import PIXELS_PER_MM @@ -44,6 +45,7 @@ class PathEdge(object): return self.key == self.SEGMENT_KEY +@debug.time def auto_fill(shape, angle, row_spacing, @@ -94,6 +96,7 @@ def project(shape, coords, outline_index): return outline.project(shgeo.Point(*coords)) +@debug.time def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): """build a graph representation of the grating segments @@ -191,6 +194,7 @@ def add_edges_between_outline_nodes(graph): graph.add_edge(node1, node2, key="outline", **data) +@debug.time def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): """Build a graph for travel stitches. @@ -299,6 +303,7 @@ def nearest_node(nodes, point, attr=None): return nearest +@debug.time def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None): """find a path that visits every grating segment exactly once @@ -449,6 +454,7 @@ def travel(travel_graph, start, end, running_stitch_length, skip_last): return stitches[1:] +@debug.time def path_to_stitches(path, travel_graph, fill_stitch_graph, angle, row_spacing, max_stitch_length, running_stitch_length, staggers, skip_last): path = collapse_sequential_outline_edges(path) From 19950150210e5a3d7a76881b96e9b8b49e663309 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 28 Mar 2019 15:52:37 -0400 Subject: [PATCH 31/54] add SVG debugging with LineStrings --- .gitignore | 1 + lib/debug.py | 42 ++++++++++++++++++++++++++++++++++++++++++ lib/svg/__init__.py | 4 ++-- lib/svg/path.py | 9 +++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 08d9f2794..79b25b6e5 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ messages.po .pydevproject .project /debug.log +/debug.svg diff --git a/lib/debug.py b/lib/debug.py index 33d30d4fc..05c367f0c 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,17 +1,27 @@ +import atexit from datetime import datetime import os import socket import sys import time +from inkex import etree +import inkex +from simplestyle import formatStyle + +from svg import line_strings_to_path +from svg.tags import INKSCAPE_GROUPMODE, INKSCAPE_LABEL + class Debug(object): def __init__(self): self.last_log_time = None + self.current_layer = None def enable(self): self.enable_log() self.enable_debugger() + self.enable_svg() def enable_log(self): self.log = self._log @@ -48,6 +58,23 @@ class Debug(object): sys.stderr = stderr + def enable_svg(self): + self.svg = etree.Element("svg", nsmap=inkex.NSS) + atexit.register(self.save_svg) + + def save_svg(self): + tree = etree.ElementTree(self.svg) + with open(os.path.join(os.path.dirname(os.path.dirname(__file__)), "debug.svg"), "w") as debug_svg: + tree.write(debug_svg) + + def add_layer(self, name="Debug"): + layer = etree.Element("g", { + INKSCAPE_GROUPMODE: "layer", + INKSCAPE_LABEL: name + }) + self.svg.append(layer) + self.current_layer = layer + def _noop(self, *args, **kwargs): pass @@ -79,6 +106,21 @@ class Debug(object): return decorated + def log_svg_element(self, element): + if self.current_layer is None: + self.add_layer() + + self.current_layer.append(element) + + def log_line_string(self, line_string, color="#000000"): + """Add a Shapely LineString to the SVG log.""" + self.log_line_strings(self, [line_string]) + + def log_line_strings(self, line_strings, color="#000000"): + path = line_strings_to_path(line_strings) + path.set('style', formatStyle({"stroke": color, "stroke-width": "0.3"})) + self.log_svg_element(path) + debug = Debug() enable = debug.enable diff --git a/lib/svg/__init__.py b/lib/svg/__init__.py index df76c0d25..34cc4b3d7 100644 --- a/lib/svg/__init__.py +++ b/lib/svg/__init__.py @@ -1,4 +1,4 @@ +from .guides import get_guides +from .path import apply_transforms, get_node_transform, get_correction_transform, line_strings_to_csp, point_lists_to_csp, line_strings_to_path from .svg import color_block_to_point_lists, render_stitch_plan from .units import * -from .path import apply_transforms, get_node_transform, get_correction_transform, line_strings_to_csp, point_lists_to_csp -from .guides import get_guides diff --git a/lib/svg/path.py b/lib/svg/path.py index d2b4aee1c..f0f6708bf 100644 --- a/lib/svg/path.py +++ b/lib/svg/path.py @@ -1,3 +1,4 @@ +import cubicsuperpath import inkex import simpletransform @@ -80,3 +81,11 @@ def point_lists_to_csp(point_lists): csp.append(subpath) return csp + + +def line_strings_to_path(line_strings): + csp = line_strings_to_csp(line_strings) + + return inkex.etree.Element("path", { + "d": cubicsuperpath.formatPath(csp) + }) From 90a16fb7f9a44f4274d85cc693a51be9354737ec Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Fri, 29 Mar 2019 15:03:28 -0400 Subject: [PATCH 32/54] more debug logging --- lib/debug.py | 102 +++++++++++++++++++++++++++++--------- lib/stitches/auto_fill.py | 10 ++++ 2 files changed, 88 insertions(+), 24 deletions(-) diff --git a/lib/debug.py b/lib/debug.py index 05c367f0c..13b2f2bc2 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -13,23 +13,32 @@ from svg import line_strings_to_path from svg.tags import INKSCAPE_GROUPMODE, INKSCAPE_LABEL +def check_enabled(func): + def decorated(self, *args, **kwargs): + if self.enabled: + func(self, *args, **kwargs) + + return decorated + + class Debug(object): def __init__(self): + self.enabled = False self.last_log_time = None self.current_layer = None + self.group_stack = [] def enable(self): - self.enable_log() - self.enable_debugger() - self.enable_svg() + self.enabled = True + self.init_log() + self.init_debugger() + self.init_svg() - def enable_log(self): - self.log = self._log - self.raw_log = self._raw_log + def init_log(self): self.log_file = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), "debug.log"), "w") self.log("Debug logging enabled.") - def enable_debugger(self): + def init_debugger(self): # How to debug Ink/Stitch: # # 1. Install LiClipse (liclipse.com) -- no need to install Eclipse first @@ -58,7 +67,7 @@ class Debug(object): sys.stderr = stderr - def enable_svg(self): + def init_svg(self): self.svg = etree.Element("svg", nsmap=inkex.NSS) atexit.register(self.save_svg) @@ -67,6 +76,7 @@ class Debug(object): with open(os.path.join(os.path.dirname(os.path.dirname(__file__)), "debug.svg"), "w") as debug_svg: tree.write(debug_svg) + @check_enabled def add_layer(self, name="Debug"): layer = etree.Element("g", { INKSCAPE_GROUPMODE: "layer", @@ -75,19 +85,28 @@ class Debug(object): self.svg.append(layer) self.current_layer = layer - def _noop(self, *args, **kwargs): - pass + @check_enabled + def open_group(self, name="Group"): + group = etree.Element("g", { + INKSCAPE_LABEL: name + }) - log = _noop - raw_log = _noop + self.log_svg_element(group) + self.group_stack.append(group) - def _log(self, message, *args): + @check_enabled + def close_group(self): + if self.group_stack: + self.group_stack.pop() + + @check_enabled + def log(self, message, *args): if self.last_log_time: message = "(+%s) %s" % (datetime.now() - self.last_log_time, message) self.raw_log(message, *args) - def _raw_log(self, message, *args): + def raw_log(self, message, *args): now = datetime.now() timestamp = now.isoformat() self.last_log_time = now @@ -97,30 +116,65 @@ class Debug(object): def time(self, func): def decorated(*args, **kwargs): - self.raw_log("entering %s()", func.func_name) - start = time.time() + if self.enabled: + self.raw_log("entering %s()", func.func_name) + start = time.time() + result = func(*args, **kwargs) - end = time.time() - self.raw_log("leaving %s(), duration = %s", func.func_name, round(end - start, 6)) + + if self.enabled: + end = time.time() + self.raw_log("leaving %s(), duration = %s", func.func_name, round(end - start, 6)) + return result return decorated + @check_enabled def log_svg_element(self, element): if self.current_layer is None: self.add_layer() - self.current_layer.append(element) + if self.group_stack: + self.group_stack[-1].append(element) + else: + self.current_layer.append(element) - def log_line_string(self, line_string, color="#000000"): + @check_enabled + def log_line_string(self, line_string, name=None, color=None): """Add a Shapely LineString to the SVG log.""" - self.log_line_strings(self, [line_string]) + self.log_line_strings([line_string], name, color) - def log_line_strings(self, line_strings, color="#000000"): + @check_enabled + def log_line_strings(self, line_strings, name=None, color=None): path = line_strings_to_path(line_strings) - path.set('style', formatStyle({"stroke": color, "stroke-width": "0.3"})) + path.set('style', formatStyle({"stroke": color or "#000000", "stroke-width": "0.3"})) + + if name is not None: + path.set(INKSCAPE_LABEL, name) + self.log_svg_element(path) + @check_enabled + def log_line(self, start, end, name="line", color=None): + self.log_svg_element(etree.Element("path", { + "d": "M%s,%s %s,%s" % (start + end), + "style": formatStyle({"stroke": color or "#000000", "stroke-width": "0.3"}), + INKSCAPE_LABEL: name + })) + + @check_enabled + def log_graph(self, graph, name="Graph", color=None): + self.open_group(name) + + for edge in graph.edges: + self.log_line(edge[0], edge[1], color=color) + + self.close_group() + debug = Debug() -enable = debug.enable + + +def enable(): + debug.enable() diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 496ac442c..2a48b2637 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -130,6 +130,8 @@ def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): path must exist. """ + debug.add_layer("auto-fill fill stitch") + # Convert the shape into a set of parallel line segments. rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing) segments = [segment for row in rows_of_segments for segment in row] @@ -160,6 +162,8 @@ def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): if data['index'] % 2 == 0: graph.add_edge(node1, node2, key="extra") + debug.log_graph(graph, "graph") + return graph @@ -228,6 +232,10 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + debug.add_layer("auto-fill travel") + debug.log_line_strings(grating1, "grating1") + debug.log_line_strings(grating2, "grating2") + # We'll add the endpoints of the crosshatch grating lines too These # will all be on the outline of the shape. This will ensure that a # path traveling inside the shape can reach its target on the outline, @@ -283,6 +291,8 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): # > ignored del rtree + debug.log_graph(graph, "travel graph") + return graph From 513850c975368f0e323e3cfc173398081245127a Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Fri, 29 Mar 2019 15:42:11 -0400 Subject: [PATCH 33/54] add vertical travel edges for less jagged travel paths --- lib/debug.py | 15 ++++- lib/stitches/auto_fill.py | 129 +++++++++++++++++++++++--------------- 2 files changed, 94 insertions(+), 50 deletions(-) diff --git a/lib/debug.py b/lib/debug.py index 13b2f2bc2..fa3bd6068 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -1,4 +1,5 @@ import atexit +from contextlib import contextmanager from datetime import datetime import os import socket @@ -80,7 +81,8 @@ class Debug(object): def add_layer(self, name="Debug"): layer = etree.Element("g", { INKSCAPE_GROUPMODE: "layer", - INKSCAPE_LABEL: name + INKSCAPE_LABEL: name, + "style": "display: none" }) self.svg.append(layer) self.current_layer = layer @@ -172,6 +174,17 @@ class Debug(object): self.close_group() + @contextmanager + def time_this(self, label="code block"): + if self.enabled: + start = time.time() + self.raw_log("begin %s", label) + + yield + + if self.enabled: + self.raw_log("completed %s, duration = %s", label, time.time() - start) + debug = Debug() diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 2a48b2637..88a54f0b3 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -5,6 +5,7 @@ import math import networkx from shapely import geometry as shgeo +from shapely.ops import snap from shapely.strtree import STRtree from ..debug import debug @@ -146,21 +147,7 @@ def build_fill_stitch_graph(shape, angle, row_spacing, end_row_spacing): graph.add_edge(*segment, key="segment", underpath_edges=[]) tag_nodes_with_outline_and_projection(graph, shape, graph.nodes()) - - for node in graph.nodes(): - outline_index = which_outline(shape, node) - outline_projection = project(shape, node, outline_index) - - # Tag each node with its index and projection. - graph.add_node(node, index=outline_index, projection=outline_projection) - - add_edges_between_outline_nodes(graph) - - for node1, node2, key, data in graph.edges(keys=True, data=True): - if key == "outline": - # duplicate every other edge - if data['index'] % 2 == 0: - graph.add_edge(node1, node2, key="extra") + add_edges_between_outline_nodes(graph, duplicate_every_other=True) debug.log_graph(graph, "graph") @@ -175,7 +162,7 @@ def tag_nodes_with_outline_and_projection(graph, shape, nodes): graph.add_node(node, outline=outline_index, projection=outline_projection) -def add_edges_between_outline_nodes(graph): +def add_edges_between_outline_nodes(graph, duplicate_every_other=False): """Add edges around the outlines of the graph, connecting sequential nodes. This function assumes that all nodes in the graph are on the outline of the @@ -197,6 +184,9 @@ def add_edges_between_outline_nodes(graph): data = dict(outline=outline_index, index=i) graph.add_edge(node1, node2, key="outline", **data) + if i % 2 == 0: + graph.add_edge(node1, node2, key="extra", **data) + @debug.time def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): @@ -210,14 +200,15 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): edges. If underpath is True, we'll also allow travel inside the shape. We'll - fill the shape with a cross-hatched grid of lines 2mm apart, at ±45 - degrees from the fill stitch angle. This will ensure that travel stitches - won't be visible and won't disrupt the fill stitch. + fill the shape with a cross-hatched grid of lines. We'll construct a + graph from them and use a shortest path algorithm to construct travel + stitch paths in travel(). When underpathing, we "encourage" the travel() function to travel inside the shape rather than on the boundary. We do this by weighting the boundary edges extra so that they're more "expensive" in the shortest path - calculation. + calculation. We also weight the interior edges extra proportional to + how close they are to the boundary. """ graph = networkx.MultiGraph() @@ -228,33 +219,23 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): graph.add_nodes_from(fill_stitch_graph.nodes(data=True)) if underpath: - # These two MultiLineStrings will make up the cross-hatched grid. - grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) - grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_stitch_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + boundary_points, travel_edges = build_travel_edges(shape, fill_stitch_angle) - debug.add_layer("auto-fill travel") - debug.log_line_strings(grating1, "grating1") - debug.log_line_strings(grating2, "grating2") - - # We'll add the endpoints of the crosshatch grating lines too These - # will all be on the outline of the shape. This will ensure that a - # path traveling inside the shape can reach its target on the outline, - # which will be one of the points added above. - endpoints = [coord for mls in (grating1, grating2) - for ls in mls - for coord in ls.coords] - tag_nodes_with_outline_and_projection(graph, shape, endpoints) + # This will ensure that a path traveling inside the shape can reach its + # target on the outline, which will be one of the points added above. + tag_nodes_with_outline_and_projection(graph, shape, boundary_points) add_edges_between_outline_nodes(graph) - for start, end, key in graph.edges: - p1 = InkstitchPoint(*start) - p2 = InkstitchPoint(*end) - - # Set the weight equal to 10x the edge length, to encourage travel() - # to avoid them when underpathing is enabled. - graph[start][end][key]["weight"] = 10 * p1.distance(p2) if underpath: + for start, end, key in graph.edges: + p1 = InkstitchPoint(*start) + p2 = InkstitchPoint(*end) + + # Set the weight equal to 10x the edge length, to encourage travel() + # to avoid them. + graph[start][end][key]["weight"] = 10 * p1.distance(p2) + segments = [] for start, end, key, data in fill_stitch_graph.edges(keys=True, data=True): if key == 'segment': @@ -264,14 +245,17 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): # allows for building a set of shapes and then efficiently testing # the set for intersection. This allows us to do blazing-fast # queries of which line segments overlap each underpath edge. - rtree = STRtree(segments) + strtree = STRtree(segments) - interior_edges = grating1.symmetric_difference(grating2) - for ls in interior_edges.geoms: + # This makes the distance calculations below a bit faster. We're + # not looking for high precision anyway. + outline = shape.boundary.simplify(0.5 * PIXELS_PER_MM, preserve_topology=False) + + for ls in travel_edges: p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] edge = (p1.as_tuple(), p2.as_tuple(), 'travel') - for segment in rtree.query(ls): + for segment in strtree.query(ls): start, end = segment.coords fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) @@ -282,20 +266,67 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): # This includes the outer outline and the outlines of the holes. # The result is that travel stitching will tend to hug the center # of the shape. - weight /= ls.distance(shape.boundary) + 0.1 + weight /= ls.distance(outline) + 0.1 graph.add_edge(*edge, weight=weight) - # otherwise we sometimes get exceptions like this: + # without this, we sometimes get exceptions like this: # Exception AttributeError: "'NoneType' object has no attribute 'GEOSSTRtree_destroy'" in # > ignored - del rtree + del strtree debug.log_graph(graph, "travel graph") return graph +def build_travel_edges(shape, fill_angle): + """Given a graph, compute the interior travel edges. + + We want to fill the shape with a grid of line segments that can be used for + travel stitch routing. Our goals: + + * not too many edges so that the shortest path algorithm is speedy + * don't travel in the direction of the fill stitch rows so that the + travel stitch doesn't visually disrupt the fill stitch pattern + + To do this, we'll fill the shape with three gratings: one at +45 degrees + from the fill stitch angle, one at -45 degrees, and one at +90 degrees. + The pattern looks like this: + + /|\|/|\|/|\ + \|/|\|/|\|/ + /|\|/|\|/|\ + \|/|\|/|\|/ + + Returns: (endpoints, edges) + endpoints - the points on travel edges that intersect with the boundary + of the shape + edges - the line segments we can travel on, as individual LineString + instances + """ + + grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) + grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) + grating3 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 2, math.sqrt(2) * PIXELS_PER_MM)))) + + debug.add_layer("auto-fill travel") + debug.log_line_strings(grating1, "grating1") + debug.log_line_strings(grating2, "grating2") + debug.log_line_strings(grating3, "grating3") + + endpoints = [coord for mls in (grating1, grating2, grating3) + for ls in mls + for coord in ls.coords] + + diagonal_edges = grating1.symmetric_difference(grating2) + + # without this, floating point inaccuracies prevent the intersection points from lining up perfectly. + vertical_edges = snap(grating3.difference(grating1), diagonal_edges, 0.005) + + return endpoints, chain(diagonal_edges, vertical_edges) + + def check_graph(graph, shape, max_stitch_length): if networkx.is_empty(graph) or not networkx.is_eulerian(graph): if shape.area < max_stitch_length ** 2: From 284ef6afcb5e4604260f94566f2881ec2d84fe71 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Fri, 29 Mar 2019 20:24:24 -0400 Subject: [PATCH 34/54] avoid parsing forward slashes in docstring --- lib/stitches/auto_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 88a54f0b3..917b09a81 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -281,7 +281,7 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): def build_travel_edges(shape, fill_angle): - """Given a graph, compute the interior travel edges. + r"""Given a graph, compute the interior travel edges. We want to fill the shape with a grid of line segments that can be used for travel stitch routing. Our goals: From 37722b7ddf8b1f612408bea783d9ac5455f7b9fd Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 30 Mar 2019 21:56:39 -0400 Subject: [PATCH 35/54] fix underlay underpath checkbox --- lib/elements/auto_fill.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/elements/auto_fill.py b/lib/elements/auto_fill.py index bbb2aff17..62d3493cc 100644 --- a/lib/elements/auto_fill.py +++ b/lib/elements/auto_fill.py @@ -141,7 +141,7 @@ class AutoFill(Fill): type='boolean', default=True) def underlay_underpath(self): - return self.get_boolean_param('underpath', True) + return self.get_boolean_param('underlay_underpath', True) def shrink_or_grow_shape(self, amount): if amount: From f5f0ce49a8db1445feba91e629e6b02584dbd05b Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Sat, 30 Mar 2019 22:20:46 -0400 Subject: [PATCH 36/54] fix 'too many values to unpack' exception --- lib/stitches/auto_fill.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 917b09a81..8bfbd0921 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -252,7 +252,12 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): outline = shape.boundary.simplify(0.5 * PIXELS_PER_MM, preserve_topology=False) for ls in travel_edges: - p1, p2 = [InkstitchPoint(*coord) for coord in ls.coords] + # In most cases, ls will be a simple line segment. If we're + # unlucky, in rare cases we can get a tiny little extra squiggle + # at the end that can be ignored. + points = [InkstitchPoint(*coord) for coord in ls.coords] + p1, p2 = points[0], points[-1] + edge = (p1.as_tuple(), p2.as_tuple(), 'travel') for segment in strtree.query(ls): From c8a43bbe1df0ecc11022794ef94538f3b1ba31f2 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Tue, 2 Apr 2019 06:21:53 +0200 Subject: [PATCH 37/54] prevent html from showing up in custom text field (#421) --- print/resources/inkstitch.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/print/resources/inkstitch.js b/print/resources/inkstitch.js index 79c6d9c3c..86bc213e7 100644 --- a/print/resources/inkstitch.js +++ b/print/resources/inkstitch.js @@ -324,10 +324,10 @@ $(function() { } else if (item.is('figure.inksimulation')) { setSVGTransform(item, value); } else if (item.is('div.footer-info')) { - $('#footer-info-text').html(value); - item.html(value); + $('#footer-info-text').html($.parseHTML(value)); + item.html($.parseHTML(value)); } else if (item.is('#custom-page-content')) { - $('#custom-page-content').html(value); + $('#custom-page-content').html($.parseHTML(value)); } else { item.text(value); } @@ -431,7 +431,7 @@ $(function() { } else { info_text.css('display', 'block'); var sourceText = info_text.text(); - info_text.html( sourceText ); + info_text.html( $.parseHTML(sourceText) ); element.closest('.tool-bar').find('.tb-button.edit-only').prop('disabled', false); } }); @@ -439,7 +439,6 @@ $(function() { function updateEditableText(element) { var editMode = getEditMode(element); var info_text = element.closest('fieldset').find('.info-text'); - var content = info_text.html(); var editableText = ''; if (editMode) { @@ -449,10 +448,10 @@ $(function() { } if(info_text.is('#footer-info-text')) { - $('div.footer-info').html(editableText); - $.postJSON('/settings/footer-info', {value: content}); + $('div.footer-info').html($.parseHTML(editableText)); + $.postJSON('/settings/footer-info', {value: editableText}); } else { - $.postJSON('/settings/custom-page-content', {value: content}); + $.postJSON('/settings/custom-page-content', {value: editableText}); } } From 211561eabc1444135e0a000d8ec4ba822c2ebbd5 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Tue, 2 Apr 2019 06:27:33 +0200 Subject: [PATCH 38/54] simulator stitch box improvement (#402) --- lib/gui/simulator.py | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/lib/gui/simulator.py b/lib/gui/simulator.py index e0d78983c..d64e50c06 100644 --- a/lib/gui/simulator.py +++ b/lib/gui/simulator.py @@ -74,8 +74,12 @@ class ControlPanel(wx.Panel): self.slider = wx.Slider(self, -1, value=1, minValue=1, maxValue=2, style=wx.SL_HORIZONTAL | wx.SL_LABELS) self.slider.Bind(wx.EVT_SLIDER, self.on_slider) - self.stitchBox = IntCtrl(self, -1, value=1, min=1, max=2, limited=True, allow_none=False) - self.stitchBox.Bind(wx.EVT_TEXT, self.on_stitch_box) + self.stitchBox = IntCtrl(self, -1, value=1, min=1, max=2, limited=True, allow_none=True, style=wx.TE_PROCESS_ENTER) + self.stitchBox.Bind(wx.EVT_LEFT_DOWN, self.on_stitch_box_focus) + self.stitchBox.Bind(wx.EVT_SET_FOCUS, self.on_stitch_box_focus) + self.stitchBox.Bind(wx.EVT_TEXT_ENTER, self.on_stitch_box_focusout) + self.stitchBox.Bind(wx.EVT_KILL_FOCUS, self.on_stitch_box_focusout) + self.Bind(wx.EVT_LEFT_DOWN, self.on_stitch_box_focusout) # Layout self.vbSizer = vbSizer = wx.BoxSizer(wx.VERTICAL) @@ -120,15 +124,15 @@ class ControlPanel(wx.Panel): (wx.ACCEL_NORMAL, wx.WXK_SPACE, self.on_pause_start_button), (wx.ACCEL_NORMAL, ord('q'), self.animation_quit)] - accel_entries = [] + self.accel_entries = [] for shortcut_key in shortcut_keys: eventId = wx.NewId() - accel_entries.append((shortcut_key[0], shortcut_key[1], eventId)) + self.accel_entries.append((shortcut_key[0], shortcut_key[1], eventId)) self.Bind(wx.EVT_MENU, shortcut_key[2], id=eventId) - accel_table = wx.AcceleratorTable(accel_entries) - self.SetAcceleratorTable(accel_table) + self.accel_table = wx.AcceleratorTable(self.accel_entries) + self.SetAcceleratorTable(self.accel_table) self.SetFocus() def set_drawing_panel(self, drawing_panel): @@ -186,6 +190,8 @@ class ControlPanel(wx.Panel): if self.drawing_panel: self.drawing_panel.set_current_stitch(stitch) + self.parent.SetFocus() + def on_current_stitch(self, stitch, command): if self.current_stitch != stitch: self.current_stitch = stitch @@ -193,8 +199,20 @@ class ControlPanel(wx.Panel): self.stitchBox.SetValue(stitch) self.statusbar.SetStatusText(COMMAND_NAMES[command], 1) - def on_stitch_box(self, event): + def on_stitch_box_focus(self, event): + self.animation_pause() + self.SetAcceleratorTable(wx.AcceleratorTable([])) + event.Skip() + + def on_stitch_box_focusout(self, event): + self.SetAcceleratorTable(self.accel_table) stitch = self.stitchBox.GetValue() + self.parent.SetFocus() + + if stitch is None: + stitch = 1 + self.stitchBox.SetValue(1) + self.slider.SetValue(stitch) if self.drawing_panel: @@ -629,6 +647,7 @@ class EmbroiderySimulator(wx.Frame): if self.on_close_hook: self.on_close_hook() + self.SetFocus() self.Destroy() def go(self): From 1f7b69980c439c2be00033f566de38c35468782c Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 4 Apr 2019 19:57:40 -0400 Subject: [PATCH 39/54] render graphs as a single path to avoid killing inkscape --- lib/debug.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/debug.py b/lib/debug.py index fa3bd6068..6ce676975 100644 --- a/lib/debug.py +++ b/lib/debug.py @@ -167,12 +167,16 @@ class Debug(object): @check_enabled def log_graph(self, graph, name="Graph", color=None): - self.open_group(name) + d = "" for edge in graph.edges: - self.log_line(edge[0], edge[1], color=color) + d += "M%s,%s %s,%s" % (edge[0] + edge[1]) - self.close_group() + self.log_svg_element(etree.Element("path", { + "d": d, + "style": formatStyle({"stroke": color or "#000000", "stroke-width": "0.3"}), + INKSCAPE_LABEL: name + })) @contextmanager def time_this(self, label="code block"): From f204366347d6847b4d5699efa33fd5858624cfd6 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 4 Apr 2019 19:58:35 -0400 Subject: [PATCH 40/54] try harder to avoid traveling around the border --- lib/stitches/auto_fill.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 8bfbd0921..1300a4dfc 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -232,9 +232,9 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): p1 = InkstitchPoint(*start) p2 = InkstitchPoint(*end) - # Set the weight equal to 10x the edge length, to encourage travel() + # Set the weight equal to 5x the edge length, to encourage travel() # to avoid them. - graph[start][end][key]["weight"] = 10 * p1.distance(p2) + graph[start][end][key]["weight"] = 5 * p1.distance(p2) segments = [] for start, end, key, data in fill_stitch_graph.edges(keys=True, data=True): @@ -261,8 +261,12 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): edge = (p1.as_tuple(), p2.as_tuple(), 'travel') for segment in strtree.query(ls): - start, end = segment.coords - fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) + # It seems like the STRTree only gives an approximate answer of + # segments that _might_ intersect ls. Refining the result is + # necessary but the STRTree still saves us a ton of time. + if segment.crosses(ls): + start, end = segment.coords + fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) # The weight of a travel edge is the length of the line segment. weight = p1.distance(p2) @@ -311,9 +315,20 @@ def build_travel_edges(shape, fill_angle): instances """ - grating1 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle + math.pi / 4, 2 * PIXELS_PER_MM)))) - grating2 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 4, 2 * PIXELS_PER_MM)))) - grating3 = shgeo.MultiLineString(list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 2, math.sqrt(2) * PIXELS_PER_MM)))) + # If the shape is smaller, we'll have less room to maneuver and it's more likely + # we'll travel around the outside border of the shape. Counteract that by making + # the grid denser. + if shape.area < 10000: + scale = 0.5 + else: + scale = 1.0 + + grating1 = shgeo.MultiLineString( + list(chain(*intersect_region_with_grating(shape, fill_angle + math.pi / 4, scale * 2 * PIXELS_PER_MM)))) + grating2 = shgeo.MultiLineString( + list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 4, scale * 2 * PIXELS_PER_MM)))) + grating3 = shgeo.MultiLineString( + list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 2, scale * math.sqrt(2) * PIXELS_PER_MM)))) debug.add_layer("auto-fill travel") debug.log_line_strings(grating1, "grating1") From 70bb53bc4c21b8e02169f4adf2543ea4208b1b5f Mon Sep 17 00:00:00 2001 From: Catherine Holloway Date: Sat, 6 Apr 2019 14:06:49 -0400 Subject: [PATCH 41/54] adding minimum version requirement on jinja2 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e81b32e3f..44d0e5fc6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ shapely lxml appdirs numpy<1.16.0 -jinja2 +jinja2>2.9 requests colormath stringcase From 3d2aa93e8bcffc6eb599137d5067e8e0fd249ddb Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sun, 7 Apr 2019 09:16:02 +0200 Subject: [PATCH 42/54] fix realistic detailed view (#424) --- print/templates/operator_overview.html | 5 ++++- print/templates/print_detail.html | 5 ++++- print/templates/print_overview.html | 5 ++++- print/templates/ui_svg_action_buttons.html | 9 +++++++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/print/templates/operator_overview.html b/print/templates/operator_overview.html index a3090c1f1..71c5ea2e5 100644 --- a/print/templates/operator_overview.html +++ b/print/templates/operator_overview.html @@ -27,7 +27,10 @@
    {{ svg_overview|replace("
  • ", "")|replace("
  • ", "")|safe }} - {% include 'ui_svg_action_buttons.html' %} + {% with %} + {% set realistic_id='realistic-operator-overview' %} + {% include 'ui_svg_action_buttons.html' with context %} + {% endwith %}
    {% include 'footer.html' %} diff --git a/print/templates/print_detail.html b/print/templates/print_detail.html index 0dca49785..f076fc046 100644 --- a/print/templates/print_detail.html +++ b/print/templates/print_detail.html @@ -17,7 +17,10 @@
    {{color_block.svg_preview|replace("
  • ", "")|replace("
  • ", "")|safe}} - {% include 'ui_svg_action_buttons.html' %} + {% with %} + {% set loop_index=loop.index0 %} + {% include 'ui_svg_action_buttons.html' with context %} + {% endwith %}
    {% include 'color_swatch.html' %} diff --git a/print/templates/print_overview.html b/print/templates/print_overview.html index d5111562e..34478438d 100644 --- a/print/templates/print_overview.html +++ b/print/templates/print_overview.html @@ -27,7 +27,10 @@
    {{ svg_overview|replace("
  • ", "")|replace("
  • ", "")|safe }} - {% include 'ui_svg_action_buttons.html' %} + {% with %} + {% set realistic_id='realistic-client-overview' %} + {% include 'ui_svg_action_buttons.html' with context %} + {% endwith %}
    diff --git a/print/templates/ui_svg_action_buttons.html b/print/templates/ui_svg_action_buttons.html index c111d634b..6b1993835 100644 --- a/print/templates/ui_svg_action_buttons.html +++ b/print/templates/ui_svg_action_buttons.html @@ -4,7 +4,12 @@
    From c94a28756d805aad2ec6bda946e37099ce46310d Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sun, 7 Apr 2019 21:00:14 +0200 Subject: [PATCH 43/54] simulate needle penetration points --- lib/gui/simulator.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib/gui/simulator.py b/lib/gui/simulator.py index d64e50c06..3c51c7f23 100644 --- a/lib/gui/simulator.py +++ b/lib/gui/simulator.py @@ -68,6 +68,9 @@ class ControlPanel(wx.Panel): self.restartBtn = wx.Button(self, -1, label=_('Restart')) self.restartBtn.Bind(wx.EVT_BUTTON, self.animation_restart) self.restartBtn.SetToolTip(_('Restart (R)')) + self.nppBtn = wx.ToggleButton(self, -1, label=_('O')) + self.nppBtn.Bind(wx.EVT_TOGGLEBUTTON, self.toggle_npp) + self.nppBtn.SetToolTip(_('Display needle penetration point (O)')) self.quitBtn = wx.Button(self, -1, label=_('Quit')) self.quitBtn.Bind(wx.EVT_BUTTON, self.animation_quit) self.quitBtn.SetToolTip(_('Quit (Q)')) @@ -95,6 +98,7 @@ class ControlPanel(wx.Panel): hbSizer2.Add(self.directionBtn, 0, wx.EXPAND | wx.ALL, 2) hbSizer2.Add(self.pauseBtn, 0, wx.EXPAND | wx.ALL, 2) hbSizer2.Add(self.restartBtn, 0, wx.EXPAND | wx.ALL, 2) + hbSizer2.Add(self.nppBtn, 0, wx.EXPAND | wx.ALL, 2) hbSizer2.Add(self.quitBtn, 0, wx.EXPAND | wx.ALL, 2) vbSizer.Add(hbSizer2, 0, wx.EXPAND | wx.ALL, 3) self.SetSizerAndFit(vbSizer) @@ -120,6 +124,7 @@ class ControlPanel(wx.Panel): (wx.ACCEL_NORMAL, wx.WXK_SUBTRACT, self.animation_one_stitch_backward), (wx.ACCEL_NORMAL, wx.WXK_NUMPAD_SUBTRACT, self.animation_one_stitch_backward), (wx.ACCEL_NORMAL, ord('r'), self.animation_restart), + (wx.ACCEL_NORMAL, ord('o'), self.on_toggle_npp_shortcut), (wx.ACCEL_NORMAL, ord('p'), self.on_pause_start_button), (wx.ACCEL_NORMAL, wx.WXK_SPACE, self.on_pause_start_button), (wx.ACCEL_NORMAL, ord('q'), self.animation_quit)] @@ -259,6 +264,15 @@ class ControlPanel(wx.Panel): def animation_restart(self, event): self.drawing_panel.restart() + def on_toggle_npp_shortcut(self, event): + self.nppBtn.SetValue(not self.nppBtn.GetValue()) + self.toggle_npp(event) + + def toggle_npp(self, event): + if self.pauseBtn.GetLabel() == _('Start'): + stitch = self.stitchBox.GetValue() + self.drawing_panel.set_current_stitch(stitch) + class DrawingPanel(wx.Panel): """""" @@ -364,11 +378,13 @@ class DrawingPanel(wx.Panel): stitch += len(stitches) if len(stitches) > 1: canvas.DrawLines(stitches) + self.draw_needle_penetration_points(canvas, pen, stitches) last_stitch = stitches[-1] else: stitches = stitches[:self.current_stitch - stitch] if len(stitches) > 1: canvas.DrawLines(stitches) + self.draw_needle_penetration_points(canvas, pen, stitches) last_stitch = stitches[-1] break self.last_frame_duration = time.time() - start @@ -383,6 +399,12 @@ class DrawingPanel(wx.Panel): canvas.DrawLines(((x - crosshair_radius, y), (x + crosshair_radius, y))) canvas.DrawLines(((x, y - crosshair_radius), (x, y + crosshair_radius))) + def draw_needle_penetration_points(self, canvas, pen, stitches): + if self.control_panel.nppBtn.GetValue(): + npp_pen = wx.Pen(pen.GetColour(), width=int(0.3 * PIXELS_PER_MM * self.PIXEL_DENSITY)) + canvas.SetPen(npp_pen) + canvas.StrokeLineSegments(stitches, stitches) + def clear(self): dc = wx.ClientDC(self) dc.Clear() @@ -719,6 +741,14 @@ class SimulatorPreview(Thread): def update_patches(self): patches = self.parent.generate_patches(self.refresh_needed) + try: + patches = self.parent.generate_patches(self.refresh_needed) + except: # noqa: E722 + # If something goes wrong when rendering patches, it's not great, + # but we don't really want the simulator thread to crash. Instead, + # just swallow the exception and abort. It'll show up when they + # try to actually embroider the shape. + return if patches and not self.refresh_needed.is_set(): stitch_plan = patches_to_stitch_plan(patches) From 92541eb760eca6df14abca194e087be5183ffdfd Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 9 Apr 2019 23:47:24 -0400 Subject: [PATCH 44/54] split up long function --- lib/stitches/auto_fill.py | 142 ++++++++++++++++++++++---------------- 1 file changed, 81 insertions(+), 61 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 1300a4dfc..7d2319538 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -228,67 +228,90 @@ def build_travel_graph(fill_stitch_graph, shape, fill_stitch_angle, underpath): add_edges_between_outline_nodes(graph) if underpath: - for start, end, key in graph.edges: - p1 = InkstitchPoint(*start) - p2 = InkstitchPoint(*end) - - # Set the weight equal to 5x the edge length, to encourage travel() - # to avoid them. - graph[start][end][key]["weight"] = 5 * p1.distance(p2) - - segments = [] - for start, end, key, data in fill_stitch_graph.edges(keys=True, data=True): - if key == 'segment': - segments.append(shgeo.LineString((start, end))) - - # The shapely documentation is pretty unclear on this. An STRtree - # allows for building a set of shapes and then efficiently testing - # the set for intersection. This allows us to do blazing-fast - # queries of which line segments overlap each underpath edge. - strtree = STRtree(segments) - - # This makes the distance calculations below a bit faster. We're - # not looking for high precision anyway. - outline = shape.boundary.simplify(0.5 * PIXELS_PER_MM, preserve_topology=False) - - for ls in travel_edges: - # In most cases, ls will be a simple line segment. If we're - # unlucky, in rare cases we can get a tiny little extra squiggle - # at the end that can be ignored. - points = [InkstitchPoint(*coord) for coord in ls.coords] - p1, p2 = points[0], points[-1] - - edge = (p1.as_tuple(), p2.as_tuple(), 'travel') - - for segment in strtree.query(ls): - # It seems like the STRTree only gives an approximate answer of - # segments that _might_ intersect ls. Refining the result is - # necessary but the STRTree still saves us a ton of time. - if segment.crosses(ls): - start, end = segment.coords - fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) - - # The weight of a travel edge is the length of the line segment. - weight = p1.distance(p2) - - # Give a bonus to edges that are far from the outline of the shape. - # This includes the outer outline and the outlines of the holes. - # The result is that travel stitching will tend to hug the center - # of the shape. - weight /= ls.distance(outline) + 0.1 - - graph.add_edge(*edge, weight=weight) - - # without this, we sometimes get exceptions like this: - # Exception AttributeError: "'NoneType' object has no attribute 'GEOSSTRtree_destroy'" in - # > ignored - del strtree + process_travel_edges(graph, fill_stitch_graph, shape, travel_edges) debug.log_graph(graph, "travel graph") return graph +def weight_edges_by_length(graph, multiplier=1): + for start, end, key in graph.edges: + p1 = InkstitchPoint(*start) + p2 = InkstitchPoint(*end) + + graph[start][end][key]["weight"] = multiplier * p1.distance(p2) + + +def get_segments(graph): + segments = [] + for start, end, key, data in graph.edges(keys=True, data=True): + if key == 'segment': + segments.append(shgeo.LineString((start, end))) + + return segments + + +def process_travel_edges(graph, fill_stitch_graph, shape, travel_edges): + """Weight the interior edges and pre-calculate intersection with fill stitch rows.""" + + # Set the weight equal to 5x the edge length, to encourage travel() + # to avoid them. + weight_edges_by_length(graph, 5) + + segments = get_segments(fill_stitch_graph) + + # The shapely documentation is pretty unclear on this. An STRtree + # allows for building a set of shapes and then efficiently testing + # the set for intersection. This allows us to do blazing-fast + # queries of which line segments overlap each underpath edge. + strtree = STRtree(segments) + + # This makes the distance calculations below a bit faster. We're + # not looking for high precision anyway. + outline = shape.boundary.simplify(0.5 * PIXELS_PER_MM, preserve_topology=False) + + for ls in travel_edges: + # In most cases, ls will be a simple line segment. If we're + # unlucky, in rare cases we can get a tiny little extra squiggle + # at the end that can be ignored. + points = [InkstitchPoint(*coord) for coord in ls.coords] + p1, p2 = points[0], points[-1] + + edge = (p1.as_tuple(), p2.as_tuple(), 'travel') + + for segment in strtree.query(ls): + # It seems like the STRTree only gives an approximate answer of + # segments that _might_ intersect ls. Refining the result is + # necessary but the STRTree still saves us a ton of time. + if segment.crosses(ls): + start, end = segment.coords + fill_stitch_graph[start][end]['segment']['underpath_edges'].append(edge) + + # The weight of a travel edge is the length of the line segment. + weight = p1.distance(p2) + + # Give a bonus to edges that are far from the outline of the shape. + # This includes the outer outline and the outlines of the holes. + # The result is that travel stitching will tend to hug the center + # of the shape. + weight /= ls.distance(outline) + 0.1 + + graph.add_edge(*edge, weight=weight) + + # without this, we sometimes get exceptions like this: + # Exception AttributeError: "'NoneType' object has no attribute 'GEOSSTRtree_destroy'" in + # > ignored + del strtree + + +def travel_grating(shape, angle, row_spacing): + rows_of_segments = intersect_region_with_grating(shape, angle, row_spacing) + segments = list(chain(*rows_of_segments)) + + return shgeo.MultiLineString(segments) + + def build_travel_edges(shape, fill_angle): r"""Given a graph, compute the interior travel edges. @@ -323,12 +346,9 @@ def build_travel_edges(shape, fill_angle): else: scale = 1.0 - grating1 = shgeo.MultiLineString( - list(chain(*intersect_region_with_grating(shape, fill_angle + math.pi / 4, scale * 2 * PIXELS_PER_MM)))) - grating2 = shgeo.MultiLineString( - list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 4, scale * 2 * PIXELS_PER_MM)))) - grating3 = shgeo.MultiLineString( - list(chain(*intersect_region_with_grating(shape, fill_angle - math.pi / 2, scale * math.sqrt(2) * PIXELS_PER_MM)))) + grating1 = travel_grating(shape, fill_angle + math.pi / 4, scale * 2 * PIXELS_PER_MM) + grating2 = travel_grating(shape, fill_angle - math.pi / 4, scale * 2 * PIXELS_PER_MM) + grating3 = travel_grating(shape, fill_angle - math.pi / 2, scale * math.sqrt(2) * PIXELS_PER_MM) debug.add_layer("auto-fill travel") debug.log_line_strings(grating1, "grating1") From a766e4e40858cb7954c8c6ea4a1a9de8d31ee054 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 9 Apr 2019 23:49:54 -0400 Subject: [PATCH 45/54] make error message more readable --- lib/stitches/auto_fill.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 7d2319538..84f10d45f 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -370,11 +370,13 @@ def build_travel_edges(shape, fill_angle): def check_graph(graph, shape, max_stitch_length): if networkx.is_empty(graph) or not networkx.is_eulerian(graph): if shape.area < max_stitch_length ** 2: - raise InvalidPath(_("This shape is so small that it cannot be filled with rows of stitches. " - "It would probably look best as a satin column or running stitch.")) + message = "This shape is so small that it cannot be filled with rows of stitches. " \ + "It would probably look best as a satin column or running stitch." + raise InvalidPath(_(message)) else: - raise InvalidPath(_("Cannot parse shape. " - "This most often happens because your shape is made up of multiple sections that aren't connected.")) + message = "Cannot parse shape. " \ + "This most often happens because your shape is made up of multiple sections that aren't connected." + raise InvalidPath(_(message)) def nearest_node(nodes, point, attr=None): From 9d4441b7009564a57425ab0ab73a70be5b8dabf4 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 10 Apr 2019 00:00:44 -0400 Subject: [PATCH 46/54] remove unnecessary comparisons to None --- lib/stitches/auto_fill.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/stitches/auto_fill.py b/lib/stitches/auto_fill.py index 84f10d45f..9d946ae2e 100644 --- a/lib/stitches/auto_fill.py +++ b/lib/stitches/auto_fill.py @@ -411,16 +411,16 @@ def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None graph = graph.copy() - if starting_point is None: + if not starting_point: starting_point = graph.nodes.keys()[0] starting_node = nearest_node(graph, starting_point) - if ending_point is None: + if ending_point: + ending_node = nearest_node(graph, ending_point) + else: ending_point = starting_point ending_node = starting_node - else: - ending_node = nearest_node(graph, ending_point) # The algorithm below is adapted from networkx.eulerian_circuit(). path = [] @@ -431,7 +431,7 @@ def find_stitch_path(graph, travel_graph, starting_point=None, ending_point=None while vertex_stack: current_vertex, current_key = vertex_stack[-1] if graph.degree(current_vertex) == 0: - if last_vertex is not None: + if last_vertex: path.append(PathEdge((last_vertex, current_vertex), last_key)) last_vertex, last_key = current_vertex, current_key vertex_stack.pop() From 75fdfe22deddbfc8a875840cde48844207b7b76e Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Wed, 10 Apr 2019 17:42:49 +0200 Subject: [PATCH 48/54] fix base file name bug --- lib/extensions/base.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/extensions/base.py b/lib/extensions/base.py index 986735410..6b846aebe 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -2,6 +2,7 @@ from collections import MutableMapping from copy import deepcopy import json import re +import os import inkex from stringcase import snakecase @@ -187,10 +188,7 @@ class InkstitchExtension(inkex.Effect): def get_base_file_name(self): svg_filename = self.document.getroot().get(inkex.addNS('docname', 'sodipodi'), "embroidery.svg") - if svg_filename.endswith('.svg'): - svg_filename = svg_filename[:-4] - - return svg_filename + return os.path.splitext(svg_filename)[0] def uniqueId(self, prefix, make_new_id=True): """Override inkex.Effect.uniqueId with a nicer naming scheme.""" From d9d659a2e84f1b50311ab5aac3672b080b05c187 Mon Sep 17 00:00:00 2001 From: Ink/Stitch Crowdin integration Date: Thu, 11 Apr 2019 03:00:21 +0000 Subject: [PATCH 49/54] new translations from Crowdin --- translations/messages_af_ZA.po | 104 +++++++++++++++++---------------- translations/messages_ar_SA.po | 104 +++++++++++++++++---------------- translations/messages_ca_ES.po | 104 +++++++++++++++++---------------- translations/messages_cs_CZ.po | 104 +++++++++++++++++---------------- translations/messages_da_DK.po | 104 +++++++++++++++++---------------- translations/messages_de_DE.po | 104 +++++++++++++++++---------------- translations/messages_el_GR.po | 104 +++++++++++++++++---------------- translations/messages_en_US.po | 104 +++++++++++++++++---------------- translations/messages_es_ES.po | 104 +++++++++++++++++---------------- translations/messages_fi_FI.po | 104 +++++++++++++++++---------------- translations/messages_fr_FR.po | 104 +++++++++++++++++---------------- translations/messages_he_IL.po | 104 +++++++++++++++++---------------- translations/messages_hu_HU.po | 104 +++++++++++++++++---------------- translations/messages_it_IT.po | 104 +++++++++++++++++---------------- translations/messages_ja_JP.po | 104 +++++++++++++++++---------------- translations/messages_ko_KR.po | 104 +++++++++++++++++---------------- translations/messages_nl_NL.po | 104 +++++++++++++++++---------------- translations/messages_no_NO.po | 104 +++++++++++++++++---------------- translations/messages_pl_PL.po | 104 +++++++++++++++++---------------- translations/messages_pt_BR.po | 104 +++++++++++++++++---------------- translations/messages_pt_PT.po | 104 +++++++++++++++++---------------- translations/messages_ro_RO.po | 104 +++++++++++++++++---------------- translations/messages_ru_RU.po | 104 +++++++++++++++++---------------- translations/messages_sr_SP.po | 104 +++++++++++++++++---------------- translations/messages_sv_SE.po | 104 +++++++++++++++++---------------- translations/messages_tr_TR.po | 104 +++++++++++++++++---------------- translations/messages_uk_UA.po | 104 +++++++++++++++++---------------- translations/messages_vi_VN.po | 104 +++++++++++++++++---------------- translations/messages_zh_CN.po | 104 +++++++++++++++++---------------- translations/messages_zh_TW.po | 104 +++++++++++++++++---------------- 30 files changed, 1650 insertions(+), 1470 deletions(-) diff --git a/translations/messages_af_ZA.po b/translations/messages_af_ZA.po index 0fd01c333..9f6b827c9 100644 --- a/translations/messages_af_ZA.po +++ b/translations/messages_af_ZA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Afrikaans\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ar_SA.po b/translations/messages_ar_SA.po index ba4322325..5dee644d4 100644 --- a/translations/messages_ar_SA.po +++ b/translations/messages_ar_SA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Arabic\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ca_ES.po b/translations/messages_ca_ES.po index 3b5b3c235..0d424ae4c 100644 --- a/translations/messages_ca_ES.po +++ b/translations/messages_ca_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Catalan\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_cs_CZ.po b/translations/messages_cs_CZ.po index f06b2a852..cd8008749 100644 --- a/translations/messages_cs_CZ.po +++ b/translations/messages_cs_CZ.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_da_DK.po b/translations/messages_da_DK.po index 700e02891..6c3424925 100644 --- a/translations/messages_da_DK.po +++ b/translations/messages_da_DK.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Danish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_de_DE.po b/translations/messages_de_DE.po index 682eaddda..8449b0f0c 100644 --- a/translations/messages_de_DE.po +++ b/translations/messages_de_DE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "Fehler: Es gibt mehr als einen %(command)s-Befehl in dem Dokument, aber msgid "%(command)s: %(description)s" msgstr "%(command)s: %(description)s" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "AutoFüllung" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "Automatisch geführte Füllstiche" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "Laufstichlänge (Durchlauf zwischen Sektionen)" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "Stichlänge um den Umriss des Füllbereichs, der beim Übergang von Abschnitt zu Abschnitt verwendet wird." -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "Unterlage" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "AutoFill-Unterlage" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "Füllwinkel" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "Standard: Füllwinkel + 90°" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "Reihenabstand" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "Standard: 3x Füllreihenabstand" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "Maximale Stichlänge" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "Standard: entspricht der maximalen Stichlänge" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "Einzug" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "Schrumpfen Sie die Form vor der Unterlage, um zu verhindern, dass die Unterlage um die Außenseite der Füllung herum sichtbar wird." -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "Erweitern" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "Erweitern der Form vor dem Füllstich, um Lücken zwischen den Formen auszugleichen." -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -474,15 +483,15 @@ msgstr "AutoSatin %d" msgid "AutoSatin Running Stitch %d" msgstr "AutoSatin Laufstich %d" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "Keine zu stickenden Pfade ausgewählt." -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "Keine zu stickenden Pfade im Dokument gefunden." -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "Tipp: Verwende Pfad -> Objekt zu Pfad umwandeln, um nicht-Pfade vor dem Sticken zu konvertieren." @@ -771,7 +780,7 @@ msgstr "Schritt vorwärts (+)" msgid "Switch direction (arrow left | arrow right)" msgstr "Richtung wechseln (Pfeil Links | Pfeil Rechts)" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "Pause" @@ -788,31 +797,39 @@ msgid "Restart (R)" msgstr "Neustart (R)" #: lib/gui/simulator.py:71 +msgid "O" +msgstr "" + +#: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 msgid "Quit" msgstr "Beenden" -#: lib/gui/simulator.py:73 +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "Beenden (Q)" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "Geschwindigkeit: %d Stiche/Sek" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "Start" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "Vorschau" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "Interner Fehler" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "Stick Simulation" @@ -834,18 +851,6 @@ msgstr "Ink/Stitch Text" msgid "Error writing to %(path)s: %(error)s" msgstr "Fehler beim Schreiben in %(path)s: %(error)s" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "Unerwarteter Fehler beim Generieren der Füllstiche. Bitte senden Sie die SVG-Datei an lexelby@github." - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "Stich-Plan" @@ -1055,7 +1060,7 @@ msgstr "FARBE" msgid "Estimated time" msgstr "Voraussichtliche Dauer" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "Unterschrift Kunde" @@ -1220,7 +1225,8 @@ msgstr "An Fenstergröße anpassen" msgid "Apply to all" msgstr "Auf alle anwenden" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "Realistische Vorschau" diff --git a/translations/messages_el_GR.po b/translations/messages_el_GR.po index 11f2ba415..fd92257ab 100644 --- a/translations/messages_el_GR.po +++ b/translations/messages_el_GR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Greek\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_en_US.po b/translations/messages_en_US.po index dfa008d84..e3ecbfd60 100644 --- a/translations/messages_en_US.po +++ b/translations/messages_en_US.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:53\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: English\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_es_ES.po b/translations/messages_es_ES.po index 37e85589b..a451d5da3 100644 --- a/translations/messages_es_ES.po +++ b/translations/messages_es_ES.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_fi_FI.po b/translations/messages_fi_FI.po index cf99d5895..795e406be 100644 --- a/translations/messages_fi_FI.po +++ b/translations/messages_fi_FI.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Finnish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_fr_FR.po b/translations/messages_fr_FR.po index 37f1ef709..6189af817 100644 --- a/translations/messages_fr_FR.po +++ b/translations/messages_fr_FR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "Erreur : il y a plus d’une commande de %(command)s dans le document, msgid "%(command)s: %(description)s" msgstr "%(command)s: %(description)s" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "Auto-remplissage" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "Auto-remplissage avec des points de broderie" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "Longueur du point de fonctionnement (parcours entre les sections)" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "Longueur de points autour du contour de la région de remplissage lors du déplacement de section à section." -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "Sous-couche" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "Sous-couche de remplissage automatique" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "Angle de remplissage" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "défaut : Angle de remplissage + 90 deg" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "Espacement entre rangs (lignes)" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "défaut: 3x espacement entre les rangs" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "Longueur de point maximal" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "défaut : égal à longueur max des points de remplissage" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "Incrustation" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "Rétrécir la forme avant de faire la sous-couche, pour empêcher que la sous-couche se montre en dehors du remplissage." -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "Elargir" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "Elargir la forme avant le remplissage, pour compenser les écarts entre les formes." -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "Auto-remplissage satin %d" msgid "AutoSatin Running Stitch %d" msgstr "Points droits pour auto-remplissage satin %d" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "Aucun chemin brodable sélectionné." -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "Aucun chemin brodable trouvé dans le document." -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "Astuce: utilisez Chemin -> Objet en chemin pour convertir les non-chemins." @@ -769,7 +778,7 @@ msgstr "Aller un pas en avant (+)" msgid "Switch direction (arrow left | arrow right)" msgstr "Changer de direction (flèche à gauche | flèche à droite)" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "Pause" @@ -786,31 +795,39 @@ msgid "Restart (R)" msgstr "Redémarrer (R)" #: lib/gui/simulator.py:71 +msgid "O" +msgstr "" + +#: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 msgid "Quit" msgstr "Quitter" -#: lib/gui/simulator.py:73 +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "Quitter (Q)" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "Vitesse : %d points/sec" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "Début" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "Aperçu" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "Erreur interne" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "Simulation de broderie" @@ -832,18 +849,6 @@ msgstr "Texte Ink/Stitch" msgid "Error writing to %(path)s: %(error)s" msgstr "Erreur d’écriture pour %(path)s: %(error)s" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "Erreur inattendue lors de la génération des points de remplissage. Veuillez envoyer votre fichier SVG à lexelby@github." - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "Plan de broderie" @@ -1053,7 +1058,7 @@ msgstr "Couleur" msgid "Estimated time" msgstr "Durée estimée du Job" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "Signature du client" @@ -1218,7 +1223,8 @@ msgstr "Ajuster" msgid "Apply to all" msgstr "Appliquer à tous" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "Réaliste" diff --git a/translations/messages_he_IL.po b/translations/messages_he_IL.po index 8265e963e..85f212c9a 100644 --- a/translations/messages_he_IL.po +++ b/translations/messages_he_IL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Hebrew\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_hu_HU.po b/translations/messages_hu_HU.po index 15e585b87..0eabc6bc1 100644 --- a/translations/messages_hu_HU.po +++ b/translations/messages_hu_HU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Hungarian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_it_IT.po b/translations/messages_it_IT.po index d11514aaa..8aa066040 100644 --- a/translations/messages_it_IT.po +++ b/translations/messages_it_IT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ja_JP.po b/translations/messages_ja_JP.po index 2ace3a01b..8d23f4873 100644 --- a/translations/messages_ja_JP.po +++ b/translations/messages_ja_JP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ko_KR.po b/translations/messages_ko_KR.po index bcca397ed..df632d87f 100644 --- a/translations/messages_ko_KR.po +++ b/translations/messages_ko_KR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_nl_NL.po b/translations/messages_nl_NL.po index 42db96510..6cdbbfba4 100644 --- a/translations/messages_nl_NL.po +++ b/translations/messages_nl_NL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Dutch\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_no_NO.po b/translations/messages_no_NO.po index 5c302c7f3..60385e0a4 100644 --- a/translations/messages_no_NO.po +++ b/translations/messages_no_NO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Norwegian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_pl_PL.po b/translations/messages_pl_PL.po index 0993f50a1..8c2edda6b 100644 --- a/translations/messages_pl_PL.po +++ b/translations/messages_pl_PL.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Polish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_pt_BR.po b/translations/messages_pt_BR.po index b5309cdd9..5f98320fe 100644 --- a/translations/messages_pt_BR.po +++ b/translations/messages_pt_BR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:53\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Portuguese, Brazilian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_pt_PT.po b/translations/messages_pt_PT.po index 55e787403..801ea3915 100644 --- a/translations/messages_pt_PT.po +++ b/translations/messages_pt_PT.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "Definir enchimento automaticamente" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "Distância de ponto corrido (Transversal entre secções)" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "Sub-camada" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "Sub-camada automática" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "Distância máxima de ponto" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "Nenhum caminho bordável seleccionado." -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "Nenhum caminho bordável encontrado no documento." -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -769,7 +778,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -786,31 +795,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "Pré-visualização" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "Erro Interno" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "Simulação de Bordado" @@ -832,18 +849,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "Erro inesperado ao gerar pontos de enchimento. Por favor envie o seu SVG para lexelby@github." - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "Plano de pontos/bordado" @@ -1053,7 +1058,7 @@ msgstr "COR" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1218,7 +1223,8 @@ msgstr "Ajustar" msgid "Apply to all" msgstr "Aplicar a todos" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ro_RO.po b/translations/messages_ro_RO.po index da820fab3..0348cd88e 100644 --- a/translations/messages_ro_RO.po +++ b/translations/messages_ro_RO.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 02:59\n" "Last-Translator: lexelby \n" "Language-Team: Romanian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_ru_RU.po b/translations/messages_ru_RU.po index b58a38dc2..7fec65d2d 100644 --- a/translations/messages_ru_RU.po +++ b/translations/messages_ru_RU.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_sr_SP.po b/translations/messages_sr_SP.po index c6685d1b3..0b2a99d90 100644 --- a/translations/messages_sr_SP.po +++ b/translations/messages_sr_SP.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Serbian (Cyrillic)\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_sv_SE.po b/translations/messages_sv_SE.po index 5359654b7..e7f8c6126 100644 --- a/translations/messages_sv_SE.po +++ b/translations/messages_sv_SE.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Swedish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_tr_TR.po b/translations/messages_tr_TR.po index e5b0e8066..82ae060cd 100644 --- a/translations/messages_tr_TR.po +++ b/translations/messages_tr_TR.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_uk_UA.po b/translations/messages_uk_UA.po index 3609cd746..5e88c1fcd 100644 --- a/translations/messages_uk_UA.po +++ b/translations/messages_uk_UA.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:52\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Ukrainian\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_vi_VN.po b/translations/messages_vi_VN.po index 6a78625a1..22fba0650 100644 --- a/translations/messages_vi_VN.po +++ b/translations/messages_vi_VN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:53\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Vietnamese\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_zh_CN.po b/translations/messages_zh_CN.po index 980c46a50..4677e5d3c 100644 --- a/translations/messages_zh_CN.po +++ b/translations/messages_zh_CN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:53\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Chinese Simplified\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" diff --git a/translations/messages_zh_TW.po b/translations/messages_zh_TW.po index 8100d71a7..0c7dad5e5 100644 --- a/translations/messages_zh_TW.po +++ b/translations/messages_zh_TW.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inkstitch\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-03-27 02:52+0000\n" -"PO-Revision-Date: 2019-03-27 02:53\n" +"POT-Creation-Date: 2019-04-11 02:59+0000\n" +"PO-Revision-Date: 2019-04-11 03:00\n" "Last-Translator: lexelby \n" "Language-Team: Chinese Traditional\n" "MIME-Version: 1.0\n" @@ -131,91 +131,100 @@ msgstr "" msgid "%(command)s: %(description)s" msgstr "" -#: lib/elements/auto_fill.py:15 +#: lib/elements/auto_fill.py:16 msgid "AutoFill" msgstr "" -#: lib/elements/auto_fill.py:18 +#: lib/elements/auto_fill.py:19 msgid "Automatically routed fill stitching" msgstr "" -#: lib/elements/auto_fill.py:38 +#: lib/elements/auto_fill.py:39 msgid "Running stitch length (traversal between sections)" msgstr "" -#: lib/elements/auto_fill.py:39 +#: lib/elements/auto_fill.py:40 msgid "Length of stitches around the outline of the fill region used when moving from section to section." msgstr "" -#: lib/elements/auto_fill.py:47 +#: lib/elements/auto_fill.py:48 msgid "Underlay" msgstr "" -#: lib/elements/auto_fill.py:47 lib/elements/auto_fill.py:56 -#: lib/elements/auto_fill.py:72 lib/elements/auto_fill.py:83 -#: lib/elements/auto_fill.py:93 lib/elements/auto_fill.py:105 +#: lib/elements/auto_fill.py:48 lib/elements/auto_fill.py:57 +#: lib/elements/auto_fill.py:73 lib/elements/auto_fill.py:84 +#: lib/elements/auto_fill.py:94 lib/elements/auto_fill.py:106 +#: lib/elements/auto_fill.py:140 msgid "AutoFill Underlay" msgstr "" -#: lib/elements/auto_fill.py:53 +#: lib/elements/auto_fill.py:54 msgid "Fill angle" msgstr "" -#: lib/elements/auto_fill.py:54 +#: lib/elements/auto_fill.py:55 msgid "default: fill angle + 90 deg" msgstr "" -#: lib/elements/auto_fill.py:69 +#: lib/elements/auto_fill.py:70 msgid "Row spacing" msgstr "" -#: lib/elements/auto_fill.py:70 +#: lib/elements/auto_fill.py:71 msgid "default: 3x fill row spacing" msgstr "" -#: lib/elements/auto_fill.py:80 +#: lib/elements/auto_fill.py:81 msgid "Max stitch length" msgstr "" -#: lib/elements/auto_fill.py:81 +#: lib/elements/auto_fill.py:82 msgid "default: equal to fill max stitch length" msgstr "" -#: lib/elements/auto_fill.py:90 +#: lib/elements/auto_fill.py:91 msgid "Inset" msgstr "" -#: lib/elements/auto_fill.py:91 +#: lib/elements/auto_fill.py:92 msgid "Shrink the shape before doing underlay, to prevent underlay from showing around the outside of the fill." msgstr "" -#: lib/elements/auto_fill.py:102 lib/elements/fill.py:47 +#: lib/elements/auto_fill.py:103 lib/elements/fill.py:47 msgid "Skip last stitch in each row" msgstr "" -#: lib/elements/auto_fill.py:103 lib/elements/fill.py:48 +#: lib/elements/auto_fill.py:104 lib/elements/fill.py:48 msgid "The last stitch in each row is quite close to the first stitch in the next row. Skipping it decreases stitch count and density." msgstr "" -#: lib/elements/auto_fill.py:113 +#: lib/elements/auto_fill.py:114 msgid "Expand" msgstr "" -#: lib/elements/auto_fill.py:114 +#: lib/elements/auto_fill.py:115 msgid "Expand the shape before fill stitching, to compensate for gaps between shapes." msgstr "" -#: lib/elements/auto_fill.py:186 +#: lib/elements/auto_fill.py:124 lib/elements/auto_fill.py:136 +msgid "Underpath" +msgstr "" + +#: lib/elements/auto_fill.py:125 lib/elements/auto_fill.py:137 +msgid "Travel inside the shape when moving from section to section. Underpath stitches avoid traveling in the direction of the row angle so that they are not visible. This gives them a jagged appearance." +msgstr "" + +#: lib/elements/auto_fill.py:213 msgid "Unable to autofill: " msgstr "" -#: lib/elements/auto_fill.py:190 +#: lib/elements/auto_fill.py:221 msgid "Error during autofill! This means that there is a problem with Ink/Stitch." msgstr "" #. this message is followed by a URL: #. https://github.com/inkstitch/inkstitch/issues/new -#: lib/elements/auto_fill.py:193 +#: lib/elements/auto_fill.py:224 msgid "If you'd like to help us make Ink/Stitch better, please paste this whole message into a new issue at: " msgstr "" @@ -473,15 +482,15 @@ msgstr "" msgid "AutoSatin Running Stitch %d" msgstr "" -#: lib/extensions/base.py:124 +#: lib/extensions/base.py:125 msgid "No embroiderable paths selected." msgstr "" -#: lib/extensions/base.py:126 +#: lib/extensions/base.py:127 msgid "No embroiderable paths found in document." msgstr "" -#: lib/extensions/base.py:127 +#: lib/extensions/base.py:128 msgid "Tip: use Path -> Object to Path to convert non-paths." msgstr "" @@ -768,7 +777,7 @@ msgstr "" msgid "Switch direction (arrow left | arrow right)" msgstr "" -#: lib/gui/simulator.py:65 lib/gui/simulator.py:218 lib/gui/simulator.py:225 +#: lib/gui/simulator.py:65 lib/gui/simulator.py:241 lib/gui/simulator.py:248 msgid "Pause" msgstr "" @@ -785,31 +794,39 @@ msgid "Restart (R)" msgstr "" #: lib/gui/simulator.py:71 -msgid "Quit" +msgid "O" msgstr "" #: lib/gui/simulator.py:73 +msgid "Display needle penetration point (O)" +msgstr "" + +#: lib/gui/simulator.py:74 +msgid "Quit" +msgstr "" + +#: lib/gui/simulator.py:76 msgid "Quit (Q)" msgstr "" -#: lib/gui/simulator.py:179 +#: lib/gui/simulator.py:188 #, python-format msgid "Speed: %d stitches/sec" msgstr "" -#: lib/gui/simulator.py:221 +#: lib/gui/simulator.py:244 lib/gui/simulator.py:272 msgid "Start" msgstr "" -#: lib/gui/simulator.py:729 lib/gui/simulator.py:741 +#: lib/gui/simulator.py:777 lib/gui/simulator.py:789 msgid "Preview" msgstr "" -#: lib/gui/simulator.py:745 +#: lib/gui/simulator.py:793 msgid "Internal Error" msgstr "" -#: lib/gui/simulator.py:774 +#: lib/gui/simulator.py:822 msgid "Embroidery Simulation" msgstr "" @@ -831,18 +848,6 @@ msgstr "" msgid "Error writing to %(path)s: %(error)s" msgstr "" -#: lib/stitches/auto_fill.py:189 -msgid "This shape is so small that it cannot be filled with rows of stitches. It would probably look best as a satin column or running stitch." -msgstr "" - -#: lib/stitches/auto_fill.py:192 -msgid "Cannot parse shape. This most often happens because your shape is made up of multiple sections that aren't connected." -msgstr "" - -#: lib/stitches/auto_fill.py:421 -msgid "Unexpected error while generating fill stitches. Please send your SVG file to lexelby@github." -msgstr "" - #: lib/svg/svg.py:97 msgid "Stitch Plan" msgstr "" @@ -1052,7 +1057,7 @@ msgstr "" msgid "Estimated time" msgstr "" -#: print/templates/print_overview.html:39 +#: print/templates/print_overview.html:42 msgid "Client Signature" msgstr "" @@ -1217,7 +1222,8 @@ msgstr "" msgid "Apply to all" msgstr "" -#: print/templates/ui_svg_action_buttons.html:8 +#: print/templates/ui_svg_action_buttons.html:9 +#: print/templates/ui_svg_action_buttons.html:12 msgid "Realistic" msgstr "" From 86aedb79030621a56b87df024f586a3a1d316910 Mon Sep 17 00:00:00 2001 From: Kate Murphy Date: Mon, 15 Apr 2019 23:33:34 -0400 Subject: [PATCH 50/54] Add default path for inkex.py on macOS --- bin/generate-inx-files | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/generate-inx-files b/bin/generate-inx-files index a16fb32eb..44edea15b 100755 --- a/bin/generate-inx-files +++ b/bin/generate-inx-files @@ -11,6 +11,8 @@ sys.path.append(parent_dir) # try find add inkex.py et al. as well sys.path.append(os.path.join(parent_dir, "inkscape", "share", "extensions")) sys.path.append(os.path.join("/usr/share/inkscape/extensions")) +# default inkex.py location on macOS +sys.path.append("/Applications/Inkscape.app/Contents/Resources/share/inkscape/extensions/") from lib.inx import generate_inx_files From 944834593de7f6008b0edbd8d75e18face9ee2a1 Mon Sep 17 00:00:00 2001 From: Kate Murphy Date: Tue, 16 Apr 2019 20:05:45 -0400 Subject: [PATCH 51/54] Build inx files in locale folders and build release for each locale --- Makefile | 16 ++++++++++------ lib/inx/utils.py | 13 +++++++++++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index ed86a36ce..f3f94b493 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,6 @@ ARCH:=$(shell uname -m) dist: distclean locales inx bin/build-dist $(EXTENSIONS) - cp inx/*.inx dist cp -a images/examples dist/inkstitch cp -a palettes dist/inkstitch cp -a symbols dist/inkstitch @@ -15,11 +14,16 @@ dist: distclean locales inx cp -a icons dist/inkstitch/bin cp -a locales dist/inkstitch/bin cp -a print dist/inkstitch/bin - if [ "$$BUILD" = "windows" ]; then \ - cd dist; zip -r ../inkstitch-$(VERSION)-win32.zip *; \ - else \ - cd dist; tar zcf ../inkstitch-$(VERSION)-$(OS)-$(ARCH).tar.gz *; \ - fi + for d in inx/*; do \ + lang=$${d%.*}; \ + lang=$${lang#*/}; \ + cp $$d/*.inx dist; \ + if [ "$$BUILD" = "windows" ]; then \ + cd dist; zip -r ../inkstitch-$(VERSION)-win32-$$lang.zip *; cd ..; \ + else \ + cd dist; tar zcf ../inkstitch-$(VERSION)-$(OS)-$(ARCH)-$$lang.tar.gz *; cd ..; \ + fi; \ + done distclean: rm -rf build dist inx locales *.spec *.tar.gz *.zip diff --git a/lib/inx/utils.py b/lib/inx/utils.py index a22b18925..1dc96829f 100644 --- a/lib/inx/utils.py +++ b/lib/inx/utils.py @@ -1,3 +1,4 @@ +import errno import os import gettext from os.path import dirname @@ -28,8 +29,16 @@ def build_environment(): def write_inx_file(name, contents): - inx_file_name = "inkstitch_%s_%s.inx" % (name, current_locale) - with open(os.path.join(inx_path, inx_file_name), 'w') as inx_file: + inx_locale_dir = os.path.join(inx_path, current_locale) + + try: + os.makedirs(inx_locale_dir) + except OSError as e: + if e.errno != errno.EEXIST: + raise + + inx_file_name = "inkstitch_%s.inx" % name + with open(os.path.join(inx_locale_dir, inx_file_name), 'w') as inx_file: print >> inx_file, contents.encode("utf-8") From 3251b94332c291689cc76751a7be8629a6c7e64a Mon Sep 17 00:00:00 2001 From: Kate Murphy Date: Tue, 16 Apr 2019 20:18:46 -0400 Subject: [PATCH 52/54] Remove language name from menus --- templates/auto_satin.inx | 4 +--- templates/convert_to_satin.inx | 4 +--- templates/cut_satin.inx | 4 +--- templates/embroider.inx | 5 +---- templates/flip.inx | 4 +--- templates/global_commands.inx | 6 ++---- templates/install.inx | 4 +--- templates/layer_commands.inx | 4 +--- templates/lettering.inx | 5 +---- templates/object_commands.inx | 4 +--- templates/params.inx | 4 +--- templates/print.inx | 4 +--- templates/simulate.inx | 4 +--- 13 files changed, 14 insertions(+), 42 deletions(-) diff --git a/templates/auto_satin.inx b/templates/auto_satin.inx index d825d8a11..60ca29cd5 100644 --- a/templates/auto_satin.inx +++ b/templates/auto_satin.inx @@ -11,9 +11,7 @@ all - - - + diff --git a/templates/convert_to_satin.inx b/templates/convert_to_satin.inx index d214502a9..d0f879111 100644 --- a/templates/convert_to_satin.inx +++ b/templates/convert_to_satin.inx @@ -9,9 +9,7 @@ all - - - + diff --git a/templates/cut_satin.inx b/templates/cut_satin.inx index 4d330f062..c96d90929 100644 --- a/templates/cut_satin.inx +++ b/templates/cut_satin.inx @@ -9,9 +9,7 @@ all - - - + diff --git a/templates/embroider.inx b/templates/embroider.inx index 54f3be1ba..f030c8d66 100644 --- a/templates/embroider.inx +++ b/templates/embroider.inx @@ -19,10 +19,7 @@ all - - {# L10N This is used for the submenu under Extensions -> Ink/Stitch. Translate this to your language's word for its language, e.g. "Español" for the spanish translation. #} - - +