<div dir="ltr"><div>Hello QGis devs,</div><div><br></div>I purposed two weeks ago this <a href="https://github.com/qgis/QGIS/pull/31942">PR </a>which is today marked as "stale".<br><div>This PR aims to make the very convenient QgsRasterLayerProperties class independent from the QgisApp instance. To make this independence stable, I had followed the Nyall's advice and move the QgsRasterLayerProperties to the GUI library. I don't know if everything has been made in the rules of art, but it seems to work.</div><div><br></div><div>I want to make this QgsRasterLayerProperties class independent from the QGisApp to return in the state before the 3.8 version, where the dependency was created.</div><div><br></div><div>I don't think crowd is concerned in this PR  and it not  a big step for QGIS. I understand QGis devs don't see the advantage of this change. <br></div><div><br></div><div>But, as I am developing stand-alone applications based on the QGis API, I need to keep the independency from the QGisApp class. Because I don't need this enormous class and I don't want to have to manage it. On the other hand, the QgsRasterLayerProperties class is not complicated to use and is very convenient for displaying the raster layers. Today, I don't imagine stopping using it!</div><div><br></div><div>The purposed PR permits to use this class through the GUI library. This is cleaner and less tricky than using it from the App library. I think it is a good thing for stand-alone applications devs.</div><div><br></div><div>I don't know if there is a lot of devs who are developing stand-alone applications. So maybe there is no advantage to accept my PR, and I will understand it could not be accepted. <br></div><div><br></div><div>But, today,  I need to know if I can count on this PR will be accepted, or if I have to think about another solution to continue to use the QgsRasterLayerProperties.</div><div><br></div><div>If someone has an idea about this?</div><div><br></div><div>Thanks.</div><div><br></div><div>Vincent Cloarec</div><div><a href="https://www.reos.site">www.reos.site</a><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 23 sept. 2019 à 00:25, Vincent Cloarec <<a href="mailto:vcloarec@gmail.com">vcloarec@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Hello,<br><br>Thanks Nyall for your advice.<br><br>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.<br><div>So I purpose this PR: <a href="https://github.com/qgis/QGIS/pull/31942" target="_blank">https://github.com/qgis/QGIS/pull/31942</a></div><div>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.</div><div><br></div><div><span><font color="#888888"><div>Vincent Cloarec</div><div><a href="http://www.reos.site" target="_blank">www.reos.site</a></div><div><br></div></font></span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le jeu. 19 sept. 2019 à 00:37, Nyall Dawson <<a href="mailto:nyall.dawson@gmail.com" target="_blank">nyall.dawson@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, 19 Sep 2019 at 13:55, Vincent Cloarec <<a href="mailto:vcloarec@gmail.com" target="_blank">vcloarec@gmail.com</a>> wrote:<br>
><br>
> In standalone applications, I am using the QgsRasterLayerProperties class to manage rasters displayed in the map canvas.<br>
><br>
> 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.<br>
><br>
> As in my standalone applications, I don't have QgsApp instance (no need), now this applications crash when the raster layer properties widget opens ...<br>
><br>
> 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.<br>
<br>
Possibly -- but it's a band-aid solution only. There's a LOT of code<br>
in the app library which will make assumptions that the QgisApp<br>
instance is available, and that's why all this code is partitioned off<br>
into the app library. app also has no stable API guarantees and you'll<br>
continue to hit situations like this.<br>
<br>
I'd suggest two possible alternative ways forward:<br>
<br>
1. Use the stable api classes exposes through the gui library to<br>
rebuild your own raster layer properties dialog<br>
2. Submit a PR moving the raster layer properties class from app -><br>
gui and adding it to the stable API<br>
<br>
Both approaches are more upfront work, but are paths to much less pain<br>
and future breakage...<br>
<br>
Nyall<br>
</blockquote></div></div>
</blockquote></div>