Subversion Repositories Scribus

Rev

Rev 22212 | Rev 22517 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4430 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
82 Franz 7
/***************************************************************************
8
                          scriptplugin.cpp  -  description
9
                             -------------------
10
    begin                : Thu Oct 3 08:00:00 CEST 2002
11
    copyright            : (C) 2002 by Franz Schmid
12
    email                : Franz.Schmid@altmuehlnet.de
13
 ***************************************************************************/
14
 
15
/***************************************************************************
16
 *                                                                         *
17
 *   This program is free software; you can redistribute it and/or modify  *
18
 *   it under the terms of the GNU General Public License as published by  *
19
 *   the Free Software Foundation; either version 2 of the License, or     *
20
 *   (at your option) any later version.                                   *
21
 *                                                                         *
22
 ***************************************************************************/
792 subik 23
 
24
// include cmdvar.h first, as it pulls in <Python.h>
22049 jghali 25
#include "cmdannotations.h"
792 subik 26
#include "cmdvar.h"
16856 craig 27
#include "cmdcell.h"
10862 cbradney 28
#include "cmdcolor.h"
103 Franz 29
#include "cmddialog.h"
30
#include "cmddoc.h"
10862 cbradney 31
#include "cmdgetprop.h"
32
#include "cmdgetsetprop.h"
33
#include "cmdmani.h"
34
#include "cmdmisc.h"
35
#include "cmdobj.h"
103 Franz 36
#include "cmdpage.h"
37
#include "cmdsetprop.h"
16856 craig 38
#include "cmdtable.h"
103 Franz 39
#include "cmdtext.h"
40
#include "cmdutil.h"
11384 subik 41
#include "cmdstyle.h"
203 Franz 42
#include "guiapp.h"
20185 craig 43
#include "iconmanager.h"
10862 cbradney 44
#include "objimageexport.h"
45
#include "objpdffile.h"
46
#include "objprinter.h"
14629 cbradney 47
#include "prefs_scripter.h"
10862 cbradney 48
#include "scconfig.h"
1693 craig 49
#include "scpaths.h"
10862 cbradney 50
#include "scribuscore.h"
3071 subik 51
#include "scribusstructs.h"
10862 cbradney 52
#include "scriptercore.h"
3216 craig 53
#include "scripterprefsgui.h"
10862 cbradney 54
#include "scriptplugin.h"
55
#include "svgimport.h"
20185 craig 56
#include "ui/customfdialog.h"
57
#include "ui/helpbrowser.h"
58
#include "ui/propertiespalette.h"
59
#include "ui/scmwmenumanager.h"
10862 cbradney 60
#include "units.h"
10200 cbradney 61
 
20185 craig 62
 
10223 cbradney 63
#include <QApplication>
64
#include <QMessageBox>
65
#include <QTextCodec>
66
#include <QRegExp>
67
#include <QPixmap>
68
#include <QWidget>
69
#include <QString>
8501 cbradney 70
//Added by qt3to4:
9535 fschmid 71
#include <QByteArray>
82 Franz 72
#include <cstdlib>
853 subik 73
#include <iostream>
74
 
3216 craig 75
 
4119 craig 76
#ifdef HAVE_SCRIPTER2
77
extern void scripter2_init();
78
#endif
79
 
647 fschmid 80
// Exceptions; visible from cmdvar.h, set up in initscribus()
81
PyObject* ScribusException;
82
PyObject* NoDocOpenError;
853 subik 83
PyObject* WrongFrameTypeError;
84
PyObject* NoValidObjectError;
899 cbradney 85
PyObject* NotFoundError;
86
PyObject* NameExistsError;
647 fschmid 87
 
1425 subik 88
// Other extern variables defined in cmdvar.h
89
PyObject* wrappedMainWindow;
90
PyObject* wrappedQApp;
1718 craig 91
ScripterCore* scripterCore;
1425 subik 92
 
1718 craig 93
 
3207 craig 94
int scriptplugin_getPluginAPIVersion()
82 Franz 95
{
3207 craig 96
        return PLUGIN_API_VERSION;
82 Franz 97
}
98
 
3207 craig 99
ScPlugin* scriptplugin_getPlugin()
82 Franz 100
{
5310 cbradney 101
        scripterCore=0;
3207 craig 102
        ScriptPlugin* plug = new ScriptPlugin();
103
        Q_CHECK_PTR(plug);
104
        return plug;
82 Franz 105
}
106
 
3207 craig 107
void scriptplugin_freePlugin(ScPlugin* plugin)
660 fschmid 108
{
3207 craig 109
        ScriptPlugin* plug = dynamic_cast<ScriptPlugin*>(plugin);
110
        Q_ASSERT(plug);
111
        delete plug;
660 fschmid 112
}
113
 
3207 craig 114
ScriptPlugin::ScriptPlugin() : ScPersistentPlugin()
1269 cbradney 115
{
3207 craig 116
        // Set action info in languageChange, so we only have to do
117
        // it in one place.
118
        languageChange();
1269 cbradney 119
}
120
 
3207 craig 121
ScriptPlugin::~ScriptPlugin() {};
1269 cbradney 122
 
3207 craig 123
void ScriptPlugin::languageChange()
1269 cbradney 124
{
3207 craig 125
        if (scripterCore)
126
                scripterCore->languageChange();
1269 cbradney 127
}
128
 
5243 cbradney 129
void ScriptPlugin::addToMainWindowMenu(ScribusMainWindow* mw)
130
{
131
        if (scripterCore)
132
                scripterCore->addToMainWindowMenu(mw);
133
}
134
 
3207 craig 135
const QString ScriptPlugin::fullTrName() const
1269 cbradney 136
{
3207 craig 137
        return QObject::tr("Scripter");
1269 cbradney 138
}
139
 
3207 craig 140
const ScActionPlugin::AboutData* ScriptPlugin::getAboutData() const
1269 cbradney 141
{
3241 craig 142
        AboutData* about = new AboutData;
143
        Q_CHECK_PTR(about);
144
        about->authors = QString::fromUtf8(
145
                        "Petr Van\xc4\x9bk <petr@scribus.info>, "
146
                        "Franz Schmid <franz@scribus.info>, "
147
                        "Craig Ringer <craig@scribus.info>");
148
        about->shortDescription = tr("Embedded Python scripting support.");
149
        // about->description = tr("Write me!")
3439 subik 150
        // about->version
3241 craig 151
        // about->releaseDate
152
        // about->copyright
153
        // about->license
154
        return about;
1269 cbradney 155
}
156
 
3207 craig 157
void ScriptPlugin::deleteAboutData(const AboutData* about) const
2223 cbradney 158
{
3241 craig 159
        Q_ASSERT(about);
160
        delete about;
2223 cbradney 161
}
162
 
3207 craig 163
bool ScriptPlugin::initPlugin()
82 Franz 164
{
14171 jghali 165
#if defined(Q_OS_WIN)
166
        QString pyHome = qApp->applicationDirPath() + "/python";
167
        if (QDir(pyHome).exists())
168
        {
169
                QString ph = QDir::toNativeSeparators(pyHome);
170
                pythonHome = ph.toLocal8Bit();
171
                Py_SetPythonHome(pythonHome.data());
172
        }
173
#endif
82 Franz 174
        Py_Initialize();
899 cbradney 175
        if (PyUnicode_SetDefaultEncoding("utf-8"))
176
        {
177
                qDebug("Failed to set default encoding to utf-8.\n");
178
                PyErr_Clear();
179
        }
1269 cbradney 180
 
5781 cbradney 181
        scripterCore = new ScripterCore(ScCore->primaryMainWindow());
3207 craig 182
        Q_CHECK_PTR(scripterCore);
5781 cbradney 183
        initscribus(ScCore->primaryMainWindow());
4119 craig 184
#ifdef HAVE_SCRIPTER2
185
        scripter2_init();
186
#endif
2706 craig 187
        scripterCore->setupMainInterpreter();
1752 craig 188
        scripterCore->initExtensionScripts();
3207 craig 189
        return true;
1269 cbradney 190
}
191
 
3207 craig 192
bool ScriptPlugin::cleanupPlugin()
1269 cbradney 193
{
1718 craig 194
        if (scripterCore)
10222 jghali 195
        {
1718 craig 196
                delete scripterCore;
10222 jghali 197
                scripterCore = NULL;
198
        }
1269 cbradney 199
        Py_Finalize();
3207 craig 200
        return true;
1269 cbradney 201
}
202
 
14657 cbradney 203
bool ScriptPlugin::newPrefsPanelWidget(QWidget* parent, PrefsPanel*& panel, QString& caption, QPixmap& icon)
3216 craig 204
{
205
        panel = new ScripterPrefsGui(parent);
206
        Q_CHECK_PTR(panel);
16728 jghali 207
        connect(panel, SIGNAL(prefsChanged()), scripterCore, SLOT(updateSyntaxHighlighter()));
3216 craig 208
        caption = tr("Scripter");
20185 craig 209
        icon = IconManager::instance()->loadPixmap("python.png");
3216 craig 210
        return true;
211
}
212
 
14629 cbradney 213
 
14657 cbradney 214
bool ScriptPlugin::newPrefsPanelWidget(QWidget* parent, Prefs_Pane*& panel, QString& caption, QPixmap& icon)
14629 cbradney 215
{
216
        panel = new Prefs_Scripter(parent);
217
        Q_CHECK_PTR(panel);
16728 jghali 218
        connect(panel, SIGNAL(prefsChanged()), scripterCore, SLOT(updateSyntaxHighlighter()));
14629 cbradney 219
        caption = tr("Scripter");
20185 craig 220
        icon = IconManager::instance()->loadPixmap("python_16.png");
14629 cbradney 221
        return true;
222
}
223
 
3207 craig 224
/*  TEMPORARILY DISABLED
225
void run()
1269 cbradney 226
{
1693 craig 227
        QString pfad = ScPaths::instance().docDir();
1269 cbradney 228
        QString pfad2;
16577 craig 229
        pfad2 = QDir::toNativeSeparators(pfad + "en/Scripter/index.html");
5781 cbradney 230
        HelpBrowser *dia = new HelpBrowser(0, QObject::tr("Online Reference"), ScCore->primaryMainWindow()->getGuiLanguage(), "scripter");
1269 cbradney 231
        dia->show();
232
}
3207 craig 233
*/
1269 cbradney 234
 
235
 
82 Franz 236
/****************************************************************************************/
237
/*                                                                                      */
650 fschmid 238
/*   Definitions of the Python commands                                                 */
82 Franz 239
/*                                                                                      */
240
/****************************************************************************************/
241
 
11955 subik 242
/*static */PyObject *scribus_retval(PyObject* /*self*/, PyObject* args)
82 Franz 243
{
899 cbradney 244
        char *Name = NULL;
5051 subik 245
        if (!PyArg_ParseTuple(args, (char*)"s", &Name))
82 Franz 246
                return NULL;
899 cbradney 247
        // Because sysdefaultencoding is not utf-8, Python is returning utf-8 encoded
248
        // 8-bit char* strings. Make sure Qt understands that the input is utf-8 not
249
        // the default local encoding (usually latin-1) by using QString::fromUtf8()
5051 subik 250
        /*RetString = QString::fromUtf8(Name);
251
        RetVal = retV;*/
252
        scripterCore->returnString = QString::fromUtf8(Name);
82 Franz 253
        return PyInt_FromLong(0L);
254
}
255
 
