Esempio n. 1
0
 def expandFrame(self):
     """Text is inserted into a frame without regard to frame size.
      Later we expand the frame to fit the text, carrying text to
      a new frame if necessary."""
     numcarries = 0
     self.raiseImages()
     if self.frame != None:
         while scribus.textOverflows(self.frame, ) > 0:
             (x, y) = scribus.getPosition(self.frame)
             (width, height) = scribus.getSize(self.frame)
             if y + height < self.pageheight - self.bottommargin:
                 scribus.sizeObject(width, height + 1, self.frame)
             else:
                 fullpage = (y <= self.topmargin and self.columns == 1)
                 if self.buffer != [] and not self.framelinked and numcarries < 4 and not fullpage:
                     numcarries = numcarries + 1
                     scribus.deselectAll()
                     scribus.deleteText(self.frame)
                     for (content, style) in self.contents:
                         self.styleText(content, style, self.frame)
                     newcontents = self.buffer[:]
                     self.newFrame(columns=self.columns)
                     for (content, style) in newcontents:
                         self.styleText(content, style, self.frame)
                     self.buffer = newcontents[:]
                 else:
                     lastframe = self.frame
                     self.newFrame(columns=self.columns)
                     scribus.linkTextFrames(lastframe, self.frame)
                     self.framelinked = True
             self.raiseImages()
Esempio n. 2
0
 def expandFrame(self):
    """Text is inserted into a frame without regard to frame size.
       Later we expand the frame to fit the text, carrying text to
       a new frame if necessary."""
    numcarries = 0
    self.raiseImages()
    if self.frame != None:
       while scribus.textOverflows(self.frame,) > 0:
          (x,y) = scribus.getPosition(self.frame)
          (width,height) = scribus.getSize(self.frame)
          if y + height < self.pageheight - self.bottommargin:
             scribus.sizeObject(width, height + 1, self.frame)
          else:
             fullpage = (y <= self.topmargin and self.columns == 1)
             if self.buffer != [] and not self.framelinked and numcarries < 4 and not fullpage:
                numcarries = numcarries + 1
                scribus.deselectAll()
                scribus.deleteText(self.frame)
                for (content,style) in self.contents:
                   self.styleText(content,style,self.frame)
                newcontents = self.buffer[:]
                self.newFrame(columns=self.columns)
                for (content,style) in newcontents:
                   self.styleText(content,style,self.frame)
                self.buffer = newcontents[:]
             else:
                lastframe = self.frame
                self.newFrame(columns=self.columns)
                scribus.linkTextFrames(lastframe,self.frame)
                self.framelinked = True
          self.raiseImages()
Esempio n. 3
0
    def __init__(self):
        if not scribus.haveDoc():
            scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK)
            sys.exit(1)

        if scribus.selectionCount() == 0:
            scribus.messageBox('Scribus - Script Error',
                               "There is no object selected.\nPlease select a text frame and try again.",
                               scribus.ICON_WARNING, scribus.BUTTON_OK)
            sys.exit(2)
        if scribus.selectionCount() > 1:
            scribus.messageBox('Scribus - Script Error',
                               "You have more than one object selected.\nPlease select one text frame and try again.",
                               scribus.ICON_WARNING, scribus.BUTTON_OK)
            sys.exit(2)

        self.textbox = scribus.getSelectedObject()
        ftype = scribus.getObjectType(self.textbox)

        if ftype != "TextFrame":
            scribus.messageBox('Scribus - Script Error', "This is not a textframe. Try again.", scribus.ICON_WARNING,
                               scribus.BUTTON_OK)
            sys.exit(2)

        scribus.deleteText(self.textbox)
        self.insertPos = 0
        self.lastPStyle = ""
        self.insertText('Radtouren\n', 'Radtouren_titel')
