From e0a4d06c43b6cce7b7dec793a26dee8481c4a762 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Thu, 23 Feb 2017 17:34:57 +0100 Subject: [PATCH] Hackish way to make scriptsboxes to work with Inkscape. --- boxes/__init__.py | 10 ++++++++++ scripts/boxes | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/boxes/__init__.py b/boxes/__init__.py index 80f543d..07987f6 100755 --- a/boxes/__init__.py +++ b/boxes/__init__.py @@ -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 diff --git a/scripts/boxes b/scripts/boxes index 56046e2..3bfe93c 100755 --- a/scripts/boxes +++ b/scripts/boxes @@ -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':