Files
PyRIGS/z3c/rml/tests/module.py
2014-12-07 17:32:25 +00:00

79 lines
3.0 KiB
Python

##############################################################################
#
# Copyright (c) 2007-2012 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTLAR PURPOSE.
#
##############################################################################
"""Testing all XML Locale functionality.
"""
import reportlab.platypus
import reportlab.lib.styles
import reportlab.graphics.widgets.markers
from reportlab.graphics import renderPDF, shapes
from reportlab.lib import colors
from z3c.rml import attr, interfaces, SampleStyleSheet
def myPreformatted(params):
return reportlab.platypus.Preformatted('''
Hey, this is a long text from a plugin. Hey, this is a long text from
a plugin. Hey, this is a long text from a plugin. Hey, this is a long
text from a plugin. Hey, this is a long text from a plugin. Hey, this
is a long text from a plugin. Hey, this is a long text from a
plugin. Hey, this is a long text from a plugin. Hey, this is a long
text from a plugin. Hey, this is a long text from a plugin. Hey, this
is a long text from a plugin. Hey, this is a long text from a
plugin. Hey, this is a long text from a plugin. Hey, this is a long
text from a plugin. Hey, this is a long text from a plugin. Hey, this
is a long text from a plugin.''',
SampleStyleSheet['Normal'])
class LinkURL(reportlab.platypus.flowables.Flowable):
def __init__(self, link):
self.link = link
def wrap(self, *args):
return (0, 0)
def draw(self):
self.canv.linkURL(self.link, None)
def linkURL(params):
params = eval(params)
return (
reportlab.platypus.Paragraph(
params[0], SampleStyleSheet['Normal']),
LinkURL(*params))
class IMarker(interfaces.IRMLDirectiveSignature):
x = attr.Measurement()
y = attr.Measurement()
dx = attr.Measurement()
dy = attr.Measurement()
size = attr.Measurement()
fillColor = attr.Color(acceptNone=True, required=False)
strokeColor = attr.Color(acceptNone=True, required=False)
strokeWidth = attr.Measurement(required=False)
arrowBarDx = attr.Measurement(required=False)
arrowHeight = attr.Measurement(required=False)
def symbols(canvas, params):
args = eval('dict(%s)' %params)
name = args.pop('name')
n = args.pop('n')
for key, value in args.items():
field = IMarker[key].bind(canvas.manager)
args[key] = field.fromUnicode(value)
m = reportlab.graphics.widgets.markers.makeMarker(name, **args)
drawing = shapes.Drawing()
drawing.add(m)
for idx in range(n):
drawing.drawOn(canvas, idx*args['dx'], idx*args['dy'])