void ItemAPI::moveAbs(double x, double y) { if (!checkHaveDocument()) return; if (item == NULL) return; // Grab the old selection - but use it only where is there any Selection tempSelection(*ScCore->primaryMainWindow()->doc->m_Selection); bool hadOrigSelection = (tempSelection.count() != 0); // Clear the selection ScCore->primaryMainWindow()->view->Deselect(); // Select the item, which will also select its group if // there is one. ScCore->primaryMainWindow()->view->SelectItem(item); // Move the item, or items if (ScCore->primaryMainWindow()->doc->m_Selection->count() > 1) { ScCore->primaryMainWindow()->view->startGroupTransaction(Um::Move, "", Um::IMove); double x2, y2, w, h; ScCore->primaryMainWindow()->doc->m_Selection->getGroupRect(&x2, &y2, &w, &h); ScCore->primaryMainWindow()->doc->moveGroup(pageUnitXToDocX(x) - x2, pageUnitYToDocY(y) - y2); ScCore->primaryMainWindow()->view->endGroupTransaction(); } else ScCore->primaryMainWindow()->doc->MoveItem(pageUnitXToDocX(x) - item->xPos(), pageUnitYToDocY(y) - item->yPos(), item); // Now restore the selection. ScCore->primaryMainWindow()->view->Deselect(); if (hadOrigSelection) *ScCore->primaryMainWindow()->doc->m_Selection=tempSelection; }
PyObject *scribus_newline(PyObject* /* self */, PyObject* args) { double x, y, w, h; char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "dddd|es", &x, &y, &w, &h, "utf-8", &Name)) return NULL; if(!checkHaveDocument()) return NULL; x = pageUnitXToDocX(x); y = pageUnitYToDocY(y); w = pageUnitXToDocX(w); h = pageUnitYToDocY(h); // if (ItemExists(QString::fromUtf8(Name))) // { // PyErr_SetString(NameExistsError, // QObject::tr("An object with the requested name already exists.", // "python error")); // return NULL; // } int i = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::Line, PageItem::Unspecified, x, y, w, h, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineWidth, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineColor, true); PageItem *it = ScCore->primaryMainWindow()->doc->Items->at(i); it->setRotation(xy2Deg(w-x, h-y)); it->setWidthHeight(sqrt(pow(x-w, 2.0) + pow(y-h, 2.0)), 1.0); it->Sizing = false; it->updateClip(); it->setRedrawBounding(); // ScCore->primaryMainWindow()->doc->setRedrawBounding(it); /* WTF? maybe I'll examine who's author later. Or maybe I'll remove it later ;) it->PoLine.resize(4); it->PoLine.setPoint(0, 0, 0); it->PoLine.setPoint(1, 0, 0); it->PoLine.setPoint(2, w-x, h-y); it->PoLine.setPoint(3, w-x, h-y); FPoint np2 = getMinClipF(&it->PoLine); if (np2.x() < 0) { it->PoLine.translate(-np2.x(), 0); ScCore->primaryMainWindow()->view->MoveItem(np2.x(), 0, it); } if (np2.y() < 0) { it->PoLine.translate(0, -np2.y()); ScCore->primaryMainWindow()->view->MoveItem(0, np2.y(), it); } ScCore->primaryMainWindow()->view->SizeItem(it->PoLine.WidthHeight().x(), it->PoLine.WidthHeight().y(), i, false, false, false); ScCore->primaryMainWindow()->view->AdjustItemSize(it);*/ if (Name != EMPTY_STRING) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(it->itemName().toUtf8()); }
PyObject *scribus_newellipse(PyObject* /* self */, PyObject* args) { double x, y, w, h; char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "dddd|es", &x, &y, &w, &h, "utf-8", &Name)) return NULL; if(!checkHaveDocument()) return NULL; int i = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::Polygon, PageItem::Ellipse, pageUnitXToDocX(x), pageUnitYToDocY(y), ValueToPoint(w), ValueToPoint(h), ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineWidth, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineColor, true); if (Name != EMPTY_STRING) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(ScCore->primaryMainWindow()->doc->Items->at(i)->itemName().toUtf8()); }
PyObject *scribus_newrect(PyObject* /* self */, PyObject* args) { double x, y, w, h; char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "dddd|es", &x, &y, &w, &h, "utf-8", &Name)) return NULL; if(!checkHaveDocument()) return NULL; // if (ItemExists(QString::fromUtf8(Name))) // { // PyErr_SetString(NameExistsError, QObject::tr("An object with the requested name already exists.","python error")); // return NULL; // } int i = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::Polygon, PageItem::Rectangle, pageUnitXToDocX(x), pageUnitYToDocY(y), ValueToPoint(w), ValueToPoint(h), ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineWidth, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineColor, true); // ScCore->primaryMainWindow()->doc->setRedrawBounding(ScCore->primaryMainWindow()->doc->Items->at(i)); if (Name != EMPTY_STRING) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(ScCore->primaryMainWindow()->doc->Items->at(i)->itemName().toUtf8()); }
PyObject *scribus_newtable(PyObject* /* self */, PyObject* args) { double x, y, w, h; int numRows, numColumns; char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "ddddii|es", &x, &y, &w, &h, &numRows, &numColumns, "utf-8", &Name)) return NULL; if (!checkHaveDocument()) return NULL; if (numRows < 1 || numColumns < 1) { PyErr_SetString(PyExc_ValueError, QObject::tr("Both numRows and numColumns must be greater than 0.","python error").toLocal8Bit().constData()); return NULL; } int i = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::Table, PageItem::Unspecified, pageUnitXToDocX(x), pageUnitYToDocY(y), ValueToPoint(w), ValueToPoint(h), 0, // Unused. CommonStrings::None, // Unused. CommonStrings::None); // Unused. PageItem_Table *table = ScCore->primaryMainWindow()->doc->Items->at(i)->asTable(); table->insertRows(0, numRows - 1); table->insertColumns(0, numColumns - 1); table->adjustTableToFrame(); table->adjustFrameToTable(); if (strlen(Name) > 0) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(table->itemName().toUtf8()); }
PyObject *scribus_placesxd(PyObject* /* self */, PyObject* args) { char *Image; double x = 0.0; double y = 0.0; if (!PyArg_ParseTuple(args, "es|dd", "utf-8", &Image, &x, &y)) return NULL; if(!checkHaveDocument()) return NULL; const FileFormat * fmt = LoadSavePlugin::getFormatById(FORMATID_SXDIMPORT); if( fmt ) { fmt->loadFile(QString::fromUtf8(Image), LoadSavePlugin::lfUseCurrentPage|LoadSavePlugin::lfInteractive|LoadSavePlugin::lfScripted); if (ScCore->primaryMainWindow()->doc->m_Selection->count() > 1) { double x2, y2, w, h; ScCore->primaryMainWindow()->doc->m_Selection->getGroupRect(&x2, &y2, &w, &h); ScCore->primaryMainWindow()->view->startGroupTransaction(); ScCore->primaryMainWindow()->doc->moveGroup(pageUnitXToDocX(x) - x2, pageUnitYToDocY(y) - y2); ScCore->primaryMainWindow()->view->endGroupTransaction(); ScCore->primaryMainWindow()->propertiesPalette->updateColorList(); ScCore->primaryMainWindow()->propertiesPalette->paraStyleCombo->updateFormatList(); ScCore->primaryMainWindow()->propertiesPalette->charStyleCombo->updateFormatList(); ScCore->primaryMainWindow()->propertiesPalette->SetLineFormats(ScCore->primaryMainWindow()->doc); } } else { PyErr_SetString(PyExc_Exception, "OpenOffice Import plugin not available"); return NULL; } // Py_INCREF(Py_None); // return Py_None; Py_RETURN_NONE; }
/* 03/31/2004 - xception handling */ PyObject *scribus_pathtext(PyObject* /* self */, PyObject* args) { double x, y; char *Name = const_cast<char*>(""); char *TextB = const_cast<char*>(""); char *PolyB = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "ddeses|es", &x, &y, "utf-8", &TextB, "utf-8", &PolyB, "utf-8", &Name)) return NULL; if(!checkHaveDocument()) return NULL; // if (ItemExists(QString::fromUtf8(Name))) // { // PyErr_SetString(NameExistsError, QObject::tr("An object with the requested name already exists.","python error")); // return NULL; // } //FIXME: Why use GetItem not GetUniqueItem? Maybe use GetUniqueItem and use the exceptions // its sets for us? int i = GetItem(QString::fromUtf8(TextB)); int ii = GetItem(QString::fromUtf8(PolyB)); if ((i == -1) || (ii == -1)) { PyErr_SetString(NotFoundError, QObject::tr("Object not found.","python error").toLocal8Bit().constData()); return NULL; } ScCore->primaryMainWindow()->doc->m_Selection->clear(); ScCore->primaryMainWindow()->doc->m_Selection->addItem(ScCore->primaryMainWindow()->doc->Items->at(i)); ScCore->primaryMainWindow()->doc->m_Selection->addItem(ScCore->primaryMainWindow()->doc->Items->at(ii)); PageItem *it = ScCore->primaryMainWindow()->doc->Items->at(i); ScCore->primaryMainWindow()->view->ToPathText(); ScCore->primaryMainWindow()->doc->MoveItem(pageUnitXToDocX(x) - it->xPos(), pageUnitYToDocY(y) - it->yPos(), it); if (Name != EMPTY_STRING) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(it->itemName().toUtf8()); }
PyObject *scribus_newimage(PyObject* /* self */, PyObject* args) { double x, y, w, h; char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "dddd|es", &x, &y, &w, &h, "utf-8", &Name)) return NULL; if(!checkHaveDocument()) return NULL; int i = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::ImageFrame, PageItem::Unspecified, pageUnitXToDocX(x), pageUnitYToDocY(y), ValueToPoint(w), ValueToPoint(h), 1, ScCore->primaryMainWindow()->doc->itemToolPrefs().imageFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().imageStrokeColor); if (strlen(Name) > 0) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(i)->setItemName(objName); } return PyString_FromString(ScCore->primaryMainWindow()->doc->Items->at(i)->itemName().toUtf8()); }
PyObject *scribus_bezierline(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); PyObject *il; // FIXME: PyList_Check failing will cause the function to return NULL w/o an exception. Separarate out the check. if ((!PyArg_ParseTuple(args, "O|es", &il, "utf-8", &Name)) || (!PyList_Check(il))) return NULL; if(!checkHaveDocument()) return NULL; int len = PyList_Size(il); if (len < 8) { PyErr_SetString(PyExc_ValueError, QObject::tr("Point list must contain at least four points (eight values).","python error").toLocal8Bit().constData()); return NULL; } if ((len % 6) != 0) { PyErr_SetString(PyExc_ValueError, QObject::tr("Point list must have a multiple of six values.","python error").toLocal8Bit().constData()); return NULL; } // if (ItemExists(QString::fromUtf8(Name))) // { // PyErr_SetString(NameExistsError, QObject::tr("An object with the requested name already exists.","python error").toLocal8Bit().constData()); // return NULL; // } double x, y, w, h, kx, ky, kx2, ky2; int i = 0; x = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; y = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; kx = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; ky = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; kx2 = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; ky2 = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; //int ic = ScCore->primaryMainWindow()->view->PaintPolyLine(x, y, 1, 1, ScCore->primaryMainWindow()->doc->toolSettings.dWidth, ScCore->primaryMainWindow()->doc->toolSettings.dBrush, ScCore->primaryMainWindow()->doc->toolSettings.dPen); int ic = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::PolyLine, PageItem::Unspecified, x, y, 1, 1, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineWidth, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineColor, true); PageItem *it = ScCore->primaryMainWindow()->doc->Items->at(ic); it->PoLine.resize(2); it->PoLine.setPoint(0, 0, 0); it->PoLine.setPoint(1, kx-x, ky-y); int pp = 6; for (i = 6; i < len - 6; i += 6) { w = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); h = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+1)))); kx = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+2)))); ky = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+3)))); kx2 = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+4)))); ky2 = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+5)))); it->PoLine.resize(pp); it->PoLine.setPoint(pp-4, w-x, h-y); it->PoLine.setPoint(pp-3, kx-x, ky-y); it->PoLine.setPoint(pp-2, it->PoLine.point(pp-4)); it->PoLine.setPoint(pp-1, kx2-x, ky2-y); pp += 4; } pp -= 2; w = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-6)))); h = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-5)))); kx = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-4)))); ky = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-3)))); it->PoLine.resize(pp); it->PoLine.setPoint(pp-2, w-x, h-y); it->PoLine.setPoint(pp-1, kx-x, ky-y); FPoint np2 = getMinClipF(&it->PoLine); if (np2.x() < 0) { it->PoLine.translate(-np2.x(), 0); ScCore->primaryMainWindow()->doc->MoveItem(np2.x(), 0, it); } if (np2.y() < 0) { it->PoLine.translate(0, -np2.y()); ScCore->primaryMainWindow()->doc->MoveItem(0, np2.y(), it); } ScCore->primaryMainWindow()->doc->SizeItem(it->PoLine.WidthHeight().x(), it->PoLine.WidthHeight().y(), ic, false, false, false); ScCore->primaryMainWindow()->doc->AdjustItemSize(it); if (Name != EMPTY_STRING) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(ic)->setItemName(objName); } return PyString_FromString(it->itemName().toUtf8()); }
PyObject *scribus_polygon(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); PyObject *il; // FIXME: PyList_Check failing will cause the function to return NULL w/o an exception. Separarate out the check. if ((!PyArg_ParseTuple(args, "O|es", &il, "utf-8", &Name)) || (!PyList_Check(il))) return NULL; if(!checkHaveDocument()) return NULL; int len = PyList_Size(il); if (len < 6) { PyErr_SetString(PyExc_ValueError, QObject::tr("Point list must contain at least three points (six values).","python error").toLocal8Bit().constData()); return NULL; } if ((len % 2) != 0) { PyErr_SetString(PyExc_ValueError, QObject::tr("Point list must contain an even number of values.","python error").toLocal8Bit().constData()); return NULL; } // if (ItemExists(QString::fromUtf8(Name))) // { // PyErr_SetString(NameExistsError, QObject::tr("An object with the requested name already exists.","python error").toLocal8Bit().constData()); // return NULL; // } double x, y, w, h; int i = 0; x = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; y = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); i++; int ic = ScCore->primaryMainWindow()->doc->itemAdd(PageItem::Polygon, PageItem::Unspecified, x, y, 1, 1, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineWidth, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeFillColor, ScCore->primaryMainWindow()->doc->itemToolPrefs().shapeLineColor); PageItem *it = ScCore->primaryMainWindow()->doc->Items->at(ic); it->PoLine.resize(2); it->PoLine.setPoint(0, 0, 0); it->PoLine.setPoint(1, 0, 0); int pp = 6; for (i = 2; i < len - 2; i += 2) { w = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i)))); h = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, i+1)))); it->PoLine.resize(pp); it->PoLine.setPoint(pp-4, w-x, h-y); it->PoLine.setPoint(pp-3, w-x, h-y); it->PoLine.setPoint(pp-2, w-x, h-y); it->PoLine.setPoint(pp-1, w-x, h-y); pp += 4; } w = pageUnitXToDocX(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-2)))); h = pageUnitYToDocY(static_cast<double>(PyFloat_AsDouble(PyList_GetItem(il, len-1)))); it->PoLine.resize(pp); it->PoLine.setPoint(pp-4, w-x, h-y); it->PoLine.setPoint(pp-3, w-x, h-y); it->PoLine.setPoint(pp-2, w-x, h-y); it->PoLine.setPoint(pp-1, w-x, h-y); pp += 2; it->PoLine.resize(pp); it->PoLine.setPoint(pp-2, 0, 0); it->PoLine.setPoint(pp-1, 0, 0); FPoint np2 = getMinClipF(&it->PoLine); if (np2.x() < 0) { it->PoLine.translate(-np2.x(), 0); ScCore->primaryMainWindow()->doc->moveItem(np2.x(), 0, it); } if (np2.y() < 0) { it->PoLine.translate(0, -np2.y()); ScCore->primaryMainWindow()->doc->moveItem(0, np2.y(), it); } ScCore->primaryMainWindow()->doc->sizeItem(it->PoLine.WidthHeight().x(), it->PoLine.WidthHeight().y(), it, false, false, false); ScCore->primaryMainWindow()->doc->adjustItemSize(it); if (strlen(Name) > 0) { QString objName = QString::fromUtf8(Name); if (!ItemExists(objName)) ScCore->primaryMainWindow()->doc->Items->at(ic)->setItemName(objName); } return PyString_FromString(it->itemName().toUtf8()); }