Пример #1
0
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())
Пример #2
0
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()
Пример #4
0
    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)
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
	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:
Пример #16
0
 def raiseFrames(self, framelist):
    scribus.deselectAll()
    for i in scribus.getAllObjects():
       if i in framelist:
          scribus.selectObject(i)      
    scribus.moveSelectionToFront()
Пример #17
0
    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)
Пример #18
0
 def raiseFrames(self, framelist):
     scribus.deselectAll()
     for i in scribus.getAllObjects():
         if i in framelist:
             scribus.selectObject(i)
     scribus.moveSelectionToFront()
Пример #19
0
#!/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)
Пример #20
0
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)
Пример #21
0
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)