inkstitch/lib/extensions/cut_satin.py

41 wiersze
1.6 KiB
Python

import inkex
from .base import InkstitchExtension
from ..i18n import _
from ..elements import SatinColumn
from ..svg import get_correction_transform
class CutSatin(InkstitchExtension):
def effect(self):
if not self.get_elements():
return
if not self.selected:
inkex.errormsg(_("Please select one or more satin columns to cut."))
return
for satin in self.elements:
if isinstance(satin, SatinColumn):
command = satin.get_command("satin_cut_point")
if command is None:
# L10N will have the satin's id prepended, like this:
# path12345: error: this satin column does not ...
satin.fatal(_('this satin column does not have a "satin column cut point" command attached to it. '
'Please use the "Attach commands" extension and attach the "Satin Column cut point" command first.'))
split_point = command.target_point
command.use.getparent().remove(command.use)
command.connector.getparent().remove(command.connector)
new_satins = satin.split(split_point)
transform = get_correction_transform(satin.node)
parent = satin.node.getparent()
index = parent.index(satin.node)
parent.remove(satin.node)
for new_satin in new_satins:
new_satin.node.set('transform', transform)
parent.insert(index, new_satin.node)
index += 1