11955 subik 256
/*static */PyObject *scribus_getval(PyObject* /*self*/)
82 Franz 257
{
10493 fschmid 258
        return PyString_FromString(scripterCore->inValue.toUtf8().data());
82 Franz 259
}
260
 
5051 subik 261
/*! \brief Translate a docstring. Small helper function for use with the
853 subik 262
 * PyMethodDef struct.
263
 */
264
char* tr(const char* docstringConstant)
265
{
899 cbradney 266
        // Alas, there's a lot of wasteful string copying going on
267
        // here.
268
        QString translated = QObject::tr(docstringConstant, "scripter docstring");
2071 subik 269
        // pv - hack for ugly formating in console removing
270
        translated.replace("\n\n", "<P>");
271
        translated.replace('\n', " ");
272
        translated.replace("<P>", "\n\n");
899 cbradney 273
        /*
274
         * Python doesn't support 'unicode' object docstrings in the PyMethodDef,
275
         * and has no way to specify what encoding docstrings are in. The passed C
276
         * strings passed are made into 'str' objects as-is. These are interpreted
277
         * as being in the Python sysdefaultencoding, usually 'ascii', when used.
278
         * We now set systemdefaultencoding to 'utf-8' ...  so we're going to pass
279
         * Python an 8-bit utf-8 encoded string in a char* .  With
280
         * sysdefaultencoding set correctly, Python will interpret it correctly and
281
         * we'll have our unicode docstrings. It's not as ugly a hack as it sounds,
282
         * you just have to remember that C and Python strings can both be
283
         * considered 8-bit strings of binary data that can be later interpreted as
284
         * a text string in a particular text encoding.
285
         */
286
        //QCString utfTranslated = translated.utf8();
9535 fschmid 287
        QByteArray trch = translated.toUtf8();
1559 craig 288
        char* utfstr = strdup(trch.data());
289
        if (!utfstr)
290
                // Complain, but then return NULL anyway. Python will treat NULL as
291
                // "no value" so that's fine.
292
                qDebug("scriptplugin.cpp:tr() - strdup() failure");
293
        return utfstr;
853 subik 294
}
295
 
899 cbradney 296
/* Now we're using the more pythonic convention for names:
297
 * class - ClassName
298
 * procedure/function/method - procedureName
299
 * etc. */
