Rev 934 | Rev 1460 | 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; |
||
1065 | cbradney | 8 | return PyInt_FromLong(static_cast<long>(Carrier->doc->currentPage->PageNr + 1)); |
82 | Franz | 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; |
||
1065 | cbradney | 141 | int n = Carrier->doc->currentPage->YGuides.count(); |
647 | fschmid | 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 | { |
||
1065 | cbradney | 150 | tmp = Carrier->doc->currentPage->YGuides[i]; |
411 | Franz | 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; |
||
1065 | cbradney | 172 | Carrier->doc->currentPage->YGuides.clear(); |
411 | Franz | 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 | } |
||
1065 | cbradney | 180 | Carrier->doc->currentPage->YGuides += ValueToPoint(guide); |
411 | Franz | 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; |
||
1065 | cbradney | 190 | int n = Carrier->doc->currentPage->XGuides.count(); |
647 | fschmid | 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 | { |
||
1065 | cbradney | 199 | tmp = Carrier->doc->currentPage->XGuides[i]; |
411 | Franz | 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; |
||
1065 | cbradney | 221 | Carrier->doc->currentPage->XGuides.clear(); |
411 | Franz | 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 | } |
||
1065 | cbradney | 229 | Carrier->doc->currentPage->XGuides += ValueToPoint(guide); |
411 | Franz | 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 | } |