From 7cc49782869031e5b95c8c8882eded703a25b265 Mon Sep 17 00:00:00 2001 From: Oin Maple Date: Sat, 25 Apr 2009 11:33:22 +0300 Subject: Changed base templates and generator scripts to allow for width and height flags --- fedora_business_cards/frontend/cmdline.py | 9 +++- fedora_business_cards/generate.py | 23 +++++++++- templates/back-northamerica.svg | 53 +++++++++++++++++++++-- templates/front-northamerica.svg | 71 ++++++++++++++++++++++++++----- 4 files changed, 138 insertions(+), 18 deletions(-) diff --git a/fedora_business_cards/frontend/cmdline.py b/fedora_business_cards/frontend/cmdline.py index 958aa33..b14fe3a 100644 --- a/fedora_business_cards/frontend/cmdline.py +++ b/fedora_business_cards/frontend/cmdline.py @@ -58,6 +58,10 @@ def main(): parser.add_option("-u", "--username", dest="username", default="", help="If set, use a different name than the one logged"+\ " in with to fill out business card information") + parser.add_option("-x", "--width", dest="width", default="", + help="If set, use a different height") + parser.add_option("-y", "--height", dest="height", default="", + help="If set, use a different width") parser.add_option("--pdf", dest="output", default="png", const="pdf", action="store_const", help="Export as PDF") parser.add_option("--png", dest="output", default="png", const="png", @@ -149,7 +153,8 @@ def main(): # generate front of business card print "Generating front...", sys.stdout.flush() - xml = generate.gen_front(name, title, lines, frontloc) + xml = generate.gen_front(name, title, lines, frontloc, + options.width, options.height) if options.output == "svg": export.svg_to_file(xml, options.username+'-front.'+options.output) elif options.output == "cmyk_pdf": @@ -160,7 +165,7 @@ def main(): # generate back of business card print "Generating back...", sys.stdout.flush() - xml = generate.gen_back(backloc) + xml = generate.gen_back(backloc, options.width, options.height) if options.output == "svg": export.svg_to_file(xml, options.username+'-back.'+options.output) elif options.output == "cmyk_pdf": diff --git a/fedora_business_cards/generate.py b/fedora_business_cards/generate.py index 91f1e14..cf2b4e1 100644 --- a/fedora_business_cards/generate.py +++ b/fedora_business_cards/generate.py @@ -37,24 +37,43 @@ def find_node(doc_node, tag_name, attribute_name, attribute_value): return element -def gen_front(name, title, lines, template_loc): +def gen_front(name, title, lines, template_loc, width=None, height=None): """ Generates the front of the business card. """ dom = minidom.parse(template_loc) + namenode = find_node(dom, 'text', 'id', 'fullname') namenode.appendChild(dom.createTextNode(name)) titlenode = find_node(dom, 'text', 'id', 'title') titlenode.appendChild(dom.createTextNode(title)) + if width or height: + svg = find_node(dom, 'svg', 'id', 'svg') + svg.setAttribute('width', width) + svg.setAttribute('height', height) + svg.setAttribute('viewBox', '0 0 '+width+' '+height) + whiteness = find_node(dom, 'rect', 'id', 'whiteness') + whiteness.setAttribute('height', height) + blueband = find_node(dom, 'rect', 'id', 'blueband') + blueband.setAttribute('height', height) + blueband.setAttribute('width', width) for i in range(6): node = find_node(dom, 'tspan', 'id', 'line%d' % (i+1)) node.appendChild(dom.createTextNode(lines[i])) return dom.toxml() -def gen_back(template_loc): +def gen_back(template_loc, width=None, height=None): """ Generates the back of the business card. """ dom = minidom.parse(template_loc) + if width or height: + svg = find_node(dom, 'svg', 'id', 'svg') + svg.setAttribute('width', width) + svg.setAttribute('height', height) + svg.setAttribute('viewBox', '0 0 '+width+' '+height) + background = find_node(dom, 'rect', 'id', 'background') + background.setAttribute('width', width) + background.setAttribute('height', height) return dom.toxml() diff --git a/templates/back-northamerica.svg b/templates/back-northamerica.svg index 942c4a7..4b0943c 100644 --- a/templates/back-northamerica.svg +++ b/templates/back-northamerica.svg @@ -1,21 +1,68 @@ + id="svg" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="back-northamerica.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + + + + image/svg+xml + + + + + + id="defs22"> + + diff --git a/templates/front-northamerica.svg b/templates/front-northamerica.svg index 4bae12f..912e551 100644 --- a/templates/front-northamerica.svg +++ b/templates/front-northamerica.svg @@ -2,16 +2,62 @@ + id="svg" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="front-northamerica.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + + + + image/svg+xml + + + + + + + y="0" + id="blueband" + style="fill:#3c6eb4;fill-opacity:1;stroke:none;stroke-width:0.89999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + id="whiteness" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> @@ -45,19 +91,22 @@ y="63.477001" id="fullname" xml:space="preserve" - style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:50.04000092;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:MgOpen Moderna" /> + style="font-size:13px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:50.04000092;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:MgOpen Moderna" + sodipodi:linespacing="125%" /> + style="font-size:11px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:50.04000092;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:MgOpen Moderna" + sodipodi:linespacing="125%" />