kopia lustrzana https://github.com/inkstitch/inkstitch
41 wiersze
1.6 KiB
Python
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
|