View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0007806 | Scribus | Scripter | public | 2009-02-19 01:06 | 2009-02-19 22:13 |
Reporter | OssiLehtinen | Assigned To | jghali | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Platform | Linux | OS | Ubuntu | OS Version | 8.10 |
Fixed in Version | 1.3.5svn | ||||
Summary | 0007806: SetTextScaling function for the scripter | ||||
Description | The attached patch holds two scripter functions SetTextScaling and SetTextScalingV for manipulating the character scaling of a text frame. Hope I didn't just miss those in the API :) | ||||
Tags | No tags attached. | ||||
Patch | |||||
2009-02-19 01:06
|
setTextScaling.diff (5,134 bytes)
Index: Scribus/scribus/plugins/scriptplugin/cmdtext.cpp =================================================================== --- Scribus/scribus/plugins/scriptplugin/cmdtext.cpp (revision 13197) +++ Scribus/scribus/plugins/scriptplugin/cmdtext.cpp (working copy) @@ -684,6 +694,77 @@ Py_RETURN_NONE; } + +PyObject *scribus_settextscaling(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + double sc; + if (!PyArg_ParseTuple(args, "d|es", &sc, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if (sc < 10) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Character scaling out of bounds, must be >= 10","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + if (!i->asTextFrame()) + { + PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set character scaling on a non-text frame.","python error").toLocal8Bit().constData()); + return NULL; + } + + int Apm = ScCore->primaryMainWindow()->doc->appMode; + ScCore->primaryMainWindow()->doc->m_Selection->clear(); + ScCore->primaryMainWindow()->doc->m_Selection->addItem(i); + if (i->HasSel) + ScCore->primaryMainWindow()->doc->appMode = modeEdit; + ScCore->primaryMainWindow()->doc->itemSelection_SetScaleH(qRound(sc * 10)); + ScCore->primaryMainWindow()->doc->appMode = Apm; + ScCore->primaryMainWindow()->view->Deselect(); + + Py_RETURN_NONE; +} + + +PyObject *scribus_settextscalingv(PyObject* /* self */, PyObject* args) +{ + char *Name = const_cast<char*>(""); + double sc; + if (!PyArg_ParseTuple(args, "d|es", &sc, "utf-8", &Name)) + return NULL; + if(!checkHaveDocument()) + return NULL; + if (sc < 10) + { + PyErr_SetString(PyExc_ValueError, QObject::tr("Character scaling out of bounds, must be >= 10","python error").toLocal8Bit().constData()); + return NULL; + } + PageItem *i = GetUniqueItem(QString::fromUtf8(Name)); + if (i == NULL) + return NULL; + if (!i->asTextFrame()) + { + PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot set character scaling on a non-text frame.","python error").toLocal8Bit().constData()); + return NULL; + } + + int Apm = ScCore->primaryMainWindow()->doc->appMode; + ScCore->primaryMainWindow()->doc->m_Selection->clear(); + ScCore->primaryMainWindow()->doc->m_Selection->addItem(i); + if (i->HasSel) + ScCore->primaryMainWindow()->doc->appMode = modeEdit; + ScCore->primaryMainWindow()->doc->itemSelection_SetScaleV(qRound(sc * 10)); + ScCore->primaryMainWindow()->doc->appMode = Apm; + ScCore->primaryMainWindow()->view->Deselect(); + + Py_RETURN_NONE; +} + + PyObject *scribus_settextshade(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); Index: Scribus/scribus/plugins/scriptplugin/cmdtext.h =================================================================== --- Scribus/scribus/plugins/scriptplugin/cmdtext.h (revision 13197) +++ Scribus/scribus/plugins/scriptplugin/cmdtext.h (working copy) @@ -284,6 +284,28 @@ PyObject *scribus_settextstroke(PyObject * /*self*/, PyObject* args); /*! docstring */ +PyDoc_STRVAR(scribus_settextscalingv__doc__, +QT_TR_NOOP("setTextScalingV(scale, [\"name\"])\n\ +\n\ +Sets the vertical character scaling of the object \"name\" to \"scale\" in percent.\n\ +If \"name\" is not given the currently selected item is\n\ +used.\n\ +")); +/*! Set text shde */ +PyObject *scribus_settextscalingv(PyObject * /*self*/, PyObject* args); + +/*! docstring */ +PyDoc_STRVAR(scribus_settextscaling__doc__, +QT_TR_NOOP("setTextScaling(scale, [\"name\"])\n\ +\n\ +Sets the horizontal character scaling of the object \"name\" to \"scale\" in percent.\n\ +If \"name\" is not given the currently selected item is\n\ +used.\n\ +")); +/*! Set text shde */ +PyObject *scribus_settextscaling(PyObject * /*self*/, PyObject* args); + +/*! docstring */ PyDoc_STRVAR(scribus_settextshade__doc__, QT_TR_NOOP("setTextShade(shade, [\"name\"])\n\ \n\ Index: Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp =================================================================== --- Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (revision 13197) +++ Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (working copy) @@ -458,6 +458,8 @@ {const_cast<char*>("setTextAlignment"), scribus_setalign, METH_VARARGS, tr(scribus_setalign__doc__)}, {const_cast<char*>("setTextColor"), scribus_settextfill, METH_VARARGS, tr(scribus_settextfill__doc__)}, {const_cast<char*>("setText"), scribus_setboxtext, METH_VARARGS, tr(scribus_setboxtext__doc__)}, + {const_cast<char*>("setTextScaling"), scribus_settextscaling, METH_VARARGS, tr(scribus_settextscaling__doc__)}, + {const_cast<char*>("setTextScalingV"), scribus_settextscalingv, METH_VARARGS, tr(scribus_settextscalingv__doc__)}, {const_cast<char*>("setTextShade"), scribus_settextshade, METH_VARARGS, tr(scribus_settextshade__doc__)}, {const_cast<char*>("setTextStroke"), scribus_settextstroke, METH_VARARGS, tr(scribus_settextstroke__doc__)}, {const_cast<char*>("setUnit"), scribus_setunit, METH_VARARGS, tr(scribus_setunit__doc__)}, |
|
Committed with some minor modifications for consistency. Thanks for the patch! |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-02-19 01:06 | OssiLehtinen | New Issue | |
2009-02-19 01:06 | OssiLehtinen | File Added: setTextScaling.diff | |
2009-02-19 22:10 | jghali | Note Added: 0021170 | |
2009-02-19 22:10 | jghali | Status | new => resolved |
2009-02-19 22:10 | jghali | Fixed in Version | => 1.3.5svn |
2009-02-19 22:10 | jghali | Resolution | open => fixed |
2009-02-19 22:10 | jghali | Assigned To | => jghali |
2009-02-19 22:13 | cbradney | Status | resolved => closed |