View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0014848 | Scribus | Scripter | public | 2017-06-04 16:53 | 2017-12-20 20:59 |
Reporter | dockattt | Assigned To | jghali | ||
Priority | normal | Severity | tweak | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.4.svn | ||||
Fixed in Version | 1.5.4.svn | ||||
Summary | 0014848: add optional page keyword argument to getAllObjects | ||||
Description | the python function getAllObjects returns all the objects on the current page. It can be made more useful if it can query other pages with a new keyword argument. The attached patch adds the code and some documentation that makes this work. There also is an undocumented filter/argument in the function(this wasn't added with the patch). Should what it does be put in the pydoc? | ||||
Steps To Reproduce | getAllObjects() getAllObjects(page=apagenumber) | ||||
Tags | No tags attached. | ||||
Patch | Yes | ||||
|
getallobjects.patch (3,465 bytes)
Index: Scribus/scribus/plugins/scriptplugin/cmdgetprop.cpp =================================================================== --- Scribus/scribus/plugins/scriptplugin/cmdgetprop.cpp (revision 22051) +++ Scribus/scribus/plugins/scriptplugin/cmdgetprop.cpp (working copy) @@ -275,7 +275,7 @@ return i != NULL ? PyFloat_FromDouble(static_cast<double>(i->rotation() * -1)) : NULL; } -PyObject *scribus_getallobj(PyObject* /* self */, PyObject* args) +PyObject *scribus_getallobj(PyObject* /* self */, PyObject* args, PyObject *keywds) { PyObject *l; int typ = -1; @@ -282,8 +282,19 @@ uint counter = 0; uint counter2 = 0; uint pageNr = ScCore->primaryMainWindow()->doc->currentPageNumber(); - if (!PyArg_ParseTuple(args, "|i", &typ)) + char *kwlist[] = {const_cast<char*>(""), const_cast<char*>("page"), NULL}; + + + if (!PyArg_ParseTupleAndKeywords(args, keywds, "|ii", kwlist, &typ, &pageNr)) return NULL; + + uint numpages = ScCore->primaryMainWindow()->doc->Pages->count(); + if(pageNr < 0 || pageNr >= numpages){ + PyErr_SetString(PyExc_RuntimeError, QObject::tr("page number is invalid.","python error").toLocal8Bit().constData()); + return NULL; + } + //if (!PyArg_ParseTuple(args, "|i", &typ)) + // return NULL; if(!checkHaveDocument()) return NULL; // have doc already Index: Scribus/scribus/plugins/scriptplugin/cmdgetprop.h =================================================================== --- Scribus/scribus/plugins/scriptplugin/cmdgetprop.h (revision 22051) +++ Scribus/scribus/plugins/scriptplugin/cmdgetprop.h (working copy) @@ -212,12 +212,14 @@ /*! docstring */ PyDoc_STRVAR(scribus_getallobj__doc__, -QT_TR_NOOP("getAllObjects() -> list\n\ +QT_TR_NOOP("getAllObjects([\"page\"]) -> list\n\ \n\ Returns a list containing the names of all objects on the current page.\n\ +Takes an optional keyword argument that changes the page from which the objects are returned\n\ +The page index starts at 0 and goes to the total number of pages - 1.\n\ ")); /*! Returns a list with all objects in page */ -PyObject *scribus_getallobj(PyObject * /*self*/, PyObject* args); +PyObject *scribus_getallobj(PyObject * /*self*/, PyObject* args, PyObject *keywds); /*! docstring */ PyDoc_STRVAR(scribus_getobjectattributes__doc__, Index: Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp =================================================================== --- Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (revision 22051) +++ Scribus/scribus/plugins/scriptplugin/scriptplugin.cpp (working copy) @@ -337,7 +337,7 @@ {const_cast<char*>("fileQuit"), scribus_filequit, METH_VARARGS, tr(scribus_filequit__doc__)}, {const_cast<char*>("flipObject"), scribus_flipobject, METH_VARARGS, tr(scribus_flipobject__doc__)}, {const_cast<char*>("getActiveLayer"), (PyCFunction)scribus_getactlayer, METH_NOARGS, tr(scribus_getactlayer__doc__)}, - {const_cast<char*>("getAllObjects"), scribus_getallobj, METH_VARARGS, tr(scribus_getallobj__doc__)}, + {const_cast<char*>("getAllObjects"), (PyCFunction)scribus_getallobj, METH_VARARGS|METH_KEYWORDS, tr(scribus_getallobj__doc__)}, {const_cast<char*>("getAllStyles"), (PyCFunction)scribus_getstylenames, METH_NOARGS, tr(scribus_getstylenames__doc__)}, {const_cast<char*>("getCharStyles"), (PyCFunction)scribus_getcharstylenames, METH_NOARGS, tr(scribus_getcharstylenames__doc__)}, {const_cast<char*>("getAllText"), scribus_gettext, METH_VARARGS, tr(scribus_gettext__doc__)}, |
|
Patch applied, thanks! |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-06-04 16:53 | dockattt | New Issue | |
2017-06-04 16:53 | dockattt | File Added: getallobjects.patch | |
2017-06-12 19:31 | jghali | Assigned To | => jghali |
2017-06-12 19:31 | jghali | Status | new => resolved |
2017-06-12 19:31 | jghali | Resolution | open => fixed |
2017-06-12 19:31 | jghali | Fixed in Version | => 1.5.4.svn |
2017-06-12 19:31 | jghali | Note Added: 0044046 | |
2017-12-20 20:59 | cbradney | Status | resolved => closed |