| Attached Files | text_distances.diff [^] (5,701 bytes) 08-Jun-29 16:58 [Show Content] [Hide Content]Index: Scribus/scribus/plugins/scriptplugin/cmdtext.cpp
===================================================================
--- Scribus/scribus/plugins/scriptplugin/cmdtext.cpp (revision 12326)
+++ Scribus/scribus/plugins/scriptplugin/cmdtext.cpp (working copy)
@@ -116,6 +116,28 @@
return PyFloat_FromDouble(static_cast<double>(i->lineSpacing()));
}
+PyObject *scribus_gettextdistances(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 == NULL)
+ return NULL;
+ if (!i->asTextFrame())
+ {
+ PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot get text distances of non-text frame.","python error"));
+ return NULL;
+ }
+ return Py_BuildValue("(dddd)",
+ PointToValue(i->textToFrameDistLeft()),
+ PointToValue(i->textToFrameDistRight()),
+ PointToValue(i->textToFrameDistTop()),
+ PointToValue(i->textToFrameDistBottom()));
+}
+
PyObject *scribus_getcolumngap(PyObject* /* self */, PyObject* args)
{
char *Name = const_cast<char*>("");
@@ -530,6 +552,32 @@
return Py_None;
}
+PyObject *scribus_settextdistances(PyObject* /* self */, PyObject* args)
+{
+ char *Name = const_cast<char*>("");
+ double l,r,t,b;
+ if (!PyArg_ParseTuple(args, "dddd|es", &l, &r, &t, &b, "utf-8", &Name))
+ return NULL;
+ if(!checkHaveDocument())
+ return NULL;
+ if (l < 0.0 || r < 0.0 || t < 0.0 || b < 0.0)
+ {
+ PyErr_SetString(PyExc_ValueError, QObject::tr("Text distances out of bounds, must be positive.","python error"));
+ return NULL;
+ }
+ PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+ if (i == NULL)
+ return NULL;
+ if (!i->asTextFrame())
+ {
+ PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set text distances on a non-text frame.","python error"));
+ return NULL;
+ }
+ i->setTextToFrameDist(ValueToPoint(l), ValueToPoint(r), ValueToPoint(t), ValueToPoint(b));
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
PyObject *scribus_setcolumngap(PyObject* /* self */, PyObject* args)
{
char *Name = const_cast<char*>("");
Index: Scribus/scribus/plugins/scriptplugin/cmdtext.h
===================================================================
--- Scribus/scribus/plugins/scriptplugin/cmdtext.h (revision 12326)
+++ Scribus/scribus/plugins/scriptplugin/cmdtext.h (working copy)
@@ -81,6 +81,17 @@
PyObject *scribus_getlinespace(PyObject */*self*/, PyObject* args);
/*! docstring */
+PyDoc_STRVAR(scribus_gettextdistances__doc__,
+QT_TR_NOOP("getTextDistances([\"name\"]) -> tuple\n\
+\n\
+Returns the text distances of the text frame \"name\" expressed in points. The\n\
+distances are returned as a tuple like (left, right, top, bottom). If \"name\"\n\
+is not given the currently selected item is used.\n\
+"));
+/*! Get text distances */
+PyObject *scribus_gettextdistances(PyObject */*self*/, PyObject* args);
+
+/*! docstring */
PyDoc_STRVAR(scribus_getcolumngap__doc__,
QT_TR_NOOP("getColumnGap([\"name\"]) -> float\n\
\n\
@@ -179,6 +190,19 @@
PyObject *scribus_setcolumngap(PyObject */*self*/, PyObject* args);
/*! docstring */
+PyDoc_STRVAR(scribus_settextdistances__doc__,
+QT_TR_NOOP("setTextDistances(left, right, top, bottom, [\"name\"])\n\
+\n\
+Sets the text distances of the text frame \"name\" to the values \"left\"\n\
+\"right\", \"top\" and \"bottom\". If \"name\" is not given the currently\n\
+selected item is used.\n\
+\n\
+May throw ValueError if any of the distances are out of bounds (must be positive).\n\
+"));
+/*! Set text distances */
+PyObject *scribus_settextdistances(PyObject */*self*/, PyObject* args);
+
+/*! docstring */
PyDoc_STRVAR(scribus_setcolumns__doc__,
QT_TR_NOOP("setColumns(nr, [\"name\"])\n\
\n\
Index: Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp
===================================================================
--- Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (revision 12326)
+++ Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (working copy)
@@ -306,6 +306,7 @@
{const_cast<char*>("getColorNames"), (PyCFunction)scribus_colornames, METH_NOARGS, tr(scribus_colornames__doc__)},
{const_cast<char*>("getColor"), scribus_getcolor, METH_VARARGS, tr(scribus_getcolor__doc__)},
{const_cast<char*>("getColorAsRGB"), scribus_getcolorasrgb, METH_VARARGS, tr(scribus_getcolorasrgb__doc__)},
+ {const_cast<char*>("getTextDistances"), scribus_gettextdistances, METH_VARARGS, tr(scribus_gettextdistances__doc__)},
{const_cast<char*>("getColumnGap"), scribus_getcolumngap, METH_VARARGS, tr(scribus_getcolumngap__doc__)},
{const_cast<char*>("getColumns"), scribus_getcolumns, METH_VARARGS, tr(scribus_getcolumns__doc__)},
{const_cast<char*>("getCornerRadius"), scribus_getcornerrad, METH_VARARGS, tr(scribus_getcornerrad__doc__)},
@@ -388,6 +389,7 @@
{const_cast<char*>("setActiveLayer"), scribus_setactlayer, METH_VARARGS, tr(scribus_setactlayer__doc__)},
{const_cast<char*>("setPDFBookmark"), scribus_setpdfbookmark, METH_VARARGS, tr(scribus_setpdfbookmark__doc__)},
{const_cast<char*>("isPDFBookmark"), scribus_ispdfbookmark, METH_VARARGS, tr(scribus_ispdfbookmark__doc__)},
+ {const_cast<char*>("setTextDistances"), scribus_settextdistances, METH_VARARGS, tr(scribus_settextdistances__doc__)},
{const_cast<char*>("setColumnGap"), scribus_setcolumngap, METH_VARARGS, tr(scribus_setcolumngap__doc__)},
{const_cast<char*>("setColumns"), scribus_setcolumns, METH_VARARGS, tr(scribus_setcolumns__doc__)},
{const_cast<char*>("setCornerRadius"), scribus_setcornerrad, METH_VARARGS, tr(scribus_setcornerrad__doc__)},
distances.py [^] (657 bytes) 08-Jun-29 17:09 |