[QGIS-Developer] QgsLayout returns different types on different platforms

Adam Borczyk adam.borczyk at gis-support.pl
Mon May 28 07:35:20 PDT 2018


Just in case someone has similar problem - this workaround has some methods
that probably don't have (or I haven't found them) equivalents in API 3 -
iterating over QgsPrintLayout did return a list of objects and their
correct types, but except for the map. Map item was described as
QgsLayoutItem instead of QgsLayoutItemMap and the only way I found to get
QgsLayoutItemMap object was to use .referenceMap() method. Fortunately I
only use one map per layout project, so it was enough. The workaround works
fine for other types of objects.

Regards


On 25 May 2018 at 22:23, Tim Sutton <tim at kartoza.com> wrote:

> Hi
>
> On 25 May 2018, at 22:06, Adam Borczyk <adam.borczyk at gis-support.pl>
> wrote:
>
> Thanks a lot Tim, I'll give it a try. Looks like it's API 2 workaround and
> the issue propagated to API 3 as well?
>
>
> Correct.
>
> Regards
>
> Tim
>
>
> * Adam Borczyk*
> *---------------------------------GIS Support Sp. z o.o.Dobrzańskiego 3,
> Lublin 20-262
> <https://maps.google.com/?q=Dobrza%C5%84skiego+3,+Lublin+20-262&entry=gmail&source=g>tel.
> +48 81 451 14 90, NIP: 9462641761*
>
> On 25 May 2018 at 21:43, Tim Sutton <tim at kartoza.com> wrote:
>
>> Hi
>>
>> It is probably a well known issue with SIP bindings not recognising the
>> object type returned for the layout. A work around is here:
>>
>> https://github.com/inasafe/inasafe/blob/develop/safe/report/
>> processors/default.py#L54
>>
>> Regards
>>
>> Tim
>>
>> On 25 May 2018, at 19:51, Adam Borczyk <adam.borczyk at gis-support.pl>
>> wrote:
>>
>> Hi all,
>> Using PyQGIS I load a layout .qpt file, then I access items in the
>> composition. I do it using
>>
>>         document = QDomDocument()
>>         document.setContent(content) # content is .qpt file content
>>         composition = QgsPrintLayout( QgsProject.instance() )
>>         composition.loadFromTemplate( document, QgsReadWriteContext() )
>>
>>         map_item = composition.itemById('main_map')
>>         map_item.setExtent(canvas.extent())
>>
>>
>> Now map_item is of type QgsLayoutItemMap while I'm on Ubuntu, but it is
>> QgsLayoutItem when I use Windows and therefore I receive an error
>> (QgsLayoutItem does not have setExtent method). Does anybody have an idea
>> why this happens?
>>
>> Ubuntu 16.04 x64 + QGIS 3.0.2 with Python 3.5.2 installed last week
>> Windows 7 x64 + QGIS 3.0.3 with Python 3.6.0 (fresh now from OSGeo
>> Installer)
>>
>> Best regards
>> Adam Borczyk
>> _______________________________________________
>> QGIS-Developer mailing list
>> QGIS-Developer at lists.osgeo.org
>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>>
>>>>
>>
>> <KartozaNewLogoThumbnail.jpg>
>>
>>
>>
>>
>>
>> *Tim Sutton*
>>
>> *Co-founder:* Kartoza
>> *Ex Project chair:* QGIS.org <http://qgis.org/>
>>
>> Visit http://kartoza.com to find out about open source:
>>
>> Desktop GIS programming services
>> Geospatial web development
>> GIS Training
>> Consulting Services
>>
>> *Skype*: timlinux
>> *IRC:* timlinux on #qgis at freenode.net
>>
>>
>
>>
>
>
>
>
>
>
> *Tim Sutton*
>
> *Co-founder:* Kartoza
> *Ex Project chair:* QGIS.org
>
> Visit http://kartoza.com to find out about open source:
>
> Desktop GIS programming services
> Geospatial web development
> GIS Training
> Consulting Services
>
> *Skype*: timlinux
> *IRC:* timlinux on #qgis at freenode.net
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180528/bfe0b211/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: KartozaNewLogoThumbnail.jpg
Type: image/jpeg
Size: 6122 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180528/bfe0b211/attachment-0001.jpg>


More information about the QGIS-Developer mailing list