Roberto Alsina
By: a guest | Jun 3rd, 2009 | Syntax:
Python | Size: 1.62 KB | Hits: 14 | Expires: Never
class DelayedParagraph(IndexingFlowable):
"""A flowable that inserts a paragraph, but will only do so and be satisfied
when it has some required data, such as page numbers"""
def __init__(self, text, style,
bulletText = None, frags=None, caseSensitive=1, encoding='utf8'):
self.text=text
self.style=style
self.bulletText=bulletText
self.frags=frags
self.caseSensitive=caseSensitive
self.encoding=encoding
self._satisfied=False
self.refs={}
def isSatisfied(self):
print 'satisfied',self._satisfied
return self._satisfied
def wrap(self, w, h):
print 'wrap'
self.para=Paragraph(self.text,self.style,self.bulletText,self.frags,self.
caseSensitive,self.encoding)
return self.para.wrap(w,h)
def split(self, w, h):
print 'split'
return self.para.split(w, h)
def drawOn(self, canvas, x, y, _sW=0):
print 'drawOn'
self.para.drawOn(canvas, x, y, _sW)
def notify(self,kind,stuff):
if kind=='Reference':
print "Stuff",stuff
refid,page=stuff
self.refs[refid]=page
# Try to resolve page references
try:
# Text wil be something like
#'Go see A title (Page %(a-title)s)'
# and self.refs would be
# {'a-title': 2}
self.text=self.text%self.refs
print self.text,self.refs
self._satisfied=True
except:
pass