Author: jghali
Date: Mon Sep 28 22:48:43 2020
New Revision: 24043

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24043
Log:
#16254: Add getCellText() function scripter

Modified:
    trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.cpp
    trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.h
    trunk/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp
    trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.cpp
    trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.h
    trunk/Scribus/scribus/plugins/scriptplugin_py2x/scriptplugin.cpp

Modified: trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.cpp      (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.cpp      Mon Sep 28 
22:48:43 2020
@@ -10,7 +10,50 @@
 #include "cmdcell.h"
 #include "cmdutil.h"
 #include "pageitem_table.h"
+#include "pageitem_textframe.h"
 #include "tableborder.h"
+
+PyObject *scribus_getcelltext(PyObject* /* self */, PyObject* args)
+{
+       char *Name = const_cast<char*>("");
+       int row, column;
+       if (!PyArg_ParseTuple(args, "ii|es", &row, &column, "utf-8", &Name))
+               return nullptr;
+       if (!checkHaveDocument())
+               return nullptr;
+       PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+       if (i == nullptr)
+               return nullptr;
+       PageItem_Table *table = i->asTable();
+       if (!table)
+       {
+               PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot get 
cell text on a non-table item.","python error").toLocal8Bit().constData());
+               return nullptr;
+       }
+       if (column < 0 || column >= table->columns() || row < 0 || row >= 
table->rows())
+       {
+               PyErr_SetString(PyExc_ValueError, QObject::tr("The cell %1,%2 
does not exist in table", "python 
error").arg(row).arg(column).toLocal8Bit().constData());
+               return nullptr;
+       }
+
+       PageItem* textFrame = table->cellAt(row, column).textFrame();
+       const StoryText& story = textFrame->itemText;
+       QString text;
+       text.reserve(story.hasSelection() ? story.selectionLength() : 
story.length());
+       for (int i = 0; i < story.length(); i++)
+       {
+               if (textFrame->HasSel)
+               {
+                       if (story.selected(i))
+                               text += story.text(i);
+               }
+               else
+               {
+                       text += story.text(i);
+               }
+       }
+       return PyUnicode_FromString(text.toUtf8());
+}
 
 PyObject *scribus_setcelltext(PyObject* /* self */, PyObject* args)
 {
@@ -61,6 +104,9 @@
                PyErr_SetString(PyExc_ValueError, QObject::tr("The cell %1,%2 
does not exist in table", "python 
error").arg(row).arg(column).toLocal8Bit().constData());
                return nullptr;
        }
+
+
+
        return PyUnicode_FromString(table->cellAt(row, 
column).styleName().toUtf8());
 }
 
@@ -461,6 +507,7 @@
          << scribus_getcellfillcolor__doc__
          << scribus_getcellrowspan__doc__
          << scribus_getcellstyle__doc__
+         << scribus_getcelltext__doc__
          << scribus_setcellbottomborder__doc__
          << scribus_setcellbottompadding__doc__
          << scribus_setcellfillcolor__doc__

Modified: trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.h
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.h        (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin/cmdcell.h        Mon Sep 28 
22:48:43 2020
@@ -16,6 +16,19 @@
 #define CMDCELL_H
 
 /*! docstring */
+PyDoc_STRVAR(scribus_getcelltext__doc__,
+QT_TR_NOOP("getCellText(row, column, [\"name\"]) -> string\n\
+\n\
+Returns the text content of the cell at \"row\", \"column\" in the table 
\"name\".\n\
+If cell has some text selected, the selected text is returned.\n\
+If \"name\" is not given the currently selected item is used.\n\
+\n\
+May throw ValueError if the cell does not exist.\n\
+"));
+/*! Get cell text */
+PyObject *scribus_getcelltext(PyObject * /*self*/, PyObject* args);
+
+/*! docstring */
 PyDoc_STRVAR(scribus_setcelltext__doc__,
 QT_TR_NOOP("setCellText(row, column, text, [\"name\"])\n\
 \n\

Modified: trunk/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp Mon Sep 28 
22:48:43 2020
@@ -334,11 +334,12 @@
        {const_cast<char*>("getAllObjects"), (PyCFunction)scribus_getallobj, 
METH_VARARGS|METH_KEYWORDS, tr(scribus_getallobj__doc__)},
        {const_cast<char*>("getAllStyles"), 
(PyCFunction)scribus_getparagraphstyles, METH_NOARGS, 
tr(scribus_getallstyles__doc__)}, //Deprecated
        {const_cast<char*>("getAllText"), scribus_getalltext, METH_VARARGS, 
tr(scribus_getalltext__doc__)},
+       {const_cast<char*>("getCellColumnSpan"), scribus_getcellcolumnspan, 
METH_VARARGS, tr(scribus_getcellcolumnspan__doc__)},
+       {const_cast<char*>("getCellFillColor"), scribus_getcellfillcolor, 
METH_VARARGS, tr(scribus_getcellfillcolor__doc__)},
+       {const_cast<char*>("getCellRowSpan"), scribus_getcellrowspan, 
METH_VARARGS, tr(scribus_getcellrowspan__doc__)},
        {const_cast<char*>("getCellStyle"), scribus_getcellstyle, METH_VARARGS, 
tr(scribus_getcellstyle__doc__)},
        {const_cast<char*>("getCellStyles"), 
(PyCFunction)scribus_getcellstyles, METH_VARARGS, 
tr(scribus_getcellstyles__doc__)},
-       {const_cast<char*>("getCellColumnSpan"), scribus_getcellcolumnspan, 
METH_VARARGS, tr(scribus_getcellcolumnspan__doc__)},
-       {const_cast<char*>("getCellRowSpan"), scribus_getcellrowspan, 
METH_VARARGS, tr(scribus_getcellrowspan__doc__)},
-       {const_cast<char*>("getCellFillColor"), scribus_getcellfillcolor, 
METH_VARARGS, tr(scribus_getcellfillcolor__doc__)},
+       {const_cast<char*>("getCellText"), scribus_getcelltext, METH_VARARGS, 
tr(scribus_getcelltext__doc__)},
        {const_cast<char*>("getCharacterStyle"), scribus_getcharacterstyle, 
METH_VARARGS, tr(scribus_getcharacterstyle__doc__) },
        {const_cast<char*>("getCharStyles"), 
(PyCFunction)scribus_getcharstylenames, METH_NOARGS, 
tr(scribus_getcharstylenames__doc__)},
        {const_cast<char*>("getColorNames"), (PyCFunction)scribus_colornames, 
METH_NOARGS, tr(scribus_colornames__doc__)},

Modified: trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.cpp (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.cpp Mon Sep 28 
22:48:43 2020
@@ -12,6 +12,48 @@
 #include "pageitem_table.h"
 #include "tableborder.h"
 
+PyObject *scribus_getcelltext(PyObject* /* self */, PyObject* args)
+{
+       char *Name = const_cast<char*>("");
+       int row, column;
+       if (!PyArg_ParseTuple(args, "ii|es", &row, &column, "utf-8", &Name))
+               return nullptr;
+       if (!checkHaveDocument())
+               return nullptr;
+       PageItem *i = GetUniqueItem(QString::fromUtf8(Name));
+       if (i == nullptr)
+               return nullptr;
+       PageItem_Table *table = i->asTable();
+       if (!table)
+       {
+               PyErr_SetString(WrongFrameTypeError, QObject::tr("Cannot get 
cell text on a non-table item.","python error").toLocal8Bit().constData());
+               return nullptr;
+       }
+       if (column < 0 || column >= table->columns() || row < 0 || row >= 
table->rows())
+       {
+               PyErr_SetString(PyExc_ValueError, QObject::tr("The cell %1,%2 
does not exist in table", "python 
error").arg(row).arg(column).toLocal8Bit().constData());
+               return nullptr;
+       }
+
+       PageItem* textFrame = table->cellAt(row, column).textFrame();
+       const StoryText& story = textFrame->itemText;
+       QString text;
+       text.reserve(story.hasSelection() ? story.selectionLength() : 
story.length());
+       for (int i = 0; i < story.length(); i++)
+       {
+               if (textFrame->HasSel)
+               {
+                       if (story.selected(i))
+                               text += story.text(i);
+               }
+               else
+               {
+                       text += story.text(i);
+               }
+       }
+       return PyString_FromString(text.toUtf8());
+}
+
 PyObject *scribus_setcelltext(PyObject* /* self */, PyObject* args)
 {
        char *Name = const_cast<char*>("");
@@ -461,6 +503,7 @@
          << scribus_getcellfillcolor__doc__
          << scribus_getcellrowspan__doc__
          << scribus_getcellstyle__doc__
+         << scribus_getcelltext__doc__
          << scribus_setcellbottomborder__doc__
          << scribus_setcellbottompadding__doc__
          << scribus_setcellfillcolor__doc__

Modified: trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.h
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.h   (original)
+++ trunk/Scribus/scribus/plugins/scriptplugin_py2x/cmdcell.h   Mon Sep 28 
22:48:43 2020
@@ -16,6 +16,19 @@
 #define CMDCELL_H
 
 /*! docstring */
+PyDoc_STRVAR(scribus_getcelltext__doc__,
+QT_TR_NOOP("getCellText(row, column, [\"name\"]) -> string\n\
+\n\
+Returns the text content of the cell at \"row\", \"column\" in the table 
\"name\".\n\
+If cell has some text selected, the selected text is returned.\n\
+If \"name\" is not given the currently selected item is used.\n\
+\n\
+May throw ValueError if the cell does not exist.\n\
+"));
+/*! Get cell text */
+PyObject *scribus_getcelltext(PyObject * /*self*/, PyObject* args);
+
+/*! docstring */
 PyDoc_STRVAR(scribus_setcelltext__doc__,
 QT_TR_NOOP("setCellText(row, column, text, [\"name\"])\n\
 \n\

Modified: trunk/Scribus/scribus/plugins/scriptplugin_py2x/scriptplugin.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24043&path=/trunk/Scribus/scribus/plugins/scriptplugin_py2x/scriptplugin.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/scriptplugin_py2x/scriptplugin.cpp    
(original)
+++ trunk/Scribus/scribus/plugins/scriptplugin_py2x/scriptplugin.cpp    Mon Sep 
28 22:48:43 2020
@@ -334,11 +334,12 @@
        {const_cast<char*>("getAllObjects"), (PyCFunction)scribus_getallobj, 
METH_VARARGS|METH_KEYWORDS, tr(scribus_getallobj__doc__)},
        {const_cast<char*>("getAllStyles"), 
(PyCFunction)scribus_getparagraphstyles, METH_NOARGS, 
tr(scribus_getallstyles__doc__)}, //Deprecated
        {const_cast<char*>("getAllText"), scribus_getalltext, METH_VARARGS, 
tr(scribus_getalltext__doc__)},
+       {const_cast<char*>("getCellColumnSpan"), scribus_getcellcolumnspan, 
METH_VARARGS, tr(scribus_getcellcolumnspan__doc__)},
+       {const_cast<char*>("getCellFillColor"), scribus_getcellfillcolor, 
METH_VARARGS, tr(scribus_getcellfillcolor__doc__)},
+       {const_cast<char*>("getCellRowSpan"), scribus_getcellrowspan, 
METH_VARARGS, tr(scribus_getcellrowspan__doc__)},
        {const_cast<char*>("getCellStyle"), scribus_getcellstyle, METH_VARARGS, 
tr(scribus_getcellstyle__doc__)},
        {const_cast<char*>("getCellStyles"), 
(PyCFunction)scribus_getcellstyles, METH_VARARGS, 
tr(scribus_getcellstyles__doc__)},
-       {const_cast<char*>("getCellColumnSpan"), scribus_getcellcolumnspan, 
METH_VARARGS, tr(scribus_getcellcolumnspan__doc__)},
-       {const_cast<char*>("getCellRowSpan"), scribus_getcellrowspan, 
METH_VARARGS, tr(scribus_getcellrowspan__doc__)},
-       {const_cast<char*>("getCellFillColor"), scribus_getcellfillcolor, 
METH_VARARGS, tr(scribus_getcellfillcolor__doc__)},
+       {const_cast<char*>("getCellText"), scribus_getcelltext, METH_VARARGS, 
tr(scribus_getcelltext__doc__)},
        {const_cast<char*>("getCharacterStyle"), scribus_getcharacterstyle, 
METH_VARARGS, tr(scribus_getcharacterstyle__doc__) },
        {const_cast<char*>("getCharStyles"), 
(PyCFunction)scribus_getcharstylenames, METH_NOARGS, 
tr(scribus_getcharstylenames__doc__)},
        {const_cast<char*>("getColorNames"), (PyCFunction)scribus_colornames, 
METH_NOARGS, tr(scribus_colornames__doc__)},


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to