View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0016308 | Scribus | Scripter | public | 2020-11-03 15:17 | 2020-11-07 14:52 |
Reporter | ale | Assigned To | ale | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.6.svn | ||||
Fixed in Version | 1.5.6.svn | ||||
Summary | 0016308: Readability and feature fixes for getAllObjects() | ||||
Description | - check for an open doc before reading the doc - use the standard kwargs as the function argument - type is an itemType... - use the same lambda for counting the items and for filtering them (which fixes the bug in the second check) - use the same "not set" value for item types and layers (-1) - made the counters local to the place where they are used ... as said, i would have used append instead of insert, which imo would have made the code slightly more readable. i'm adding a test py script and a sla file to be used with it. they can be used as scribus -g -py /tmp/getAllLayerItems.py -- /tmp/layers.sla | ||||
Tags | No tags attached. | ||||
Patch | Yes | ||||
|
getAllLayerItems.py (612 bytes)
import scribus assert(scribus.getAllObjects() == ['Text1', 'Text2']) assert(scribus.getAllObjects(layer='New Layer 1') == ['Text2']) assert(scribus.getAllObjects(layer='Background', page=1) == ['Text3']) assert(scribus.getAllObjects(layer='New Layer 1', page=1) == []) assert(scribus.getAllObjects(-1, 1, 'Background') == ['Text3']) assert(scribus.getAllObjects(4, 1, 'Background') == ['Text3']) assert(scribus.getAllObjects(3, 1, 'Background') == []) assert(scribus.getAllObjects(itemType=4, layer='Background', page=1) == ['Text3']) assert(scribus.getAllObjects(itemType=3, layer='Background', page=1) == []) getAllObjects.diff (3,912 bytes)
diff --git a/scribus/plugins/scriptplugin/cmdgetprop.cpp b/scribus/plugins/scriptplugin/cmdgetprop.cpp index cf8ce5ce4..bc0a186a3 100644 --- a/scribus/plugins/scriptplugin/cmdgetprop.cpp +++ b/scribus/plugins/scriptplugin/cmdgetprop.cpp @@ -9,6 +9,8 @@ for which a new license (GPL+exception) is in place. #include "scribuscore.h" #include "scribusdoc.h" +#include <algorithm> + /* getObjectType(name) */ PyObject *scribus_getobjecttype(PyObject* /* self */, PyObject* args) { @@ -308,69 +310,67 @@ PyObject *scribus_getrotation(PyObject* /* self */, PyObject* args) return PyFloat_FromDouble(static_cast<double>(item->rotation() * -1)); } -PyObject *scribus_getallobjects(PyObject* /* self */, PyObject* args, PyObject *keywds) +PyObject *scribus_getallobjects(PyObject* /* self */, PyObject* args, PyObject *kwargs) { - int type = -1; - uint counter = 0; - uint counter2 = 0; + int itemType = -1; + int layerId = -1; + + if (!checkHaveDocument()) + return nullptr; ScribusDoc* currentDoc = ScCore->primaryMainWindow()->doc; - int pageNr = currentDoc->currentPageNumber(); - char *kwlist[] = { const_cast<char*>("type"), const_cast<char*>("page"), const_cast<char*>("layer"), nullptr}; - char* szLayerName = const_cast<char*>(""); - if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iies", kwlist, &type, &pageNr, "utf-8", &szLayerName)) - return nullptr; + int page = currentDoc->currentPageNumber(); + const int numPages = currentDoc->Pages->count(); - if (!checkHaveDocument()) + char *kwlist[] = { const_cast<char*>("itemType"), const_cast<char*>("page"), const_cast<char*>("layer"), nullptr}; + char* szLayerName = const_cast<char*>(""); + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iies", kwlist, &itemType, &page, "utf-8", &szLayerName)) return nullptr; - int numPages = currentDoc->Pages->count(); - if (pageNr < 0 || pageNr >= numPages) + if (page < 0 || page >= numPages) { PyErr_SetString(PyExc_ValueError, QObject::tr("page number is invalid.", "python error").toLocal8Bit().constData()); return nullptr; } - const ScLayer *layer = nullptr; QString layerName = QString::fromUtf8(szLayerName); if (!layerName.isEmpty()) { - layer = currentDoc->Layers.layerByName(layerName); + const auto layer = currentDoc->Layers.layerByName(layerName); if (!layer) { PyErr_SetString(PyExc_ValueError, QObject::tr("layer name is invalid.", "python error").toLocal8Bit().constData()); return nullptr; } + + layerId = layer->ID; } - // have doc already - for (int i = 0; i < currentDoc->Items->count(); ++i) + auto compare = [page, layerId, itemType](PageItem* i) { - PageItem* item = currentDoc->Items->at(i); - if (pageNr != item->OwnPage) - continue; - if ((type != -1) && (item->itemType() != type)) - continue; - if (layer && (layer->ID != item->m_layerID)) - continue; - counter++; - } + return i->OwnPage == page && + (layerId == -1 || i->m_layerID == layerId) && + (itemType == -1 || i->itemType() == itemType); + }; + + const int n = std::count_if(currentDoc->DocItems.begin(), currentDoc->DocItems.end(), compare); - PyObject* pyList = PyList_New(counter); - for (int i = 0; i < currentDoc->Items->count(); ++i) + auto itemsList = PyList_New(n); { - PageItem* item = currentDoc->Items->at(i); - if (pageNr != item->OwnPage) - continue; - if ((type != -1) && (item->itemType() == type)) - continue; - if (layer && (layer->ID != item->m_layerID)) - continue; - PyList_SetItem(pyList, counter2, PyUnicode_FromString(item->itemName().toUtf8())); - counter2++; + int i = 0; + for (const auto& pageItem: currentDoc->DocItems) + { + if (compare(pageItem)) + { + PyList_SetItem(itemsList, i, PyUnicode_FromString(pageItem->itemName().toUtf8())); + i++; + } + } } - return pyList; + + return itemsList; } PyObject *scribus_getobjectattributes(PyObject* /* self */, PyObject* args) layers.sla (17,267 bytes)
<?xml version="1.0" encoding="UTF-8"?> <SCRIBUSUTF8NEW Version="1.5.6.svn"> <DOCUMENT ANZPAGES="2" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="28.346" BORDERRIGHT="28.346" BORDERTOP="28.346" BORDERBOTTOM="28.346" PRESET="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="A4" FIRSTNUM="1" BOOK="0" AUTOSPALTEN="1" ABSTSPALTEN="11" UNITS="1" DFONT="Catamaran Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" TextDistLeft="0" TextDistRight="0" TextDistBottom="0" TextDistTop="0" AUTHOR="" COMMENTS="" KEYWORDS="" PUBLISHER="" DOCDATE="" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="" SUBJECT="" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="100" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="1" HCMS="0" DPSo="0" DPSFo="0" DPuse="0" DPgam="0" DPbla="1" DPPr="Fogra27L CMYK Coated Press" DPIn="sRGB IEC61966-2.1" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="sRGB IEC61966-2.1" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="en_GB" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" SnapToElement="0" MINGRID="20.001" MAJGRID="100.001" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWControl="0" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWLINK="0" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.502" POLYR="0" POLYIR="0" POLYCUR="0" POLYOCUR="0" POLYS="0" arcStartAngle="30" arcSweepAngle="300" spiralStartAngle="0" spiralEndAngle="1080" spiralFactor="1.2" AutoSave="1" AutoSaveTime="600000" AutoSaveCount="1" AutoSaveKeep="0" AUtoSaveInDocDir="1" AutoSaveDir="" ScratchBottom="20.001" ScratchLeft="100.001" ScratchRight="100.001" ScratchTop="20.001" GapHorizontal="0" GapVertical="40.003" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="None" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="1" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" CPICT="None" PICTSHADE="100" CSPICT="None" PICTSSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="0" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="0" dispY="0" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" renderStack="0 1 2 3 4" GridType="0" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PDF 1.4" calligraphicPenFillColor="Black" calligraphicPenLineColor="Black" calligraphicPenFillColorShade="100" calligraphicPenLineColorShade="100" calligraphicPenLineWidth="1" calligraphicPenAngle="0" calligraphicPenWidth="10" calligraphicPenStyle="0"> <CheckProfile Name="PDF 1.3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.5" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF 1.6" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-1a" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="1" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="1" checkFontNotEmbedded="1" checkFontIsOpenType="1" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PDF/X-4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="1" checkFontNotEmbedded="1" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <CheckProfile Name="PostScript" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkPartFilledImageFrames="0" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkNotCMYKOrSpot="0" checkDeviceColorsAndOutputIntent="0" checkFontNotEmbedded="0" checkFontIsOpenType="0" checkAppliedMasterDifferentSide="1" checkEmptyTextFrames="1"/> <COLOR NAME="Black" SPACE="CMYK" C="0" M="0" Y="0" K="100"/> <COLOR NAME="Blue" SPACE="CMYK" C="100" M="100" Y="0" K="0"/> <COLOR NAME="Cyan" SPACE="CMYK" C="100" M="0" Y="0" K="0"/> <COLOR NAME="Green" SPACE="CMYK" C="100" M="0" Y="100" K="0"/> <COLOR NAME="Magenta" SPACE="CMYK" C="0" M="100" Y="0" K="0"/> <COLOR NAME="Red" SPACE="CMYK" C="0" M="100" Y="100" K="0"/> <COLOR NAME="Registration" SPACE="CMYK" C="100" M="100" Y="100" K="100" Register="1"/> <COLOR NAME="White" SPACE="CMYK" C="0" M="0" Y="0" K="0"/> <COLOR NAME="Yellow" SPACE="CMYK" C="0" M="0" Y="100" K="0"/> <HYPHEN/> <STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" DIRECTION="0" LINESPMode="0" LINESP="15" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" ParagraphEffectOffset="0" DROP="0" DROPLIN="2" Bullet="0" Numeration="0" HyphenConsecutiveLines="2" BCOLOR="None" BSHADE="100"/> <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Catamaran Regular" FONTSIZE="12" FONTFEATURES="" FEATURES="inherit" FCOLOR="Black" FSHADE="100" HyphenWordMin="3" SCOLOR="Black" BGCOLOR="None" BGSHADE="100" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="en_GB"/> <TableStyle NAME="Default Table Style" DefaultStyle="1" FillColor="None" FillShade="100"> <TableBorderLeft> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderLeft> <TableBorderRight> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderRight> <TableBorderTop> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderTop> <TableBorderBottom> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderBottom> </TableStyle> <CellStyle NAME="Default Cell Style" DefaultStyle="1" FillColor="None" FillShade="100" LeftPadding="1" RightPadding="1" TopPadding="1" BottomPadding="1"> <TableBorderLeft> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderLeft> <TableBorderRight> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderRight> <TableBorderTop> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderTop> <TableBorderBottom> <TableBorderLine Width="1" PenStyle="1" Color="Black" Shade="100"/> </TableBorderBottom> </CellStyle> <LAYERS NUMMER="0" LEVEL="0" NAME="Background" SICHTBAR="1" DRUCKEN="1" EDIT="1" SELECT="0" FLOW="1" TRANS="1" BLEND="0" OUTL="0" LAYERC="#000000"/> <LAYERS NUMMER="1" LEVEL="1" NAME="New Layer 1" SICHTBAR="1" DRUCKEN="1" EDIT="1" SELECT="0" FLOW="1" TRANS="1" BLEND="0" OUTL="0" LAYERC="#ff0000"/> <Printer firstUse="1" toFile="0" useAltPrintCommand="0" outputSeparations="0" useSpotColors="1" useColor="1" mirrorH="0" mirrorV="0" useICC="0" doGCR="0" doClip="0" setDevParam="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" includePDFMarks="1" PSLevel="3" PrintEngine="3" markLength="20.0013" markOffset="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" printer="HL2270DW" filename="" separationName="All" printerCommand=""/> <PDF firstUse="1" Thumbnails="0" Articles="0" Bookmarks="0" Compress="1" CMethod="0" Quality="0" EmbedPDF="0" MirrorH="0" MirrorV="0" Clip="0" rangeSel="0" rangeTxt="" RotateDeg="0" PresentMode="0" RecalcPic="0" FontEmbedding="0" Grayscale="0" RGBMode="1" UseProfiles="0" UseProfiles2="0" Binding="0" PicRes="300" Resolution="300" Version="14" Intent="1" Intent2="0" SolidP="sRGB IEC61966-2.1" ImageP="sRGB IEC61966-2.1" PrintP="Fogra27L CMYK Coated Press" InfoString="" BTop="0" BLeft="0" BRight="0" BBottom="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" docInfoMarks="0" markLength="20.0012598425197" markOffset="0" ImagePr="0" PassOwner="" PassUser="" Permissions="-4" Encrypt="0" UseLayers="0" UseLpi="0" UseSpotColors="1" doMultiFile="0" displayBookmarks="0" displayFullscreen="0" displayLayers="0" displayThumbs="0" hideMenuBar="0" hideToolBar="0" fitWindow="0" openAfterExport="0" PageLayout="0" openAction=""> <LPI Color="" Frequency="0" Angle="0" SpotFunction="0"/> <LPI Color="Black" Frequency="133" Angle="45" SpotFunction="3"/> <LPI Color="Cyan" Frequency="133" Angle="105" SpotFunction="3"/> <LPI Color="Magenta" Frequency="133" Angle="75" SpotFunction="3"/> <LPI Color="Yellow" Frequency="133" Angle="90" SpotFunction="3"/> </PDF> <DocItemAttributes/> <TablesOfContents/> <NotesStyles> <notesStyle Name="Default" Start="1" Endnotes="0" Type="Type_1_2_3" Range="0" Prefix="" Suffix=")" AutoHeight="1" AutoWidth="1" AutoRemove="1" AutoWeld="1" SuperNote="1" SuperMaster="1" MarksStyle="" NotesStyle=""/> </NotesStyles> <PageSets> <Set Name="Single Page" FirstPage="0" Rows="1" Columns="1"/> <Set Name="Facing Pages" FirstPage="1" Rows="1" Columns="2"> <PageNames Name="Left Page"/> <PageNames Name="Right Page"/> </Set> <Set Name="3-Fold" FirstPage="0" Rows="1" Columns="3"> <PageNames Name="Left Page"/> <PageNames Name="Middle"/> <PageNames Name="Right Page"/> </Set> <Set Name="4-Fold" FirstPage="0" Rows="1" Columns="4"> <PageNames Name="Left Page"/> <PageNames Name="Middle Left"/> <PageNames Name="Middle Right"/> <PageNames Name="Right Page"/> </Set> </PageSets> <Sections> <Section Number="0" Name="0" From="0" To="1" Type="Type_1_2_3" Start="1" Reversed="0" FillChar="0" FieldWidth="0"/> </Sections> <MASTERPAGE PAGEXPOS="100.001" PAGEYPOS="20.001" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="28.346" BORDERRIGHT="28.346" BORDERTOP="28.346" BORDERBOTTOM="28.346" NUM="0" NAM="Normal" MNAM="" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0" pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> <PAGE PAGEXPOS="100.001" PAGEYPOS="20.001" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="28.346" BORDERRIGHT="28.346" BORDERTOP="28.346" BORDERBOTTOM="28.346" NUM="0" NAM="" MNAM="Normal" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0" pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> <PAGE PAGEXPOS="100.001" PAGEYPOS="901.893763779528" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779528" BORDERLEFT="28.346" BORDERRIGHT="28.346" BORDERTOP="28.346" BORDERBOTTOM="28.346" NUM="1" NAM="" MNAM="Normal" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0" pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> <PAGEOBJECT XPOS="187.875015748032" YPOS="225.75" OwnPage="0" ItemID="1119424830" PTYPE="4" WIDTH="162.374984251968" HEIGHT="163.5" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L162.375 0 L162.375 163.5 L0 163.5 L0 0 Z" copath="M0 0 L162.375 0 L162.375 163.5 L0 163.5 L0 0 Z" gXpos="187.875015748032" gYpos="225.75" gWidth="0" gHeight="0" LAYER="0" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle/> <ITEXT CH="1"/> <trail/> </StoryText> </PAGEOBJECT> <PAGEOBJECT XPOS="320.25" YPOS="426" OwnPage="0" ItemID="1119532286" PTYPE="4" WIDTH="237.75" HEIGHT="171.75" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L237.75 0 L237.75 171.75 L0 171.75 L0 0 Z" copath="M0 0 L237.75 0 L237.75 171.75 L0 171.75 L0 0 Z" gXpos="320.25" gYpos="426" gWidth="0" gHeight="0" LAYER="1" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle/> <ITEXT CH="2"/> <trail/> </StoryText> </PAGEOBJECT> <PAGEOBJECT XPOS="228.75" YPOS="990" OwnPage="1" ItemID="1121287422" PTYPE="4" WIDTH="193.5" HEIGHT="149.25" FRTYPE="0" CLIPEDIT="0" PWIDTH="1" PLINEART="1" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" LOCALROT="0" PICART="1" SCALETYPE="1" RATIO="1" COLUMNS="1" COLGAP="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" VAlign="0" FLOP="0" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" path="M0 0 L193.5 0 L193.5 149.25 L0 149.25 L0 0 Z" copath="M0 0 L193.5 0 L193.5 149.25 L0 149.25 L0 0 Z" gXpos="228.75" gYpos="990" gWidth="0" gHeight="0" LAYER="0" NEXTITEM="-1" BACKITEM="-1"> <StoryText> <DefaultStyle/> <ITEXT CH="3"/> <trail/> </StoryText> </PAGEOBJECT> </DOCUMENT> </SCRIBUSUTF8NEW> |
|
as discussed on irc, if Items only contains the items on the current page without the items in the master page behind it, please replace DocItems by Items. and maybe document the content of DocItems, MasterItems and Items in scribusdoc.h ... |
|
i would be glad if you could fix the other quirks in the code too. - it's not good to duplicate the same (non trivial) test - the argument is called kwargs. really. - do not define counter at the beginning of the function but when they are used (it's not c) i still have the feeling that the implementation i proposed is much more readable and less prone to having bugs (when something is changed). p.s.: ah, and use the same way for testing for layers and itemtype... |
|
I have committed most of the changes with a few variable renaming, noticeably the lambda name which was not really ok imo. |
|
ok. thanks. renaming the lambda is probably fine. i did not spend much time on the name. (and i don't have an habit yet for naming lambdas...) |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-11-03 15:17 | ale | New Issue | |
2020-11-03 15:17 | ale | File Added: getAllLayerItems.py | |
2020-11-03 15:17 | ale | File Added: getAllObjects.diff | |
2020-11-03 15:17 | ale | File Added: layers.sla | |
2020-11-03 15:17 | ale | Summary | readability and feature fixes for getallobjects => [PATCH] readability and feature fixes for getallobjects |
2020-11-03 15:17 | ale | Patch | No => Yes |
2020-11-03 16:04 | ale | Note Added: 0048312 | |
2020-11-04 08:07 | ale | Note Added: 0048323 | |
2020-11-04 08:08 | ale | Note Edited: 0048323 | |
2020-11-04 18:43 | jghali | Fixed in Version | => 1.5.6.svn |
2020-11-04 18:43 | jghali | Summary | [PATCH] readability and feature fixes for getallobjects => Readability and feature fixes for getAllObjects |
2020-11-04 18:43 | jghali | Note Added: 0048334 | |
2020-11-04 18:44 | jghali | Summary | Readability and feature fixes for getAllObjects => Readability and feature fixes for getAllObjects() |
2020-11-04 18:44 | jghali | Assigned To | => ale |
2020-11-04 18:44 | jghali | Status | new => resolved |
2020-11-04 18:44 | jghali | Resolution | open => fixed |
2020-11-04 19:53 | ale | Note Added: 0048335 | |
2020-11-07 14:52 | cbradney | Status | resolved => closed |