# Authors: see git history # # Copyright (c) 2010 Authors # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. import inkex from ..elements import SatinColumn from ..i18n import _ from ..svg import get_correction_transform from .base import InkstitchExtension class CutSatin(InkstitchExtension): def effect(self): if not self.get_elements(): return if not self.svg.selection or not any([isinstance(element, SatinColumn) for element in self.elements]): 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_group = command.use.getparent() if command_group is not None and command_group.get('id').startswith('command_group'): command_group.getparent().remove(command_group) else: 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