summaryrefslogtreecommitdiff
path: root/embroider_print.py
diff options
context:
space:
mode:
Diffstat (limited to 'embroider_print.py')
-rw-r--r--embroider_print.py32
1 files changed, 25 insertions, 7 deletions
diff --git a/embroider_print.py b/embroider_print.py
index 96c3255d..79d9bf45 100644
--- a/embroider_print.py
+++ b/embroider_print.py
@@ -9,6 +9,7 @@ import socket
import errno
import time
import logging
+from copy import deepcopy
import wx
import inkex
@@ -23,7 +24,7 @@ from jinja2 import Environment, FileSystemLoader, select_autoescape
from datetime import date
import base64
-from flask import Flask, request, Response, send_from_directory
+from flask import Flask, request, Response, send_from_directory, jsonify
import webbrowser
import requests
@@ -71,6 +72,7 @@ def open_url(url):
class PrintPreviewServer(Thread):
def __init__(self, *args, **kwargs):
self.html = kwargs.pop('html')
+ self.metadata = kwargs.pop('metadata')
Thread.__init__(self, *args, **kwargs)
self.daemon = True
self.last_request_time = None
@@ -129,6 +131,21 @@ class PrintPreviewServer(Thread):
# nothing to do here -- request_started() will restart the watcher
return "OK"
+ @self.app.route('/metadata/<field_name>/set', methods=['POST'])
+ def set_field(field_name):
+ self.metadata[field_name] = request.form['value']
+ return "OK"
+
+ @self.app.route('/metadata/<field_mame>', methods=['GET'])
+ def get_field(field_name):
+ return jsonify(self.metadata[field_name])
+
+ @self.app.route('/metadata', methods=['GET'])
+ def get_metadata():
+ # It's necessary to convert the metadata to a dict because json doesn't
+ # trust that a MutableMapping is dict-like :(
+ return jsonify(dict(self.metadata))
+
def stop(self):
# for whatever reason, shutting down only seems possible in
# the context of a flask request, so we'll just make one
@@ -299,7 +316,11 @@ class Print(InkstitchExtension):
color_blocks = stitch_plan.color_blocks,
)
- print_server = PrintPreviewServer(html=html)
+ # We've totally mucked with the SVG. Restore it so that we can save
+ # metadata into it.
+ self.document = deepcopy(self.original_document)
+
+ print_server = PrintPreviewServer(html=html, metadata=self.get_inkstitch_metadata())
print_server.start()
time.sleep(1)
@@ -310,12 +331,9 @@ class Print(InkstitchExtension):
info_frame.Show()
app.MainLoop()
- # don't let inkex print the document out
- sys.exit(0)
-
if __name__ == '__main__':
- save_stderr()
+ #save_stderr()
effect = Print()
effect.affect()
- restore_stderr()
+ #restore_stderr()