Esempio n. 4
0
    def evalTemplate(self):
        pos2 = 0
        while True:
            textlen = scribus.getTextLength(self.textbox)
            if textlen == 0:
                return
            scribus.selectText(0, textlen, self.textbox)
            alltext = scribus.getAllText(self.textbox)
            # logger.debug("alltext: %s %s", type(alltext), alltext)

            pos1 = alltext.find("/template", pos2)
            logger.debug("pos /template=%d", pos1)
            if pos1 < 0:
                return
            pos2 = alltext.find("/endtemplate", pos1)
            if pos2 < 0:
                raise Exception("kein /endtemplate nach /template")
            pos2 += 12  # len("/endtemplate")
            lines = alltext[pos1:pos2].split('\r')
            logger.debug("lines:%s %s", type(lines), str(lines))
            line0 = lines[0]
            lineN = lines[-1]
            # logger.debug("lineN: %s %s", type(lineN), lineN)
            if lineN != "/endtemplate":
                raise ValueError(
                    "Die letzte Zeile des templates darf nur /endtemplate enthalten"
                )
            words = line0.split()
            typ = words[1]
            if typ != "/tour" and typ != "/termin" and typ != "/toc":
                raise ValueError(
                    "Zweites Wort nach /template muß /tour, /termin  oder /toc sein"
                )
            typ = typ[1:]
            if typ == "toc":
                continue

            sel = words[2]
            if not sel.startswith("/selektion="):
                raise ValueError(
                    "Drittes Wort nach /template muß mit /selektion= beginnen")
            sel = sel[11:].lower()
            sels = self.tourselections if typ == "tour" else self.terminselections
            if not sel in sels:
                raise ValueError("Selektion " + sel + " nicht in " + typ +
                                 "selektion")
            sel = sels[sel]
            events = self.touren if typ == "tour" else self.termine
            self.insertPos = pos1
            runs = self.makeRuns(pos1, pos2)
            logger.debug("runs:%s", str(runs))
            # can now remove template
            scribus.selectText(pos1, pos2 - pos1, self.textbox)
            scribus.deleteText(self.textbox)
            pos2 = pos1
            self.insertPos = pos1
            self.evalEvents(sel, events, runs)
Esempio n. 5
0
def fill_text_placeholders(frame, fields, row):
    for field in fields:
        # TODO: currently, if the fields is not found it's left as is, with no warning
        if field['key'] in row:
            scribus.insertText(row[field['key']], field['start'] + 1, frame)
            # delete "key}"
            scribus.selectText(field['start'] + len(row[field['key']]) + 1,
                               field['end'] - field['start'], frame)
            scribus.deleteText(frame)
            # delete "{"
            scribus.selectText(field['start'], 1, frame)
            scribus.deleteText(frame)
Esempio n. 6
0
 def evalTocEvents(self, runs, firstPageNr):
     toc = []
     pagenum = scribus.pageCount()
     foundEvents = 0
     for page in range(1, pagenum + 1):
         scribus.gotoPage(page)
         self.pageNr = firstPageNr + page - 1
         pageitems = scribus.getPageItems()
         for item in pageitems:
             if item[1] != 4:
                 continue
             tbox = item[0]
             tlen = scribus.getTextLength(tbox)
             logger.debug("tbox %s length %d", tbox, tlen)
             if tlen == 0:
                 continue
             scribus.selectText(0, tlen, tbox)
             allText = scribus.getText(
                 tbox)  # getAllText returns text of complete link chain!
             z = 0
             while True:
                 x = allText.find("_evtid_:", z)
                 if x < 0:
                     break
                 y = allText.find(STX, x)
                 evtId = allText[x + 8:y]
                 z = allText.find(ETX, y)
                 titel = allText[y + 1:z]
                 logger.debug("eventid %s, titel %s on page %d", evtId,
                              titel, self.pageNr)
                 event = self.gui.eventServer.getEventById(evtId, titel)
                 toc.append((self.pageNr, event))
                 foundEvents += 1
     logger.debug("sorting")
     toc.sort(key=lambda t: t[1].getDatumRaw())  # sortieren nach Datum
     for (pageNr, event) in toc:
         self.eventMsg = event.getTitel() + " vom " + event.getDatum()[0]
         logger.debug("event %s on page %d", self.eventMsg, self.pageNr)
         self.pageNr = pageNr
         for run in runs:
             self.run = run
             self.evalRun(event)
         self.insertText("\n", self.run)
     self.pageNr = None
     if foundEvents == 0:
         print("Noch keine Events gefunden")
     else:
         # remove template
         pos1, pos2, tbox = self.toBeDelPosToc
         scribus.selectText(pos1, pos2 - pos1, tbox)
         scribus.deleteText(tbox)
         scribus.redrawAll()
Esempio n. 7
0
    def replaceText(text, code):
        if text is None or text is u'':
            logger.warn(".. empty content for elem [%s]", code)
            text = '   '

        l = scribus.getTextLength(code)
        scribus.selectText(0, l - 1, code)
        scribus.deleteText(code)
        scribus.insertText(text, 0, code)

        l = scribus.getTextLength(code)
        scribus.selectText(l - 1, 1, code)
        scribus.deleteText(code)
