Hackish way to make scriptsboxes to work with Inkscape.

This commit is contained in:
Florian Festi 2017-02-23 17:34:57 +01:00
parent ff7ee22885
commit e0a4d06c43
2 changed files with 18 additions and 1 deletions

View File

@ -22,6 +22,7 @@ except ImportError:
pass
import cairo
import math
import sys
import argparse
from argparse import ArgumentParser
import re
@ -30,6 +31,7 @@ from xml.sax.saxutils import quoteattr
from boxes import edges
from boxes import formats
from boxes import svgutil
from boxes import gears
from boxes import pulley
from boxes import parts
@ -215,6 +217,7 @@ class Boxes:
self.formats = formats.Formats()
self.argparser = ArgumentParser(description=self.__doc__)
self.edgesettings = {}
self.inkscapefile = None
self.argparser._action_groups[1].title = self.__class__.__name__ + " Settings"
defaultgroup = self.argparser.add_argument_group(
@ -330,6 +333,11 @@ class Boxes:
:param args: (Default value = None) parameters, None for using sys.argv
"""
args = args or sys.argv
if args[-1][0] != "-":
self.inkscapefile = args[-1]
del args[-1]
args = [a for a in args if not a.startswith('--tab=')]
for key, value in vars(self.argparser.parse_args(args=args)).items():
# treat edge settings separately
for setting in self.edgesettings:
@ -497,6 +505,8 @@ class Boxes:
self.surface.finish()
self.formats.convert(self.output, self.format)
if self.inkscapefile:
svgutil.svgMerge(self.output, self.inkscapefile, sys.stdout)
############################################################
### Turtle graphics commands

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3
from __future__ import print_function
import argparse
import os
import sys
@ -26,9 +27,15 @@ def main():
del modules['_template']
if len(sys.argv) == 1:
printusage()
elif sys.argv[1] in modules:
elif (sys.argv[1] in modules or
(sys.argv[1].startswith("--generator=") and
sys.argv[1][12:] in modules)):
if sys.argv[1].startswith("--generator="):
sys.argv[1] = sys.argv[1][12:]
name = sys.argv[1]
sys.argv[0] = "%s %s" % (sys.argv[0], sys.argv[1])
sys.argv[1] = '--tab="0"'
del sys.argv[0]
del sys.argv[1]
modules[name].main()
elif sys.argv[1] == '--list':