[QGIS-Developer] Making QgsRasterLayerProperties class independent again from QgisApp instance

Vincent Cloarec vcloarec at gmail.com
Sun Sep 22 21:25:10 PDT 2019


Hello,

Thanks Nyall for your advice.

I have chosen to move the raster layer properties to the gui. As the widget
is very convenient, no reason to rebuild my own. Moreover, it appears there
is not a lot of code to change.
So I purpose this PR: https://github.com/qgis/QGIS/pull/31942
The tests seem to pass for QGIS, and I have tried to import the
QgsRasterLayerProperties class to a standalone application only using the
gui library, it is ok.

Vincent Cloarec
www.reos.site


Le jeu. 19 sept. 2019 à 00:37, Nyall Dawson <nyall.dawson at gmail.com> a
écrit :

> On Thu, 19 Sep 2019 at 13:55, Vincent Cloarec <vcloarec at gmail.com> wrote:
> >
> > In standalone applications, I am using the QgsRasterLayerProperties
> class to manage rasters displayed in the map canvas.
> >
> > However, since QGis 3.8, this class is no longer independent from the
> QgisApp instance because the methode
> QgisApp::instance()->askUserForDatumTransform() is called from the
> QgsRasterLayerProperties instance.
> >
> > As in my standalone applications, I don't have QgsApp instance (no
> need), now this applications crash when the raster layer properties widget
> opens ...
> >
> > So, after a look at the Qgis code, I am thinking about to make a PR to
> make again the QgsRasterLayerProperties independant from the QgisApp
> instance. I think it could be possible with a static method in the QgisApp
> class. I have to work on it.
>
> Possibly -- but it's a band-aid solution only. There's a LOT of code
> in the app library which will make assumptions that the QgisApp
> instance is available, and that's why all this code is partitioned off
> into the app library. app also has no stable API guarantees and you'll
> continue to hit situations like this.
>
> I'd suggest two possible alternative ways forward:
>
> 1. Use the stable api classes exposes through the gui library to
> rebuild your own raster layer properties dialog
> 2. Submit a PR moving the raster layer properties class from app ->
> gui and adding it to the stable API
>
> Both approaches are more upfront work, but are paths to much less pain
> and future breakage...
>
> Nyall
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20190923/08301333/attachment.html>


More information about the QGIS-Developer mailing list