853 subik 300
PyMethodDef scribus_methods[] = {
421 Franz 301
        // 2004/10/03 pv - aliases with common Python syntax - ClassName methodName
655 fschmid 302
        // 2004-11-06 cr - move aliasing to dynamically generated wrapper functions, sort methoddef
19563 craig 303
        {const_cast<char*>("applyMasterPage"), scribus_applymasterpage, METH_VARARGS, tr(scribus_applymasterpage__doc__)},
934 subik 304
        {const_cast<char*>("changeColor"), scribus_setcolor, METH_VARARGS, tr(scribus_setcolor__doc__)},
22212 jghali 305
        {const_cast<char*>("changeColorLab"), scribus_setcolorlab, METH_VARARGS, tr(scribus_setcolorlab__doc__) },
14804 jghali 306
        {const_cast<char*>("changeColorRGB"), scribus_setcolorrgb, METH_VARARGS, tr(scribus_setcolorrgb__doc__)},
22212 jghali 307
        {const_cast<char*>("changeColorRGBFloat"), scribus_setcolorrgbfloat, METH_VARARGS, tr(scribus_setcolorrgbfloat__doc__)},
14804 jghali 308
        {const_cast<char*>("changeColorCMYK"), scribus_setcolorcmyk, METH_VARARGS, tr(scribus_setcolorcmyk__doc__)},
22212 jghali 309
        {const_cast<char*>("changeColorCMYKFloat"), scribus_setcolorcmykfloat, METH_VARARGS, tr(scribus_setcolorcmykfloat__doc__)},
934 subik 310
        {const_cast<char*>("closeDoc"), (PyCFunction)scribus_closedoc, METH_NOARGS, tr(scribus_closedoc__doc__)},
4062 craig 311
        {const_cast<char*>("closeMasterPage"), (PyCFunction)scribus_closemasterpage, METH_NOARGS, tr(scribus_closemasterpage__doc__)},
934 subik 312
        {const_cast<char*>("createBezierLine"), scribus_bezierline, METH_VARARGS, tr(scribus_bezierline__doc__)},
313
        {const_cast<char*>("createEllipse"), scribus_newellipse, METH_VARARGS, tr(scribus_newellipse__doc__)},
314
        {const_cast<char*>("createImage"), scribus_newimage, METH_VARARGS, tr(scribus_newimage__doc__)},
315
        {const_cast<char*>("createLayer"), scribus_createlayer, METH_VARARGS, tr(scribus_createlayer__doc__)},
316
        {const_cast<char*>("createLine"), scribus_newline, METH_VARARGS, tr(scribus_newline__doc__)},
4062 craig 317
        {const_cast<char*>("createMasterPage"), scribus_createmasterpage, METH_VARARGS, tr(scribus_createmasterpage__doc__)},
934 subik 318
        {const_cast<char*>("createPathText"), scribus_pathtext, METH_VARARGS, tr(scribus_pathtext__doc__)},
319
        {const_cast<char*>("createPolygon"), scribus_polygon, METH_VARARGS, tr(scribus_polygon__doc__)},
320
        {const_cast<char*>("createPolyLine"), scribus_polyline, METH_VARARGS, tr(scribus_polyline__doc__)},
321
        {const_cast<char*>("createRect"), scribus_newrect, METH_VARARGS, tr(scribus_newrect__doc__)},
322
        {const_cast<char*>("createText"), scribus_newtext, METH_VARARGS, tr(scribus_newtext__doc__)},
16856 craig 323
        {const_cast<char*>("createTable"), scribus_newtable, METH_VARARGS, tr(scribus_newtable__doc__)},
11384 subik 324
        {const_cast<char*>("createParagraphStyle"), (PyCFunction)scribus_createparagraphstyle, METH_KEYWORDS, tr(scribus_createparagraphstyle__doc__)},
325
        {const_cast<char*>("createCharStyle"), (PyCFunction)scribus_createcharstyle, METH_KEYWORDS, tr(scribus_createcharstyle__doc__)},
22205 jghali 326
        {const_cast<char*>("createCustomLineStyle"), scribus_createcustomlinestyle, METH_VARARGS, tr(scribus_createcustomlinestyle__doc__)},
934 subik 327
        {const_cast<char*>("currentPage"), (PyCFunction)scribus_actualpage, METH_NOARGS, tr(scribus_actualpage__doc__)},
328
        {const_cast<char*>("defineColor"), scribus_newcolor, METH_VARARGS, tr(scribus_newcolor__doc__)},
22212 jghali 329
        {const_cast<char*>("defineColorLab"), scribus_newcolorlab, METH_VARARGS, tr(scribus_newcolorlab__doc__) },
14804 jghali 330
        {const_cast<char*>("defineColorRGB"), scribus_newcolorrgb, METH_VARARGS, tr(scribus_newcolorrgb__doc__)},
22212 jghali 331
        {const_cast<char*>("defineColorRGBFloat"), scribus_newcolorrgb, METH_VARARGS, tr(scribus_newcolorrgbfloat__doc__)},
14804 jghali 332
        {const_cast<char*>("defineColorCMYK"), scribus_newcolorcmyk, METH_VARARGS, tr(scribus_newcolorcmyk__doc__)},
22212 jghali 333
        {const_cast<char*>("defineColorCMYKFloat"), scribus_newcolorcmykfloat, METH_VARARGS, tr(scribus_newcolorcmykfloat__doc__)},
934 subik 334
        {const_cast<char*>("deleteColor"), scribus_delcolor, METH_VARARGS, tr(scribus_delcolor__doc__)},
335
        {const_cast<char*>("deleteLayer"), scribus_removelayer, METH_VARARGS, tr(scribus_removelayer__doc__)},
4064 craig 336
        {const_cast<char*>("deleteMasterPage"), scribus_deletemasterpage, METH_VARARGS, tr(scribus_deletemasterpage__doc__)},
934 subik 337
        {const_cast<char*>("deleteObject"), scribus_deleteobj, METH_VARARGS, tr(scribus_deleteobj__doc__)},
338
        {const_cast<char*>("deletePage"), scribus_deletepage, METH_VARARGS, tr(scribus_deletepage__doc__)},
339
        {const_cast<char*>("deleteText"), scribus_deletetext, METH_VARARGS, tr(scribus_deletetext__doc__)},
340
        {const_cast<char*>("deselectAll"), (PyCFunction)scribus_deselect, METH_NOARGS, tr(scribus_deselect__doc__)},
341
        {const_cast<char*>("docChanged"), scribus_docchanged, METH_VARARGS, tr(scribus_docchanged__doc__)},
4062 craig 342
        {const_cast<char*>("editMasterPage"), scribus_editmasterpage, METH_VARARGS, tr(scribus_editmasterpage__doc__)},
934 subik 343
        {const_cast<char*>("fileDialog"), (PyCFunction)scribus_filedia, METH_VARARGS|METH_KEYWORDS, tr(scribus_filedia__doc__)},
14947 jghali 344
        {const_cast<char*>("fileQuit"), scribus_filequit, METH_VARARGS, tr(scribus_filequit__doc__)},
15528 craig 345
        {const_cast<char*>("flipObject"), scribus_flipobject, METH_VARARGS, tr(scribus_flipobject__doc__)},
934 subik 346
        {const_cast<char*>("getActiveLayer"), (PyCFunction)scribus_getactlayer, METH_NOARGS, tr(scribus_getactlayer__doc__)},
22064 jghali 347
        {const_cast<char*>("getAllObjects"), (PyCFunction)scribus_getallobj, METH_VARARGS|METH_KEYWORDS, tr(scribus_getallobj__doc__)},
934 subik 348
        {const_cast<char*>("getAllStyles"), (PyCFunction)scribus_getstylenames, METH_NOARGS, tr(scribus_getstylenames__doc__)},
19126 craig 349
        {const_cast<char*>("getCharStyles"), (PyCFunction)scribus_getcharstylenames, METH_NOARGS, tr(scribus_getcharstylenames__doc__)},
934 subik 350
        {const_cast<char*>("getAllText"), scribus_gettext, METH_VARARGS, tr(scribus_gettext__doc__)},
16856 craig 351
        {const_cast<char*>("getCellStyle"), scribus_getcellstyle, METH_VARARGS, tr(scribus_getcellstyle__doc__)},
352
        {const_cast<char*>("getCellColumnSpan"), scribus_getcellcolumnspan, METH_VARARGS, tr(scribus_getcellcolumnspan__doc__)},
353
        {const_cast<char*>("getCellRowSpan"), scribus_getcellrowspan, METH_VARARGS, tr(scribus_getcellrowspan__doc__)},
354
        {const_cast<char*>("getCellFillColor"), scribus_getcellfillcolor, METH_VARARGS, tr(scribus_getcellfillcolor__doc__)},
934 subik 355
        {const_cast<char*>("getColorNames"), (PyCFunction)scribus_colornames, METH_NOARGS, tr(scribus_colornames__doc__)},
356
        {const_cast<char*>("getColor"), scribus_getcolor, METH_VARARGS, tr(scribus_getcolor__doc__)},
22212 jghali 357
        {const_cast<char*>("getColorFloat"), scribus_getcolorfloat, METH_VARARGS, tr(scribus_getcolorfloat__doc__)},
1517 craig 358
        {const_cast<char*>("getColorAsRGB"), scribus_getcolorasrgb, METH_VARARGS, tr(scribus_getcolorasrgb__doc__)},
22212 jghali 359
        {const_cast<char*>("getColorAsRGBFloat"), scribus_getcolorasrgbfloat, METH_VARARGS, tr(scribus_getcolorasrgbfloat__doc__)},
13057 subik 360
        {const_cast<char*>("isSpotColor"), scribus_isspotcolor, METH_VARARGS, tr(scribus_isspotcolor__doc__)},
361
        {const_cast<char*>("setSpotColor"), scribus_setspotcolor, METH_VARARGS, tr(scribus_setspotcolor__doc__)},
12332 jghali 362
        {const_cast<char*>("getTextDistances"), scribus_gettextdistances, METH_VARARGS, tr(scribus_gettextdistances__doc__)},
934 subik 363
        {const_cast<char*>("getColumnGap"), scribus_getcolumngap, METH_VARARGS, tr(scribus_getcolumngap__doc__)},
364
        {const_cast<char*>("getColumns"), scribus_getcolumns, METH_VARARGS, tr(scribus_getcolumns__doc__)},
365
        {const_cast<char*>("getCornerRadius"), scribus_getcornerrad, METH_VARARGS, tr(scribus_getcornerrad__doc__)},
22205 jghali 366
        {const_cast<char*>("getCustomLineStyle"), scribus_getcustomlinestyle, METH_VARARGS, tr(scribus_getcustomlinestyle__doc__)},
934 subik 367
        {const_cast<char*>("getFillColor"), scribus_getfillcolor, METH_VARARGS, tr(scribus_getfillcolor__doc__)},
368
        {const_cast<char*>("getFillShade"), scribus_getfillshade, METH_VARARGS, tr(scribus_getfillshade__doc__)},
5887 fschmid 369
        {const_cast<char*>("getFillBlendmode"), scribus_getfillblend, METH_VARARGS, tr(scribus_getfillblend__doc__)},
370
        {const_cast<char*>("getFillTransparency"), scribus_getfilltrans, METH_VARARGS, tr(scribus_getfilltrans__doc__)},
934 subik 371
        {const_cast<char*>("getFontNames"), (PyCFunction)scribus_fontnames, METH_NOARGS, tr(scribus_fontnames__doc__)},
21563 jghali 372
        {const_cast<char*>("getFontFeatures"), scribus_getfontfeatures, METH_VARARGS, tr(scribus_getfontfeatures__doc__)},
934 subik 373
        {const_cast<char*>("getFont"), scribus_getfont, METH_VARARGS, tr(scribus_getfont__doc__)},
374
        {const_cast<char*>("getFontSize"), scribus_getfontsize, METH_VARARGS, tr(scribus_getfontsize__doc__)},
375
        {const_cast<char*>("getGuiLanguage"), (PyCFunction)scribus_getlanguage, METH_NOARGS, tr(scribus_getlanguage__doc__)},
376
        {const_cast<char*>("getHGuides"), (PyCFunction)scribus_getHguides, METH_NOARGS, tr(scribus_getHguides__doc__)},
21512 gpittman 377
        {const_cast<char*>("getImageFile"), scribus_getimagefile, METH_VARARGS, tr(scribus_getimagefile__doc__)},
934 subik 378
        {const_cast<char*>("getImageScale"), scribus_getimgscale, METH_VARARGS, tr(scribus_getimgscale__doc__)},
379
        {const_cast<char*>("getLayers"), (PyCFunction)scribus_getlayers, METH_NOARGS, tr(scribus_getlayers__doc__)},
5887 fschmid 380
        {const_cast<char*>("getLayerBlendmode"), scribus_glayerblend, METH_VARARGS, tr(scribus_glayerblend__doc__)},
381
        {const_cast<char*>("getLayerTransparency"), scribus_glayertrans, METH_VARARGS, tr(scribus_glayertrans__doc__)},
15494 craig 382
        {const_cast<char*>("getLineCap"), scribus_getlinecap, METH_VARARGS, tr(scribus_getlinecap__doc__)},
934 subik 383
        {const_cast<char*>("getLineColor"), scribus_getlinecolor, METH_VARARGS, tr(scribus_getlinecolor__doc__)},
11528 jghali 384
        {const_cast<char*>("getLineShade"), scribus_getlineshade, METH_VARARGS, tr(scribus_getlineshade__doc__)},
385
        {const_cast<char*>("getLineBlendmode"), scribus_getlineblend, METH_VARARGS, tr(scribus_getlineblend__doc__)},
386
        {const_cast<char*>("getLineTransparency"), scribus_getlinetrans, METH_VARARGS, tr(scribus_getlinetrans__doc__)},
934 subik 387
        {const_cast<char*>("getLineJoin"), scribus_getlinejoin, METH_VARARGS, tr(scribus_getlinejoin__doc__)},
388
        {const_cast<char*>("getLineSpacing"), scribus_getlinespace, METH_VARARGS, tr(scribus_getlinespace__doc__)},
389
        {const_cast<char*>("getLineStyle"), scribus_getlinestyle, METH_VARARGS, tr(scribus_getlinestyle__doc__)},
390
        {const_cast<char*>("getLineWidth"), scribus_getlinewidth, METH_VARARGS, tr(scribus_getlinewidth__doc__)},
21268 craig 391
        {const_cast<char*>("getMasterPage"), scribus_getmasterpage, METH_VARARGS, tr(scribus_getmasterpage__doc__)},
934 subik 392
        {const_cast<char*>("getPageItems"), (PyCFunction)scribus_getpageitems, METH_NOARGS, tr(scribus_getpageitems__doc__)},
393
        {const_cast<char*>("getPageMargins"), (PyCFunction)scribus_getpagemargins, METH_NOARGS, tr(scribus_getpagemargins__doc__)},
6299 fschmid 394
        {const_cast<char*>("getPageType"), (PyCFunction)scribus_pageposition, METH_VARARGS, tr(scribus_pageposition__doc__)},
14142 cbradney 395
        {const_cast<char*>("getPageSize"), (PyCFunction)scribus_pagedimension, METH_NOARGS, tr(scribus_pagedimension__doc__)},
396
        {const_cast<char*>("getPageNSize"), scribus_pagensize, METH_VARARGS, tr(scribus_pagensize__doc__)},
397
        {const_cast<char*>("getPageNMargins"), scribus_pagenmargins, METH_VARARGS, tr(scribus_pagenmargins__doc__)},
11048 jghali 398
        {const_cast<char*>("importPage"), scribus_importpage, METH_VARARGS, tr(scribus_importpage__doc__)},
934 subik 399
        {const_cast<char*>("getPosition"), scribus_getposi, METH_VARARGS, tr(scribus_getposi__doc__)},
400
        {const_cast<char*>("getRotation"), scribus_getrotation, METH_VARARGS, tr(scribus_getrotation__doc__)},
14940 jghali 401
        {const_cast<char*>("getObjectType"), scribus_getobjecttype, METH_VARARGS, tr(scribus_getobjecttype__doc__)},
21858 jghali 402
        {const_cast<char*>("getObjectAttributes"), scribus_getobjectattributes, METH_VARARGS, tr(scribus_getobjectattributes__doc__)},
934 subik 403
        {const_cast<char*>("getSelectedObject"), scribus_getselobjnam, METH_VARARGS, tr(scribus_getselobjnam__doc__)},
404
        {const_cast<char*>("getSize"), scribus_getsize, METH_VARARGS, tr(scribus_getsize__doc__)},
16856 craig 405
        {const_cast<char*>("getTableRows"), scribus_gettablerows, METH_VARARGS, tr(scribus_gettablerows__doc__)},
406
        {const_cast<char*>("getTableRowHeight"), scribus_gettablerowheight, METH_VARARGS, tr(scribus_gettablerowheight__doc__)},
407
        {const_cast<char*>("getTableColumns"), scribus_gettablecolumns, METH_VARARGS, tr(scribus_gettablecolumns__doc__)},
408
        {const_cast<char*>("getTableColumnWidth"), scribus_gettablecolumnwidth, METH_VARARGS, tr(scribus_gettablecolumnwidth__doc__)},
409
        {const_cast<char*>("getTableStyle"), scribus_gettablestyle, METH_VARARGS, tr(scribus_gettablestyle__doc__)},
410
        {const_cast<char*>("getTableFillColor"), scribus_gettablefillcolor, METH_VARARGS, tr(scribus_gettablefillcolor__doc__)},
934 subik 411
        {const_cast<char*>("getTextColor"), scribus_getlinecolor, METH_VARARGS, tr(scribus_getlinecolor__doc__)},
412
        {const_cast<char*>("getTextLength"), scribus_gettextsize, METH_VARARGS, tr(scribus_gettextsize__doc__)},
6298 fschmid 413
        {const_cast<char*>("getTextLines"), scribus_gettextlines, METH_VARARGS, tr(scribus_gettextlines__doc__)},
934 subik 414
        {const_cast<char*>("getText"), scribus_getframetext, METH_VARARGS, tr(scribus_getframetext__doc__)},
415
        {const_cast<char*>("getTextShade"), scribus_getlineshade, METH_VARARGS, tr(scribus_getlineshade__doc__)},
416
        {const_cast<char*>("getUnit"), (PyCFunction)scribus_getunit, METH_NOARGS, tr(scribus_getunit__doc__)},
417
        {const_cast<char*>("getVGuides"), (PyCFunction)scribus_getVguides, METH_NOARGS, tr(scribus_getVguides__doc__)},
418
        {const_cast<char*>("getXFontNames"), (PyCFunction)scribus_xfontnames, METH_NOARGS, tr(scribus_xfontnames__doc__)},
419
        {const_cast<char*>("gotoPage"), scribus_gotopage, METH_VARARGS, tr(scribus_gotopage__doc__)},
14714 jghali 420
        {const_cast<char*>("groupObjects"), (PyCFunction)scribus_groupobj, METH_VARARGS, tr(scribus_groupobj__doc__)},
934 subik 421
        {const_cast<char*>("haveDoc"), (PyCFunction)scribus_havedoc, METH_NOARGS, tr(scribus_havedoc__doc__)},
14758 fschmid 422
        {const_cast<char*>("placeVectorFile"), scribus_placevec, METH_VARARGS, tr(scribus_placevec__doc__)},
423
        {const_cast<char*>("placeSVG"), scribus_placevec, METH_VARARGS, tr(scribus_placesvg__doc__)},
424
        {const_cast<char*>("placeEPS"), scribus_placevec, METH_VARARGS, tr(scribus_placeeps__doc__)},
425
        {const_cast<char*>("placeSXD"), scribus_placevec, METH_VARARGS, tr(scribus_placesxd__doc__)},
426
        {const_cast<char*>("placeODG"), scribus_placevec, METH_VARARGS, tr(scribus_placeodg__doc__)},
16856 craig 427
        {const_cast<char*>("insertTableRows"), scribus_inserttablerows, METH_VARARGS, tr(scribus_inserttablerows__doc__)},
428
        {const_cast<char*>("insertTableColumns"), scribus_inserttablecolumns, METH_VARARGS, tr(scribus_inserttablecolumns__doc__)},
934 subik 429
        {const_cast<char*>("insertText"), scribus_inserttext, METH_VARARGS, tr(scribus_inserttext__doc__)},
17795 jghali 430
        {const_cast<char*>("insertHtmlText"), scribus_inserthtmltext, METH_VARARGS, tr(scribus_inserthtmltext__doc__)},
934 subik 431
        {const_cast<char*>("isLayerPrintable"), scribus_glayerprint, METH_VARARGS, tr(scribus_glayerprint__doc__)},
432
        {const_cast<char*>("isLayerVisible"), scribus_glayervisib, METH_VARARGS, tr(scribus_glayervisib__doc__)},
5887 fschmid 433
        {const_cast<char*>("isLayerLocked"), scribus_glayerlock, METH_VARARGS, tr(scribus_glayerlock__doc__)},
434
        {const_cast<char*>("isLayerOutlined"), scribus_glayeroutline, METH_VARARGS, tr(scribus_glayeroutline__doc__)},
435
        {const_cast<char*>("isLayerFlow"), scribus_glayerflow, METH_VARARGS, tr(scribus_glayerflow__doc__)},
934 subik 436
        {const_cast<char*>("isLocked"), scribus_islocked, METH_VARARGS, tr(scribus_islocked__doc__)},
437
        {const_cast<char*>("linkTextFrames"), scribus_linktextframes, METH_VARARGS, tr(scribus_linktextframes__doc__)},
438
        {const_cast<char*>("loadImage"), scribus_loadimage, METH_VARARGS, tr(scribus_loadimage__doc__)},
439
        {const_cast<char*>("loadStylesFromFile"), scribus_loadstylesfromfile, METH_VARARGS, tr(scribus_loadstylesfromfile__doc__)},
440
        {const_cast<char*>("lockObject"), scribus_lockobject, METH_VARARGS, tr(scribus_lockobject__doc__)},
4062 craig 441
        {const_cast<char*>("masterPageNames"), (PyCFunction)scribus_masterpagenames, METH_NOARGS, tr(scribus_masterpagenames__doc__)},
16856 craig 442
        {const_cast<char*>("mergeTableCells"), scribus_mergetablecells, METH_VARARGS, tr(scribus_mergetablecells__doc__)},
934 subik 443
        {const_cast<char*>("messagebarText"), scribus_messagebartext, METH_VARARGS, tr(scribus_messagebartext__doc__)},
444
        {const_cast<char*>("messageBox"), (PyCFunction)scribus_messdia, METH_VARARGS|METH_KEYWORDS, tr(scribus_messdia__doc__)},
445
        {const_cast<char*>("moveObjectAbs"), scribus_moveobjabs, METH_VARARGS, tr(scribus_moveobjabs__doc__)},
446
        {const_cast<char*>("moveObject"), scribus_moveobjrel, METH_VARARGS, tr(scribus_moveobjrel__doc__)},
447
        {const_cast<char*>("newDocDialog"), (PyCFunction)scribus_newdocdia, METH_NOARGS, tr(scribus_newdocdia__doc__)},
448
        {const_cast<char*>("newDoc"), scribus_newdoc, METH_VARARGS, tr(scribus_newdoc__doc__)},
3647 subik 449
        {const_cast<char*>("newDocument"), scribus_newdocument, METH_VARARGS, tr(scribus_newdocument__doc__)},
934 subik 450
        {const_cast<char*>("newPage"), scribus_newpage, METH_VARARGS, tr(scribus_newpage__doc__)},
3017 subik 451
        {const_cast<char*>("newStyleDialog"), scribus_newstyledialog, METH_NOARGS, tr(scribus_newstyledialog__doc__)},
934 subik 452
        {const_cast<char*>("objectExists"),scribus_objectexists, METH_VARARGS, tr(scribus_objectexists__doc__)},
453
        {const_cast<char*>("openDoc"), scribus_opendoc, METH_VARARGS, tr(scribus_opendoc__doc__)},
454
        {const_cast<char*>("pageCount"), (PyCFunction)scribus_pagecount, METH_NOARGS, tr(scribus_pagecount__doc__)},
7440 subik 455
        {const_cast<char*>("pageDimension"), (PyCFunction)scribus_pagedimension, METH_NOARGS, "Obsolete function. Don't use it."},
934 subik 456
        {const_cast<char*>("progressReset"), (PyCFunction)scribus_progressreset, METH_NOARGS, tr(scribus_progressreset__doc__)},
457
        {const_cast<char*>("progressSet"), scribus_progresssetprogress, METH_VARARGS, tr(scribus_progresssetprogress__doc__)},
458
        {const_cast<char*>("progressTotal"), scribus_progresssettotalsteps, METH_VARARGS, tr(scribus_progresssettotalsteps__doc__)},
19459 jghali 459
        {const_cast<char*>("readPDFOptions"), (PyCFunction)scribus_readpdfoptions, METH_VARARGS, tr(scribus_readpdfoptions__doc__)},
934 subik 460
        {const_cast<char*>("redrawAll"), (PyCFunction)scribus_redraw, METH_NOARGS, tr(scribus_redraw__doc__)},
16856 craig 461
        {const_cast<char*>("removeTableRows"), scribus_removetablerows, METH_VARARGS, tr(scribus_removetablerows__doc__)},
462
        {const_cast<char*>("removeTableColumns"), scribus_removetablecolumns, METH_VARARGS, tr(scribus_removetablecolumns__doc__)},
1514 craig 463
        {const_cast<char*>("renderFont"), (PyCFunction)scribus_renderfont, METH_KEYWORDS, tr(scribus_renderfont__doc__)},
934 subik 464
        {const_cast<char*>("replaceColor"), scribus_replcolor, METH_VARARGS, tr(scribus_replcolor__doc__)},
16856 craig 465
        {const_cast<char*>("resizeTableColumn"), scribus_resizetablecolumn, METH_VARARGS, tr(scribus_resizetablecolumn__doc__)},
466
        {const_cast<char*>("resizeTableRow"), scribus_resizetablerow, METH_VARARGS, tr(scribus_resizetablerow__doc__)},
934 subik 467
        {const_cast<char*>("rotateObjectAbs"), scribus_rotobjabs, METH_VARARGS, tr(scribus_rotobjabs__doc__)},
468
        {const_cast<char*>("rotateObject"), scribus_rotobjrel, METH_VARARGS, tr(scribus_rotobjrel__doc__)},
14342 cbradney 469
        {const_cast<char*>("getDocName"), (PyCFunction)scribus_getdocname, METH_NOARGS, tr(scribus_getdocname__doc__)},
934 subik 470
        {const_cast<char*>("saveDocAs"), scribus_savedocas, METH_VARARGS, tr(scribus_savedocas__doc__)},
471
        {const_cast<char*>("saveDoc"), (PyCFunction)scribus_savedoc, METH_NOARGS, tr(scribus_savedoc__doc__)},
472
        {const_cast<char*>("savePageAsEPS"), scribus_savepageeps, METH_VARARGS, tr(scribus_savepageeps__doc__)},
19459 jghali 473
        {const_cast<char*>("savePDFOptions"), (PyCFunction)scribus_savepdfoptions, METH_VARARGS, tr(scribus_savepdfoptions__doc__)},
934 subik 474
        {const_cast<char*>("scaleGroup"), scribus_scalegroup, METH_VARARGS, tr(scribus_scalegroup__doc__)},
475
        {const_cast<char*>("scaleImage"), scribus_scaleimage, METH_VARARGS, tr(scribus_scaleimage__doc__)},
14822 cbradney 476
        {const_cast<char*>("setImageBrightness"), scribus_setimagebrightness, METH_VARARGS, tr(scribus_setimagebrightness__doc__)},
477
        {const_cast<char*>("setImageGrayscale"), scribus_setimagegrayscale, METH_VARARGS, tr(scribus_setimagegrayscale__doc__)},
13077 jghali 478
        {const_cast<char*>("setImageScale"), scribus_setimagescale, METH_VARARGS, tr(scribus_setimagescale__doc__)},
14822 cbradney 479
        {const_cast<char*>("setImageOffset"), scribus_setimageoffset, METH_VARARGS, tr(scribus_setimageoffset__doc__)},
934 subik 480
        {const_cast<char*>("selectionCount"), (PyCFunction)scribus_selcount, METH_NOARGS, tr(scribus_selcount__doc__)},
481
        {const_cast<char*>("selectObject"), scribus_selectobj, METH_VARARGS, tr(scribus_selectobj__doc__)},
482
        {const_cast<char*>("selectText"), scribus_selecttext, METH_VARARGS, tr(scribus_selecttext__doc__)},
483
        {const_cast<char*>("sentToLayer"), scribus_senttolayer, METH_VARARGS, tr(scribus_senttolayer__doc__)},
484
        {const_cast<char*>("setActiveLayer"), scribus_setactlayer, METH_VARARGS, tr(scribus_setactlayer__doc__)},
1534 subik 485
        {const_cast<char*>("setPDFBookmark"), scribus_setpdfbookmark, METH_VARARGS, tr(scribus_setpdfbookmark__doc__)},
486
        {const_cast<char*>("isPDFBookmark"), scribus_ispdfbookmark, METH_VARARGS, tr(scribus_ispdfbookmark__doc__)},
12332 jghali 487
        {const_cast<char*>("setTextDistances"), scribus_settextdistances, METH_VARARGS, tr(scribus_settextdistances__doc__)},
16856 craig 488
        {const_cast<char*>("setCellStyle"), scribus_setcellstyle, METH_VARARGS, tr(scribus_setcellstyle__doc__)},
489
        {const_cast<char*>("setCellText"), scribus_setcelltext, METH_VARARGS, tr(scribus_setcelltext__doc__)},
490
        {const_cast<char*>("setCellFillColor"), scribus_setcellfillcolor, METH_VARARGS, tr(scribus_setcellfillcolor__doc__)},
491
        {const_cast<char*>("setCellLeftBorder"), scribus_setcellleftborder, METH_VARARGS, tr(scribus_setcellleftborder__doc__)},
492
        {const_cast<char*>("setCellLeftPadding"), scribus_setcellleftpadding, METH_VARARGS, tr(scribus_setcellleftpadding__doc__)},
493
        {const_cast<char*>("setCellRightBorder"), scribus_setcellrightborder, METH_VARARGS, tr(scribus_setcellrightborder__doc__)},
494
        {const_cast<char*>("setCellRightPadding"), scribus_setcellrightpadding, METH_VARARGS, tr(scribus_setcellrightpadding__doc__)},
495
        {const_cast<char*>("setCellTopBorder"), scribus_setcelltopborder, METH_VARARGS, tr(scribus_setcelltopborder__doc__)},
496
        {const_cast<char*>("setCellTopPadding"), scribus_setcelltoppadding, METH_VARARGS, tr(scribus_setcelltoppadding__doc__)},
497
        {const_cast<char*>("setCellBottomBorder"), scribus_setcellbottomborder, METH_VARARGS, tr(scribus_setcellbottomborder__doc__)},
498
        {const_cast<char*>("setCellBottomPadding"), scribus_setcellbottompadding, METH_VARARGS, tr(scribus_setcellbottompadding__doc__)},
934 subik 499
        {const_cast<char*>("setColumnGap"), scribus_setcolumngap, METH_VARARGS, tr(scribus_setcolumngap__doc__)},
500
        {const_cast<char*>("setColumns"), scribus_setcolumns, METH_VARARGS, tr(scribus_setcolumns__doc__)},
501
        {const_cast<char*>("setCornerRadius"), scribus_setcornerrad, METH_VARARGS, tr(scribus_setcornerrad__doc__)},
502
        {const_cast<char*>("setCursor"), scribus_setcursor, METH_VARARGS, tr(scribus_setcursor__doc__)},
22205 jghali 503
        {const_cast<char*>("setCustomLineStyle"), scribus_setcustomlinestyle, METH_VARARGS, tr(scribus_setcustomlinestyle__doc__)},
934 subik 504
        {const_cast<char*>("setDocType"), scribus_setdoctype, METH_VARARGS, tr(scribus_setdoctype__doc__)},
505
        {const_cast<char*>("setFillColor"), scribus_setfillcolor, METH_VARARGS, tr(scribus_setfillcolor__doc__)},
5887 fschmid 506
        {const_cast<char*>("setFillTransparency"), scribus_setfilltrans, METH_VARARGS, tr(scribus_setfilltrans__doc__)},
507
        {const_cast<char*>("setFillBlendmode"), scribus_setfillblend, METH_VARARGS, tr(scribus_setfillblend__doc__)},
934 subik 508
        {const_cast<char*>("setFillShade"), scribus_setfillshade, METH_VARARGS, tr(scribus_setfillshade__doc__)},
509
        {const_cast<char*>("setFont"), scribus_setfont, METH_VARARGS, tr(scribus_setfont__doc__)},
21563 jghali 510
        {const_cast<char*>("setFontFeatures"), scribus_setfontfeatures, METH_VARARGS, tr(scribus_setfontfeatures__doc__)},
934 subik 511
        {const_cast<char*>("setFontSize"), scribus_setfontsize, METH_VARARGS, tr(scribus_setfontsize__doc__)},
512
        {const_cast<char*>("setGradientFill"), scribus_setgradfill, METH_VARARGS, tr(scribus_setgradfill__doc__)},
13182 jghali 513
        {const_cast<char*>("setGradientStop"), scribus_setgradstop, METH_VARARGS, tr(scribus_setgradstop__doc__)},
934 subik 514
        {const_cast<char*>("setHGuides"), scribus_setHguides, METH_VARARGS, tr(scribus_setHguides__doc__)},
515
        {const_cast<char*>("setInfo"), scribus_setinfo, METH_VARARGS, tr(scribus_setinfo__doc__)},
516
        {const_cast<char*>("setLayerPrintable"), scribus_layerprint, METH_VARARGS, tr(scribus_layerprint__doc__)},
517
        {const_cast<char*>("setLayerVisible"), scribus_layervisible, METH_VARARGS, tr(scribus_layervisible__doc__)},
5887 fschmid 518
        {const_cast<char*>("setLayerLocked"), scribus_layerlock, METH_VARARGS, tr(scribus_layerlock__doc__)},
519
        {const_cast<char*>("setLayerOutlined"), scribus_layeroutline, METH_VARARGS, tr(scribus_layeroutline__doc__)},
520
        {const_cast<char*>("setLayerFlow"), scribus_layerflow, METH_VARARGS, tr(scribus_layerflow__doc__)},
521
        {const_cast<char*>("setLayerBlendmode"), scribus_layerblend, METH_VARARGS, tr(scribus_layerblend__doc__)},
522
        {const_cast<char*>("setLayerTransparency"), scribus_layertrans, METH_VARARGS, tr(scribus_layertrans__doc__)},
15494 craig 523
        {const_cast<char*>("setLineCap"), scribus_setlinecap, METH_VARARGS, tr(scribus_setlinecap__doc__)},
934 subik 524
        {const_cast<char*>("setLineColor"), scribus_setlinecolor, METH_VARARGS, tr(scribus_setlinecolor__doc__)},
5887 fschmid 525
        {const_cast<char*>("setLineTransparency"), scribus_setlinetrans, METH_VARARGS, tr(scribus_setlinetrans__doc__)},
526
        {const_cast<char*>("setLineBlendmode"), scribus_setlineblend, METH_VARARGS, tr(scribus_setlineblend__doc__)},
934 subik 527
        {const_cast<char*>("setLineJoin"), scribus_setlinejoin, METH_VARARGS, tr(scribus_setlinejoin__doc__)},
528
        {const_cast<char*>("setLineShade"), scribus_setlineshade, METH_VARARGS, tr(scribus_setlineshade__doc__)},
529
        {const_cast<char*>("setLineSpacing"), scribus_setlinespace, METH_VARARGS, tr(scribus_setlinespace__doc__)},
14427 jghali 530
        {const_cast<char*>("setLineSpacingMode"), scribus_setlinespacemode, METH_VARARGS, tr(scribus_setlinespacemode__doc__)},
934 subik 531
        {const_cast<char*>("setLineStyle"), scribus_setlinestyle, METH_VARARGS, tr(scribus_setlinestyle__doc__)},
532
        {const_cast<char*>("setLineWidth"), scribus_setlinewidth, METH_VARARGS, tr(scribus_setlinewidth__doc__)},
533
        {const_cast<char*>("setMargins"), scribus_setmargins, METH_VARARGS, tr(scribus_setmargins__doc__)},
14427 jghali 534
        {const_cast<char*>("setBaseLine"), scribus_setbaseline, METH_VARARGS, tr(scribus_setbaseline__doc__)},
934 subik 535
        {const_cast<char*>("setMultiLine"), scribus_setmultiline, METH_VARARGS, tr(scribus_setmultiline__doc__)},
17621 craig 536
        {const_cast<char*>("setNewName"), scribus_setnewname, METH_VARARGS, tr(scribus_setnewname__doc__)},
733 subik 537
        // duplicity? {"setMultiLine", scribus_setmultiline, METH_VARARGS, "TODO: docstring"},
21858 jghali 538
        {const_cast<char*>("setObjectAttributes"), scribus_setobjectattributes, METH_VARARGS, tr(scribus_setobjectattributes__doc__)},
934 subik 539
        {const_cast<char*>("setRedraw"), scribus_setredraw, METH_VARARGS, tr(scribus_setredraw__doc__)},
733 subik 540
        // missing? {"setSelectedObject", scribus_setselobjnam, METH_VARARGS, "Returns the Name of the selecteted Object. \"nr\" if given indicates the Number of the selected Object, e.g. 0 means the first selected Object, 1 means the second selected Object and so on."},
11227 subik 541
        {const_cast<char*>("hyphenateText"), scribus_hyphenatetext, METH_VARARGS, tr(scribus_hyphenatetext__doc__)},
542
        {const_cast<char*>("dehyphenateText"), scribus_dehyphenatetext, METH_VARARGS, tr(scribus_dehyphenatetext__doc__)},
1381 cbradney 543
        {const_cast<char*>("setScaleImageToFrame"), (PyCFunction)scribus_setscaleimagetoframe, METH_KEYWORDS, tr(scribus_setscaleimagetoframe__doc__)},
934 subik 544
        {const_cast<char*>("setStyle"), scribus_setstyle, METH_VARARGS, tr(scribus_setstyle__doc__)},
22113 jghali 545
        {const_cast<char*>("setCharacterStyle"), scribus_setcharstyle, METH_VARARGS, tr(scribus_setcharstyle__doc__) },
16856 craig 546
        {const_cast<char*>("setTableStyle"), scribus_settablestyle, METH_VARARGS, tr(scribus_settablestyle__doc__)},
547
        {const_cast<char*>("setTableLeftBorder"), scribus_settableleftborder, METH_VARARGS, tr(scribus_settableleftborder__doc__)},
548
        {const_cast<char*>("setTableRightBorder"), scribus_settablerightborder, METH_VARARGS, tr(scribus_settablerightborder__doc__)},
549
        {const_cast<char*>("setTableTopBorder"), scribus_settabletopborder, METH_VARARGS, tr(scribus_settabletopborder__doc__)},
550
        {const_cast<char*>("setTableBottomBorder"), scribus_settablebottomborder, METH_VARARGS, tr(scribus_settablebottomborder__doc__)},
551
        {const_cast<char*>("setTableFillColor"), scribus_settablefillcolor, METH_VARARGS, tr(scribus_settablefillcolor__doc__)},
934 subik 552
        {const_cast<char*>("setTextAlignment"), scribus_setalign, METH_VARARGS, tr(scribus_setalign__doc__)},
21563 jghali 553
        {const_cast<char*>("setTextDirection"), scribus_setdirection, METH_VARARGS, tr(scribus_setdirection__doc__)},
934 subik 554
        {const_cast<char*>("setTextColor"), scribus_settextfill, METH_VARARGS, tr(scribus_settextfill__doc__)},
555
        {const_cast<char*>("setText"), scribus_setboxtext, METH_VARARGS, tr(scribus_setboxtext__doc__)},
13199 jghali 556
        {const_cast<char*>("setTextScalingH"), scribus_settextscalingh, METH_VARARGS, tr(scribus_settextscalingh__doc__)},
557
        {const_cast<char*>("setTextScalingV"), scribus_settextscalingv, METH_VARARGS, tr(scribus_settextscalingv__doc__)},
934 subik 558
        {const_cast<char*>("setTextShade"), scribus_settextshade, METH_VARARGS, tr(scribus_settextshade__doc__)},
559
        {const_cast<char*>("setTextStroke"), scribus_settextstroke, METH_VARARGS, tr(scribus_settextstroke__doc__)},
560
        {const_cast<char*>("setUnit"), scribus_setunit, METH_VARARGS, tr(scribus_setunit__doc__)},
561
        {const_cast<char*>("setVGuides"), scribus_setVguides, METH_VARARGS, tr(scribus_setVguides__doc__)},
562
        {const_cast<char*>("sizeObject"), scribus_sizeobjabs, METH_VARARGS, tr(scribus_sizeobjabs__doc__)},
563
        {const_cast<char*>("statusMessage"), scribus_messagebartext, METH_VARARGS, tr(scribus_messagebartext__doc__)},
5620 jghali 564
        {const_cast<char*>("textFlowMode"), scribus_textflow, METH_VARARGS, tr(scribus_textflow__doc__)},
934 subik 565
        {const_cast<char*>("traceText"), scribus_tracetext, METH_VARARGS, tr(scribus_tracetext__doc__)},
566
        {const_cast<char*>("unGroupObject"), scribus_ungroupobj, METH_VARARGS, tr(scribus_ungroupobj__doc__)},
567
        {const_cast<char*>("unlinkTextFrames"), scribus_unlinktextframes, METH_VARARGS, tr(scribus_unlinktextframes__doc__)},
568
        {const_cast<char*>("valueDialog"), scribus_valdialog, METH_VARARGS, tr(scribus_valdialog__doc__)},
1607 subik 569
        {const_cast<char*>("textOverflows"), (PyCFunction)scribus_istextoverflowing, METH_KEYWORDS, tr(scribus_istextoverflowing__doc__)},
3926 subik 570
        {const_cast<char*>("zoomDocument"), scribus_zoomdocument, METH_VARARGS, tr(scribus_zoomdocument__doc__)},
11281 subik 571
        {const_cast<char*>("scrollDocument"), scribus_scrolldocument, METH_VARARGS, tr(scribus_scrolldocument__doc__)},
11384 subik 572
        {const_cast<char*>("moveSelectionToBack"), (PyCFunction)scribus_moveselectiontoback, METH_NOARGS, tr(scribus_moveselectiontoback__doc__)},
573
        {const_cast<char*>("moveSelectionToFront"), (PyCFunction)scribus_moveselectiontofront, METH_NOARGS, tr(scribus_moveselectiontofront__doc__)},
1425 subik 574
        // Property magic
575
        {const_cast<char*>("getPropertyCType"), (PyCFunction)scribus_propertyctype, METH_KEYWORDS, tr(scribus_propertyctype__doc__)},
576
        {const_cast<char*>("getPropertyNames"), (PyCFunction)scribus_getpropertynames, METH_KEYWORDS, tr(scribus_getpropertynames__doc__)},
577
        {const_cast<char*>("getProperty"), (PyCFunction)scribus_getproperty, METH_KEYWORDS, tr(scribus_getproperty__doc__)},
578
        {const_cast<char*>("setProperty"), (PyCFunction)scribus_setproperty, METH_KEYWORDS, tr(scribus_setproperty__doc__)},
10624 cbradney 579
//      {const_cast<char*>("getChildren"), (PyCFunction)scribus_getchildren, METH_KEYWORDS, tr(scribus_getchildren__doc__)},
580
//      {const_cast<char*>("getChild"), (PyCFunction)scribus_getchild, METH_KEYWORDS, tr(scribus_getchild__doc__)},
5997 subik 581
        // by Christian Hausknecht
582
        {const_cast<char*>("duplicateObject"), scribus_duplicateobject, METH_VARARGS, tr(scribus_duplicateobject__doc__)},
19332 gpittman 583
        {const_cast<char*>("copyObject"), scribus_copyobject, METH_VARARGS, tr(scribus_copyobject__doc__)},
584
        {const_cast<char*>("pasteObject"), scribus_pasteobject, METH_VARARGS, tr(scribus_pasteobject__doc__)},
1425 subik 585
        // Internal methods - Not for public use
5051 subik 586
        {const_cast<char*>("retval"), (PyCFunction)scribus_retval, METH_VARARGS, const_cast<char*>("Scribus internal.")},
934 subik 587
        {const_cast<char*>("getval"), (PyCFunction)scribus_getval, METH_NOARGS, const_cast<char*>("Scribus internal.")},
22049 jghali 588
        {const_cast<char*>("setLinkAnnotation"), scribus_setlinkannotation, METH_VARARGS,tr(scribus_setlinkannotation__doc__)},
589
        {const_cast<char*>("setFileAnnotation"), (PyCFunction)scribus_setfileannotation, METH_VARARGS|METH_KEYWORDS,tr(scribus_setfileannotation__doc__)},
590
        {const_cast<char*>("setURIAnnotation"), scribus_seturiannotation, METH_VARARGS,tr(scribus_seturiannotation__doc__)},
591
        {const_cast<char*>("setTextAnnotation"), scribus_settextannotation, METH_VARARGS,tr(scribus_settextannotation__doc__)},
592
        {const_cast<char*>("createPdfAnnotation"), scribus_createpdfannotation, METH_VARARGS,tr(scribus_createpdfannotation__doc__)},
593
        {const_cast<char*>("isAnnotated"),(PyCFunction)scribus_isannotated, METH_VARARGS|METH_KEYWORDS,tr(scribus_isannotated__doc__)},
1043 subik 594
        {NULL, (PyCFunction)(0), 0, NULL} /* sentinel */
82 Franz 595
};
596
 
