Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
82 Franz 1
/***************************************************************************
2
                          scriptplugin.cpp  -  description
3
                             -------------------
4
    begin                : Thu Oct 3 08:00:00 CEST 2002
5
    copyright            : (C) 2002 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
104 Franz 17
#include "Python.h"
103 Franz 18
#include "cmddialog.h"
19
#include "cmddoc.h"
20
#include "cmdpage.h"
21
#include "cmdobj.h"
22
#include "cmdgetprop.h"
23
#include "cmdsetprop.h"
24
#include "cmdtext.h"
25
#include "cmdmani.h"
26
#include "cmdcolor.h"
27
#include "cmdmisc.h"
82 Franz 28
#include "scriptplugin.h"
29
#include "scriptplugin.moc"
103 Franz 30
#include "cmdutil.h"
31
#include "cmdvar.h"
82 Franz 32
#include "customfdialog.h"
33
#include "helpbrowser.h"
128 Franz 34
 
35
#if (_MSC_VER >= 1200)
36
 #include "win-config.h"
37
#else
38
 #include "config.h"
39
#endif
40
 
82 Franz 41
#include <qmessagebox.h>
42
#include <qtextcodec.h>
43
#include <qdom.h>
44
#include <qtextstream.h>
45
#include <cstdlib>
46
 
47
QString Name()
48
{
91 Franz 49
  return QObject::tr("Scripter Manual...");
82 Franz 50
}
51
 
52
int Type()
53
{
54
        return 4;
55
}
56
 
57
void InitPlug(QWidget *d, ScribusApp *plug)
58
{
59
        QString cm;
60
        Py_Initialize();
61
        Carrier = plug;
62
        RetVal = 0;
63
        initscribus(Carrier);
64
        Tes = new MenuTest(d);
65
        men = new QPopupMenu();
66
        Tes->rmen = new QPopupMenu();
67
        Tes->SavedRecentScripts.clear();
68
        Tes->ReadPlugPrefs();
69
        Tes->RecentScripts.clear();
70
        if (Tes->SavedRecentScripts.count() != 0)
71
                {
72
                uint max = QMIN(Carrier->Prefs.RecentDCount, Tes->SavedRecentScripts.count());
87 Franz 73
                for (uint m = 0; m < max; ++m)
82 Franz 74
                        {
75
                        QFileInfo fd(Tes->SavedRecentScripts[m]);
76
                        if (fd.exists())
77
                                {
78
                                Tes->RecentScripts.append(Tes->SavedRecentScripts[m]);
79
                                Tes->rmen->insertItem(Tes->SavedRecentScripts[m]);
80
                                }
81
                        }
82
                }
83
        Tes->pcon = new PConsole(d);
84
        men->insertItem(QObject::tr("Execute Script..."), Tes, SLOT(slotTest()));
85
        Tes->rmenid = men->insertItem(QObject::tr("Recent Scripts"), Tes->rmen);
86
        Tes->cons = men->insertItem(QObject::tr("Show Console"), Tes, SLOT(slotInteractiveScript()));
87
        plug->menuBar()->insertItem(QObject::tr("Script"), men, -1, plug->menuBar()->count() - 2);
88
        QObject::connect(Tes->pcon->OutWin, SIGNAL(returnPressed()), Tes, SLOT(slotExecute()));
89
        QObject::connect(Tes->pcon, SIGNAL(Schliessen()), Tes, SLOT(slotInteractiveScript()));
90
        QObject::connect(Tes->rmen, SIGNAL(activated(int)), Tes, SLOT(RecentScript(int)));
91
}
92
 
93
void CleanUpPlug()
94
{
95
        Py_Finalize();
96
        Tes->SavePlugPrefs();
97
}
98
 
99
void Run(QWidget *d, ScribusApp *plug)
100
{
101
        QString pfad = PREL;
102
        QString pfad2;
103
  pfad2 = pfad + "/lib/scribus/doc/en/Scripter/index.html";
104
        HelpBrowser *dia = new HelpBrowser(0, QObject::tr("Online Reference"), pfad2);
105
        dia->show();
106
}
107
 
108
void MenuTest::slotTest()
109
{
110
        QString fileName;
91 Franz 111
        QString CurDirP = QDir::currentDirPath();
112
        if (Carrier->Prefs.ScriptDir != "")
113
                QDir::setCurrent(Carrier->Prefs.ScriptDir);
82 Franz 114
        CustomFDialog diaf((QWidget*)parent(), QObject::tr("Open"), QObject::tr("Python Scripts (*.py);; All Files (*)"));
115
        if (diaf.exec())
116
                {
117
                fileName = diaf.selectedFile();
118
                slotRunScriptFile(fileName);
119
                rmen->clear();
120
                if (RecentScripts.findIndex(fileName) == -1)
121
                        RecentScripts.prepend(fileName);
122
                else
123
                        {
124
                        RecentScripts.remove(fileName);
125
                        RecentScripts.prepend(fileName);
126
                        }
127
                uint max = QMIN(Carrier->Prefs.RecentDCount, RecentScripts.count());
128
                for (uint m = 0; m < max; m++)
129
                        {
130
                        rmen->insertItem(RecentScripts[m]);
131
                        }
132
                }
91 Franz 133
        QDir::setCurrent(CurDirP);
173 Franz 134
        if (Carrier->HaveDoc)
135
                {
136
                Carrier->Mpal->SetDoc(Carrier->doc);
137
                Carrier->Mpal->updateCList();
138
                Carrier->Mpal->Spal->SetFormats(Carrier->doc);
139
                Carrier->Mpal->SetLineFormats(Carrier->doc);
140
                Carrier->Mpal->Cpal->SetColors(Carrier->doc->PageColors);
141
                Carrier->Lpal->setLayers(&Carrier->doc->Layers, &Carrier->doc->ActiveLayer);
142
                Carrier->Tpal->BuildTree(Carrier->view);
143
                Carrier->Sepal->SetView(Carrier->view);
144
                Carrier->Sepal->Rebuild();
145
                if (Carrier->doc->ActPage->SelItem.count() != 0)
146
                        Carrier->HaveNewSel(Carrier->doc->ActPage->SelItem.at(0)->PType);
147
                else
148
                        Carrier->HaveNewSel(-1);
182 Franz 149
                Carrier->view->DrawNew();
173 Franz 150
                }
82 Franz 151
}
152
 
153
void MenuTest::RecentScript(int id)
154
{
155
        QString fn = rmen->text(id);
156
        QFileInfo fd(fn);
157
        if (!fd.exists())
158
                {
159
                RecentScripts.remove(fn);
160
                rmen->clear();
161
                uint max = QMIN(Carrier->Prefs.RecentDCount, RecentScripts.count());
162
                for (uint m = 0; m < max; m++)
163
                        {
164
                        rmen->insertItem(RecentScripts[m]);
165
                        }
166
                return;
167
                }
168
        slotRunScriptFile(fn);
173 Franz 169
        if (Carrier->HaveDoc)
170
                {
171
                Carrier->Mpal->SetDoc(Carrier->doc);
172
                Carrier->Mpal->updateCList();
173
                Carrier->Mpal->Spal->SetFormats(Carrier->doc);
174
                Carrier->Mpal->SetLineFormats(Carrier->doc);
175
                Carrier->Mpal->Cpal->SetColors(Carrier->doc->PageColors);
176
                Carrier->Lpal->setLayers(&Carrier->doc->Layers, &Carrier->doc->ActiveLayer);
177
                Carrier->Tpal->BuildTree(Carrier->view);
178
                Carrier->Sepal->SetView(Carrier->view);
179
                Carrier->Sepal->Rebuild();
180
                if (Carrier->doc->ActPage->SelItem.count() != 0)
181
                        Carrier->HaveNewSel(Carrier->doc->ActPage->SelItem.at(0)->PType);
182
                else
183
                        Carrier->HaveNewSel(-1);
182 Franz 184
                Carrier->view->DrawNew();
173 Franz 185
                }
82 Franz 186
}
187
 
188
void MenuTest::slotRunScriptFile(QString fileName)
189
{
173 Franz 190
        Carrier->ScriptRunning = true;
182 Franz 191
        qApp->setOverrideCursor(QCursor(waitCursor), true);
82 Franz 192
        char* comm[1];
193
        QFileInfo fi(fileName);
194
        QCString na = fi.fileName().latin1();
195
        QDir::setCurrent(fi.dirPath(true));
196
        PyThreadState *stateo = PyEval_SaveThread();
197
        PyThreadState *state = Py_NewInterpreter();
198
        initscribus(Carrier);
199
        QString cm = "import sys\nsys.path[0] = \""+fi.dirPath(true)+"\"\n";
200
        cm += "try:\n\texecfile(\""+fileName+"\")\nexcept SystemExit:\n\tpass\n";
201
        QCString cmd = cm.latin1();
202
        comm[0] = na.data();
203
        PySys_SetArgv(1, comm);
204
        PyRun_SimpleString(cmd.data());
205
        Py_EndInterpreter(state);
206
        PyEval_RestoreThread(stateo);
173 Franz 207
        Carrier->ScriptRunning = false;
182 Franz 208
        qApp->setOverrideCursor(QCursor(arrowCursor), true);
82 Franz 209
}
210
 
211
QString MenuTest::slotRunScript(QString Script)
212
{
173 Franz 213
        Carrier->ScriptRunning = true;
182 Franz 214
        qApp->setOverrideCursor(QCursor(waitCursor), true);
82 Franz 215
        char* comm[1];
216
        QString cm;
217
        InValue = Script;
218
        QString CurDir = QDir::currentDirPath();
219
        if(PyThreadState_Get() != NULL)
220
                {
221
                initscribus(Carrier);
222
                if (RetVal == 0)
223
                        {
224
                        cm = "import sys\nsys.path[0] = \""+CurDir+"\"\n";
225
                        cm += "import cStringIO\n";
226
                        cm += "from scribus import *\n";
227
                        cm += "bu = cStringIO.StringIO()\n";
228
                        cm += "sys.stdout = bu\n";
229
                        cm += "sys.stderr = bu\n";
230
                        cm += "import code\n";
231
                        cm += "ia = code.InteractiveConsole(globals())\n";
232
                        }
233
                cm += "sc = getval()\n";
234
                cm += "rv = ia.push(sc)\n";
235
                cm += "if rv == 1:\n";
236
                cm += "\tre = \"...\"\n";
237
                cm += "else:\n";
238
                cm += "\tre = bu.getvalue()\n";
239
                cm += "retval(re, rv)\n";
240
                }
241
        QCString cmd = cm.latin1();
242
        comm[0] = "scribus";
243
        PySys_SetArgv(1, comm);
244
        PyRun_SimpleString(cmd.data());
245
        if (RetVal == 0)
246
                {
247
                RetString += ">>>";
248
                pcon->OutWin->Prompt = ">>>";
249
                }
250
        else
251
                pcon->OutWin->Prompt = "...";
173 Franz 252
        Carrier->ScriptRunning = false;
182 Franz 253
        qApp->setOverrideCursor(QCursor(arrowCursor), true);
82 Franz 254
        return RetString;
255
}
256
 
257
void MenuTest::slotInteractiveScript()
258
{
259
        if (pcon->isVisible())
260
                {
261
                men->changeItem(cons, tr("Show Console"));
262
                pcon->hide();
263
                }
264
        else
265
                {
266
                men->changeItem(cons, tr("Hide Console"));
267
                pcon->show();
268
                }
269
}
270
 
271
void MenuTest::slotExecute()
272
{
273
        pcon->OutWin->append(slotRunScript(pcon->OutWin->LastComm));
274
        pcon->OutWin->moveCursor(QTextEdit::MoveEnd, false);
275
        pcon->OutWin->scrollToBottom();
276
        pcon->OutWin->ensureCursorVisible();
277
        if (Carrier->HaveDoc)
173 Franz 278
                {
279
                Carrier->Mpal->SetDoc(Carrier->doc);
280
                Carrier->Mpal->updateCList();
281
                Carrier->Mpal->Spal->SetFormats(Carrier->doc);
282
                Carrier->Mpal->SetLineFormats(Carrier->doc);
283
                Carrier->Mpal->Cpal->SetColors(Carrier->doc->PageColors);
284
                Carrier->Lpal->setLayers(&Carrier->doc->Layers, &Carrier->doc->ActiveLayer);
285
                Carrier->Tpal->BuildTree(Carrier->view);
286
                Carrier->Sepal->SetView(Carrier->view);
287
                if (Carrier->doc->ActPage->SelItem.count() != 0)
288
                        Carrier->HaveNewSel(Carrier->doc->ActPage->SelItem.at(0)->PType);
289
                else
290
                        Carrier->HaveNewSel(-1);
291
                Carrier->Sepal->Rebuild();
182 Franz 292
                Carrier->view->DrawNew();
173 Franz 293
                }
82 Franz 294
}
295
 
296
void MenuTest::ReadPlugPrefs()
297
{
298
        QDomDocument docu("scriptrc");
299
        QString ho = getenv("HOME");
300
        QFile f(ho+"/.scribus/scripter.rc");
301
        if(!f.open(IO_ReadOnly))
302
                return;
303
        if(!docu.setContent(&f))
304
                {
305
                f.close();
306
                return;
307
                }
308
        f.close();
309
        QDomElement elem=docu.documentElement();
310
        if (elem.tagName() != "SCRIPTRC")
311
                return;
312
        QDomNode DOC=elem.firstChild();
313
        while(!DOC.isNull())
314
                {
315
                QDomElement dc=DOC.toElement();
316
                if (dc.tagName()=="RECENT")
317
                        SavedRecentScripts.append(dc.attribute("NAME"));
318
                DOC=DOC.nextSibling();
319
                }
320
}
321
 
322
void MenuTest::SavePlugPrefs()
323
{
324
        QDomDocument docu("scriptrc");
325
        QString st="<SCRIPTRC></SCRIPTRC>";
326
        docu.setContent(st);
327
        QDomElement elem=docu.documentElement();
87 Franz 328
        for (uint rd=0; rd < Tes->RecentScripts.count(); ++rd)
82 Franz 329
                {
330
                QDomElement rde=docu.createElement("RECENT");
331
                rde.setAttribute("NAME",Tes->RecentScripts[rd]);
332
                elem.appendChild(rde);
333
                }
334
        QString ho = getenv("HOME");
335
        QFile f(ho+"/.scribus/scripter.rc");
336
        if(!f.open(IO_WriteOnly))
337
                return;
338
        QTextStream s(&f);
339
        s<<docu.toCString();
340
        f.close();
341
}
342
 
343
/****************************************************************************************/
344
/*                                                                                      */
345
/*   Definitionen der Python-Befehle                                                    */
346
/*                                                                                      */
347
/****************************************************************************************/
348
 
