def testChain(self):
        "Test auto resetting of subsections"
        seq = Sequencer()
        seq.chain('h1', 'h2')  #creates them and links
        self.assertEquals(seq.next('h1'), 1)
        self.assertEquals(seq.next('h1'), 2)
        self.assertEquals(seq.next('h2'), 1)
        self.assertEquals(seq.next('h2'), 2)
        self.assertEquals(seq.next('h2'), 3)

        #start chapter 3
        self.assertEquals(seq.next('h1'), 3)
        #...and the first section should be numbered 1, not 4
        self.assertEquals(seq.next('h2'), 1)        
Beispiel #2
0
    def testChain(self):
        "Test auto resetting of subsections"
        seq = Sequencer()
        seq.chain('h1', 'h2')  #creates them and links
        self.assertEquals(seq.next('h1'), 1)
        self.assertEquals(seq.next('h1'), 2)
        self.assertEquals(seq.next('h2'), 1)
        self.assertEquals(seq.next('h2'), 2)
        self.assertEquals(seq.next('h2'), 3)

        #start chapter 3
        self.assertEquals(seq.next('h1'), 3)
        #...and the first section should be numbered 1, not 4
        self.assertEquals(seq.next('h2'), 1)        
Beispiel #3
0
class RptDocument(RptSuperclass, BaseDocTemplate):
    """document class for ict-ok.org reporting
    """
    def __init__(self, filename="/tmp/rpt001.pdf", **kw):
        """
        constructor of the object
        """
        RptSuperclass.__init__(self)
        self._element_type = "document"
        BaseDocTemplate.__init__(self, filename, **kw)
        self.pagesize = A4
        self.title = u"ict-ok.org Report"
        self.author = u"ict-ok.org"
        self.subject = u"ict-ok.org Report"
        self.leftMargin = 2 * cm
        self.rightMargin = 2 * cm
        self.topMargin = 2 * cm
        self.bottomMargin = 2 * cm
        self.showBoundary = False
        #self.allowSplitting = False
        rptFrame01 = RptFrame(2 * cm, 25 * mm, 165 * mm,
                              24.7 * cm)  # , showBoundary=True)
        rptPageT01 = RptPageTemplate(u"RptTP1", [rptFrame01], pagesize=A4)
        self.addPageTemplates(rptPageT01)
        registerRptFonts()
        #addMappingRptFonts()
        self.styles = getRptStyleSheet()
        self.seq = Sequencer()
        self.seq.chain('Chapter01', 'Chapter02')
        self.seq.chain('Chapter02', 'Chapter03')
        self.seq.chain('Chapter03', 'Chapter04')
        self.seq.chain('Chapter04', 'Chapter05')
        self.seq.chain('Chapter05', 'Chapter06')
        self.volumeNo = None
        self.authorName = None
        self.versionStr = None
        self.firstPageTitle = None
        self.lastPageTitle = None
        self.firstH1Seen = False

    def __str__(self):
        return u""

    def setVolumeNo(self, arg_VolumeNo=None):
        self.volumeNo = arg_VolumeNo

    def setAuthorName(self, arg_AuthorName=None):
        self.authorName = arg_AuthorName

    def setVersionStr(self, arg_VersionStr=None):
        self.versionStr = arg_VersionStr

    def buildPdf(self):
        self.build(self._content)

    def afterFlowable(self, flowable):
        if flowable.__class__.__name__ == 'Table':
            try:
                styleName = flowable.ik_type
            except AttributeError:
                styleName = ""
            if styleName[:7] == 'Heading':
                text = flowable._cellvalues[0][2].getPlainText()
                level = int(styleName[7:])
                pageNum = self.page
                self.notify('TOCEntry', (level, text, pageNum))
                key = str(hash(flowable))
                c = self.canv
                c.bookmarkPage(key)
                c.addOutlineEntry(text, key, level=level - 1, closed=0)
                nbr = flowable._cellvalues[0][0].getPlainText()
                self.lastPageTitle = "%s %s" % (nbr, text)
                if not self.firstPageTitle:
                    self.firstPageTitle = "%s %s" % (nbr, text)
        if flowable.__class__.__name__ == 'Paragraph':
            styleName = flowable.style.name
            if styleName[:7] == 'Heading':
                text = flowable.getPlainText()
                level = int(styleName[7:])
                pageNum = self.page
                self.notify('TOCEntry', (level, text, pageNum))
                key = str(hash(flowable))
                c = self.canv
                c.bookmarkPage(key)
                c.addOutlineEntry(text, key, level=level - 1, closed=0)
                nbr = flowable._cellvalues[0][0].getPlainText()
                self.lastPageTitle = "%s %s" % (nbr, text)
                if not self.firstPageTitle:
                    self.firstPageTitle = "%s %s" % (nbr, text)

    def myFirstPage(self, canvas, doc):
        canvas.saveState()
        canvas.setFont('Meta2Korrespondenz-Roman', 16)
        canvas.drawCentredString(self.pagesize[0] / 2.0,
                                 self.pagesize[1] - 108, Title)
        canvas.setFont('Meta2Korrespondenz-Roman', 9)
        canvas.drawString(1.0 * cm, 1.0 * cm, "First Page / %s" % pageinfo)
        canvas.restoreState()

    def myLaterPages(self, canvas, doc):
        canvas.saveState()
        canvas.setFont('Meta2Korrespondenz-Roman', 9)
        canvas.drawString(1.0 * cm, 1.0 * cm,
                          "Page %d %s" % (doc.page, pageinfo))
        canvas.restoreState()