2428 craig 597
void initscribus_failed(const char* fileName, int lineNo)
598
{
599
        qDebug("Scripter setup failed (%s:%i)", fileName, lineNo);
600
        if (PyErr_Occurred())
601
                PyErr_Print();
602
        return;
603
}
604
 
4026 craig 605
void initscribus(ScribusMainWindow *pl)
82 Franz 606
{
1747 craig 607
        if (!scripterCore)
608
        {
609
                qWarning("scriptplugin: Tried to init scribus module, but no scripter core. Aborting.");
610
                return;
611
        }
82 Franz 612
        PyObject *m, *d;
934 subik 613
        PyImport_AddModule((char*)"scribus");
11955 subik 614
 
411 Franz 615
        PyType_Ready(&Printer_Type);
418 Franz 616
        PyType_Ready(&PDFfile_Type);
1407 subik 617
        PyType_Ready(&ImageExport_Type);
934 subik 618
        m = Py_InitModule((char*)"scribus", scribus_methods);
411 Franz 619
        Py_INCREF(&Printer_Type);
934 subik 620
        PyModule_AddObject(m, (char*)"Printer", (PyObject *) &Printer_Type);
418 Franz 621
        Py_INCREF(&PDFfile_Type);
934 subik 622
        PyModule_AddObject(m, (char*)"PDFfile", (PyObject *) &PDFfile_Type);
1407 subik 623
        Py_INCREF(&ImageExport_Type);
624
        PyModule_AddObject(m, (char*)"ImageExport", (PyObject *) &ImageExport_Type);
82 Franz 625
        d = PyModule_GetDict(m);
647 fschmid 626
 
627
        // Set up the module exceptions
628
        // common exc.
934 subik 629
        ScribusException = PyErr_NewException((char*)"scribus.ScribusException", NULL, NULL);
647 fschmid 630
        Py_INCREF(ScribusException);
934 subik 631
        PyModule_AddObject(m, (char*)"ScribusException", ScribusException);
647 fschmid 632
        // no doc open
934 subik 633
        NoDocOpenError = PyErr_NewException((char*)"scribus.NoDocOpenError", ScribusException, NULL);
647 fschmid 634
        Py_INCREF(NoDocOpenError);
934 subik 635
        PyModule_AddObject(m, (char*)"NoDocOpenError", NoDocOpenError);
853 subik 636
        // wrong type of frame for operation
637
        WrongFrameTypeError = PyErr_NewException((char*)"scribus.WrongFrameTypeError", ScribusException, NULL);
638
        Py_INCREF(WrongFrameTypeError);
639
        PyModule_AddObject(m, (char*)"WrongFrameTypeError", WrongFrameTypeError);
640
        // Couldn't find named object, or no named object and no selection
641
        NoValidObjectError = PyErr_NewException((char*)"scribus.NoValidObjectError", ScribusException, NULL);
642
        Py_INCREF(NoValidObjectError);
643
        PyModule_AddObject(m, (char*)"NoValidObjectError", NoValidObjectError);
899 cbradney 644
        // Couldn't find the specified resource - font, color, etc.
645
        NotFoundError = PyErr_NewException((char*)"scribus.NotFoundError", ScribusException, NULL);
646
        Py_INCREF(NotFoundError);
647
        PyModule_AddObject(m, (char*)"NotFoundError", NotFoundError);
648
        // Tried to create an object with the same name as one that already exists
649
        NameExistsError = PyErr_NewException((char*)"scribus.NameExistsError", ScribusException, NULL);
650
        Py_INCREF(NameExistsError);
651
        PyModule_AddObject(m, (char*)"NameExistsError", NameExistsError);
647 fschmid 652
        // Done with exception setup
653
 
421 Franz 654
        // CONSTANTS
2435 craig 655
        PyDict_SetItemString(d, const_cast<char*>("UNIT_POINTS"), PyInt_FromLong(unitIndexFromString("pt")));
656
        PyDict_SetItemString(d, const_cast<char*>("UNIT_MILLIMETERS"), PyInt_FromLong(unitIndexFromString("mm")));
657
        PyDict_SetItemString(d, const_cast<char*>("UNIT_INCHES"), PyInt_FromLong(unitIndexFromString("in")));
658
        PyDict_SetItemString(d, const_cast<char*>("UNIT_PICAS"), PyInt_FromLong(unitIndexFromString("p")));
659
        PyDict_SetItemString(d, const_cast<char*>("UNIT_CENTIMETRES"), PyInt_FromLong(unitIndexFromString("cm")));
2581 cbradney 660
        PyDict_SetItemString(d, const_cast<char*>("UNIT_CICERO"), PyInt_FromLong(unitIndexFromString("c")));
15121 cbradney 661
        PyDict_SetItemString(d, const_cast<char*>("UNIT_PT"), PyInt_FromLong(unitIndexFromString("pt")));
662
        PyDict_SetItemString(d, const_cast<char*>("UNIT_MM"), PyInt_FromLong(unitIndexFromString("mm")));
663
        PyDict_SetItemString(d, const_cast<char*>("UNIT_IN"), PyInt_FromLong(unitIndexFromString("in")));
664
        PyDict_SetItemString(d, const_cast<char*>("UNIT_P"), PyInt_FromLong(unitIndexFromString("p")));
665
        PyDict_SetItemString(d, const_cast<char*>("UNIT_CM"), PyInt_FromLong(unitIndexFromString("cm")));
666
        PyDict_SetItemString(d, const_cast<char*>("UNIT_C"), PyInt_FromLong(unitIndexFromString("c")));
3071 subik 667
        PyDict_SetItemString(d, const_cast<char*>("PORTRAIT"), Py_BuildValue(const_cast<char*>("i"), portraitPage));
668
        PyDict_SetItemString(d, const_cast<char*>("LANDSCAPE"), Py_BuildValue(const_cast<char*>("i"), landscapePage));
934 subik 669
        PyDict_SetItemString(d, const_cast<char*>("NOFACINGPAGES"), Py_BuildValue(const_cast<char*>("i"), 0));
670
        PyDict_SetItemString(d, const_cast<char*>("FACINGPAGES"),  Py_BuildValue(const_cast<char*>("i"), 1));
3439 subik 671
        PyDict_SetItemString(d, const_cast<char*>("FIRSTPAGERIGHT"), Py_BuildValue(const_cast<char*>("i"), 1));
672
        PyDict_SetItemString(d, const_cast<char*>("FIRSTPAGELEFT"), Py_BuildValue(const_cast<char*>("i"), 0));
934 subik 673
        PyDict_SetItemString(d, const_cast<char*>("ALIGN_LEFT"), Py_BuildValue(const_cast<char*>("i"), 0));
674
        PyDict_SetItemString(d, const_cast<char*>("ALIGN_RIGHT"), Py_BuildValue(const_cast<char*>("i"), 2));
675
        PyDict_SetItemString(d, const_cast<char*>("ALIGN_CENTERED"), Py_BuildValue(const_cast<char*>("i"), 1));
17686 jghali 676
        PyDict_SetItemString(d, const_cast<char*>("ALIGN_BLOCK"), Py_BuildValue(const_cast<char*>("i"), 3));
934 subik 677
        PyDict_SetItemString(d, const_cast<char*>("ALIGN_FORCED"), Py_BuildValue(const_cast<char*>("i"), 4));
21563 jghali 678
        PyDict_SetItemString(d, const_cast<char*>("DIRECTION_LTR"), Py_BuildValue(const_cast<char*>("i"), 0));
679
        PyDict_SetItemString(d, const_cast<char*>("DIRECTION_RTL"), Py_BuildValue(const_cast<char*>("i"), 1));
934 subik 680
        PyDict_SetItemString(d, const_cast<char*>("FILL_NOG"), Py_BuildValue(const_cast<char*>("i"), 0));
681
        PyDict_SetItemString(d, const_cast<char*>("FILL_HORIZONTALG"), Py_BuildValue(const_cast<char*>("i"), 1));
682
        PyDict_SetItemString(d, const_cast<char*>("FILL_VERTICALG"), Py_BuildValue(const_cast<char*>("i"), 2));
683
        PyDict_SetItemString(d, const_cast<char*>("FILL_DIAGONALG"), Py_BuildValue(const_cast<char*>("i"), 3));
684
        PyDict_SetItemString(d, const_cast<char*>("FILL_CROSSDIAGONALG"), Py_BuildValue(const_cast<char*>("i"), 4));
685
        PyDict_SetItemString(d, const_cast<char*>("FILL_RADIALG"), Py_BuildValue(const_cast<char*>("i"), 5));
686
        PyDict_SetItemString(d, const_cast<char*>("LINE_SOLID"), Py_BuildValue(const_cast<char*>("i"), Qt::SolidLine));
687
        PyDict_SetItemString(d, const_cast<char*>("LINE_DASH"), Py_BuildValue(const_cast<char*>("i"), Qt::DashLine));
688
        PyDict_SetItemString(d, const_cast<char*>("LINE_DOT"), Py_BuildValue(const_cast<char*>("i"), Qt::DotLine));
689
        PyDict_SetItemString(d, const_cast<char*>("LINE_DASHDOT"), Py_BuildValue(const_cast<char*>("i"), Qt::DashDotLine));
690
        PyDict_SetItemString(d, const_cast<char*>("LINE_DASHDOTDOT"), Py_BuildValue(const_cast<char*>("i"), Qt::DashDotDotLine));
691
        PyDict_SetItemString(d, const_cast<char*>("JOIN_MITTER"), Py_BuildValue(const_cast<char*>("i"), Qt::MiterJoin));
692
        PyDict_SetItemString(d, const_cast<char*>("JOIN_BEVEL"), Py_BuildValue(const_cast<char*>("i"), Qt::BevelJoin));
693
        PyDict_SetItemString(d, const_cast<char*>("JOIN_ROUND"), Py_BuildValue(const_cast<char*>("i"), Qt::RoundJoin));
694
        PyDict_SetItemString(d, const_cast<char*>("CAP_FLAT"), Py_BuildValue(const_cast<char*>("i"), Qt::FlatCap));
695
        PyDict_SetItemString(d, const_cast<char*>("CAP_SQUARE"), Py_BuildValue(const_cast<char*>("i"), Qt::SquareCap));
696
        PyDict_SetItemString(d, const_cast<char*>("CAP_ROUND"), Py_BuildValue(const_cast<char*>("i"), Qt::RoundCap));
697
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_NONE"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::NoButton));
698
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_OK"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Ok));
699
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_CANCEL"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Cancel));
700
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_YES"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Yes));
701
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_NO"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::No));
702
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_ABORT"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Abort));
703
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_RETRY"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Retry));
704
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_IGNORE"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Ignore));
20077 craig 705
        PyDict_SetItemString(d, const_cast<char*>("BUTTON_DEFAULT"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Default));
934 subik 706
        PyDict_SetItemString(d, const_cast<char*>("ICON_NONE"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::NoIcon));
707
        PyDict_SetItemString(d, const_cast<char*>("ICON_INFORMATION"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Information));
708
        PyDict_SetItemString(d, const_cast<char*>("ICON_WARNING"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Warning));
709
        PyDict_SetItemString(d, const_cast<char*>("ICON_CRITICAL"), Py_BuildValue(const_cast<char*>("i"), QMessageBox::Critical));
710
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A0"), Py_BuildValue(const_cast<char*>("(ff)"), 2380.0, 3368.0));
711
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A1"), Py_BuildValue(const_cast<char*>("(ff)"), 1684.0, 2380.0));
712
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A2"), Py_BuildValue(const_cast<char*>("(ff)"), 1190.0, 1684.0));
713
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A3"), Py_BuildValue(const_cast<char*>("(ff)"), 842.0, 1190.0));
714
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A4"), Py_BuildValue(const_cast<char*>("(ff)"), 595.0, 842.0));
715
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A5"), Py_BuildValue(const_cast<char*>("(ff)"), 421.0, 595.0));
716
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A6"), Py_BuildValue(const_cast<char*>("(ff)"), 297.0, 421.0));
717
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A7"), Py_BuildValue(const_cast<char*>("(ff)"), 210.0, 297.0));
718
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A8"), Py_BuildValue(const_cast<char*>("(ff)"), 148.0, 210.0));
719
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A9"), Py_BuildValue(const_cast<char*>("(ff)"), 105.0, 148.0));
22407 gpittman 720
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A0_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 841.0, 1189.0));
721
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A1_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 594.0, 841.0));
722
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A2_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 420.0, 594.0));
723
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A3_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 297.0, 420.0));
724
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A4_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 210.0, 297.0));
725
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A5_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 148.0, 210.0));
726
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A6_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 105.0, 148.0));
727
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A7_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 74.0, 105.0));
728
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A8_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 52.0, 74.0));
729
        PyDict_SetItemString(d, const_cast<char*>("PAPER_A9_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 37.0, 52.0));
934 subik 730
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B0"), Py_BuildValue(const_cast<char*>("(ff)"), 2836.0, 4008.0));
731
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B1"), Py_BuildValue(const_cast<char*>("(ff)"), 2004.0, 2836.0));
732
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B2"), Py_BuildValue(const_cast<char*>("(ff)"), 1418.0, 2004.0));
733
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B3"), Py_BuildValue(const_cast<char*>("(ff)"), 1002.0, 1418.0));
734
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B4"), Py_BuildValue(const_cast<char*>("(ff)"), 709.0, 1002.0));
735
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B5"), Py_BuildValue(const_cast<char*>("(ff)"), 501.0, 709.0));
736
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B6"), Py_BuildValue(const_cast<char*>("(ff)"), 355.0, 501.0));
737
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B7"), Py_BuildValue(const_cast<char*>("(ff)"), 250.0, 355.0));
738
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B8"), Py_BuildValue(const_cast<char*>("(ff)"), 178.0, 250.0));
739
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B9"), Py_BuildValue(const_cast<char*>("(ff)"), 125.0, 178.0));
740
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B10"), Py_BuildValue(const_cast<char*>("(ff)"), 89.0, 125.0));
22407 gpittman 741
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B0_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 1000.0, 1414.0));
742
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B1_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 707.0, 1000.0));
743
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B2_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 500.0, 707.0));
744
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B3_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 353.0, 500.0));
745
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B4_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 250.0, 353.0));
746
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B5_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 176.0, 250.0));
747
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B6_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 125.0, 176.0));
748
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B7_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 88.0, 125.0));
749
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B8_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 62.0, 88.0));
750
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B9_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 44.0, 62.0));
751
        PyDict_SetItemString(d, const_cast<char*>("PAPER_B10_MM"), Py_BuildValue(const_cast<char*>("(ff)"), 31.0, 44.0));
