def main(argv): """This is a documentation string. Write a description of what your code does here. You should generally put documentation strings ("docstrings") on all your Python functions.""" ######################### # YOUR CODE GOES HERE # ######################### #copyPlayer("__player__","PLAYER 1") #copyPlayer("__player__","PLAYER 2") #copyPlayer("__player__","PLAYER 3") csv = scribus.fileDialog('Open input', 'CSV files (*.csv)') stuff = { 'NAME': 'Mike Hingley', 'ADDRESS': '22 Trinity Street, Cradley Heath, West Midlands', 'PHOTO': '128.jpg' } print(os.path.dirname(os.path.realpath(sys.argv[0]))) print os.getcwd() print(sys.path[0]) print(os.path.abspath('')) sourceName = "__player__" if scribus.objectExists(sourceName): scribus.selectObject(sourceName) scribus.unGroupObject() childObjectCount = scribus.selectionCount() for x in range(0, childObjectCount): element = scribus.getSelectedObject(x) if scribus.getObjectType(str(element)) == 'TextFrame': current = scribus.getAllText(element) if current in stuff: fontsize = scribus.getFontSize(element) font = scribus.getFont(element) scribus.setText(stuff[current], element) scribus.setFont(font) scribus.setFontSize(fontsize) if scribus.getObjectType(str(element)) == 'ImageFrame': current = scribus.getImageFile(element) currentName = os.path.basename(os.path.normpath(current)) print current print currentName if currentName in stuff: ExistingFolder = os.path.split(current) print ExistingFolder[0] newFile = os.path.join(ExistingFolder[0], stuff[currentName]) print newFile scribus.loadImage(newFile, element) print scribus.getObjectType(str(element)) print str(scribus.getSelectedObject(x)) scribus.groupObjects() print "name = " + scribus.getSelectedObject() scribus.setNewName("__player__", scribus.getSelectedObject())
def copyPlayer(sourceName, destinationName): if scribus.objectExists(sourceName): doc = scribus.getDocName() unit = scribus.getUnit() (PageWidth, PageHeight) = scribus.getPageSize() (iT, iI, iO, iB) = scribus.getPageMargins() NewPagepoint = PageHeight - iT - iB player = scribus.selectObject(sourceName) #Duplicate the object... scribus.duplicateObject(sourceName) x = scribus.getSelectedObject() newObjectName = str(x) size = scribus.getSize(newObjectName) scribus.moveObject(0, size[1], newObjectName) (x, y) = scribus.getPosition(newObjectName) scribus.setRedraw(1) scribus.docChanged(1) if (y + size[1] > NewPagepoint): currentPage = scribus.currentPage() scribus.newPage(-1) newPage = currentPage + 1 scribus.copyObject(newObjectName) scribus.deleteObject(newObjectName) scribus.gotoPage(newPage) scribus.pasteObject(newObjectName) scribus.moveObjectAbs(iO, iT, newObjectName) scribus.setNewName(destinationName, sourceName) scribus.setNewName(sourceName, newObjectName)
def alignImage(self): if scribus.haveDoc(): restore_units = scribus.getUnit( ) # since there is an issue with units other than points, scribus.setUnit(0) # we switch to points then restore later. nbrSelected = scribus.selectionCount() objList = [] for i in range(nbrSelected): objList.append(scribus.getSelectedObject(i)) scribus.deselectAll() for i in range(nbrSelected): try: obj = objList[i] scribus.selectObject(obj) frameW, frameH = scribus.getSize(obj) saveScaleX, saveScaleY = scribus.getImageScale(obj) scribus.setScaleImageToFrame(1, 0, obj) fullScaleX, fullScaleY = scribus.getImageScale(obj) scribus.setScaleImageToFrame(0, 0, obj) scribus.setImageScale(saveScaleX, saveScaleY, obj) imageW = frameW * (saveScaleX / fullScaleX) imageH = frameH * (saveScaleY / fullScaleY) imageX = 0.0 imageY = 0.0 if self.alignVar.get()[0] == "T": imageY = 0.0 elif self.alignVar.get()[0] == "M": imageY = (frameH - imageH) / 2.0 elif self.alignVar.get()[0] == "B": imageY = (frameH - imageH) if self.alignVar.get()[1] == "L": imageX = 0.0 elif self.alignVar.get()[1] == "C": imageX = (frameW - imageW) / 2.0 elif self.alignVar.get()[1] == "R": imageX = (frameW - imageW) scribus.setImageOffset(imageX, imageY, obj) scribus.docChanged(1) scribus.setRedraw(True) scribus.deselectAll() except: nothing = "nothing" scribus.setUnit(restore_units) self.master.destroy()
def alignImage(self): if scribus.haveDoc(): restore_units = scribus.getUnit() # since there is an issue with units other than points, scribus.setUnit(0) # we switch to points then restore later. nbrSelected = scribus.selectionCount() objList = [] for i in range(nbrSelected): objList.append(scribus.getSelectedObject(i)) scribus.deselectAll() for i in range(nbrSelected): try: obj = objList[i] scribus.selectObject(obj) frameW, frameH = scribus.getSize(obj) saveScaleX, saveScaleY = scribus.getImageScale(obj) scribus.setScaleImageToFrame(1, 0, obj) fullScaleX, fullScaleY = scribus.getImageScale(obj) scribus.setScaleImageToFrame(0, 0, obj) scribus.setImageScale(saveScaleX, saveScaleY, obj) imageW = frameW * (saveScaleX / fullScaleX) imageH = frameH * (saveScaleY / fullScaleY) imageX = 0.0 imageY = 0.0 if self.alignVar.get()[0] == "T": imageY = 0.0 elif self.alignVar.get()[0] == "M": imageY = (frameH - imageH) / 2.0 elif self.alignVar.get()[0] == "B": imageY = (frameH - imageH) if self.alignVar.get()[1] == "L": imageX = 0.0 elif self.alignVar.get()[1] == "C": imageX = (frameW - imageW) / 2.0 elif self.alignVar.get()[1] == "R": imageX = (frameW - imageW) scribus.setImageOffset(imageX, imageY, obj) scribus.docChanged(1) scribus.setRedraw(True) scribus.deselectAll() except: nothing = "nothing" scribus.setUnit(restore_units) self.master.destroy()
def fileMatchingTextFrame(sampleFrameName, pattern): pagenum = scribus.pageCount() for page in range(1, pagenum + 1): scribus.gotoPage(page) d = scribus.getPageItems() for item in d: # print(item) frameName = item[0] if (item[1] == 4): if frameName != sampleFrameName and remove_copy_prefix(frameName).startswith(pattern): print(frameName + " found") position = scribus.getPosition(frameName) scribus.selectObject(sampleFrameName) scribus.duplicateObject() #duplicateFrameName = scribus.getSelectedObject() scribus.moveObjectAbs(position[0], position[1]) scribus.deleteObject(frameName)
def fileMatchingTextFrame(sampleFrameName, pattern): pagenum = scribus.pageCount() for page in range(1, pagenum + 1): scribus.gotoPage(page) d = scribus.getPageItems() for item in d: # print(item) frameName = item[0] if (item[1] == 4): if frameName != sampleFrameName and remove_copy_prefix( frameName).startswith(pattern): print(frameName + " found") position = scribus.getPosition(frameName) scribus.selectObject(sampleFrameName) scribus.duplicateObject() #duplicateFrameName = scribus.getSelectedObject() scribus.moveObjectAbs(position[0], position[1]) scribus.deleteObject(frameName)
def draw(self): if self.txt != "": if scribus.currentPage() % 2 == 0: r = scribus.createRect(-1,self.y,8,self.height) t = scribus.createText(2,self.y + self.height,self.height,6) else: (pagewidth, pageheight) = scribus.getPageSize() r = scribus.createRect(pagewidth-7,self.y,8,self.height) t = scribus.createText(pagewidth-5,self.y + self.height,self.height,6) scribus.setFillColor("Black",r) scribus.setFillShade(20,r) scribus.setLineColor("None",r) scribus.setCornerRadius(ROUNDS,r) scribus.insertText(self.txt, -1, t) scribus.deselectAll() scribus.selectObject(t) scribus.selectText(0, len(self.txt), t) scribus.setStyle("Sidebar", t) scribus.rotateObject(90,t) self.frames.append(r) self.frames.append(t)
def draw(self): if self.txt != "": if scribus.currentPage() % 2 == 0: r = scribus.createRect(-1, self.y, 8, self.height) t = scribus.createText(2, self.y + self.height, self.height, 6) else: (pagewidth, pageheight) = scribus.getPageSize() r = scribus.createRect(pagewidth - 7, self.y, 8, self.height) t = scribus.createText(pagewidth - 5, self.y + self.height, self.height, 6) scribus.setFillColor("Black", r) scribus.setFillShade(20, r) scribus.setLineColor("None", r) scribus.setCornerRadius(ROUNDS, r) scribus.insertText(self.txt, -1, t) scribus.deselectAll() scribus.selectObject(t) scribus.selectText(0, len(self.txt), t) scribus.setStyle("Sidebar", t) scribus.rotateObject(90, t) self.frames.append(r) self.frames.append(t)
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)
if scribus.haveDoc(): fantome = "Ghostlayer" scribus.createLayer(fantome) working = scribus.getActiveLayer() page = 1 pagenum = scribus.pageCount() while (page <= pagenum): scribus.gotoPage(page) scribus.setActiveLayer(working) # maybe not necessary? pageitems = scribus.getPageItems() for item in pageitems: if (item[1] == 2): imagebox = item[0] scribus.selectObject(imagebox) scribus.copyObject(imagebox) scribus.setActiveLayer(fantome) scribus.pasteObject(imagebox) scribus.deleteObject(imagebox) scribus.setActiveLayer(working) page += 1 scribus.setLayerPrintable(fantome, 0) # comment this out to do manually later scribus.setLayerVisible(fantome, 0) # comment this out to do manually later scribus.setRedraw(1) scribus.docChanged(1) scribus.messageBox("Finished", "That should do it!",icon=0,button1=1) else: scribus.messageBox('Usage Error', 'You need a Document open', icon=0, button1=1) sys.exit(2)
for i in range(scribus.selectionCount()): item = scribus.getSelectedObject(i) selectedFrame.append(item) if scribus.getObjectType(item) == "TextFrame": 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)
else: scribus.messageBox('Usage Error', 'You need a Document open', icon=0, button1=1) sys.exit(2) warnresult = scribus.valueDialog('Warning!', 'This script is going to irreveribly alter the text in your document.\nChange this default value to abort', 'Ok!') if (warnresult != 'Ok!'): sys.exit(2) 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
# check opened document if not scribus.haveDoc(): scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(1) scribus.setRedraw(False) selectionCount = scribus.selectionCount() # str('Selected: ' + str(selectionCount)) selected = [] # remember all selected objects for index in range(0, selectionCount): # str(index) selectedObject = scribus.getSelectedObject(index) # str(selectedObject) selected.append(selectedObject) scribus.deselectAll() # change style for each selected object for obj in selected: # str(obj) scribus.selectObject(obj) scribus.selectText(0, scribus.getTextLength(obj), obj) scribus.setStyle(style, obj) scribus.deselectAll() scribus.setRedraw(True) scribus.docChanged(True)
for i in range(scribus.selectionCount()) : item = scribus.getSelectedObject(i) selectedFrame.append(item) if scribus.getObjectType(item) == "TextFrame" : 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)
if scribus.haveDoc(): fantome = "Ghostlayer" scribus.createLayer(fantome) working = scribus.getActiveLayer() page = 1 pagenum = scribus.pageCount() while (page <= pagenum): scribus.gotoPage(page) scribus.setActiveLayer(working) # maybe not necessary? pageitems = scribus.getPageItems() for item in pageitems: if (item[1] == 2): imagebox = item[0] scribus.selectObject(imagebox) scribus.copyObject(imagebox) scribus.setActiveLayer(fantome) scribus.pasteObject(imagebox) scribus.deleteObject(imagebox) scribus.setActiveLayer(working) page += 1 scribus.setLayerPrintable(fantome, 0) # comment this out to do manually later scribus.setLayerVisible(fantome, 0) # comment this out to do manually later scribus.setRedraw(1) scribus.docChanged(1) scribus.messageBox("Finished", "That should do it!", icon=0, button1=1) else:
def raiseFrames(self, framelist): scribus.deselectAll() for i in scribus.getAllObjects(): if i in framelist: scribus.selectObject(i) scribus.moveSelectionToFront()
sys.exit(1) print(filename_png) filename_svg = os.path.splitext(filename_png)[0] + '.svg' print(filename_svg) scratchblocks_svg = os.path.join(download_path, 'scratchblocks.svg') print(scratchblocks_svg + ' >> ' + filename_svg) if os.path.isfile(scratchblocks_svg): os.rename(scratchblocks_svg, filename_svg) else: scribus.messageBox('Error:', 'Cannot find ' + filename_svg) # https://gitlab.com/inkscape/inbox/issues/405 # FitCanvasToDrawing cannot be run without a GUI call([ 'inkscape', '--verb=FitCanvasToDrawing', '--verb=FileSave', '--verb=FileQuit', filename_svg ]) call(['inkscape', '-z', '--export-dpi=300', filename_svg, '-e', filename_png]) if (scribus.getObjectType(item) == 'TextFrame'): (x, y) = scribus.getPosition() (w, h) = scribus.getSize() scribus.deleteObject() name = scribus.createImage(x, y, w, h) scribus.selectObject(name) scribus.loadImage(filename_png)
#!/usr/bin/env python # -*- coding: utf-8 -*- # Dieses Script von Michael Binder <*****@*****.**> ist unter einer Creative Commons Lizenz vom Typ Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland zugänglich. Um eine Kopie dieser Lizenz einzusehen, konsultieren Sie http://creativecommons.org/licenses/by-sa/3.0/de/ oder wenden Sie sich brieflich an Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. """Scribus Script This script searches for a named object and marks the finding in yellow. """ try: import scribus except ImportError: print "This script can only be run as an extension script from Scribus" sys.exit(1) # check opened document if not scribus.haveDoc(): scribus.messageBox('Scribus - Script Error', "No document open", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(1) scribus.setRedraw(False) defaultsearchfor = "" searchfor = scribus.valueDialog("Search", "Search for this object.\nThe color of the found object will be changed to yellow.\n\nName:", defaultsearchfor) scribus.deselectAll() scribus.selectObject(searchfor) scribus.setFillColor("Yellow", searchfor) scribus.setRedraw(True) scribus.docChanged(True)
warnresult = scribus.valueDialog( 'Warning!', 'This script is going to irreveribly alter the text in your document.\nChange this default value to abort', 'Ok!') if (warnresult != 'Ok!'): sys.exit(2) 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)
if scribus.getObjectType(toc_frame) != 'TextFrame': scribus.messageBox('Error', "Please select the target text frame.", scribus.ICON_WARNING, scribus.BUTTON_OK) sys.exit(2) toc_styles = {'h1': 'toc1', 'h2': 'toc2', 'h3': 'toc3'} toc_content = [] for page in range(1, scribus.pageCount() + 1): scribus.gotoPage(page) for item in scribus.getPageItems(): if item[1] == 4: scribus.deselectAll() scribus.selectObject(item[0]) content = scribus.getFrameText() next_line_feed = content.find('\r') start_selection = 0 while next_line_feed >= 0: line = content[start_selection:next_line_feed] if len(line) > 0: scribus.selectFrameText(start_selection, 1) style = scribus.getParagraphStyle() if style in toc_styles: toc_content.append((content[start_selection:next_line_feed], page, toc_styles[style])) start_selection = next_line_feed + 1 next_line_feed = content.find('\r', next_line_feed + 1) scribus.deselectAll() scribus.selectObject(toc_frame)