Hi Denis, all I keep forgetting there are now also (totally cool) docs for the python API... I guess old habits die hard ;)
>From your tip I guess the problem I'm facing is likely related to my class inheriting from the wrong base ( as I'm not using QgsOptionsPageWidget). I'll try it out later and let you know ;) As for the raster layer properties dialog , is this indeed not implemented there? Best regards Denis Rouzaud <[email protected]> escreveu no dia quinta, 18/10/2018 à(s) 01:49: > Hi Ricardo, > > For python, looking at the python API is always a good start ;) > > https://qgis.org/pyqgis/master/gui/other/QgisInterface.html#qgis.gui.QgisInterface.registerOptionsWidgetFactory > > This means you must give a QgsOptionsWidgetFactory > https://qgis.org/pyqgis/master/gui/Options/QgsOptionsWidgetFactory.html > > Here the docs could be clearer but this is the class you have to inherit. > You need to implement title, icon and createWidget. In the latter, you'll > be able to load your UI and return the widget to be displayed. The widget > you return must inherit QgsOptionsPageWidget. > > I hope this helps! > > > Denis > > On Wed, 17 Oct 2018, 18:24 Ricardo Filipe Soares Garcia da, < > [email protected]> wrote: > >> Hi all >> >> The API docs for QgisInterface[1] mention the existence of a >> `registerMapLayerConfigWidgetFactory()` method which says in its >> documentation: >> >> > Register a new tab in the vector layer properties dialog. >> >> I've been trying to test this out and see if I can add a new panel to a >> layer's properties dialog via a Python plugin. So far I've had no luck. >> Couldn't find any other docs/samples online showing how to do this. Perhaps >> someone can help me out? >> >> Here is what I have: >> >> - made a custom .ui file in Qt designer with a simple QWidget that only >> has a QLabel inside >> - implemented a class inheriting from both >> `qgis.gui.QgsMapLayerConfigWidget` and my ui file (after it is loaded with >> uic.loadUiType) >> - implemented a class inheriting from >> `qgis.gui.QgsMapLayerConfigWidgetFactory`. This class implements all of the >> methods declared as *virtual* in the cpp API, including the >> `createWidget()`, which returns a new instance of my custom >> maplayerconfigwidget class >> - in my plugin's `initGui()` method I'm calling >> `iface.registerMapLayerConfigWidgetFactory()` and pass along my custom >> factory >> >> I guess this should be enough to have a minimum working prototype. >> However, this is what happens: >> >> - When I load up a vector layer and then open it's properties dialog, >> QGIS just crashes with a core dumped message. >> - When I load up a raster layer and then open it's properties dialog, >> nothing happens. I suspect this functionality is probably not even >> available for raster layers. Is this true? >> >> Can someone provide some pointers or some existing reference on how this >> would work? Thanks in advance >> >> [1] - >> https://qgis.org/api/classQgisInterface.html#a2c64949239a7717d181e34d6f2c47851 >> >> -- >> ___________________________ ___ __ >> Ricardo Garcia Silva >> _______________________________________________ >> QGIS-Developer mailing list >> [email protected] >> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer >> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > -- > > Denis Rouzaud > [email protected] <[email protected]> > +41 76 370 21 22 > > > -- ___________________________ ___ __ Ricardo Garcia Silva
_______________________________________________ QGIS-Developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
