ScripterNG/Development

= Development on the new scripter =

Documentation

 * How does the core (connecting Python to C++) work?
 * How can I add new functions?
 * How do I port code from older scripter to the new one?

Ideas for scripts and extensions

 * connect/sync Scribus documents with a database or content management system
 * Web_optimised_PDF
 * spell checker (there is already a spellchecker in 1.3.5+, --C schaefer 05:50, 21 April 2010 (CEST))
 * MathML importer by converting to SVG
 * HTML exporter
 * Use PyUno to use OpenOffice filters to import any text format supported by OpenOffice
 * fullscreen feature
 * Python editor/console
 * Macro recorder
 * Import Rich Text (RTF) with pyrtf-ng
 * Autotext for quotation marks, stared text gets bold, space after comma and period, etc.
 * OpenClipArt browser/importer. Same for Flickr/Open Font Library and other Creative Commons media repositories
 * provide external control via XMLRPC or DBus
 * wizards to create calendars, business cards, letters
 * alternative properties palette (for experiments or special use cases) - example
 * simple irc client dock window to get instant help and for live colaboration
 * import plots from gnuplot as svg
 * import CSV (or Excel with xlrd) into table
 * import scanned images (Sane on Unix with Python Imaging Library)
 * advanced search&replace with regular expressions
 * an alternative story editor in fullscreen mode like PyRoom
 * ghns-client (get hot new stuff) for ScribusStuff
 * mail merge
 * clippy ;-)
 * XML-source editor like Inkscape

Requirements to implement above scripts

 * call gettext importer api
 * call pdf exporter
 * event hooks (selection changed, document changed,
 * access to (de)saxe api to (de)serialize pageitems
 * access to StoryText object

API ideas / missing APIs

 * Layers
 * activeDocument.layers / activeDocument.activeLayer (property)
 * layer.{visible, active, print, lock} (bool property)
 * layer.remove
 * item.sentToLayer(layer_name)
 * activeDocument.newLayer(..)
 * Colors
 * activeDocument.colors (str list propery)
 * activeDocument.activeColor (property)
 * activeDocument.newColor(..)
 * Fonts
 * Scripter.{fontNames, xfontNames} (str list property)
 * Scripter.renderFont(..)
 * Guides
 * activePage.{horizontalGuides, verticalGuides} (double property list)
 * Selections
 * Text
 * Styles
 * Selections / Groups
 * GUI
 * Scripter.dialogs.valueInput
 * Scripter.dialogs.{openFilename, saveFilename, openDirectory}
 * Scripter.activeWindow.progess
 * Scripter.activeWindow.mouseCursorType
 * Misc
 * activeDocument.importPage
 * MasterPage-stuff
 * PageItem-Proxy: Currently a script can directly access a PageItem. It would be better if there is a thin layer between them.

Other important TODO

 * add i18n and integrate with rest of Scribus

Implementation of other scripting languages (must be platform-neutral)

 * Perl
 * Ruby
 * JavaScript/QtScript
 * Lua

Links
(will lookup my bookmarks)
 * ScripterNG/Development/PortingOldScripter
 * Integration of scripting languages into C++/Qt applications
 * Examples about how other projects solved this topic
 * InDesign scripting with JavaScript