PyObject *scribus_removetablerows(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); int index, numRows; if (!PyArg_ParseTuple(args, "ii|es", &index, &numRows, "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 remove rows from a non-table item.","python error").toLocal8Bit().constData()); return nullptr; } if (index < 0 || index >= table->rows()) { PyErr_SetString(PyExc_ValueError, QObject::tr("Table row index out of bounds, must be >= 0 and < %1", "python error").arg(table->rows()).toLocal8Bit().constData()); return nullptr; } if (numRows < 1 || numRows >= table->rows()) { PyErr_SetString(PyExc_ValueError, QObject::tr("Table row count out of bounds, must be >= 1 and < %1", "python error").arg(table->rows()).toLocal8Bit().constData()); return nullptr; } if (index + numRows > table->rows()) { PyErr_SetString(PyExc_ValueError, QObject::tr("Row deletion range out of bounds, index + numRows must be <= %1", "python error").arg(table->rows()).toLocal8Bit().constData()); return nullptr; } table->removeRows(index, numRows); Py_RETURN_NONE; }
PyObject *scribus_mergetablecells(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); int row, column, numRows, numColumns; if (!PyArg_ParseTuple(args, "iiii|es", &row, &column, &numRows, &numColumns, "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 merge cells on a non-table item.","python error").toLocal8Bit().constData()); return nullptr; } if (numRows < 1 || numColumns < 1) { PyErr_SetString(PyExc_ValueError, QObject::tr("Number of rows and columns must both be > 0.", "python error").toLocal8Bit().constData()); return nullptr; } if (row < 0 || row >= table->rows() || column < 0 || column >= table->columns() || row + numRows - 1 < 0 || row + numRows - 1 >= table->rows() || column + numColumns - 1 < 0 || column + numColumns - 1 >= table->columns()) { PyErr_SetString(PyExc_ValueError, QObject::tr("The area %1,%2 %3x%4 is not inside the table.", "python error").arg(row).arg(column).arg(numColumns).arg(numRows).toLocal8Bit().constData()); return nullptr; } table->mergeCells(row, column, numRows, numColumns); Py_RETURN_NONE; }
PyObject *scribus_resizetablerow(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); int row; double height; if (!PyArg_ParseTuple(args, "id|es", &row, &height, "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 resize row on a non-table item.","python error").toLocal8Bit().constData()); return nullptr; } if (row < 0 || row >= table->rows()) { PyErr_SetString(PyExc_ValueError, QObject::tr("Table row index out of bounds, must be >= 0 and < %1", "python error").arg(table->rows()).toLocal8Bit().constData()); return nullptr; } if (height <= 0.0) { PyErr_SetString(PyExc_ValueError, QObject::tr("Table row height must be > 0.0", "python error").toLocal8Bit().constData()); return nullptr; } table->resizeRow(row, height); Py_RETURN_NONE; }
PyObject *scribus_gettablerows(PyObject* /* self */, PyObject* args) { char *Name = const_cast<char*>(""); if (!PyArg_ParseTuple(args, "|es", "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 table row count of non-table item.","python error").toLocal8Bit().constData()); return nullptr; } return PyInt_FromLong(static_cast<long>(table->rows())); }