diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/plugins/scriptplugin/cmdsetprop.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/plugins/scriptplugin/cmdsetprop.cpp')
| -rw-r--r-- | scribus/plugins/scriptplugin/cmdsetprop.cpp | 398 |
1 files changed, 398 insertions, 0 deletions
diff --git a/scribus/plugins/scriptplugin/cmdsetprop.cpp b/scribus/plugins/scriptplugin/cmdsetprop.cpp new file mode 100644 index 0000000..2f82272 --- /dev/null +++ b/scribus/plugins/scriptplugin/cmdsetprop.cpp @@ -0,0 +1,398 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +#include "cmdsetprop.h" +#include "cmdutil.h" +#include "scribuscore.h" + +PyObject *scribus_setgradfill(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + char *Color1; + char *Color2; + int typ, shade1, shade2; + if (!PyArg_ParseTuple(args, "iesiesi|es", &typ, "utf-8", &Color1, &shade1, "utf-8", &Color2, &shade2, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((shade1 < 0) || (shade1 > 100) || (shade2 < 0) || (shade2 > 100)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Stop shade out of bounds, must be 0 <= shade <= 100.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *currItem = GetUniqueItem(QString::fromUtf8(Name)); + if (currItem == NULL) + return NULL; + QColor tmp; + currItem->fill_gradient.clearStops(); + QString c1 = QString::fromUtf8(Color1); + QString c2 = QString::fromUtf8(Color2); + currItem->SetQColor(&tmp, c1, shade1); + currItem->fill_gradient.addStop(tmp, 0.0, 0.5, 1.0, c1, shade1); + currItem->SetQColor(&tmp, c2, shade2); + currItem->fill_gradient.addStop(tmp, 1.0, 0.5, 1.0, c2, shade2); + currItem->GrType = typ; + switch (currItem->GrType) + { + case 0: + case 1: + currItem->GrStartX = 0; + currItem->GrStartY = currItem->height() / 2.0; + currItem->GrEndX = currItem->width(); + currItem->GrEndY = currItem->height() / 2.0; + break; + case 2: + currItem->GrStartX = currItem->width() / 2.0; + currItem->GrStartY = 0; + currItem->GrEndX = currItem->width() / 2.0; + currItem->GrEndY = currItem->height(); + break; + case 3: + currItem->GrStartX = 0; + currItem->GrStartY = 0; + currItem->GrEndX = currItem->width(); + currItem->GrEndY = currItem->height(); + break; + case 4: + currItem->GrStartX = 0; + currItem->GrStartY = currItem->height(); + currItem->GrEndX = currItem->width(); + currItem->GrEndY = 0; + break; + case 5: + currItem->GrStartX = currItem->width() / 2.0; + currItem->GrStartY = currItem->height() / 2.0; + if (currItem->width() >= currItem->height()) + { + currItem->GrEndX = currItem->width(); + currItem->GrEndY = currItem->height() / 2.0; + } + else + { + currItem->GrEndX = currItem->width() / 2.0; + currItem->GrEndY = currItem->height(); + } + break; + default: + break; + } + //ScCore->primaryMainWindow()->view->updateGradientVectors(currItem); + currItem->updateGradientVectors(); + currItem->update(); + Py_RETURN_NONE; +} + +PyObject *scribus_setgradstop(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + char *Color1; + int shade1; + double rampPoint, opacity; + if (!PyArg_ParseTuple(args, "esidd|es", "utf-8", &Color1, &shade1, &opacity, &rampPoint, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((shade1 < 0) || (shade1 > 100)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Stop shade out of bounds, must be 0 <= shade <= 100.","python error").toLocal8Bit().constData()); + return NULL; + } + if ((rampPoint < 0.0) || (rampPoint > 1.0)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Ramp point out of bounds, must be 0 <= rampPoint <= 1.","python error").toLocal8Bit().constData()); + return NULL; + } + if ((opacity < 0.0) || (opacity > 1.0)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Opacity out of bounds, must be 0 <= transparency <= 1.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *currItem = GetUniqueItem(QString::fromUtf8(Name)); + if (currItem == NULL) + return NULL; + QColor tmp; + QString c1 = QString::fromUtf8(Color1); + currItem->SetQColor(&tmp, c1, shade1); + currItem->fill_gradient.setStop(tmp, rampPoint, 0.5, opacity, c1, shade1); + currItem->updateGradientVectors(); + currItem->update(); + Py_RETURN_NONE; +} + +PyObject *scribus_setfillcolor(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + char *Color; + if (!PyArg_ParseTuple(args, "es|es", "utf-8", &Color, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setFillColor(QString::fromUtf8(Color)); + Py_RETURN_NONE; +} + +PyObject *scribus_setfilltrans(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + double w; + if (!PyArg_ParseTuple(args, "d|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0.0) || (w > 1.0)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Transparency out of bounds, must be 0 <= transparency <= 1.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setFillTransparency(1.0 - w); + Py_RETURN_NONE; +} + +PyObject *scribus_setfillblend(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0) || (w > 15)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Blendmode out of bounds, must be 0 <= blendmode <= 15.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setFillBlendmode(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinecolor(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + char *Color; + if (!PyArg_ParseTuple(args, "es|es", "utf-8", &Color, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *it = GetUniqueItem(QString::fromUtf8(Name)); + if (it == NULL) + return NULL; + it->setLineColor(QString::fromUtf8(Color)); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinetrans(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + double w; + if (!PyArg_ParseTuple(args, "d|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0.0) || (w > 1.0)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Transparency out of bounds, must be 0 <= transparency <= 1.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setLineTransparency(1.0 - w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlineblend(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0) || (w > 15)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Blendmode out of bounds, must be 0 <= blendmode <= 15.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setLineBlendmode(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinewidth(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + double w; + if (!PyArg_ParseTuple(args, "d|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0.0) || (w > 300.0)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Line width out of bounds, must be 0 <= line_width <= 300.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setLineWidth(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlineshade(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0) || (w > 100)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Line shade out of bounds, must be 0 <= shade <= 100.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *it = GetUniqueItem(QString::fromUtf8(Name)); + if (it == NULL) + return NULL; + it->setLineShade(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setfillshade(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if ((w < 0) || (w > 100)) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Fill shade out of bounds, must be 0 <= shade <= 100.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->setFillShade(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinejoin(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->PLineJoin = Qt::PenJoinStyle(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinecap(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->PLineEnd = Qt::PenCapStyle(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setlinestyle(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + i->PLineArt = Qt::PenStyle(w); + Py_RETURN_NONE; +} + +PyObject *scribus_setcornerrad(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + int w; + if (!PyArg_ParseTuple(args, "i|es", &w, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if (w < 0) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Corner radius must be a positive number.","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *currItem = GetUniqueItem(QString::fromUtf8(Name)); + if (currItem == NULL) + return NULL; + // apply rounding + currItem->setCornerRadius(w); + currItem->SetFrameRound(); + ScCore->primaryMainWindow()->doc->setRedrawBounding(currItem); + ScCore->primaryMainWindow()->view->SetFrameRounded(); + Py_RETURN_NONE; +} + +PyObject *scribus_setmultiline(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + char *Style = NULL; + if (!PyArg_ParseTuple(args, "es|es", "utf-8", &Style, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + PageItem *currItem = GetUniqueItem(QString::fromUtf8(Name)); + if (currItem == NULL) + return NULL; + if (!ScCore->primaryMainWindow()->doc->MLineStyles.contains(QString::fromUtf8(Style))) + { + PyErr_SetString(NotFoundError, QObject::tr("Line style not found.","python error").toLocal8Bit().constData()); + return NULL; + } + currItem->NamedLStyle = QString::fromUtf8(Style); + Py_RETURN_NONE; +} + +/*! HACK: this removes "warning: 'blah' defined but not used" compiler warnings +with header files structure untouched (docstrings are kept near declarations) +PV */ +void cmdsetpropdocwarnings() +{ + QStringList s; + s << scribus_setgradfill__doc__ << scribus_setgradstop__doc__ + << scribus_setfillcolor__doc__ << scribus_setfilltrans__doc__ + << scribus_setfillblend__doc__ << scribus_setlinecolor__doc__ + << scribus_setlinetrans__doc__ << scribus_setlineblend__doc__ + << scribus_setlinewidth__doc__ << scribus_setlineshade__doc__ + << scribus_setlinejoin__doc__ << scribus_setlinecap__doc__ + << scribus_setlinestyle__doc__ << scribus_setfillshade__doc__ + << scribus_setcornerrad__doc__ << scribus_setmultiline__doc__; +} |
