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

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from __future__ import print_function
import argparse import argparse
import os import os
import sys import sys
@ -26,9 +27,15 @@ def main():
del modules['_template'] del modules['_template']
if len(sys.argv) == 1: if len(sys.argv) == 1:
printusage() 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] name = sys.argv[1]
sys.argv[0] = "%s %s" % (sys.argv[0], 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] del sys.argv[1]
modules[name].main() modules[name].main()
elif sys.argv[1] == '--list': elif sys.argv[1] == '--list':