Esempio n. 8
0
def change_text(text, item):

    l = scribus.getTextLength(item)
    scribus.selectText(0, l, item)
    fs = scribus.getFontSize(item)
    f = scribus.getFont(item)
    
    scribus.insertText(text, 0, item)
    l2 = scribus.getTextLength(item)
    scribus.selectText(0, l2, item)
    scribus.setFontSize(fs, item)
    scribus.setFont(f, item)

    scribus.selectText(l2-l, l, item)
    scribus.deleteText(item)

    scribus.deselectAll()
Esempio n. 9
0
 def rmEventIdMarkers(self):
     pagenum = scribus.pageCount()
     for page in range(1, pagenum + 1):
         scribus.gotoPage(page)
         pageitems = scribus.getPageItems()
         for item in pageitems:
             if item[1] != 4:
                 continue
             tbox = item[0]
             # frameLinks nonempty only if starten called from same gui
             if self.frameLinks.get(
                     tbox
             ) is not None:  # i.e. if tbox is not the root of a link chain
                 continue
             # TODO find out if tbox is a linked frame
             tlen = scribus.getTextLength(tbox)
             if tlen == 0:
                 continue
             scribus.selectText(0, tlen, tbox)
             allText = scribus.getAllText(
                 tbox)  # getAllText returns text of complete link chain!
             z = 0
             xl = []
             while True:
                 x = allText.find("_evtid_:", z)
                 if x < 0:
                     break
                 y = allText.find(STX, x)
                 evtId = allText[x + 8:y]
                 z = allText.find(ETX, y)
                 titel = allText[y + 1:z]
                 xl.append((x, z + 1 - x))
             for (x, l) in reversed(xl):  # the reversed is important!
                 scribus.selectText(x, l, tbox)
                 scribus.deleteText(tbox)
     scribus.redrawAll()
Esempio n. 10
0
item = scribus.getSelectedObject()

if (scribus.getObjectType(item) != 'TextFrame'):
    scribus.messageBox('Usage Error', 'You need to select a text frame')
    sys.exit(2)

print(scribus.getTextLength(item))
if scribus.getTextLength(item) > 0:
    scribus.messageBox('Usage Error', 'The text frame should be empty')
    sys.exit(2)

answer = scribus.valueDialog('Numbered lines', 'Start number, step', '1,1')
start, step = answer.split(',')
start = int(start)
step = int(step)

i = start
print(scribus.textOverflows(item))
while scribus.textOverflows(item) == 0:
    if i == start or i % step == 0:
        scribus.insertText(str(i) + "\n", -1, item)
    else:
        scribus.insertText("\n", -1, item)
    i += 1

length = scribus.getTextLength(item)
while scribus.textOverflows(item) != 0:
    scribus.selectText(length - 2, 1, item)
    scribus.deleteText(item)
    length -= 1
    scribus.redrawAll()
    print item
    scribus.deselectAll()
    scribus.selectObject(item)
    n = scribus.getTextLength()
    print n
    for i in range(n):
        scribus.selectText(i, 1)
        original = scribus.getText()
        if original not in charsIgnore and len(original) > 0:
            shuffled = chars.pop(0)
            if original.isupper():
                shuffled = shuffled.upper()
            scribus.insertText(shuffled, i)
            scribus.selectText(i + 1, 1)
            scribus.deleteText()

for item in imageFrame:
    print item
    scribus.messagebarText("Processing image frame " + item)
    scribus.redrawAll()
    imageFile = scribus.getImageFile(item)
    fileName, fileExtension = os.path.splitext(imageFile)
    imageFileBlurred = fileName + "_blurred" + fileExtension
    # TODO: instead of using image magick we should expos scribus' own blur to the scripter
    if distutils.spawn.find_executable("convert") != "":
        command = "identify " + imageFile
        result = os.popen(command).read()
        if result != "":
            size = max(
                result.split(" ")[2].split("x"))  # extract max(width, height)
    scribus.redrawAll()
    print item
    scribus.deselectAll()
    scribus.selectObject(item)
    n = scribus.getTextLength()
    print n
    for i in range(n) :
        scribus.selectText(i, 1)
        original = scribus.getText()
        if original not in charsIgnore and len(original) > 0:
            shuffled = chars.pop(0)
            if original.isupper() :
                shuffled = shuffled.upper()
            scribus.insertText(shuffled, i)
            scribus.selectText(i + 1, 1)
            scribus.deleteText()

