Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
103 Franz 1
#include "cmdpage.h"
201 Franz 2
#include "cmdutil.h"
82 Franz 3
 
934 subik 4
PyObject *scribus_actualpage(PyObject */*self*/)
82 Franz 5
{
649 fschmid 6
        if(!checkHaveDocument())
7
                return NULL;
82 Franz 8
        return PyInt_FromLong(static_cast<long>(Carrier->doc->ActPage->PageNr + 1));
9
}
10
 
934 subik 11
PyObject *scribus_redraw(PyObject */*self*/)
82 Franz 12
{
649 fschmid 13
        if(!checkHaveDocument())
14
                return NULL;
647 fschmid 15
        Carrier->view->DrawNew();
82 Franz 16
        Py_INCREF(Py_None);
17
        return Py_None;
18
}
19
 
934 subik 20
PyObject *scribus_savepageeps(PyObject */*self*/, PyObject* args)
82 Franz 21
{
22
        char *Name;
900 cbradney 23
        if (!PyArg_ParseTuple(args, "es", "utf-8", &Name))
82 Franz 24
                return NULL;
649 fschmid 25
        if(!checkHaveDocument())
26
                return NULL;
900 cbradney 27
        bool ret = Carrier->DoSaveAsEps(QString::fromUtf8(Name));
899 cbradney 28
        if (!ret)
29
        {
30
                PyErr_SetString(ScribusException, QObject::tr("Failed to save EPS","python error"));
31
                return NULL;
32
        }
33
        Py_INCREF(Py_True);     // return True not None for backward compat
34
        return Py_True;
82 Franz 35
}
36
 
934 subik 37
PyObject *scribus_deletepage(PyObject */*self*/, PyObject* args)
82 Franz 38
{
39
        int e;
40
        if (!PyArg_ParseTuple(args, "i", &e))
41
                return NULL;
649 fschmid 42
        if(!checkHaveDocument())
43
                return NULL;
82 Franz 44
        e--;
662 fschmid 45
        if ((e < 0) || (e > static_cast<int>(Carrier->doc->Pages.count())-1))
646 fschmid 46
        {
899 cbradney 47
                PyErr_SetString(PyExc_IndexError, QObject::tr("Page number out of range","python error"));
646 fschmid 48
                return NULL;
49
        }
82 Franz 50
        Carrier->DeletePage2(e);
646 fschmid 51
        Py_INCREF(Py_None);
82 Franz 52
        return Py_None;
53
}
54
 
934 subik 55
PyObject *scribus_gotopage(PyObject */*self*/, PyObject* args)
82 Franz 56
{
57
        int e;
58
        if (!PyArg_ParseTuple(args, "i", &e))
59
                return NULL;
649 fschmid 60
        if(!checkHaveDocument())
61
                return NULL;
82 Franz 62
        e--;
662 fschmid 63
        if ((e < 0) || (e > static_cast<int>(Carrier->doc->Pages.count())-1))
646 fschmid 64
        {
899 cbradney 65
                PyErr_SetString(PyExc_IndexError, QObject::tr("Page number out of range","python error"));
646 fschmid 66
                return NULL;
67
        }
82 Franz 68
        Carrier->view->GotoPage(e);
646 fschmid 69
        Py_INCREF(Py_None);
82 Franz 70
        return Py_None;
71
}
72
 
934 subik 73
PyObject *scribus_newpage(PyObject */*self*/, PyObject* args)
82 Franz 74
{
75
        int e;
934 subik 76
        char *name = const_cast<char*>("Normal");
900 cbradney 77
        if (!PyArg_ParseTuple(args, "i|es", &e, "utf-8", &name))
82 Franz 78
                return NULL;
649 fschmid 79
        if(!checkHaveDocument())
80
                return NULL;
82 Franz 81
        if (e < 0)
900 cbradney 82
                Carrier->slotNewPageP(Carrier->doc->Pages.count(), QString::fromUtf8(name));
82 Franz 83
        else
411 Franz 84
        {
82 Franz 85
                e--;
662 fschmid 86
                if ((e < 0) || (e > static_cast<int>(Carrier->doc->Pages.count())-1))
646 fschmid 87
                {
899 cbradney 88
                        PyErr_SetString(PyExc_IndexError, QObject::tr("Page number out of range","python error"));
646 fschmid 89
                        return NULL;
90
                }
900 cbradney 91
                Carrier->slotNewPageP(e, QString::fromUtf8(name));
411 Franz 92
        }
646 fschmid 93
        Py_INCREF(Py_None);
82 Franz 94
        return Py_None;
95
}
96
 
934 subik 97
PyObject *scribus_pagecount(PyObject */*self*/)
82 Franz 98
{
649 fschmid 99
        if(!checkHaveDocument())
100
                return NULL;
662 fschmid 101
        return PyInt_FromLong(static_cast<long>(Carrier->doc->Pages.count()));
82 Franz 102
}
103
 
934 subik 104
PyObject *scribus_pagedimension(PyObject */*self*/)
201 Franz 105
{
649 fschmid 106
        if(!checkHaveDocument())
107
                return NULL;
201 Franz 108
        PyObject *t;
109
        t = Py_BuildValue(
646 fschmid 110
                        "(dd)",
111
                        PointToValue(Carrier->doc->PageB), // it's just view scale... * Carrier->doc->Scale),
112
                        PointToValue(Carrier->doc->PageH)  // * Carrier->doc->Scale)
113
                );
201 Franz 114
        return t;
115
}
116
 
