summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/elements/satin_column.py2
-rw-r--r--lib/elements/utils.py3
-rw-r--r--lib/extensions/__init__.py2
-rw-r--r--lib/extensions/base.py2
-rw-r--r--lib/extensions/group_commands.py41
-rwxr-xr-xlib/inx/extensions.py9
6 files changed, 53 insertions, 6 deletions
diff --git a/lib/elements/satin_column.py b/lib/elements/satin_column.py
index 43948e42..65e523d4 100644
--- a/lib/elements/satin_column.py
+++ b/lib/elements/satin_column.py
@@ -6,7 +6,7 @@
from copy import deepcopy
from itertools import chain
-from inkex import paths, NSS
+from inkex import NSS, paths
from shapely import affinity as shaffinity
from shapely import geometry as shgeo
from shapely.ops import nearest_points
diff --git a/lib/elements/utils.py b/lib/elements/utils.py
index cbac3d40..78dace6a 100644
--- a/lib/elements/utils.py
+++ b/lib/elements/utils.py
@@ -3,7 +3,7 @@
# Copyright (c) 2010 Authors
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
-from ..commands import is_command
+from ..commands import group_commands, is_command
from ..svg.tags import (EMBROIDERABLE_TAGS, INKSTITCH_ATTRIBS, SVG_IMAGE_TAG,
SVG_PATH_TAG, SVG_POLYLINE_TAG, SVG_TEXT_TAG)
from .auto_fill import AutoFill
@@ -17,7 +17,6 @@ from .polyline import Polyline
from .satin_column import SatinColumn
from .stroke import Stroke
from .text import TextObject
-from ..commands import group_commands
def node_to_elements(node): # noqa: C901
diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py
index 25f835c3..a6d25d2c 100644
--- a/lib/extensions/__init__.py
+++ b/lib/extensions/__init__.py
@@ -14,6 +14,7 @@ from .duplicate_params import DuplicateParams
from .embroider_settings import EmbroiderSettings
from .flip import Flip
from .global_commands import GlobalCommands
+from .group_commands import GroupCommands
from .import_threadlist import ImportThreadlist
from .input import Input
from .install import Install
@@ -41,6 +42,7 @@ __all__ = extensions = [StitchPlanPreview,
Zip,
Flip,
ObjectCommands,
+ GroupCommands,
LayerCommands,
GlobalCommands,
ConvertToSatin,
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index ce5f8b1d..353e433c 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -12,7 +12,7 @@ import inkex
from lxml import etree
from stringcase import snakecase
-from ..commands import is_command, layer_commands, group_commands
+from ..commands import group_commands, is_command, layer_commands
from ..elements import EmbroideryElement, nodes_to_elements
from ..elements.clone import is_clone
from ..i18n import _
diff --git a/lib/extensions/group_commands.py b/lib/extensions/group_commands.py
new file mode 100644
index 00000000..af1f9fb1
--- /dev/null
+++ b/lib/extensions/group_commands.py
@@ -0,0 +1,41 @@
+# 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 lxml import etree
+
+from ..commands import GROUP_COMMANDS, ensure_symbol, get_command_description
+from ..i18n import _
+from ..svg import get_correction_transform
+from ..svg.tags import INKSCAPE_LABEL, SVG_USE_TAG, XLINK_HREF
+from .commands import CommandsExtension
+
+
+class GroupCommands(CommandsExtension):
+ COMMANDS = GROUP_COMMANDS
+
+ def effect(self):
+ commands = [command for command in self.COMMANDS if getattr(self.options, command)]
+
+ if not commands:
+ inkex.errormsg(_("Please choose one or more commands to add."))
+ return
+
+ correction_transform = get_correction_transform(self.svg.get_current_layer(), child=True)
+
+ for i, command in enumerate(commands):
+ ensure_symbol(self.document, command)
+
+ etree.SubElement(self.svg.get_current_layer(), SVG_USE_TAG,
+ {
+ "id": self.uniqueId("use"),
+ INKSCAPE_LABEL: _("Ink/Stitch Command") + ": %s" % get_command_description(command),
+ XLINK_HREF: "#inkstitch_%s" % command,
+ "height": "100%",
+ "width": "100%",
+ "x": str(i * 20),
+ "y": "-10",
+ "transform": correction_transform
+ })
diff --git a/lib/inx/extensions.py b/lib/inx/extensions.py
index 9a197c5d..8ca0addc 100755
--- a/lib/inx/extensions.py
+++ b/lib/inx/extensions.py
@@ -5,8 +5,8 @@
import pyembroidery
-from ..commands import (COMMANDS, GLOBAL_COMMANDS, LAYER_COMMANDS,
- OBJECT_COMMANDS)
+from ..commands import (COMMANDS, GLOBAL_COMMANDS, GROUP_COMMANDS,
+ LAYER_COMMANDS, OBJECT_COMMANDS)
from ..extensions import Input, Output, extensions
from ..threads import ThreadCatalog
from .outputs import pyembroidery_output_formats
@@ -24,6 +24,10 @@ def global_commands():
return [(command, COMMANDS[command]) for command in GLOBAL_COMMANDS]
+def group_commands():
+ return [(command, COMMANDS[command]) for command in GROUP_COMMANDS]
+
+
def object_commands():
return [(command, COMMANDS[command]) for command in OBJECT_COMMANDS]
@@ -51,6 +55,7 @@ def generate_extension_inx_files():
write_inx_file(name, template.render(formats=pyembroidery_output_formats(),
debug_formats=pyembroidery_debug_formats(),
threadcatalog=threadcatalog(),
+ group_commands=group_commands(),
layer_commands=layer_commands(),
object_commands=object_commands(),
global_commands=global_commands()))