934 subik 752
        PyDict_SetItemString(d, const_cast<char*>("PAPER_C5E"), Py_BuildValue(const_cast<char*>("(ff)"), 462.0, 649.0));
753
        PyDict_SetItemString(d, const_cast<char*>("PAPER_COMM10E"), Py_BuildValue(const_cast<char*>("(ff)"), 298.0, 683.0));
754
        PyDict_SetItemString(d, const_cast<char*>("PAPER_DLE"),  Py_BuildValue(const_cast<char*>("(ff)"), 312.0, 624.0));
755
        PyDict_SetItemString(d, const_cast<char*>("PAPER_EXECUTIVE"), Py_BuildValue(const_cast<char*>("(ff)"), 542.0, 720.0));
756
        PyDict_SetItemString(d, const_cast<char*>("PAPER_FOLIO"), Py_BuildValue(const_cast<char*>("(ff)"), 595.0, 935.0));
757
        PyDict_SetItemString(d, const_cast<char*>("PAPER_LEDGER"), Py_BuildValue(const_cast<char*>("(ff)"), 1224.0, 792.0));
758
        PyDict_SetItemString(d, const_cast<char*>("PAPER_LEGAL"), Py_BuildValue(const_cast<char*>("(ff)"), 612.0, 1008.0));
759
        PyDict_SetItemString(d, const_cast<char*>("PAPER_LETTER"), Py_BuildValue(const_cast<char*>("(ff)"), 612.0, 792.0));