934 subik 117
PyObject *scribus_getpageitems(PyObject */*self*/)
216 Franz 118
{
649 fschmid 119
        if(!checkHaveDocument())
120
                return NULL;
662 fschmid 121
        if (Carrier->doc->Items.count() == 0)
216 Franz 122
                return Py_BuildValue((char*)"[]");
662 fschmid 123
        PyObject *l = PyList_New(Carrier->doc->Items.count());
216 Franz 124
        PyObject *row;
662 fschmid 125
        for (uint i = 0; i<Carrier->doc->Items.count(); ++i)
216 Franz 126
        {
127
                row = Py_BuildValue((char*)"(sii)",
662 fschmid 128
                                    Carrier->doc->Items.at(i)->AnName.ascii(),
129
                                    Carrier->doc->Items.at(i)->PType,
130
                                    Carrier->doc->Items.at(i)->ItemNr
643 fschmid 131
                                   );
216 Franz 132
                PyList_SetItem(l, i, row);
133
        } // for
134
        return l;
135
}
411 Franz 136
 
934 subik 137
PyObject *scribus_getHguides(PyObject */*self*/)
411 Franz 138
{
649 fschmid 139
        if(!checkHaveDocument())
140
                return NULL;
647 fschmid 141
        int n = Carrier->doc->ActPage->YGuides.count();
142
        if (n == 0)
720 subik 143
                return Py_BuildValue((char*)"[]");
411 Franz 144
        int i;
145
        double tmp;
146
        PyObject *l, *guide;
147
        l = PyList_New(0);
148
        for (i=0; i<n; i++)
149
        {
150
                tmp = Carrier->doc->ActPage->YGuides[i];
151
                guide = Py_BuildValue("d", PointToValue(tmp));
152
                PyList_Append(l, guide);
153
        }
154
        return l;
155
}
156
 
934 subik 157
PyObject *scribus_setHguides(PyObject */*self*/, PyObject* args)
411 Franz 158
{
159
        PyObject *l;
160
        if (!PyArg_ParseTuple(args, "O", &l))
161
                return NULL;
649 fschmid 162
        if(!checkHaveDocument())
163
                return NULL;
411 Franz 164
        if (!PyList_Check(l))
165
        {
899 cbradney 166
                PyErr_SetString(PyExc_TypeError, QObject::tr("argument is not list: must be list of float values","python error"));
411 Franz 167
                return NULL;
168
        }
169
        int i, n;
170
        n = PyList_Size(l);
171
        double guide;
172
        Carrier->doc->ActPage->YGuides.clear();
173
        for (i=0; i<n; i++)
174
        {
175
                if (!PyArg_Parse(PyList_GetItem(l, i), "d", &guide))
176
                {
899 cbradney 177
                        PyErr_SetString(PyExc_TypeError, QObject::tr("argument contains non-numeric values: must be list of float values","python error"));
411 Franz 178
                        return NULL;
179
                }
180
                Carrier->doc->ActPage->YGuides += ValueToPoint(guide);
181
        }
646 fschmid 182
        Py_INCREF(Py_None);
411 Franz 183
        return Py_None;
184
}
185
 
934 subik 186
PyObject *scribus_getVguides(PyObject */*self*/)
411 Franz 187
{
649 fschmid 188
        if(!checkHaveDocument())
189
                return NULL;
647 fschmid 190
        int n = Carrier->doc->ActPage->XGuides.count();
191
        if (n == 0)
720 subik 192
                return Py_BuildValue((char*)"[]");
411 Franz 193
        int i;
194
        double tmp;
195
        PyObject *l, *guide;
196
        l = PyList_New(0);
197
        for (i=0; i<n; i++)
198
        {
199
                tmp = Carrier->doc->ActPage->XGuides[i];
200
                guide = Py_BuildValue("d", PointToValue(tmp));
201
                PyList_Append(l, guide);
202
        }
203
        return l;
204
}
205
 
934 subik 206
PyObject *scribus_setVguides(PyObject */*self*/, PyObject* args)
411 Franz 207
{
208
        PyObject *l;
209
        if (!PyArg_ParseTuple(args, "O", &l))
210
                return NULL;
649 fschmid 211
        if(!checkHaveDocument())
212
                return NULL;
411 Franz 213
        if (!PyList_Check(l))
214
        {
899 cbradney 215
                PyErr_SetString(PyExc_TypeError, QObject::tr("argument is not list: must be list of float values","python error"));
411 Franz 216
                return NULL;
217
        }
218
        int i, n;
219
        n = PyList_Size(l);
220
        double guide;
221
        Carrier->doc->ActPage->XGuides.clear();
222
        for (i=0; i<n; i++)
223
        {
224
                if (!PyArg_Parse(PyList_GetItem(l, i), "d", &guide))
225
                {
899 cbradney 226
                        PyErr_SetString(PyExc_TypeError, QObject::tr("argument contains no-numeric values: must be list of float values","python error"));
411 Franz 227
                        return NULL;
228
                }
229
                Carrier->doc->ActPage->XGuides += ValueToPoint(guide);
230
        }
646 fschmid 231
        Py_INCREF(Py_None);
411 Franz 232
        return Py_None;
233
}
418 Franz 234
 
934 subik 235
PyObject *scribus_getpagemargins(PyObject */*self*/)
418 Franz 236
{
237
        PyObject *margins = NULL;
649 fschmid 238
        if(!checkHaveDocument())
239
                return NULL;
418 Franz 240
        margins = Py_BuildValue("ffff", Carrier->doc->PageM.Top, Carrier->doc->PageM.Left,
241
                                                         Carrier->doc->PageM.Right, Carrier->doc->PageM.Bottom);
242
        return margins;
243
}