def main(argv): """Main method""" global filParam if not scribus.haveDoc(): #do we have a doc? scribus.messageBox("importerPros", "Le fichier d'annuaire vierge doit être ouvert pour importer les données") sys.exit() else: filename=scribus.fileDialog("Fichier de données à importer", "Données (*.csv)", "", False) # Images (*.png *.xpm *.jpg) if not filename : sys.exit() filParam=scribus.fileDialog("Fichier de paramètres à utiliser", "Données (*.csv)", filParam, False) if not filParam : sys.exit() else: try: strNum=scribus.getText("txtNumPro") #récupération du dernier numéro de professionnel qui a été écrit dans une zone invisible if scribus.messageBox("Importation des données", "Importation du fichier de données : %s \net des fichiers suivants issus du même répertoire : \n.%s, \n.%s, \n.%s, \n.%s, \n.%s\nNuméro du professionnel à partir duquel le prochain cadre de texte vide sera rempli : %s" % (filename, QRCODE, LOGO, SMALL_LOGO, CATEGORIE, filParam, strNum), scribus.ICON_INFORMATION,scribus.BUTTON_CANCEL, scribus.BUTTON_OK)==scribus.BUTTON_CANCEL: sys.exit() else: nbPro=1 iExec=0 while iExec < NB_TXT: idxPro=nbPro #int(strNum) (nbLogo, nbImg, nbCol, nbChange, nbPro, nbCat)=importData(filename, idxPro) scribus.docChanged(True) #scribus.setText( str(nbPro), "txtNumPro") #scribus.setStyle("styleProTitre", "txtNumPro") if SCRIBUS_BUG and iExec<NB_TXT-1 and scribus.messageBox("importerPros", "%d logos importés \n%d images importées \n%d couleurs importées \n%d bureaux de change \n%d professionnels \n%d catégories\n\nContinuer ?" % (nbLogo, nbImg, nbCol, nbChange, nbPro, nbCat), scribus.ICON_INFORMATION,scribus.BUTTON_CANCEL, scribus.BUTTON_OK)==scribus.BUTTON_CANCEL: sys.exit() else: iExec+=1 except Exception as ex: scribus.messageBox("importerPros", "Erreur : "+str(ex), icon=scribus.ICON_WARNING) sys.exit()
def createDOMElement(xmldoc, scElem): name = getElemName(scElem); eid = getElemId(scElem) xmlelem = xmldoc.createElement(name); xmlelem.setAttribute("id", str(eid)); text = scribus.getText(scElem); if (len(text)>0 and text.find("Holder")==-1): xmlelem.appendChild(xmldoc.createTextNode(text)); return xmlelem;
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()
def slotDoIt(self): nfs = self.val.value() obj = scribus.getSelectedObject(0) t = scribus.getText(obj) scribus.deselectAll() t0 = scribus.getText(obj) fs = scribus.getFontSize(obj) tl = scribus.getTextLength(obj) idx = t0.find(t) + (len(t) / 2) base = fs #print t0 #print t #print "FS %i NFS %i IDX %i START %i" % (fs,nfs,idx,idx - int((nfs - fs) / 0.1)) for i in xrange(max(idx - int((nfs - fs) * 10), 0), idx): scribus.selectText(i, 1, obj) base += 0.1 scribus.setFontSize(base,obj) for i in xrange(idx, min(idx + int((nfs - fs) * 10), tl - 1)): scribus.selectText(i, 1, obj) base -= 0.1 scribus.setFontSize(base,obj) scribus.setRedraw(True) scribus.selectObject(obj)
def dumpElem(elem): attrs = scribus.getObjectAttributes(elem); if (len(attrs)<2): return "<INVALID>"; elemName = attrs[0]['Value']; parent = attrs[0]['RelationshipTo']; text = scribus.getText(elem); elemId = attrs[1]['Value']; allNames = '' #json.dumps(attrs); allNames = '' #str(attrs); return elemName + '[@id=' + elemId + '] p:(' + parent + ') t:' + text;
def trovasostituisci(text_to_find,text_to_replace): #itero tutti gli oggetti presenti in Scribus for obj in scribus.getAllObjects(): #ottengo il tipo di oggetto di tutti gli elementi della pagina obj_type = scribus.getObjectType(obj) #controllo che il tipo di oggetto scribus sia TextFrame if obj_type == "TextFrame": #ottengo il testo contenuto in tutti gli oggetti obj_text = scribus.getText(obj) #text_to_find = "_F6%" #text_to_replace = "123 TESTO SOSTITUITO 123456789" #cerco la variabile text_to_find if text_to_find in obj_text: #se la trovo la sostituisco text_to_find = obj_text.replace(text_to_find, text_to_replace) scribus.setText(text_to_find, obj) scribus.setFontSize(8, obj)
pageitems = scribus.getPageItems() for item in pageitems: if (item[1] == 4): c = 0 textbox = item[0] scribus.selectObject(textbox) 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)
sys.exit(2) textbox = scribus.getSelectedObject() pageitems = scribus.getPageItems() boxcount = 1 for item in pageitems: if (item[0] == textbox): if (item[1] != 4): 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)
def get_text_placeholders(frame): scribus.selectText(0, 0, frame) text = scribus.getText(frame) return get_placeholders_from_string(text)
textFrame.append(item) if scribus.getObjectType(item) == "ImageFrame": imageFrame.append(item[0]) # print textFrame # print imageFrame scribus.deselectAll() chars = [] for item in textFrame: scribus.deselectAll() scribus.selectObject(item) n = scribus.getTextLength() for i in range(n): scribus.selectText(i, 1) char = scribus.getText() if (char not in charsIgnore and len(char) > 0): chars.append(char.lower()) random.shuffle(chars) for item in textFrame: scribus.messagebarText("Processing text frame " + item) scribus.redrawAll() print item scribus.deselectAll() scribus.selectObject(item) n = scribus.getTextLength() print n for i in range(n): scribus.selectText(i, 1)
def main(argv): unit = scribus.getUnit() units = [' pts','mm',' inches',' picas','cm',' ciceros'] unitlabel = units[unit] 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) textbox = scribus.getSelectedObject() pageitems = scribus.getPageItems() boxcount = 1 for item in pageitems: if (item[0] == textbox): if (item[1] != 4): scribus.messageBox('Scribus - Script Error', "This is not a textframe. Try again.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) # While we're finding out what kind of frame is selected, we'll also make sure we # will come up with a unique name for our infobox frame - it's possible we may want # more than one for a multicolumn frame. if (item[0] == ("infobox" + str(boxcount) + textbox)): boxcount += 1 elem = textbox; pathUp = ''; pathUpShort = ""; while elem != None: elemId = getElemId(elem); pElemId = getParentElemId(elem); text = scribus.getText(elem); if (text.find("Holder")!=-1): text = ""; pathUpShort = "<" + getElemName(elem) + " id=\"" + str(getElemId(elem)) + "\">" + text + "\n" + pathUpShort; pathUp = dumpElem(elem) + " // " + pathUp; elem = findElemById(pElemId); if (pathUp != ''): pathUp = pathUp[0:len(pathUp)-4]; if (pathUpShort != ''): pathUpShort = pathUpShort[0:len(pathUpShort)-1]; #framename = scribus.valueDialog('XML Tree','XML Tree', elemName + '[@id=' + elemId + '] parent: ' + parent + ' text:' + text + "," + parent) #scribus.messagebarText("It works !!!"); scribus.statusMessage(pathUp); #scribus.zoomDocument(200); #scribus.selectFrameText(0,100); #framename = scribus.valueDialog('XML Tree','XML Tree (Path UP)', pathUp); #t = scribus.qApp.mainWidget(); #if (not framename) : # sys.exit(0) #scribus.messageBox('XML struct', # pathUp + "\n\n" + pathUpShort, # scribus.ICON_WARNING, scribus.BUTTON_OK) #impl = getDOMImplementation(); #newdoc = impl.createDocument(None, "root", None); newdoc = createDOMDocument(); #xmlelem = createDOMElement(newdoc, root); #newdoc.documentElement.appendChild(xmlelem); x = newdoc.toxml(); #x = str(dir(root)); scribus.structview(x);
22 = 2 horizontal images 3 = 1 image left, 2 images right 33 = 2 images left, 1 image right 333 = 1 image on top, 2 images on bottom 3333 = 2 images on top, 1 image on bottom 4 = 4 images 6 = 6 images, 3x2 66 = 6 images, 2x3 9 = 9 images h = help v = create default variable fields """ if scribus.objectExists("myframe") == True: myframe = scribus.getText("myframe") else: myframe = "3" if scribus.objectExists("myborder") == True: myborder = scribus.getText("myborder") else: myborder = "3" if scribus.objectExists("mylayout") == True: mylayout = scribus.getText("mylayout") else: mylayout = "h" #scribus.messageBox("Values", myframe + "\n" + myborder)
textFrame.append(item) if scribus.getObjectType(item) == "ImageFrame" : imageFrame.append(item[0]) # print textFrame # print imageFrame scribus.deselectAll() chars = [] for item in textFrame : scribus.deselectAll() scribus.selectObject(item) n = scribus.getTextLength() for i in range(n) : scribus.selectText(i, 1) char = scribus.getText() if (char not in charsIgnore and len(char) > 0) : chars.append(char.lower()) random.shuffle(chars) for item in textFrame : scribus.messagebarText("Processing text frame "+item) scribus.redrawAll() print item scribus.deselectAll() scribus.selectObject(item) n = scribus.getTextLength() print n for i in range(n) : scribus.selectText(i, 1)
# encoding: utf-8 try: import scribus except ImportError: print('This script must be run from inside Scribus') text = scribus.getText() print(text) i = text.find('{') j = text.find('}', i) print(i) print(j) print(text[i+1:j]) scribus.selectText(i, j - i) text = scribus.getText() print('>>>>' + text) value = 'replacement' scribus.insertText(value, i + 1) # delete placelholder} scribus.selectText(i + len(value) + 1, j - i) scribus.deleteText() # { scribus.selectText(i, 1) scribus.deleteText()