760
        PyDict_SetItemString(d, const_cast<char*>("PAPER_TABLOID"), Py_BuildValue(const_cast<char*>("(ff)"), 792.0, 1224.0));
5887 fschmid 761
        PyDict_SetItemString(d, const_cast<char*>("NORMAL"), Py_BuildValue(const_cast<char*>("i"), 0));
762
        PyDict_SetItemString(d, const_cast<char*>("DARKEN"), Py_BuildValue(const_cast<char*>("i"), 1));
763
        PyDict_SetItemString(d, const_cast<char*>("LIGHTEN"), Py_BuildValue(const_cast<char*>("i"), 2));
764
        PyDict_SetItemString(d, const_cast<char*>("MULTIPLY"), Py_BuildValue(const_cast<char*>("i"), 3));
765
        PyDict_SetItemString(d, const_cast<char*>("SCREEN"), Py_BuildValue(const_cast<char*>("i"), 4));
766
        PyDict_SetItemString(d, const_cast<char*>("OVERLAY"), Py_BuildValue(const_cast<char*>("i"), 5));
767
        PyDict_SetItemString(d, const_cast<char*>("HARD_LIGHT"), Py_BuildValue(const_cast<char*>("i"), 6));
768
        PyDict_SetItemString(d, const_cast<char*>("SOFT_LIGHT"), Py_BuildValue(const_cast<char*>("i"), 7));
