summaryrefslogtreecommitdiff
path: root/lib/extensions/auto_run.py
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2022-05-18 16:02:07 +0200
committerGitHub <noreply@github.com>2022-05-18 16:02:07 +0200
commitbc4f3b4699555f48c571be9a22a6768635c38cd0 (patch)
tree6a0bcd47bd19742857d0a7ed6bc034b22a4621a6 /lib/extensions/auto_run.py
parentbb0f3b8168ea2c889935b96b532188b79d7f952e (diff)
Auto route for running stitch (#1638)
* add auto route for running stitch * introduce free motion commands Co-authored-by: Lex Neva <github.com@lexneva.name>
Diffstat (limited to 'lib/extensions/auto_run.py')
-rw-r--r--lib/extensions/auto_run.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/extensions/auto_run.py b/lib/extensions/auto_run.py
new file mode 100644
index 00000000..02997fd0
--- /dev/null
+++ b/lib/extensions/auto_run.py
@@ -0,0 +1,65 @@
+# 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