for item in imageFrame :
    print item
    scribus.messagebarText("Processing image frame "+item)
    scribus.redrawAll()
    imageFile = scribus.getImageFile(item)
    fileName, fileExtension = os.path.splitext(imageFile)
    imageFileBlurred = fileName+"_blurred"+fileExtension
    # TODO: instead of using image magick we should expos scribus' own blur to the scripter
    if distutils.spawn.find_executable("convert") != "" :
        command = "identify "+imageFile
        result = os.popen(command).read();
        if result != "" :
            size = max(result.split(" ")[2].split("x")) # extract max(width, height)
            command = "convert "+imageFile+" -blur 0x"+str(int(size)/50)+" "+imageFileBlurred
Esempio n. 13
0
def importSocietes(filename, fileCat, iPro):
    arrLines=[]#liste de lignes du fichier csv, chaque ligne est une liste de champs 
    mapCol={}#table de correspondance entre les champs à importer et les numéros de colonne du fichier csv
    mapCat={}#table de correspondance entre numéro de catégorie et nom de catégorie
    nbCat=readSocietes(filename, fileCat, mapCat, arrLines, mapCol)
    (nbChg, nbPro)=(0,0)
    numPro=1
    while scribus.getTextLength("txtPros%d" % numPro)>0 and numPro<=NB_TXT:
        numPro+=1
    if iPro==1 and scribus.objectExists("txtBureauxChange"):
        scribus.deleteText("txtBureauxChange")

    scribus.progressTotal(len(arrLines))
    strPro="txtPros%d"%numPro
    scribus.statusMessage("Remplissage du cadre de texte %s..."%strPro)
    bFirstPro=True
    strCat="#"
    for record in arrLines:#Pour chaque pro
        # log("nbPro=%d\n"%nbPro)
        if strCat != record[mapCol["cat"]]:#nouvelle categorie
            strCat=record[mapCol["cat"]]
            bNewCat=True
        else:
            bNewCat=False

        nbPro+=1
        if nbPro<iPro:#déjà importé à l'exécution précédente
            continue
        try:
          scribus.progressSet(nbPro)
          if record[mapCol["chg"]]=="True" and scribus.objectExists("txtBureauxChange"):
            try:
                nbCarBureau=scribus.getTextLength("txtBureauxChange")
                appendText(u"● "+toUnicode(record[mapCol["nom"]])+"\n","styleChangeTitre","txtBureauxChange")
                appendText(toUnicode(record[mapCol["adr"]].replace("\\n"," - "))+"\n","styleChangeAdresse","txtBureauxChange")
                appendText(record[mapCol["post"]]+" "+toUnicode(record[mapCol["ville"]].upper()+"\n"),"styleChangeAdresse","txtBureauxChange")
                nbChg+=1
            except Exception as ex:
                scribus.messageBox( "Erreur","Une erreur est survenue sur ce bureau de change: \n%s\n\n%s" %(record, str(ex)))
                sys.exit()
          else :
            nbCarBureau=0

          nbCar=scribus.getTextLength(strPro)
          if bNewCat or bFirstPro:    
            if bFirstPro and not bNewCat:
                appendText(toUnicode(strCat+" (suite)")+"\n","styleProCatSuite",strPro)
            else:
                appendText(toUnicode(strCat)+"\n","styleProCat",strPro)

          bFirstPro=False
          appendText(u"● "+toUnicode(record[mapCol["nom"]])+"\n","styleProTitre",strPro)
          if record[mapCol["chg"]]=="True" :
            appendText(u"\n","styleProBureau",strPro) #icone du bureau de change en police FontAwesome
         
          appendText(processDesc(toUnicode(record[mapCol["desc"]]))+"\n","styleProDesc",strPro)
          if bLivret:
              strAdr=toUnicode(record[mapCol["adr"]].replace("\\n"," - "))+" - " + toUnicode(record[mapCol["post"]])+" "
              strAdr+=processDesc(toUnicode(record[mapCol["ville"]].upper()))
              if record[mapCol["tel"]].strip():
                  strAdr+=" ("+toUnicode(record[mapCol["tel"]].strip().replace(" ","\xC2\xA0"))+")\n" #numéro de téléphone insécable
              else:
                  strAdr+="\n"

              appendText(strAdr, "styleProAdresse", strPro)
          else:
            appendText(toUnicode(record[mapCol["adr"]].replace("\\n"," - "))+"\n","styleProAdresse",strPro)
            appendText(toUnicode(record[mapCol["post"]])+" "+processDesc(toUnicode(record[mapCol["ville"]]).upper())+"\n","styleProAdresse",strPro)
            if record[mapCol["tel"]].strip(): 
                appendText(processTelephone(record[mapCol["tel"]])+"\n","styleProAdresse",strPro)


          if scribus.textOverflows(strPro, nolinks=1): #effacement du paragraphe de pro tronqué et du bureau de change en double
            scribus.selectText(nbCar, scribus.getTextLength(strPro)-nbCar, strPro)
            scribus.deleteText(strPro)
            if nbCarBureau:
                scribus.selectText(nbCarBureau, scribus.getTextLength("txtBureauxChange")-nbCarBureau, "txtBureauxChange")
                scribus.deleteText("txtBureauxChange")

            #log("Cadre rempli : le cadre de texte %s est plein à la ligne %d\n" % (strPro, nbPro))
            break
        except Exception as exc:
                scribus.messageBox( "Erreur","Une erreur est survenue sur ce professionnel: \n%s\n\n%s" %(record, str(exc)))
                sys.exit()
    
        
    return (nbChg, nbPro, nbCat)
    lattextcolor = scribus.getTextColor(lattextstring)
    lattextshade = scribus.getTextShade(lattextstring)
    
    for row in data:
        #if i > 0 :
	  #sys.exit(1)
	#scribus.messageBox("csv2table", row)
	roseid = row[0]
	rosenameger = row[1]
	rosenamelat = row[2]
        #scribus.messageBox("csv2table", roseid+' '+rosenameger+' ('+rosenamelat+')')
        
        #Insert the Right Text into the Right Position
        
        #Write ID into ID Field
	scribus.deleteText(idtextstring)
	scribus.setText(roseid, idtextstring)
	scribus.setFont(idfont, idtextstring)
	scribus.setFontSize(idfonSize, idtextstring)
	scribus.setTextColor(idtextcolor, idtextstring)
	scribus.setTextShade(idtextshade, idtextstring)
	
	#Write German Name into german Name Field
	scribus.deleteText(gertextstring)
	scribus.setText(rosenameger, gertextstring)
	scribus.setFont(gerfont, gertextstring)
	scribus.setFontSize(gerfonSize, gertextstring)
	scribus.setTextColor(gertextcolor, gertextstring)
	scribus.setTextShade(gertextshade, gertextstring)
	
	#Write Latin Name into Latin Name field
