summaryrefslogtreecommitdiffstats
path: root/scribus/plugins/scriptplugin/cmdgetprop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scribus/plugins/scriptplugin/cmdgetprop.cpp')
-rw-r--r--scribus/plugins/scriptplugin/cmdgetprop.cpp345
1 files changed, 345 insertions, 0 deletions
diff --git a/scribus/plugins/scriptplugin/cmdgetprop.cpp b/scribus/plugins/scriptplugin/cmdgetprop.cpp
new file mode 100644
index 0000000..a786ccb
--- /dev/null
+++ b/scribus/plugins/scriptplugin/cmdgetprop.cpp
@@ -0,0 +1,345 @@
+/*
+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 "cmdgetprop.h"
+#include "cmdutil.h"
+#include "scribuscore.h"
+
+/* getObjectType(name) */
+PyObject *scribus_getobjecttype(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ PageItem *item = NULL;
+ QString result = "";
+
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+
+ if(!checkHaveDocument())
+ return NULL;
+
+ item = GetUniqueItem(QString::fromUtf8(Name));
+ if (item == NULL)
+ return NULL;
+
+ if (item->itemType() == PageItem::TextFrame) {
+ result = "TextFrame";
+ } else if (item->itemType() == PageItem::PathText) {
+ result = "PathText";
+ } else if (item->itemType() == PageItem::ImageFrame) {
+ result = "ImageFrame";
+ } else if (item->itemType() == PageItem::Line) {
+ result = "Line";
+ } else if (item->itemType() == PageItem::Polygon) {
+ result = "Polygon";
+ } else if (item->itemType() == PageItem::PolyLine) {
+ result = "Polyline";
+ } else if (item->itemType() == PageItem::LatexFrame) {
+ result = "LatexFrame";
+ } else if (item->itemType() == PageItem::Multiple) {
+ result = "Multiple";
+ }
+
+ return PyString_FromString(result.toUtf8());
+}
+
+PyObject *scribus_getfillcolor(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyString_FromString(i->fillColor().toUtf8()) : NULL;
+}
+
+PyObject *scribus_getfilltrans(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyFloat_FromDouble(static_cast<double>(1.0 - i->fillTransparency())) : NULL;
+}
+
+PyObject *scribus_getfillblend(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->fillBlendmode())) : NULL;
+}
+
+PyObject *scribus_getlinecolor(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ PageItem *it;
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ it = GetUniqueItem(QString::fromUtf8(Name));
+ if (it == NULL)
+ return NULL;
+ if ((it->HasSel) && ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText)))
+ {
+ for (int b = 0; b < it->itemText.length(); ++b)
+ {
+ if (it->itemText.selected(b))
+ return PyString_FromString(it->itemText.charStyle(b).fillColor().toUtf8());
+ }
+ }
+ else
+ return PyString_FromString(it->lineColor().toUtf8());
+ PyErr_SetString(NotFoundError, QObject::tr("Color not found - python error", "python error").toLocal8Bit().constData());
+ return NULL;
+}
+
+PyObject *scribus_getlinetrans(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyFloat_FromDouble(static_cast<double>(1.0 - i->lineTransparency())) : NULL;
+}
+
+PyObject *scribus_getlineblend(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->lineBlendmode())) : NULL;
+}
+
+PyObject *scribus_getlinewidth(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyFloat_FromDouble(static_cast<double>(i->lineWidth())) : NULL;
+}
+
+PyObject *scribus_getlineshade(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ PageItem *it;
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ it = GetUniqueItem(QString::fromUtf8(Name));
+ if (it == NULL)
+ return NULL;
+ if ((it->HasSel) && ((it->itemType() == PageItem::TextFrame) || (it->itemType() == PageItem::PathText)))
+ {
+ for (int b = 0; b < it->itemText.length(); ++b)
+ {
+ if (it->itemText.selected(b))
+ return PyInt_FromLong(static_cast<long>(it->itemText.charStyle(b).fillShade()));
+ }
+ }
+ else
+ return PyInt_FromLong(static_cast<long>(it->lineShade()));
+ return PyInt_FromLong(0L);
+}
+
+PyObject *scribus_getlinejoin(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->PLineJoin)) : NULL;
+}
+
+PyObject *scribus_getlinecap(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->PLineEnd)) : NULL;
+}
+
+PyObject *scribus_getlinestyle(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->PLineArt)) : NULL;
+}
+
+PyObject *scribus_getfillshade(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->fillShade())) : NULL;
+}
+
+PyObject *scribus_getcornerrad(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyInt_FromLong(static_cast<long>(i->cornerRadius())) : NULL;
+}
+
+PyObject *scribus_getimgscale(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? Py_BuildValue("(ff)", i->imageXScale() / 72.0 * i->pixm.imgInfo.xres, i->imageYScale() / 72.0 * i->pixm.imgInfo.yres) : NULL;
+}
+
+PyObject *scribus_getimgname(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyString_FromString(i->Pfile.toUtf8()) : NULL;
+}
+
+PyObject *scribus_getposi(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ if (!i)
+ return NULL;
+ return Py_BuildValue("(ff)", docUnitXToPageX(i->xPos()),
+ docUnitYToPageY(i->yPos()));
+}
+
+PyObject *scribus_getsize(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return (i != NULL) ? Py_BuildValue("(ff)", PointToValue(i->width()), PointToValue(i->height())) : NULL;
+}
+
+PyObject *scribus_getrotation(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ if (!PyArg_ParseTuple(args, "|es", "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ return i != NULL ? PyFloat_FromDouble(static_cast<double>(i->rotation() * -1)) : NULL;
+}
+
+PyObject *scribus_getallobj(PyObject* /* self */, PyObject* args)
+{
+ PyObject *l;
+ int typ = -1;
+ uint counter = 0;
+ uint counter2 = 0;
+ uint pageNr = ScCore->primaryMainWindow()->doc->currentPageNumber();
+ if (!PyArg_ParseTuple(args, "|i", &typ))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ // have doc already
+ if (typ != -1)
+ {
+ for (int lam2 = 0; lam2 < ScCore->primaryMainWindow()->doc->Items->count(); ++lam2)
+ {
+ if ((ScCore->primaryMainWindow()->doc->Items->at(lam2)->itemType() == typ) && (pageNr == static_cast<uint>(ScCore->primaryMainWindow()->doc->Items->at(lam2)->OwnPage)))
+ counter++;
+ }
+ }
+ else
+ {
+ for (int lam2 = 0; lam2 < ScCore->primaryMainWindow()->doc->Items->count(); ++lam2)
+ {
+ if (pageNr == static_cast<uint>(ScCore->primaryMainWindow()->doc->Items->at(lam2)->OwnPage))
+ counter++;
+ }
+ }
+
+ l = PyList_New(counter);
+ for (int lam=0; lam < ScCore->primaryMainWindow()->doc->Items->count(); ++lam)
+ {
+ if (pageNr == static_cast<uint>(ScCore->primaryMainWindow()->doc->Items->at(lam)->OwnPage))
+ {
+ if (typ != -1)
+ {
+ if (ScCore->primaryMainWindow()->doc->Items->at(lam)->itemType() == typ)
+ {
+ PyList_SetItem(l, counter2, PyString_FromString(ScCore->primaryMainWindow()->doc->Items->at(lam)->itemName().toUtf8()));
+ counter2++;
+ }
+ }
+ else
+ {
+ PyList_SetItem(l, counter2, PyString_FromString(ScCore->primaryMainWindow()->doc->Items->at(lam)->itemName().toUtf8()));
+ counter2++;
+ }
+ }
+ }
+ return l;
+}
+
+/*! HACK: this removes "warning: 'blah' defined but not used" compiler warnings
+with header files structure untouched (docstrings are kept near declarations)
+PV */
+void cmdgetpropdocwarnings()
+{
+ QStringList s;
+ s << scribus_getobjecttype__doc__ << scribus_getfillcolor__doc__
+ << scribus_getfilltrans__doc__ << scribus_getfillblend__doc__
+ << scribus_getlinecolor__doc__ << scribus_getlinetrans__doc__
+ << scribus_getlineblend__doc__ << scribus_getlinewidth__doc__
+ << scribus_getlineshade__doc__ << scribus_getlinejoin__doc__
+ << scribus_getlinecap__doc__ << scribus_getlinestyle__doc__
+ << scribus_getfillshade__doc__ << scribus_getcornerrad__doc__
+ << scribus_getimgscale__doc__ << scribus_getimgname__doc__
+ << scribus_getposi__doc__ << scribus_getsize__doc__
+ << scribus_getrotation__doc__ << scribus_getallobj__doc__;
+}