View Issue Details

IDProjectCategoryView StatusLast Update
0007806ScribusScripterpublic2009-02-19 22:13
ReporterOssiLehtinen Assigned Tojghali  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
PlatformLinuxOSUbuntuOS Version8.10
Fixed in Version1.3.5svn 
Summary0007806: SetTextScaling function for the scripter
DescriptionThe 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 :)
TagsNo tags attached.
Patch

Activities

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__)},
setTextScaling.diff (5,134 bytes)   

jghali

2009-02-19 22:10

administrator   ~0021170

Committed with some minor modifications for consistency. Thanks for the patch!

Issue History

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