Esempio n. 15
0
File: eotizer.py Progetto: pa3/eot
    x = getX(scribus.currentPage())

    headerText = scribus.createText(x, 80, 750, 30)
    headerUnderline = scribus.createLine(x, 110, 160, 110)
    bodyText = scribus.createText(x, 120, 750, 1030)
    scribus.setColumns(4, bodyText)
    scribus.setColumnGap(10, bodyText)

    if scribus.getObjectType(bodyText) == "TextFrame":
        fileName = scribus.fileDialog("Open odt file", 'ODT files (*.odt)')
        text = removeEmptyStrings(parse(fileName))
        header = detag(header(text))
        body = body(text)

        scribus.deleteText(bodyText)
        scribus.insertText(lines(detag(body))[0], -1, bodyText)
        scribus.setStyle("first_paragraph", bodyText)

        for p in lines(detag(body))[1:]:
            scribus.insertText("\n" + p, -1, bodyText)
            scribus.setStyle("eot", bodyText)
        for tag in extractModifiers(body):
            scribus.selectText(tag['start'], tag['length'], bodyText)
            if tag['tag'] == "bold":
                scribus.setFont("Mysl Bold Cyrillic", bodyText)
            elif tag['tag'] == "italic":
                scribus.setFont("Mysl Italic Cyrillic", bodyText)
            else:
                scribus.setFont("Mysl BoldItalic Cyrillic", bodyText)
Esempio n. 16
0
            scribus.messageBox('Scribus - Usage Error', "This is not a textframe. Try again.", scribus.ICON_WARNING, scribus.BUTTON_OK)
            sys.exit(2)