349
static PyObject *scribus_retval(PyObject *self, PyObject* args)
350
{
351
        char *Name;
352
        int retV;
353
        if (!PyArg_ParseTuple(args, "si", &Name, &retV))
354
                return NULL;
355
        RetString = QString(Name);
356
        RetVal = retV;
357
        return PyInt_FromLong(0L);
358
}
359
 
360
static PyObject *scribus_getval(PyObject *self, PyObject* args)
361
{
362
        if (!PyArg_ParseTuple(args, ""))
363
                return NULL;
364
        return PyString_FromString(InValue);
365
}
366
 
367
static PyMethodDef scribus_methods[] = {
201 Franz 368
        {"PageDimension",       scribus_pagedimension,  METH_VARARGS},
82 Franz 369
        {"NewDocDialog",                        scribus_newdocdia,                      METH_VARARGS},
370
        {"FileDialog",                          scribus_filedia,                                METH_VARARGS},
138 Franz 371
        {"StatusMessage",                       scribus_mess,                                           METH_VARARGS},
372
        {"MessageBox",                          scribus_messdia,                                METH_VARARGS},
82 Franz 373
        {"NewDoc",                                              scribus_newdoc,                                 METH_VARARGS},
374
        {"CloseDoc",                                    scribus_closedoc,                               METH_VARARGS},
375
        {"HaveDoc",                                             scribus_havedoc,                                METH_VARARGS},
376
        {"OpenDoc",                                             scribus_opendoc,                                METH_VARARGS},
377
        {"SaveDoc",                                             scribus_savedoc,                                METH_VARARGS},
378
        {"SaveDocAs",                                   scribus_savedocas,                      METH_VARARGS},
379
        {"SetInfo",                                             scribus_setinfo,                                METH_VARARGS},
380
        {"SetMargins",                          scribus_setmargins,                     METH_VARARGS},
381
        {"SetUnit",                                             scribus_setunit,                                METH_VARARGS},
382
        {"GetUnit",                                             scribus_getunit,                                METH_VARARGS},
383
        {"CurrentPage",                         scribus_actualpage,                     METH_VARARGS},
384
        {"SetRedraw",                                   scribus_setredraw,                      METH_VARARGS},
385
        {"RedrawAll",                                   scribus_redraw,                                 METH_VARARGS},
386
        {"SavePageAsEPS",                       scribus_savepageeps,            METH_VARARGS},
387
        {"NewPage",                                             scribus_newpage,                                METH_VARARGS},
388
        {"DeletePage",                          scribus_deletepage,                     METH_VARARGS},
389
        {"GotoPage",                                    scribus_gotopage,                               METH_VARARGS},
390
        {"PageCount",                                   scribus_pagecount,                      METH_VARARGS},
391
        {"CreateRect",                          scribus_newrect,                                METH_VARARGS},
392
        {"CreateEllipse",                       scribus_newellipse,                     METH_VARARGS},
393
        {"CreateImage",                         scribus_newimage,                               METH_VARARGS},
394
        {"CreateLine",                          scribus_newline,                                METH_VARARGS},
395
        {"CreatePolyLine",              scribus_polyline,                               METH_VARARGS},
396
        {"CreatePolygon",                       scribus_polygon,                                METH_VARARGS},
397
        {"CreateBezierLine",    scribus_bezierline,                     METH_VARARGS},
398
        {"CreatePathText",              scribus_pathtext,                               METH_VARARGS},
399
        {"CreateText",                          scribus_newtext,                                METH_VARARGS},
400
        {"DeleteObject",                        scribus_deleteobj,                      METH_VARARGS},
401
        {"GetFillColor",                        scribus_getfillcolor,           METH_VARARGS},
402
        {"GetLineColor",                        scribus_getlinecolor,           METH_VARARGS},
403
        {"GetLineWidth",                        scribus_getlinewidth,           METH_VARARGS},
404
        {"GetLineShade",                        scribus_getlineshade,           METH_VARARGS},
405
        {"GetLineJoin",                         scribus_getlinejoin,            METH_VARARGS},
406
        {"GetLineCap",                          scribus_getlineend,                     METH_VARARGS},
407
        {"GetLineStyle",                        scribus_getlinestyle,           METH_VARARGS},
408
        {"GetFillShade",                        scribus_getfillshade,           METH_VARARGS},
409
        {"GetCornerRadius",             scribus_getcornerrad,           METH_VARARGS},
410
        {"GetImageScale",                       scribus_getimgscale,            METH_VARARGS},
411
        {"GetImageFile",                        scribus_getimgname,                     METH_VARARGS},
412
        {"GetPosition",                         scribus_getposi,                                METH_VARARGS},
413
        {"GetSize",                                             scribus_getsize,                                METH_VARARGS},
414
        {"GetRotation",                         scribus_getrotation,            METH_VARARGS},
415
        {"GetFontSize",                         scribus_getfontsize,            METH_VARARGS},
416
        {"GetFont",                                             scribus_getfont,                                METH_VARARGS},
417
        {"GetTextLength",                       scribus_gettextsize,            METH_VARARGS},
418
        {"GetTextColor",                        scribus_getlinecolor,           METH_VARARGS},
419
        {"GetTextShade",                        scribus_getlineshade,           METH_VARARGS},
138 Franz 420
        {"GetColumns",                          scribus_getcolumns,                     METH_VARARGS},
421
        {"GetColumnGap",                        scribus_getcolumngap,           METH_VARARGS},
82 Franz 422
        {"GetLineSpacing",              scribus_getlinespace,           METH_VARARGS},
95 Franz 423
        {"GetText",                                             scribus_getframetext,           METH_VARARGS},
424
        {"GetAllText",                          scribus_gettext,                                METH_VARARGS},
82 Franz 425
        {"GetAllObjects",                       scribus_getallobj,                      METH_VARARGS},
426
        {"SetGradientFill",             scribus_setgradfill,            METH_VARARGS},
427
        {"SetFillColor",                        scribus_setfillcolor,           METH_VARARGS},
428
        {"SetLineColor",                        scribus_setlinecolor,           METH_VARARGS},
429
        {"SetMultiLine",                        scribus_setmultiline,           METH_VARARGS},
430
        {"SetLineWidth",                        scribus_setlinewidth,           METH_VARARGS},
431
        {"SetLineShade",                        scribus_setlineshade,           METH_VARARGS},
432
        {"SetLineJoin",                         scribus_setlinejoin,            METH_VARARGS},
433
        {"SetLineCap",                          scribus_setlineend,                     METH_VARARGS},
434
        {"SetLineStyle",                        scribus_setlinestyle,           METH_VARARGS},
435
        {"SetFillShade",                        scribus_setfillshade,           METH_VARARGS},
436
        {"SetCornerRadius",             scribus_setcornerrad,           METH_VARARGS},
437
        {"LoadImage",                                   scribus_loadimage,                      METH_VARARGS},
438
        {"ScaleImage",                          scribus_scaleimage,                     METH_VARARGS},
439
        {"SetText",                                             scribus_setboxtext,                     METH_VARARGS},
440
        {"InsertText",                          scribus_inserttext,                     METH_VARARGS},
441
        {"SelectText",                          scribus_selecttext,                     METH_VARARGS},
442
        {"DeleteText",                          scribus_deletetext,                     METH_VARARGS},
443
        {"SetFont",                                             scribus_setfont,                                METH_VARARGS},
444
        {"SetFontSize",                         scribus_setfontsize,            METH_VARARGS},
445
        {"SetTextColor",                        scribus_settextfill,            METH_VARARGS},
446
        {"SetTextStroke",                       scribus_settextstroke,  METH_VARARGS},
447
        {"SetTextShade",                        scribus_settextshade,           METH_VARARGS},
138 Franz 448
        {"SetColumns",                          scribus_setcolumns,                     METH_VARARGS},
449
        {"SetColumnGap",                        scribus_setcolumngap,           METH_VARARGS},
82 Franz 450
        {"SetLineSpacing",              scribus_setlinespace,           METH_VARARGS},
451
        {"SetTextAlignment",    scribus_setalign,                               METH_VARARGS},
452
        {"MoveObject",                          scribus_moveobjrel,                     METH_VARARGS},
453
        {"MoveObjectAbs",                       scribus_moveobjabs,                     METH_VARARGS},
454
        {"RotateObject",                        scribus_rotobjrel,                      METH_VARARGS},
455
        {"RotateObjectAbs",             scribus_rotobjabs,                      METH_VARARGS},
456
        {"SizeObject",                          scribus_sizeobjabs,                     METH_VARARGS},
457
        {"GroupObjects",                        scribus_groupobj,                               METH_VARARGS},
458
        {"UnGroupObject",                       scribus_ungroupobj,                     METH_VARARGS},
459
        {"ScaleGroup",                          scribus_scalegroup,                     METH_VARARGS},
460
        {"GetSelectedObject",   scribus_getselobjnam,           METH_VARARGS},
461
        {"SelectionCount",              scribus_selcount,                               METH_VARARGS},
462
        {"SelectObject",                        scribus_selectobj,                      METH_VARARGS},
463
        {"DeselectAll",                         scribus_deselect,                               METH_VARARGS},
464
        {"GetColorNames",                       scribus_colornames,                     METH_VARARGS},
465
        {"GetColor",                                    scribus_getcolor,                               METH_VARARGS},
466
        {"ChangeColor",                         scribus_setcolor,                               METH_VARARGS},
467
        {"DefineColor",                         scribus_newcolor,                               METH_VARARGS},
468
        {"DeleteColor",                         scribus_delcolor,                               METH_VARARGS},
469
        {"ReplaceColor",                        scribus_replcolor,                      METH_VARARGS},
470
        {"GetFontNames",                        scribus_fontnames,                      METH_VARARGS},
471
        {"GetLayers",                                   scribus_getlayers,                      METH_VARARGS},
472
        {"SetActiveLayer",              scribus_setactlayer,            METH_VARARGS},
473
        {"GetActiveLayer",              scribus_getactlayer,            METH_VARARGS},
474
        {"SentToLayer",                         scribus_senttolayer,            METH_VARARGS},
475
        {"SetLayerVisible",             scribus_layervisible,           METH_VARARGS},
476
        {"SetLayerPrintable",   scribus_layerprint,                     METH_VARARGS},
477
        {"IsLayerVisible",              scribus_glayervisib,            METH_VARARGS},
478
        {"IsLayerPrintable",    scribus_glayerprint,            METH_VARARGS},
479
        {"CreateLayer",                         scribus_createlayer,            METH_VARARGS},
480
        {"DeleteLayer",                         scribus_removelayer,            METH_VARARGS},
481
        {"retval",                                              scribus_retval,                                 METH_VARARGS},
482
        {"getval",                                              scribus_getval,                                 METH_VARARGS},
483
        {NULL,          NULL}           /* sentinel */
484
};
485
 
