inkstitch/lib/extensions/auto_run.py

66 wiersze
2.2 KiB
Python

# 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 Stroke
from ..i18n import _
from ..stitches.auto_run import autorun
from .commands import CommandsExtension
class AutoRun(CommandsExtension):
COMMANDS = ["trim"]
def __init__(self, *args, **kwargs):
CommandsExtension.__init__(self, *args, **kwargs)
self.arg_parser.add_argument("-b", "--break_up", dest="break_up", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("-p", "--preserve_order", dest="preserve_order", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("-o", "--options", dest="options", type=str, default="")
self.arg_parser.add_argument("-i", "--info", dest="help", type=str, default="")
def effect(self):
elements = self.check_selection()
if not elements:
return
starting_point = self.get_starting_point()
ending_point = self.get_ending_point()
break_up = self.options.break_up
autorun(elements, self.options.preserve_order, break_up, starting_point, ending_point, self.options.trim)
def get_starting_point(self):
return self.get_command_point("run_start")
def get_ending_point(self):
return self.get_command_point("run_end")
def get_command_point(self, command_type):
command = None
for stroke in self.elements:
command = stroke.get_command(command_type)
# return the first occurence directly
if command:
return command.target_point
def check_selection(self):
if not self.get_elements():
return
if not self.svg.selection:
# L10N auto-route running stitch columns extension
inkex.errormsg(_("Please select one or more stroke elements."))
return False
elements = [element for element in self.elements if isinstance(element, Stroke)]
if len(elements) == 0:
inkex.errormsg(_("Please select at least one stroke element."))
return False
return elements