Rev 1283 | Rev 1381 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
103 | Franz | 1 | #include "cmdmani.h" |
2 | #include "cmdutil.h" |
||
82 | Franz | 3 | |
934 | subik | 4 | PyObject *scribus_loadimage(PyObject */*self*/, PyObject* args) |
82 | Franz | 5 | { |
934 | subik | 6 | char *Name = const_cast<char*>(""); |
82 | Franz | 7 | char *Image; |
900 | cbradney | 8 | if (!PyArg_ParseTuple(args, "es|es", "utf-8", &Image, "utf-8", &Name)) |
82 | Franz | 9 | return NULL; |
649 | fschmid | 10 | if(!checkHaveDocument()) |
11 | return NULL; |
||
900 | cbradney | 12 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
332 | Franz | 13 | if (item == NULL) |
14 | return NULL; |
||
899 | cbradney | 15 | if (item->PType != FRAME_IMAGE) |
16 | { |
||
17 | PyErr_SetString(WrongFrameTypeError, QObject::tr("Target is not an image frame.","python error")); |
||
18 | return NULL; |
||
19 | } |
||
900 | cbradney | 20 | Carrier->view->LoadPict(QString::fromUtf8(Image), item->ItemNr); |
647 | fschmid | 21 | Py_INCREF(Py_None); |
82 | Franz | 22 | return Py_None; |
23 | } |
||
24 | |||
934 | subik | 25 | PyObject *scribus_scaleimage(PyObject */*self*/, PyObject* args) |
82 | Franz | 26 | { |
934 | subik | 27 | char *Name = const_cast<char*>(""); |
82 | Franz | 28 | double x, y; |
900 | cbradney | 29 | if (!PyArg_ParseTuple(args, "dd|es", &x, &y, "utf-8", &Name)) |
82 | Franz | 30 | return NULL; |
649 | fschmid | 31 | if(!checkHaveDocument()) |
32 | return NULL; |
||
900 | cbradney | 33 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 34 | if (item == NULL) |
35 | return NULL; |
||
899 | cbradney | 36 | if (item->PType != FRAME_IMAGE) |
332 | Franz | 37 | { |
899 | cbradney | 38 | PyErr_SetString(ScribusException, QObject::tr("Specified item not an image frame","python error")); |
720 | subik | 39 | return NULL; |
40 | } |
||
899 | cbradney | 41 | item->LocalScX = x; |
42 | item->LocalScY = y; |
||
1188 | subik | 43 | Carrier->view->ChLocalSc(x, y); |
44 | Carrier->view->UpdatePic(); |
||
647 | fschmid | 45 | Py_INCREF(Py_None); |
82 | Franz | 46 | return Py_None; |
47 | } |
||
48 | |||
934 | subik | 49 | PyObject *scribus_moveobjrel(PyObject */*self*/, PyObject* args) |
82 | Franz | 50 | { |
934 | subik | 51 | char *Name = const_cast<char*>(""); |
82 | Franz | 52 | double x, y; |
900 | cbradney | 53 | if (!PyArg_ParseTuple(args, "dd|es", &x, &y, "utf-8", &Name)) |
82 | Franz | 54 | return NULL; |
649 | fschmid | 55 | if(!checkHaveDocument()) |
56 | return NULL; |
||
900 | cbradney | 57 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 58 | if (item==NULL) |
59 | return NULL; |
||
60 | if (Carrier->view->GroupSel) |
||
61 | Carrier->view->moveGroup(ValueToPoint(x), ValueToPoint(y)); |
||
62 | else |
||
63 | Carrier->view->MoveItem(ValueToPoint(x), ValueToPoint(y), item); |
||
647 | fschmid | 64 | Py_INCREF(Py_None); |
82 | Franz | 65 | return Py_None; |
66 | } |
||
67 | |||
934 | subik | 68 | PyObject *scribus_moveobjabs(PyObject */*self*/, PyObject* args) |
82 | Franz | 69 | { |
934 | subik | 70 | char *Name = const_cast<char*>(""); |
87 | Franz | 71 | double x, y; |
900 | cbradney | 72 | if (!PyArg_ParseTuple(args, "dd|es", &x, &y, "utf-8", &Name)) |
82 | Franz | 73 | return NULL; |
649 | fschmid | 74 | if(!checkHaveDocument()) |
75 | return NULL; |
||
900 | cbradney | 76 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 77 | if (item == NULL) |
78 | return NULL; |
||
79 | if (Carrier->view->GroupSel) |
||
332 | Franz | 80 | { |
662 | fschmid | 81 | if (Carrier->view->GroupSel) |
82 | Franz | 82 | { |
87 | Franz | 83 | double x2, y2, w, h; |
662 | fschmid | 84 | Carrier->view->getGroupRect(&x2, &y2, &w, &h); |
1283 | subik | 85 | Carrier->view->moveGroup(pageUnitXToDocX(x) - x2, pageUnitYToDocY(y) - y2); |
332 | Franz | 86 | } |
82 | Franz | 87 | else |
1283 | subik | 88 | Carrier->view->MoveItem(pageUnitXToDocX(x) - item->Xpos, pageUnitYToDocY(y) - item->Ypos, item); |
332 | Franz | 89 | } |
720 | subik | 90 | else |
1283 | subik | 91 | Carrier->view->MoveItem(pageUnitXToDocX(x) - item->Xpos, pageUnitYToDocY(y) - item->Ypos, item); |
647 | fschmid | 92 | Py_INCREF(Py_None); |
82 | Franz | 93 | return Py_None; |
94 | } |
||
95 | |||
934 | subik | 96 | PyObject *scribus_rotobjrel(PyObject */*self*/, PyObject* args) |
82 | Franz | 97 | { |
934 | subik | 98 | char *Name = const_cast<char*>(""); |
82 | Franz | 99 | double x; |
900 | cbradney | 100 | if (!PyArg_ParseTuple(args, "d|es", &x, "utf-8", &Name)) |
82 | Franz | 101 | return NULL; |
649 | fschmid | 102 | if(!checkHaveDocument()) |
103 | return NULL; |
||
900 | cbradney | 104 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 105 | if (item == NULL) |
106 | return NULL; |
||
107 | Carrier->view->RotateItem(item->Rot - x, item->ItemNr); |
||
647 | fschmid | 108 | Py_INCREF(Py_None); |
82 | Franz | 109 | return Py_None; |
110 | } |
||
111 | |||
934 | subik | 112 | PyObject *scribus_rotobjabs(PyObject */*self*/, PyObject* args) |
82 | Franz | 113 | { |
934 | subik | 114 | char *Name = const_cast<char*>(""); |
82 | Franz | 115 | double x; |
900 | cbradney | 116 | if (!PyArg_ParseTuple(args, "d|es", &x, "utf-8", &Name)) |
82 | Franz | 117 | return NULL; |
649 | fschmid | 118 | if(!checkHaveDocument()) |
119 | return NULL; |
||
900 | cbradney | 120 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 121 | if (item == NULL) |
122 | return NULL; |
||
123 | Carrier->view->RotateItem(x * -1.0, item->ItemNr); |
||
647 | fschmid | 124 | Py_INCREF(Py_None); |
82 | Franz | 125 | return Py_None; |
126 | } |
||
127 | |||
934 | subik | 128 | PyObject *scribus_sizeobjabs(PyObject */*self*/, PyObject* args) |
82 | Franz | 129 | { |
934 | subik | 130 | char *Name = const_cast<char*>(""); |
82 | Franz | 131 | double x, y; |
900 | cbradney | 132 | if (!PyArg_ParseTuple(args, "dd|es", &x, &y, "utf-8", &Name)) |
82 | Franz | 133 | return NULL; |
649 | fschmid | 134 | if(!checkHaveDocument()) |
135 | return NULL; |
||
900 | cbradney | 136 | PageItem *item = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 137 | if (item == NULL) |
138 | return NULL; |
||
1283 | subik | 139 | Carrier->view->SizeItem(pageUnitXToDocX(x) - item->Xpos, pageUnitYToDocY(y) - item->Ypos, item->ItemNr); |
647 | fschmid | 140 | Py_INCREF(Py_None); |
82 | Franz | 141 | return Py_None; |
142 | } |
||
143 | |||
934 | subik | 144 | PyObject *scribus_groupobj(PyObject */*self*/, PyObject* args) |
82 | Franz | 145 | { |
934 | subik | 146 | char *Name = const_cast<char*>(""); |
82 | Franz | 147 | PyObject *il = 0; |
148 | if (!PyArg_ParseTuple(args, "|O", &il)) |
||
149 | return NULL; |
||
649 | fschmid | 150 | if(!checkHaveDocument()) |
151 | return NULL; |
||
1065 | cbradney | 152 | uint ap = Carrier->doc->currentPage->PageNr; |
82 | Franz | 153 | if (il != 0) |
332 | Franz | 154 | { |
87 | Franz | 155 | int len = PyList_Size(il); |
82 | Franz | 156 | if (len == 0) |
647 | fschmid | 157 | { |
158 | Py_INCREF(Py_None); |
||
82 | Franz | 159 | return Py_None; |
647 | fschmid | 160 | } |
87 | Franz | 161 | for (int i = 0; i < len; i++) |
332 | Franz | 162 | { |
900 | cbradney | 163 | // FIXME: We might need to explicitly get this string as utf8 |
164 | // but as sysdefaultencoding is utf8 it should be a no-op to do |
||
165 | // so anyway. |
||
332 | Franz | 166 | Name = PyString_AsString(PyList_GetItem(il, i)); |
900 | cbradney | 167 | PageItem *ic = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 168 | if (ic == NULL) |
169 | return NULL; |
||
170 | Carrier->view->SelectItemNr(ic->ItemNr); |
||
82 | Franz | 171 | } |
332 | Franz | 172 | } |
662 | fschmid | 173 | if (Carrier->view->SelItem.count() != 0) |
332 | Franz | 174 | { |
82 | Franz | 175 | Carrier->GroupObj(); |
662 | fschmid | 176 | Carrier->view->Deselect(); |
332 | Franz | 177 | Carrier->view->GotoPage(ap); |
178 | } |
||
647 | fschmid | 179 | Py_INCREF(Py_None); |
82 | Franz | 180 | return Py_None; |
181 | } |
||
182 | |||
934 | subik | 183 | PyObject *scribus_ungroupobj(PyObject */*self*/, PyObject* args) |
82 | Franz | 184 | { |
934 | subik | 185 | char *Name = const_cast<char*>(""); |
900 | cbradney | 186 | if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name)) |
82 | Franz | 187 | return NULL; |
649 | fschmid | 188 | if(!checkHaveDocument()) |
189 | return NULL; |
||
900 | cbradney | 190 | PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 191 | if (i == NULL) |
192 | return NULL; |
||
193 | Carrier->UnGroupObj(); |
||
647 | fschmid | 194 | Py_INCREF(Py_None); |
82 | Franz | 195 | return Py_None; |
196 | } |
||
197 | |||
934 | subik | 198 | PyObject *scribus_scalegroup(PyObject */*self*/, PyObject* args) |
82 | Franz | 199 | { |
934 | subik | 200 | char *Name = const_cast<char*>(""); |
82 | Franz | 201 | double sc; |
900 | cbradney | 202 | if (!PyArg_ParseTuple(args, "d|es", &sc, "utf-8", &Name)) |
82 | Franz | 203 | return NULL; |
649 | fschmid | 204 | if(!checkHaveDocument()) |
205 | return NULL; |
||
82 | Franz | 206 | if (sc == 0.0) |
647 | fschmid | 207 | { |
899 | cbradney | 208 | PyErr_SetString(PyExc_ValueError, QObject::tr("Can't scale by 0%","python error")); |
720 | subik | 209 | return NULL; |
647 | fschmid | 210 | } |
900 | cbradney | 211 | PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 212 | if (i == NULL) |
213 | return NULL; |
||
214 | Carrier->view->Deselect(); |
||
215 | Carrier->view->SelectItemNr(i->ItemNr); |
||
216 | int h = Carrier->view->HowTo; |
||
217 | Carrier->view->HowTo = 1; |
||
218 | Carrier->view->scaleGroup(sc, sc); |
||
219 | Carrier->view->HowTo = h; |
||
647 | fschmid | 220 | Py_INCREF(Py_None); |
82 | Franz | 221 | return Py_None; |
222 | } |
||
223 | |||
934 | subik | 224 | PyObject *scribus_getselobjnam(PyObject */*self*/, PyObject* args) |
82 | Franz | 225 | { |
226 | int i = 0; |
||
227 | if (!PyArg_ParseTuple(args, "|i", &i)) |
||
228 | return NULL; |
||
649 | fschmid | 229 | if(!checkHaveDocument()) |
230 | return NULL; |
||
662 | fschmid | 231 | if ((i < static_cast<int>(Carrier->view->SelItem.count())) && (i > -1)) |
1361 | tsoots | 232 | return PyString_FromString(Carrier->view->SelItem.at(i)->itemName().utf8()); |
82 | Franz | 233 | else |
900 | cbradney | 234 | // FIXME: Should probably return None if no selection? |
82 | Franz | 235 | return PyString_FromString(""); |
236 | } |
||
237 | |||
934 | subik | 238 | PyObject *scribus_selcount(PyObject */*self*/) |
82 | Franz | 239 | { |
649 | fschmid | 240 | if(!checkHaveDocument()) |
241 | return NULL; |
||
662 | fschmid | 242 | return PyInt_FromLong(static_cast<long>(Carrier->view->SelItem.count())); |
82 | Franz | 243 | } |
244 | |||
934 | subik | 245 | PyObject *scribus_selectobj(PyObject */*self*/, PyObject* args) |
82 | Franz | 246 | { |
934 | subik | 247 | char *Name = const_cast<char*>(""); |
900 | cbradney | 248 | if (!PyArg_ParseTuple(args, "es", "utf-8", &Name)) |
82 | Franz | 249 | return NULL; |
649 | fschmid | 250 | if(!checkHaveDocument()) |
251 | return NULL; |
||
900 | cbradney | 252 | PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); |
720 | subik | 253 | if (i == NULL) |
254 | return NULL; |
||
255 | Carrier->view->SelectItemNr(i->ItemNr); |
||
647 | fschmid | 256 | Py_INCREF(Py_None); |
82 | Franz | 257 | return Py_None; |
258 | } |
||
259 | |||
934 | subik | 260 | PyObject *scribus_deselect(PyObject */*self*/) |
82 | Franz | 261 | { |
649 | fschmid | 262 | if(!checkHaveDocument()) |
263 | return NULL; |
||
662 | fschmid | 264 | Carrier->view->Deselect(); |
647 | fschmid | 265 | Py_INCREF(Py_None); |
82 | Franz | 266 | return Py_None; |
267 | } |
||
268 | |||
934 | subik | 269 | PyObject *scribus_lockobject(PyObject */*self*/, PyObject* args) |
332 | Franz | 270 | { |
934 | subik | 271 | char *name = const_cast<char*>(""); |
900 | cbradney | 272 | if (!PyArg_ParseTuple(args, "|es", "utf-8", &name)) |
332 | Franz | 273 | return NULL; |
649 | fschmid | 274 | if(!checkHaveDocument()) |
275 | return NULL; |
||
900 | cbradney | 276 | PageItem *item = GetUniqueItem(QString::fromUtf8(name)); |
332 | Franz | 277 | if (item == NULL) |
278 | return NULL; |
||
279 | item->Locked = !item->Locked; |
||
280 | if (item->Locked) |
||
281 | return PyInt_FromLong(1); |
||
282 | return PyInt_FromLong(0); |
||
283 | } |
||
284 | |||
934 | subik | 285 | PyObject *scribus_islocked(PyObject */*self*/, PyObject* args) |
332 | Franz | 286 | { |
934 | subik | 287 | char *name = const_cast<char*>(""); |
900 | cbradney | 288 | if (!PyArg_ParseTuple(args, "|es", "utf-8", &name)) |
332 | Franz | 289 | return NULL; |
720 | subik | 290 | // FIXME: Rather than toggling the lock, we should probably let the user set the lock state |
291 | // and instead provide a different function like toggleLock() |
||
649 | fschmid | 292 | if(!checkHaveDocument()) |
293 | return NULL; |
||
900 | cbradney | 294 | PageItem *item = GetUniqueItem(QString::fromUtf8(name)); |
332 | Franz | 295 | if (item == NULL) |
296 | return NULL; |
||
297 | if (item->Locked) |
||
720 | subik | 298 | return PyBool_FromLong(1); |
299 | return PyBool_FromLong(0); |
||
332 | Franz | 300 | } |