Category:Scripts: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
No edit summary
m (Improve wording; minor markup nits)
Line 7: Line 7:
Note: The new script engine "ScripterNG" is currently being integrated into Scribus. The next steps will be:
Note: The new script engine "ScripterNG" is currently being integrated into Scribus. The next steps will be:
* get the script engine to work (should already be ok)
* get the script engine to work (should already be ok)
* get the editor to work (i'm stucked there)
* get the editor to work (i'm stuck there)
* revise the structure of the API
* revise the structure of the API
* add new functions to the API
* add new functions to the API
Line 27: Line 27:
This section contains snippets you can use to create your own scripts.
This section contains snippets you can use to create your own scripts.


It will feature:
It features:


* reading a file
* reading a file
Line 37: Line 37:
Here is a '''script template''' with all setups (for writing your own script): [[Scripter/Snippet/Main| main()]]
Here is a '''script template''' with all setups (for writing your own script): [[Scripter/Snippet/Main| main()]]


===Go through all elements on a page===
===Iterate over all elements on a page===
<pre>
<pre>
page = 1
page = 1
Line 50: Line 50:
</pre>
</pre>


===Get content like text out of a frame===
===Get content like text from a frame===
<pre>
<pre>
content = []
content = []
Line 261: Line 261:
* [[Export all text|Export all text]] from a Scribus file
* [[Export all text|Export all text]] from a Scribus file
* [[Script Resize selected objects|Resize selected objects]]
* [[Script Resize selected objects|Resize selected objects]]
* [[formatxml|Import xml and apply styles]]
* [[formatxml|Import XML and apply styles]]
* [[align_to_left_page_margin|Align to the left page margin]] (after adding a new page in a double page document)
* [[align_to_left_page_margin|Align to the left page margin]] (after adding a new page in a double page document)
* [[Bullets]]. Make bulleted list.
* [[Bullets]] Make bulleted list
* [[Bullets_and_numbered_lists | Bullets and numbered lists]]
* [[Bullets_and_numbered_lists|Bullets and numbered lists]]
* [[Scribus_Generator | Scribus Generator]]. Extend Scribus with Mail Merge functionality.
* [[Scribus_Generator|Scribus Generator]] Extend Scribus with Mail Merge functionality
* [[Image crop, resize and CMYK conversion. Save and reload in TIFF format]].
* [[Image crop, resize and CMYK conversion. Save and reload in TIFF format]]


==Scripting new Scribus' functions==
==Scripting new Scribus' functions==

Revision as of 13:55, 9 March 2012

Other languages: Polski (pl) Portuguese (pt_BR)

Scripter

Note: The new script engine "ScripterNG" is currently being integrated into Scribus. The next steps will be:

  • get the script engine to work (should already be ok)
  • get the editor to work (i'm stuck there)
  • revise the structure of the API
  • add new functions to the API

Here ist documentation about the current scripting component in Scribus:

Script snippets

Needs some snippets

This section contains snippets you can use to create your own scripts.

It features:

  • reading a file
  • updating a status bar
  • selecting a frame
  • pausing the screen update

Script Template

Here is a script template with all setups (for writing your own script): main()

Iterate over all elements on a page

page = 1
pagenum = scribus.pageCount()
content = []
while (page <= pagenum):
    scribus.gotoPage(page)
    d = scribus.getPageItems()
    for item in d:
        // do something
    page += 1

Get content like text from a frame

content = []
d = scribus.getPageItems()
for item in d:
    if (item[1] == 4):
        contents = scribus.getAllText(item[0])
        if (contents in content):
            contents = 'Duplication, perhaps linked-to frame'
            content.append(contents)
        elif (item[1] == 2):
            imgname = scribus.getImageFile(item[0])

ITEM TYPE

  • ItemType1 = 1,
  • ImageFrame = 2,
  • ItemType3 = 3,
  • TextFrame = 4,
  • Line = 5,
  • Polygon = 6,
  • PolyLine = 7,
  • PathText = 8,
  • LatexFrame = 9,
  • Multiple = 99

Auto-Output all Scripter Commands

From Scribus User http://meiradarocha.jor.br Mailinglist Feb. 2012

d = dir(scribus)
for j in d:
   try:
       exec 'res = '+j+'.__doc__'
       if res[0:5] == 'float':
           print '\nCONSTANT:\n',j,'\nVALUE: float'
           exec 'print '+j+'\n'
       elif res[0:5] == 'int(x':
           print '\nCONSTANT:\n',j,'\nVALUE: integer'
           exec 'print '+j+'\n'
       elif res[0:5] == 'tuple':
           print '\nTUPLE:\n',j,'\nVALUE:'
           exec 'print repr('+j+')\n'
       elif res[0:4] == 'str(':
           print '\nSTRING:\n',j,'\nVALUE:'
           exec 'print repr('+j+')\n'
       else:
           print '\FUNCTION:\n'+j+'\n\nSINTAX:'
           print res
   except: pass

Image Manipulation

  • Objects: Images -- Example Scripts that manipulate images in a Scribus document

Beginners Scripts

Link to Script Scripter commands demonstrated
newDocument, createRect, setCornerRadius, setLineWidth, setFillColor, setLineColor, saveDocAs
newDocument, createLine, setLineWidth, setLineColor, setFillShade, createRect, saveDocAs
newDocument, createLine, setLineWidth, setLineColor, zoomDocument, saveDocAs
newDocument, createEllipse, setLineWidth, setFillColor, setFillShade, saveDocAs, currentPage, setHGuides, messageBox, statusMessage, progressReset
haveDoc, createLayer, getActiveLayer, setActiveLayer, createText, setUnit, setText, setTextColor, setFontSize, rotateObject
haveDoc, valueDialog, getUnit, setUnit, getPageSize, getPageMargins,
defineColor, createEllipse, setLineWidth, setLineColor, setFillColor, createLine, getPageSize, createRect
valueDialog, getColor, getLayers, createLayer, setActiveLayer, setHGuides, setVGuides, getHGuides, getVGuides, createText, setTextColor, insertText, setFontSize, setLineSpacing, defineColor, createRect, groupObjects, createLine, setLineColor, setLineWidth, createEllipse, haveDoc, messageBox
haveDoc, getUnit, setUnit, getPageSize, getPageMargins, setMargins, messageBox, statusMessage, progressReset
haveDoc, setUnit, valueDialog, createLine, setLineWidth, setLineColor, setFillColor
haveDoc, createLine, setLineWidth, setLineColor, setFillColor, createText, setFont, setFontSize, setTextAlignment, valueDialog, messageBox, docChanged
newDoc, createLine, setLineWidth, setLineColor, setFillColor, createLayer, setActiveLayer, createText, setFont, setFontSize, setTextAlignment, selectText, setTextDistances, valueDialog, messageBox
haveDoc, valueDialog, createLine, setLineWidth, setLineColor, setFillColor, createText, setTextColor, setText, setTextAlignment, setFont, setFontSize, rotateObject
haveDoc, valueDialog, setUnit, createLine, setLineWidth, setLineColor, setFillColor, createText, setTextColor, setText, setTextAlignment, setFont, setFontSize
fileDialog, haveDoc, setUnit, valueDialog, createLine, setLineWidth, setLineColor, setFillColor, createPolyLine
valueDialog, messageBox, haveDoc, importSVG – much of the script involves mathematical calculations
getPageSize, fileDialog, createImage, setScaleImageToFrame, setFillColor, setLineColor, getImageScale, sizeObject, haveDoc, messageBox
This is an old script (Scribus 1.3.3.3), so be sure to check the precise names of commands. If you find errors, let us know or edit the wiki page to correct.
messageBox, createLine, setLineColor, haveDoc, statusMessage, progressReset
There is a minor usage of Scribus commands here, but it does show how to set up a Tkinter dialog for multiple variable entry.
newDoc, newPage, createText, setText, setTextAlignment, setFont, setFontSize
This is almost a script fragment even though it could work on its own. What it shows is the basic operation to import information from a simple structured text file and incorporate into a document. Could be adapted for mail merge, for example.
haveDoc, selectionCount, getSelectedObject, setScaleImageToFrame, getImageScale, scaleImage, docChanged
not sure if this script works
haveDoc, selectionCount, getSelectedObject, setProperty, moveObject, docChanged
replaceColor, docChanged
This is a "script-let" really, but quickly shows how to change or delete colors in a document. No checking for errors.
haveDoc, fileDialog, messageBox, pageCount, getPageItems, gotoPage, getAllText, getImageFile
valueDialog, messageBox
This is a utility that just happens to run in Scribus, using the valueDialog and messageBox to do what the title says.
getPageSize, getPageMargins, createText, setFontSize, setTextAlignment, insertText, getColorNames, statusMessage, progressTotal, getColor, progressSet, haveDoc, openDoc, fileDialog, messageBox, getColorsFromDocument, newDocument, setUnit, deleteColor, defineColor, valueDialog, newPage, createRect, setFillColor, setLineColor
messageBox, valueDialog

copyObject() and pasteObject()

Basic scripts

Scripts which give you ideas how you can solve your tasks.

Full functional scripts

Scripts that are ready for achieving specific tasks

Scripting new Scribus' functions

Scripts which sketch new features which may be included in future releases of Scribus

Extension scripts and PyQt

Python issues

Other

Pages in category "Scripts"

The following 103 pages are in this category, out of 103 total.