diff options
Diffstat (limited to 'lib/extensions/cut_satin.py')
| -rw-r--r-- | lib/extensions/cut_satin.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/extensions/cut_satin.py b/lib/extensions/cut_satin.py new file mode 100644 index 00000000..0bef794e --- /dev/null +++ b/lib/extensions/cut_satin.py @@ -0,0 +1,37 @@ +import inkex + +from .base import InkstitchExtension +from ..i18n import _ +from ..elements import SatinColumn + + +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) + parent = satin.node.getparent() + index = parent.index(satin.node) + parent.remove(satin.node) + for new_satin in new_satins: + parent.insert(index, new_satin.node) + index += 1 |
