kopia lustrzana https://github.com/inkstitch/inkstitch
add tags capability
rodzic
84cb4e2c33
commit
8fc42628e2
|
@ -7,7 +7,9 @@ from ..utils.geometry import Point
|
|||
|
||||
|
||||
class Stitch(Point):
|
||||
def __init__(self, x, y=None, color=None, jump=False, stop=False, trim=False, color_change=False, tie_modus=0, no_ties=False):
|
||||
"""A stitch is a Point with extra information telling how to sew it."""
|
||||
|
||||
def __init__(self, x, y=None, color=None, jump=False, stop=False, trim=False, color_change=False, tie_modus=0, no_ties=False, tags=None):
|
||||
Point.__init__(self, x, y)
|
||||
self.color = color
|
||||
self.jump = jump
|
||||
|
@ -16,6 +18,9 @@ class Stitch(Point):
|
|||
self.color_change = color_change
|
||||
self.tie_modus = tie_modus
|
||||
self.no_ties = no_ties
|
||||
self.tags = set()
|
||||
|
||||
self.add_tags(tags or [])
|
||||
|
||||
# Allow creating a Stitch from a Point
|
||||
if isinstance(x, Point):
|
||||
|
@ -34,8 +39,32 @@ class Stitch(Point):
|
|||
"NO TIES" if self.no_ties else " ",
|
||||
"COLOR CHANGE" if self.color_change else " ")
|
||||
|
||||
def add_tags(self, tags):
|
||||
for tag in tags:
|
||||
self.add_tag(tag)
|
||||
|
||||
def add_tag(self, tag):
|
||||
"""Store arbitrary information about a stitch.
|
||||
|
||||
Tags can be used to store any information about a stitch. This can be
|
||||
used by other parts of the code to keep track of where a Stitch came
|
||||
from. The Stitch treats tags as opaque.
|
||||
|
||||
Use strings as tags. Python automatically optimizes this kind of
|
||||
usage of strings, and it doesn't have to constantly do string
|
||||
comparisons. More details here:
|
||||
|
||||
https://stackabuse.com/guide-to-string-interning-in-python
|
||||
"""
|
||||
self.tags.add(tag)
|
||||
|
||||
def has_tag(self, tag):
|
||||
return tag in self.tags
|
||||
|
||||
def copy(self):
|
||||
return Stitch(self.x, self.y, self.color, self.jump, self.stop, self.trim, self.color_change, self.tie_modus, self.no_ties)
|
||||
return Stitch(self.x, self.y, self.color, self.jump, self.stop, self.trim, self.color_change, self.tie_modus, self.no_ties, self.tags)
|
||||
|
||||
def __json__(self):
|
||||
return vars(self)
|
||||
attributes = dict(vars(self))
|
||||
attributes['tags'] = list(attributes['tags'])
|
||||
return attributes
|
||||
|
|
Ładowanie…
Reference in New Issue