summaryrefslogtreecommitdiff
path: root/lib/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions')
-rw-r--r--lib/extensions/__init__.py4
-rw-r--r--lib/extensions/base.py9
-rw-r--r--lib/extensions/preferences.py (renamed from lib/extensions/embroider_settings.py)18
3 files changed, 25 insertions, 6 deletions
diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py
index 6f42a349..f9f6072b 100644
--- a/lib/extensions/__init__.py
+++ b/lib/extensions/__init__.py
@@ -17,7 +17,7 @@ from .cut_satin import CutSatin
from .cutwork_segmentation import CutworkSegmentation
from .density_map import DensityMap
from .duplicate_params import DuplicateParams
-from .embroider_settings import EmbroiderSettings
+from .preferences import Preferences
from .fill_to_stroke import FillToStroke
from .flip import Flip
from .generate_palette import GeneratePalette
@@ -96,5 +96,5 @@ __all__ = extensions = [StitchPlanPreview,
Simulator,
Reorder,
DuplicateParams,
- EmbroiderSettings,
+ Preferences,
CutworkSegmentation]
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index c2f76b27..7b3c6f1c 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -23,6 +23,7 @@ from ..svg import generate_unique_id
from ..svg.tags import (CONNECTOR_TYPE, EMBROIDERABLE_TAGS, INKSCAPE_GROUPMODE,
NOT_EMBROIDERABLE_TAGS, SVG_CLIPPATH_TAG, SVG_DEFS_TAG,
SVG_GROUP_TAG, SVG_MASK_TAG)
+from ..utils.settings import DEFAULT_METADATA, global_settings
SVG_METADATA_TAG = inkex.addNS("metadata", "svg")
@@ -52,9 +53,14 @@ class InkStitchMetadata(MutableMapping):
"""
def __init__(self, document):
+ super().__init__()
self.document = document
self.metadata = document.metadata
+ for setting in DEFAULT_METADATA:
+ if self[setting] is None:
+ self[setting] = global_settings[f'default_{setting}']
+
# Because this class inherints from MutableMapping, all we have to do is
# implement these five methods and we get a full dict-like interface.
@@ -96,6 +102,9 @@ class InkStitchMetadata(MutableMapping):
return i + 1
+ def __json__(self):
+ return dict(self)
+
class InkstitchExtension(inkex.Effect):
"""Base class for Inkstitch extensions. Not intended for direct use."""
diff --git a/lib/extensions/embroider_settings.py b/lib/extensions/preferences.py
index cdf18991..8a06f829 100644
--- a/lib/extensions/embroider_settings.py
+++ b/lib/extensions/preferences.py
@@ -4,12 +4,15 @@
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
from .base import InkstitchExtension
+from ..api import APIServer
+from ..gui import open_url
-class EmbroiderSettings(InkstitchExtension):
+class Preferences(InkstitchExtension):
'''
This saves embroider settings into the metadata of the file
'''
+
def __init__(self, *args, **kwargs):
InkstitchExtension.__init__(self, *args, **kwargs)
self.arg_parser.add_argument("-c", "--collapse_len_mm",
@@ -22,6 +25,13 @@ class EmbroiderSettings(InkstitchExtension):
help="minimum stitch length (mm)")
def effect(self):
- self.metadata = self.get_inkstitch_metadata()
- self.metadata['collapse_len_mm'] = self.options.collapse_length_mm
- self.metadata['min_stitch_len_mm'] = self.options.min_stitch_len_mm
+ api_server = APIServer(self)
+ port = api_server.start_server()
+ electron = open_url("/preferences?port=%d" % port)
+ electron.wait()
+ api_server.stop()
+ api_server.join()
+
+ # self.metadata = self.get_inkstitch_metadata()
+ # self.metadata['collapse_len_mm'] = self.options.collapse_length_mm
+ # self.metadata['min_stitch_len_mm'] = self.options.min_stitch_len_mm