769
        PyDict_SetItemString(d, const_cast<char*>("DIFFERENCE"), Py_BuildValue(const_cast<char*>("i"), 8));
770
        PyDict_SetItemString(d, const_cast<char*>("EXCLUSION"), Py_BuildValue(const_cast<char*>("i"), 9));
771
        PyDict_SetItemString(d, const_cast<char*>("COLOR_DODGE"), Py_BuildValue(const_cast<char*>("i"), 10));
772
        PyDict_SetItemString(d, const_cast<char*>("COLOR_BURN"), Py_BuildValue(const_cast<char*>("i"), 11));
773
        PyDict_SetItemString(d, const_cast<char*>("HUE"), Py_BuildValue(const_cast<char*>("i"), 12));
774
        PyDict_SetItemString(d, const_cast<char*>("SATURATION"), Py_BuildValue(const_cast<char*>("i"), 13));
775
        PyDict_SetItemString(d, const_cast<char*>("COLOR"), Py_BuildValue(const_cast<char*>("i"), 14));
776
        PyDict_SetItemString(d, const_cast<char*>("LUMINOSITY"), Py_BuildValue(const_cast<char*>("i"), 15));
3647 subik 777
        // preset page layouts
778
        PyDict_SetItemString(d, const_cast<char*>("PAGE_1"), Py_BuildValue(const_cast<char*>("i"), 0));