486
void initscribus(ScribusApp *pl)
487
{
488
        PyObject *m, *d;
489
        PyImport_AddModule("scribus");
490
        m = Py_InitModule("scribus", scribus_methods);
491
        d = PyModule_GetDict(m);
492
        PyDict_SetItemString(d, "Points",                                                               Py_BuildValue("i", 0));
493
        PyDict_SetItemString(d, "Millimeters",                                          Py_BuildValue("i", 1));
494
        PyDict_SetItemString(d, "Inches",                                                               Py_BuildValue("i", 2));
495
        PyDict_SetItemString(d, "Picas",                                                                        Py_BuildValue("i", 3));
496
        PyDict_SetItemString(d, "Portrait",                                                     Py_BuildValue("i", 0));
497
        PyDict_SetItemString(d, "Landscape",                                                    Py_BuildValue("i", 1));
498
        PyDict_SetItemString(d, "NoFacingPages",                                        Py_BuildValue("i", 0));
499
        PyDict_SetItemString(d, "FacingPages",                                          Py_BuildValue("i", 1));
500
        PyDict_SetItemString(d, "FirstPageRight",                               Py_BuildValue("i", 0));
501
        PyDict_SetItemString(d, "FirstPageLeft",                                        Py_BuildValue("i", 1));
502
        PyDict_SetItemString(d, "LeftAlign",                                                    Py_BuildValue("i", 0));
503
        PyDict_SetItemString(d, "RightAlign",                                           Py_BuildValue("i", 2));
504
        PyDict_SetItemString(d, "Centered",                                                             Py_BuildValue("i", 1));
505
        PyDict_SetItemString(d, "Forced",                                                                       Py_BuildValue("i", 3));
506
        PyDict_SetItemString(d, "NoGradient",                                                   Py_BuildValue("i", 0));
507
        PyDict_SetItemString(d, "HorizontalGradient",                   Py_BuildValue("i", 1));
508
        PyDict_SetItemString(d, "VerticalGradient",                             Py_BuildValue("i", 2));
509
        PyDict_SetItemString(d, "DiagonalGradient",                             Py_BuildValue("i", 3));
510
        PyDict_SetItemString(d, "CrossDiagonalGradient",        Py_BuildValue("i", 4));
511
        PyDict_SetItemString(d, "RadialGradient",                                       Py_BuildValue("i", 5));
512
        PyDict_SetItemString(d, "SolidLine",                                                    Py_BuildValue("i", Qt::SolidLine));
513
        PyDict_SetItemString(d, "DashLine",                                                             Py_BuildValue("i", Qt::DashLine));
514
        PyDict_SetItemString(d, "DotLine",                                                              Py_BuildValue("i", Qt::DotLine));
515
        PyDict_SetItemString(d, "DashDotLine",                                          Py_BuildValue("i", Qt::DashDotLine));
516
        PyDict_SetItemString(d, "DashDotDotLine",                                       Py_BuildValue("i", Qt::DashDotDotLine));
517
        PyDict_SetItemString(d, "MiterJoin",                                                    Py_BuildValue("i", Qt::MiterJoin));
518
        PyDict_SetItemString(d, "BevelJoin",                                                    Py_BuildValue("i", Qt::BevelJoin));
519
        PyDict_SetItemString(d, "RoundJoin",                                                    Py_BuildValue("i", Qt::RoundJoin));
520
        PyDict_SetItemString(d, "FlatCap",                                                              Py_BuildValue("i", Qt::FlatCap));
521
        PyDict_SetItemString(d, "SquareCap",                                                    Py_BuildValue("i", Qt::SquareCap));
522
        PyDict_SetItemString(d, "RoundCap",                                                             Py_BuildValue("i", Qt::RoundCap));
138 Franz 523
        PyDict_SetItemString(d, "NoButton",                                                             Py_BuildValue("i", QMessageBox::NoButton));
524
        PyDict_SetItemString(d, "Ok",                                                                                   Py_BuildValue("i", QMessageBox::Ok));
525
        PyDict_SetItemString(d, "Cancel",                                                                       Py_BuildValue("i", QMessageBox::Cancel));
526
        PyDict_SetItemString(d, "Yes",                                                                          Py_BuildValue("i", QMessageBox::Yes));
527
        PyDict_SetItemString(d, "No",                                                                                   Py_BuildValue("i", QMessageBox::No));
528
        PyDict_SetItemString(d, "Abort",                                                                        Py_BuildValue("i", QMessageBox::Abort));
529
        PyDict_SetItemString(d, "Retry",                                                                        Py_BuildValue("i", QMessageBox::Retry));
530
        PyDict_SetItemString(d, "Ignore",                                                                       Py_BuildValue("i", QMessageBox::Ignore));
531
        PyDict_SetItemString(d, "NoIcon",                                                                       Py_BuildValue("i", QMessageBox::NoIcon));
532
        PyDict_SetItemString(d, "Information",                                          Py_BuildValue("i", QMessageBox::Information));
533
        PyDict_SetItemString(d, "Warning",                                                              Py_BuildValue("i", QMessageBox::Warning));
534
        PyDict_SetItemString(d, "Critical",                                                             Py_BuildValue("i", QMessageBox::Critical));
82 Franz 535
        PyDict_SetItemString(d, "Paper_A0",                                                     Py_BuildValue("(ff)", 2380.0, 3368.0));
536
        PyDict_SetItemString(d, "Paper_A1",                                                     Py_BuildValue("(ff)", 1684.0, 2380.0));
537
        PyDict_SetItemString(d, "Paper_A2",                                                     Py_BuildValue("(ff)", 1190.0, 1684.0));
538
        PyDict_SetItemString(d, "Paper_A3",                                                     Py_BuildValue("(ff)", 842.0, 1190.0));
539
        PyDict_SetItemString(d, "Paper_A4",                                                     Py_BuildValue("(ff)", 595.0, 842.0));
540
        PyDict_SetItemString(d, "Paper_A5",                                                     Py_BuildValue("(ff)", 421.0, 595.0));
541
        PyDict_SetItemString(d, "Paper_A6",                                                     Py_BuildValue("(ff)", 297.0, 421.0));
542
        PyDict_SetItemString(d, "Paper_A7",                                                     Py_BuildValue("(ff)", 210.0, 297.0));
543
        PyDict_SetItemString(d, "Paper_A8",                                                     Py_BuildValue("(ff)", 148.0, 210.0));
544
        PyDict_SetItemString(d, "Paper_A9",                                                     Py_BuildValue("(ff)", 105.0, 148.0));
545
        PyDict_SetItemString(d, "Paper_B0",                                                     Py_BuildValue("(ff)", 2836.0, 4008.0));
546
        PyDict_SetItemString(d, "Paper_B1",                                                     Py_BuildValue("(ff)", 2004.0, 2836.0));
547
        PyDict_SetItemString(d, "Paper_B2",                                                     Py_BuildValue("(ff)", 1418.0, 2004.0));
548
        PyDict_SetItemString(d, "Paper_B3",                                                     Py_BuildValue("(ff)", 1002.0, 1418.0));
549
        PyDict_SetItemString(d, "Paper_B4",                                                     Py_BuildValue("(ff)", 709.0, 1002.0));
550
        PyDict_SetItemString(d, "Paper_B5",                                                     Py_BuildValue("(ff)", 501.0, 709.0));
551
        PyDict_SetItemString(d, "Paper_B6",                                                     Py_BuildValue("(ff)", 355.0, 501.0));
552
        PyDict_SetItemString(d, "Paper_B7",                                                     Py_BuildValue("(ff)", 250.0, 355.0));
553
        PyDict_SetItemString(d, "Paper_B8",                                                     Py_BuildValue("(ff)", 178.0, 250.0));
554
        PyDict_SetItemString(d, "Paper_B9",                                                     Py_BuildValue("(ff)", 125.0, 178.0));
555
        PyDict_SetItemString(d, "Paper_B10",                                                    Py_BuildValue("(ff)", 89.0, 125.0));
556
        PyDict_SetItemString(d, "Paper_C5E",                                                    Py_BuildValue("(ff)", 462.0, 649.0));
557
        PyDict_SetItemString(d, "Paper_Comm10E",                                        Py_BuildValue("(ff)", 298.0, 683.0));
558
        PyDict_SetItemString(d, "Paper_DLE",                                                    Py_BuildValue("(ff)", 312.0, 624.0));
559
        PyDict_SetItemString(d, "Paper_Executive",                              Py_BuildValue("(ff)", 542.0, 720.0));
560
        PyDict_SetItemString(d, "Paper_Folio",                                          Py_BuildValue("(ff)", 595.0, 935.0));
561
        PyDict_SetItemString(d, "Paper_Ledger",                                         Py_BuildValue("(ff)", 1224.0, 792.0));
562
        PyDict_SetItemString(d, "Paper_Legal",                                          Py_BuildValue("(ff)", 612.0, 1008.0));
563
        PyDict_SetItemString(d, "Paper_Letter",                                         Py_BuildValue("(ff)", 612.0, 792.0));
564
        PyDict_SetItemString(d, "Paper_Tabloid",                                        Py_BuildValue("(ff)", 792.0, 1224.0));
565
        Carrier = pl;
566
}
567