# Authors: see git history # # Copyright (c) 2010 Authors # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. from shapely.geometry import Point as ShapelyPoint from ..utils import Point as InkstitchPoint class ValidationMessage(object): '''Holds information about a problem with an element. Attributes: name - A short descriptor for the problem, such as "dangling rung" description - A detailed description of the problem, such as "One or more rungs does not intersect both rails." position - An optional position where the problem occurs, to aid the user in correcting it. type: Point or tuple of (x, y) steps_to_solve - A list of operations necessary to solve the problem ''' # Subclasses will fill these in. name = None description = None steps_to_solve = [] def __init__(self, position=None, label=""): if isinstance(position, ShapelyPoint): position = (position.x, position.y) self.position = InkstitchPoint(*position) self.label = label class ValidationError(ValidationMessage): """A problem that will prevent the shape from being embroidered.""" pass class ValidationWarning(ValidationMessage): """A problem that won't prevent a shape from being embroidered. The user will almost certainly want to fix the warning, but if they don't, Ink/Stitch will do its best to process the object. """ pass class ObjectTypeWarning(ValidationMessage): """A shape is not a path and will not be embroidered. Ink/Stitch only works with paths and ignores everything else. The user might want the shape to be ignored, but if they don't, they receive information how to change this behaviour. """ pass