contents = scribus.getTextLength(textbox)
while c <= (contents -1):
    if ((c + 1) > contents - 1):
        nextchar = ' '
    else:
        scribus.selectText(c+1, 1, textbox)
        nextchar = scribus.getText(textbox)
    scribus.selectText(c, 1, textbox)
    char = scribus.getText(textbox)
    if (len(char) != 1):
        c += 1
        continue
    if ((ord(char) == 34) and (c == 0)):
        scribus.deleteText(textbox)
        scribus.insertText(lead_double, c, textbox)
    elif (ord(char) == 34):
        if ((prevchar == '.') or (prevchar == ',') or (prevchar == '?') or (prevchar == '!')):
            scribus.deleteText(textbox)
            scribus.insertText(follow_double, c, textbox)
        elif ((ord(prevchar) == 39) and ((nextchar != ' ') and (nextchar != ',') and (nextchar != '.'))):
            scribus.deleteText(textbox)
            scribus.insertText(lead_double, c, textbox)
        elif ((nextchar == '.') or (nextchar == ',')):
            scribus.deleteText(textbox)
            scribus.insertText(follow_double, c, textbox)

        elif ((prevchar == ' ') or ((nextchar != ' ') and (ord(nextchar) != 39))):
            scribus.deleteText(textbox)
            scribus.insertText(lead_double, c, textbox)
Esempio n. 17
0
        contents = scribus.getTextLength(textbox)

        while 1:
            if ((c == contents) or (c > contents)): break
            if ((c + 1) > contents - 1):
                nextchar = ' '
            else:
                scribus.selectText(c + 1, 1, textbox)
                nextchar = scribus.getText(textbox)
            scribus.selectText(c, 1, textbox)
            char = scribus.getText(textbox)
            if (len(char) != 1):
                c += 1
                continue
            alpha = random.randint(1, 26)
            letter = chr(alpha + 96)
            LETTER = chr(alpha + 64)
            if ((ord(char) > 96) and (ord(char) < 123)):
                scribus.deleteText(textbox)
                scribus.insertText(letter, c, textbox)
            if ((ord(char) > 64) and (ord(char) < 91)):
                scribus.deleteText(textbox)
                scribus.insertText(LETTER, c, textbox)

            c += 1
            contents = scribus.getTextLength(textbox)

scribus.setRedraw(1)
scribus.docChanged(1)
scribus.messageBox("Finished", "That should do it!", icon=0, button1=1)
Esempio n. 18
0
    def handleEnd(self):
        self.linkType = self.gui.getLinkType()
        self.gliederung = self.gui.getGliederung()
        self.includeSub = self.gui.getIncludeSub()
        self.start = self.gui.getStart()
        self.end = self.gui.getEnd()

        pos1, pos2, tbox = self.toBeDelPosParam
        scribus.selectText(pos1, pos2 - pos1, tbox)
        scribus.deleteText(tbox)

        pagenum = scribus.pageCount()
        for page in range(1, pagenum + 1):
            scribus.gotoPage(page)
            pageitems = scribus.getPageItems()
            for item in pageitems:
                if item[1] != 4:
                    continue
                self.textbox = item[0]
                self.evalTemplate()

        # hyphenate does not work
        # pagenum = scribus.pageCount()
        # for page in range(1, pagenum + 1):
        #     scribus.gotoPage(page)
        #     pageitems = scribus.getPageItems()
        #     for item in pageitems:
        #         if item[1] != 4:
        #             continue
        #         self.textbox = item[0]
        #         b = scribus.hyphenateText(self.textbox) # seems to have no effect!

        pagenum = scribus.pageCount()
        for page in range(1, pagenum + 1):
            scribus.gotoPage(page)
            pageitems = scribus.getPageItems()
            for item in pageitems:
                if item[1] != 4:
                    continue
                tbox = item[0]
                tbox2 = tbox
                while scribus.textOverflows(tbox2):
                    tbox2 = self.createNewPage(tbox2)
                    self.frameLinks[
                        tbox2] = tbox  # frame tbox2 has tbox as root

        scribus.redrawAll()
        ausgabedatei = self.ausgabedatei
        if ausgabedatei is None or ausgabedatei == "":
            ausgabedatei = "ADFC_" + self.gliederung + (
                "_I_" if self.includeSub else "_"
            ) + self.start + "-" + self.end + "_" + self.linkType[0] + ".sla"
        try:
            scribus.saveDocAs(ausgabedatei)
        except Exception as e:
            print("Ausgabedatei", ausgabedatei,
                  "konnte nicht geschrieben werden")
            raise e
        finally:
            self.touren = []
            self.termine = []
            # self.gui.destroy()
            # self.gui.quit()
            self.gui.disableStart()