779
        PyDict_SetItemString(d, const_cast<char*>("PAGE_2"), Py_BuildValue(const_cast<char*>("i"), 1));
780
        PyDict_SetItemString(d, const_cast<char*>("PAGE_3"), Py_BuildValue(const_cast<char*>("i"), 2));
781
        PyDict_SetItemString(d, const_cast<char*>("PAGE_4"), Py_BuildValue(const_cast<char*>("i"), 3));
733 subik 782
 
2428 craig 783
        // Measurement units understood by Scribus's units.cpp functions are exported as constant conversion
784
        // factors to be used from Python.
19604 craig 785
        for (int i = 0; i <= unitGetMaxIndex()-2; ++i)
2428 craig 786
        {
787
                PyObject* value = PyFloat_FromDouble(unitGetRatioFromIndex(i));
788
                if (!value)
789
                {
790
                        initscribus_failed(__FILE__, __LINE__);
791
                        return;
792
                }
793
                // `in' is a reserved word in Python so we must replace it
794
                PyObject* name;
19604 craig 795
                if (unitGetUntranslatedStrFromIndex(i) == "in")
2428 craig 796
                        name = PyString_FromString("inch");
797
                else
19604 craig 798
                        name = PyString_FromString(unitGetUntranslatedStrFromIndex(i).toLatin1().constData());
2428 craig 799
                if (!name)
800
                {
801
                        initscribus_failed(__FILE__, __LINE__);
802
                        return;
803
                }
804
                if (PyDict_SetItem(d, name, value))
805
                {
806
                        initscribus_failed(__FILE__, __LINE__);
807
                        return;
808
                }
809
        }
810
 
1043 subik 811
        // Export the Scribus version into the module namespace so scripts know what they're running in
812
        PyDict_SetItemString(d, const_cast<char*>("scribus_version"), PyString_FromString(const_cast<char*>(VERSION)));
813
        // Now build a version tuple like that provided by Python in sys.version_info
814
        // The tuple is of the form (major, minor, patchlevel, extraversion, reserved)
815
        QRegExp version_re("(\\d+)\\.(\\d+)\\.(\\d+)(.*)");
10598 cbradney 816
        int pos = version_re.indexIn(QString(VERSION));
1043 subik 817
        // We ignore errors, causing the scribus_version_info attribute to simply not be created.
818
        // This will make acceses raise AttrbuteError.
819
        if (pos > -1)
820
        {
821
                int majorVersion = version_re.cap(1).toInt();
822
                int minorVersion = version_re.cap(2).toInt();
823
                int patchVersion = version_re.cap(3).toInt();
824
                QString extraVersion = version_re.cap(4);
825
                PyObject* versionTuple = Py_BuildValue(const_cast<char*>("(iiisi)"),\
10493 fschmid 826
                                majorVersion, minorVersion, patchVersion, (const char*)extraVersion.toUtf8(), 0);
1043 subik 827
                if (versionTuple != NULL)
828
                        PyDict_SetItemString(d, const_cast<char*>("scribus_version_info"), versionTuple);
829
                else
830
                        qDebug("Failed to build version tuple for version string '%s' in scripter", VERSION);
831
        }
832
        else
833
                qDebug("Couldn't parse version string '%s' in scripter", VERSION);
834
 
5781 cbradney 835
//      ScMW = pl;
655 fschmid 836
        // Function aliases for compatibility
837
        // We need to import the __builtins__, warnings and exceptions modules to be able to run
838
        // the generated Python functions from inside the `scribus' module's context.
839
        // This code makes it possible to extend the `scribus' module by running Python code
840
        // from C in other ways too.
934 subik 841
        PyObject* builtinModule = PyImport_ImportModuleEx(const_cast<char*>("__builtin__"),
842
                        d, d, Py_BuildValue(const_cast<char*>("[]")));
655 fschmid 843
        if (builtinModule == NULL)
844
        {
845
                qDebug("Failed to import __builtin__ module. Something is probably broken with your Python.");
846
                return;
847
        }
934 subik 848
        PyDict_SetItemString(d, const_cast<char*>("__builtin__"), builtinModule);
849
        PyObject* exceptionsModule = PyImport_ImportModuleEx(const_cast<char*>("exceptions"),
850
                        d, d, Py_BuildValue(const_cast<char*>("[]")));
655 fschmid 851
        if (exceptionsModule == NULL)
852
        {
853
                qDebug("Failed to import exceptions module. Something is probably broken with your Python.");
854
                return;
855
        }
934 subik 856
        PyDict_SetItemString(d, const_cast<char*>("exceptions"), exceptionsModule);
857
        PyObject* warningsModule = PyImport_ImportModuleEx(const_cast<char*>("warnings"),
858
                        d, d, Py_BuildValue(const_cast<char*>("[]")));
655 fschmid 859
        if (warningsModule == NULL)
860
        {
861
                qDebug("Failed to import warnings module. Something is probably broken with your Python.");
862
                return;
863
        }
934 subik 864
        PyDict_SetItemString(d, const_cast<char*>("warnings"), warningsModule);
853 subik 865
        // Create the module-level docstring. This can be a proper unicode string, unlike
866
        // the others, because we can just create a Unicode object and insert it in our
867
        // module dictionary.
868
        QString docstring = QObject::tr("Scribus Python interface module\n\
1345 subik 869
\n\
870
This module is the Python interface for Scribus. It provides functions\n\
871
to control scribus and to manipulate objects on the canvas. Each\n\
872
function is documented individually below.\n\
873
\n\
874
A few things are common across most of the interface.\n\
875
\n\
876
Most functions operate on frames. Frames are identified by their name,\n\
877
a string - they are not real Python objects. Many functions take an\n\
878
optional (non-keyword) parameter, a frame name.\n\
879
Many exceptions are also common across most functions. These are\n\
880
not currently documented in the docstring for each function.\n\
1559 craig 881
- Many functions will raise a NoDocOpenError if you try to use them\n\
1345 subik 882
without a document to operate on.\n\
1559 craig 883
- If you do not pass a frame name to a function that requires one,\n\
884
the function will use the currently selected frame, if any, or\n\
885
raise a NoValidObjectError if it can't find anything to operate\n\
1345 subik 886
on.\n\
887
- Many functions will raise WrongFrameTypeError if you try to use them\n\
888
on a frame type that they do not make sense with. For example, setting\n\
1525 cbradney 889
the text color on a graphics frame doesn't make sense, and will result\n\
1345 subik 890
in this exception being raised.\n\
891
- Errors resulting from calls to the underlying Python API will be\n\
892
passed through unaltered. As such, the list of exceptions thrown by\n\
893
any function as provided here and in its docstring is incomplete.\n\
894
\n\
895
Details of what exceptions each function may throw are provided on the\n\
1559 craig 896
function's documentation, though as with most Python code this list\n\
897
is not exhaustive due to exceptions from called functions.\n\
898
");
853 subik 899
 
10493 fschmid 900
        PyObject* docStr = PyString_FromString(docstring.toUtf8().data());
1559 craig 901
        if (!docStr)
902
                qDebug("Failed to create module-level docstring (couldn't make str)");
853 subik 903
        else
1559 craig 904
        {
905
                PyObject* uniDocStr = PyUnicode_FromEncodedObject(docStr, "utf-8", NULL);
906
                Py_DECREF(docStr);
907
                docStr = NULL;
908
                if (!uniDocStr)
909
                        qDebug("Failed to create module-level docstring object (couldn't make unicode)");
910
                else
911
                        PyDict_SetItemString(d, const_cast<char*>("__doc__"), uniDocStr);
912
                Py_DECREF(uniDocStr);
913
                uniDocStr = NULL;
914
        }
1425 subik 915
 
916
        // Wrap up pointers to the the QApp and main window and push them out
917
        // to Python.
918
        wrappedQApp = wrapQObject(qApp);
919
        if (!wrappedQApp)
920
        {
921
                qDebug("Failed to wrap up QApp");
922
                PyErr_Print();
923
        }
924
        // Push it into the module dict, stealing a ref in the process
925
        PyDict_SetItemString(d, const_cast<char*>("qApp"), wrappedQApp);
926
        Py_DECREF(wrappedQApp);
927
        wrappedQApp = NULL;
928
 
5781 cbradney 929
        wrappedMainWindow = wrapQObject(pl);
1425 subik 930
        if (!wrappedMainWindow)
931
        {
4026 craig 932
                qDebug("Failed to wrap up ScMW");
1425 subik 933
                PyErr_Print();
934
        }
935
        // Push it into the module dict, stealing a ref in the process
936
        PyDict_SetItemString(d, const_cast<char*>("mainWindow"), wrappedMainWindow);
937
        Py_DECREF(wrappedMainWindow);
938
        wrappedMainWindow = NULL;
82 Franz 939
}
940
 
6200 subik 941
/*! HACK: this removes "warning: 'blah' defined but not used" compiler warnings
942
with header files structure untouched (docstrings are kept near declarations)
943
PV */
944
void scriptplugindocwarnings()
945
{
946
    QStringList s;
947
    s <<printer__doc__<<pdffile__doc__<<imgexp__doc__<<imgexp_dpi__doc__<<imgexp_scale__doc__ <<imgexp_quality__doc__<<imgexp_filename__doc__<<imgexp_type__doc__<<imgexp_alltypes__doc__ << imgexp_save__doc__ << imgexp_saveas__doc__;
948
}