Re: [QGIS-Developer] QGIS3 plugin migration issue
> > My thinking here is whether this needs to be supported officially - > e.g. by making the panel wider by default. Alternatively we could add > a method to QgsProcessingAlgorithmDialogBase to handle resizing of > this panel. > To be honest, it seems like I'm the only one with this issue. I guess as long as the workaround does the job, I wouldn't bother with it. As for the issues/projects that you mentioned, what seemed like something I could tackle is the missing algorithms from PostGIS, since I've got more experience with it. Also, it really does sound like a lot of fun to implement! I'm happy to mentor. Just let me know. Thank you Nyall, that would be really cool! Could you give me some pointers as to how should I go about the PostGIS algs? Like what classes should be extended, what methods should be implemented or anything else I should pay attention to? André 2018-04-03 19:58 GMT-03:00 Nyall Dawson <nyall.daw...@gmail.com>: > On 4 April 2018 at 05:29, André William <wss.an...@gmail.com> wrote: > > Thank you Nyall, I understand. > > The reason I needed to resize the window was to better fit some image > > content in my HTML help. > > My thinking here is whether this needs to be supported officially - > e.g. by making the panel wider by default. Alternatively we could add > a method to QgsProcessingAlgorithmDialogBase to handle resizing of > this panel. > > > Taking the opportunity, I'm a C++ and Python developer and I would love > to > > contribute on the project. Is there any need for help in the Processing > > Framework (since I'm already a bit familiar with it) or in others areas? > > Heck yes! There's a TON of work which processing would greatly benefit > from. Here's a very short brain-dump of potential high-value projects: > > - if you're a user of any of the 3rd party providers (GDAL, GRASS, > SAGA), these need a lot of love. There's lots of open tickets against > them, some of which would be quick fixes for someone more familiar > with the underlying provider library. Similarly if you're on Win or > OSX there's quite a few open tickets against these providers (most > testing is done on Linux) > > - if you're a model user, a nice project would be improving the inputs > panel in the modeler dialog. It's been discussed (somewhere, can't > find it now) that this panel should be reworked to be a list of inputs > used within the model, with + / - buttons to add a new input and > remove a selected input. And then we could add up/down buttons to > allow inputs to be reordered for models, since they are currently just > shown in a semi-random order and there's no way for users to > reorganize them logically. All the API stuff should be in place for > this, it's just Python GUI work that's needed. > > - another high value task is porting the QGIS algorithms from Python > to c++ (for speed and stability). At the same time we do this we > upgrade each algorithm to support "data defined" parameter values > (e.g. buffer width based on expressions!). The goal here is to move > all the QGIS algorithms across to c++, EXCEPT those which have > dependencies on Python libraries. > > - there's rough notes on > https://github.com/nyalldawson/QGIS/wiki/Processing-Algorithm-Bugs-and- > Enhancements > concerning improvements we can make to existing algorithms which would > be fantastic to see explored > > - Or, the funnest processing job, adding more algorithms! There's a > rough wish-list at > https://github.com/nyalldawson/QGIS/wiki/Algorithm-hit-list , some of > which are just a matter of exposing existing QgsGeometry methods as > processing algorithms (e.g. exposing QgsGeometry::transform( > QTransform ) as an algorithm to allow rotate/shear/scale > transforms), and some of which require adding wrappers to GEOS > functions to QgsGeometry (GEOSMinimumWidth_r, > GEOSMinimumClearanceLine_r, GEOSNode_r, GEOSSharedPaths_r) and then > exposing as processing algorithms. Others need javascript->c++ ports > of functionality from turf/mapbox js libraries, if that kind of thing > interests you. > > > I would probably need some guidance at first but I've been using QGIS and > > developing plugins for some time now, so I guess it wouldn't be too big a > > learning curve. > > I'm happy to mentor. Just let me know. > > Nyall > > > > > > André > > > > 2018-04-03 0:29 GMT-03:00 Nyall Dawson <nyall.daw...@gmail.com>: > >> > >> On 31 March 2018 at 14:06, André William <wss.an...@gmail.com> wrote: > >> > After some digging, I found that while the textShortHelp object is not > >> > directly available in the AlgorithmDialog class anymore, i was able to > >>
Re: [QGIS-Developer] QGIS3 plugin migration issue
Thank you Nyall, I understand. The reason I needed to resize the window was to better fit some image content in my HTML help. Taking the opportunity, I'm a C++ and Python developer and I would love to contribute on the project. Is there any need for help in the Processing Framework (since I'm already a bit familiar with it) or in others areas? I would probably need some guidance at first but I've been using QGIS and developing plugins for some time now, so I guess it wouldn't be too big a learning curve. André 2018-04-03 0:29 GMT-03:00 Nyall Dawson <nyall.daw...@gmail.com>: > On 31 March 2018 at 14:06, André William <wss.an...@gmail.com> wrote: > > After some digging, I found that while the textShortHelp object is not > > directly available in the AlgorithmDialog class anymore, i was able to > > access it like this: > >> > >> shortHelpObj = dlg.findChild(QTextBrowser, 'textShortHelp') > > > > Is this the expected behavior? > > None of this is in stable API, so can change between QGIS versions > (including within minor versions/patch releases). > > Stable API for processing is: > - the classes within the core library (unless they are explicitly > marked as non-stable, e.g. the modeler related classes) > - the base GUI "WidgetWrapper" class (NOT any of its subclasses) > - some methods from the processing namespace: > - processing.algorithmHelp() > - processing.run() > - processing.runAndLoadResults() > - processing.createAlgorithmDialog() > - processing.execAlgorithmDialog() > > So, in short, unfortunately this approach is always going to be > fragile. Better wrap it in a big try block! ;) > > I gather you're trying to force the "help" panel to resize when the > dialog is opened. Is there a particular reason why you need to do > this? > > Nyall > > > > > > André W. > > > > 2018-03-30 18:54 GMT-03:00 André William <wss.an...@gmail.com>: > >> > >> Hi all, > >> > >> I'm porting an existing Geoprocessing Algorithm plugin to QGIS 3 and I'm > >> having some trouble customizing the default dialog. > >> On QGIS 2.x the following code worked: > >> > >>> class TestAlgorithm(GeoAlgorithm): > >>> INPUT = 'INPUT' > >>> OUTPUT = 'OUTPUT' > >>> > >>> > >>> > >>> def getCustomParametersDialog(self): > >>> customDialog = AlgorithmDialog(self) > >>> customDialog.textShortHelp.setFixedWidth(450) > >>> return customDialog > >> > >> > >> On QGIS 3 however, the getCustomParametersDialog() method is gone. I > >> assumed it was replaced by the new createCustomParametersWidget(), but > >> unfortunately this method doesn't seem to get called by the parent > class: > >> > >>> def createCustomParametersWidget(self, parent): > >>> customDialog = AlgorithmDialog(self) > >>> customDialog.textShortHelp.setFixedWidth(450) > >>> return customDialog > >> > >> > >> I also tried manually creating the dialog, but I get a message saying > that > >> the 'AlgorithmDialog' object has no attribute 'textShortHelp'. > >> > >>> alg = > >>> QgsApplication.processingRegistry().algorithmById('test: > testAlgorithm') > >>> dlg = AlgorithmDialog(alg) > >>> dlg.textShortHelp.setFixedWidth(450) > >>> dlg.show() > >> > >> > >> Any thoughts? > >> > >> Thanks in advance! > >> André > > > > > > > > ___ > > QGIS-Developer mailing list > > QGIS-Developer@lists.osgeo.org > > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [QGIS-Developer] QGIS3 plugin migration issue
After some digging, I found that while the textShortHelp object is not directly available in the AlgorithmDialog class anymore, i was able to access it like this: shortHelpObj = dlg.findChild(QTextBrowser, 'textShortHelp') > Is this the expected behavior? André W. 2018-03-30 18:54 GMT-03:00 André William <wss.an...@gmail.com>: > Hi all, > > I'm porting an existing Geoprocessing Algorithm plugin to QGIS 3 and I'm > having some trouble customizing the default dialog. > On QGIS 2.x the following code worked: > > class TestAlgorithm(GeoAlgorithm): >> INPUT = 'INPUT' >> OUTPUT = 'OUTPUT' >> > >> > def getCustomParametersDialog(self): >> customDialog = AlgorithmDialog(self) >> customDialog.textShortHelp.setFixedWidth(450) >> return customDialog >> > > On QGIS 3 however, the getCustomParametersDialog() method is gone. I > assumed it was replaced by the new createCustomParametersWidget(), but > unfortunately this method doesn't seem to get called by the parent class: > > def createCustomParametersWidget(self, parent): >> customDialog = AlgorithmDialog(self) >> customDialog.textShortHelp.setFixedWidth(450) >> return customDialog >> > > I also tried manually creating the dialog, but I get a message saying that > the *'AlgorithmDialog' object has no attribute 'textShortHelp'.* > > alg = QgsApplication.processingRegistry().algorithmById('test: >> testAlgorithm') >> dlg = AlgorithmDialog(alg) >> dlg.textShortHelp.setFixedWidth(450) >> dlg.show() >> > > Any thoughts? > > Thanks in advance! > André > ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
[QGIS-Developer] QGIS3 plugin migration issue
Hi all, I'm porting an existing Geoprocessing Algorithm plugin to QGIS 3 and I'm having some trouble customizing the default dialog. On QGIS 2.x the following code worked: class TestAlgorithm(GeoAlgorithm): > INPUT = 'INPUT' > OUTPUT = 'OUTPUT' > > def getCustomParametersDialog(self): > customDialog = AlgorithmDialog(self) > customDialog.textShortHelp.setFixedWidth(450) > return customDialog > On QGIS 3 however, the getCustomParametersDialog() method is gone. I assumed it was replaced by the new createCustomParametersWidget(), but unfortunately this method doesn't seem to get called by the parent class: def createCustomParametersWidget(self, parent): > customDialog = AlgorithmDialog(self) > customDialog.textShortHelp.setFixedWidth(450) > return customDialog > I also tried manually creating the dialog, but I get a message saying that the *'AlgorithmDialog' object has no attribute 'textShortHelp'.* alg = > QgsApplication.processingRegistry().algorithmById('test:testAlgorithm') > dlg = AlgorithmDialog(alg) > dlg.textShortHelp.setFixedWidth(450) > dlg.show() > Any thoughts? Thanks in advance! André ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
[QGIS-Developer] Processing plugin questions
Hi everyone, Two questions regarding Processing Plugin development for QGIS 2.18.17 : 1. How should I go about customizing the default Processing Algorithm user interface? I need to make the help panel a little bit wider, but the GeoAlgorithm and AlgorithmProvider classes doesn't seem to provide any way to accomplish this. 2. I'm also trying to have the *ProcessingConfig.USE_FILENAME_AS_LAYER_NAME* option set to True but for some reason it doesn't seem to to work. The Output layer keeps being loaded with the default parameter name from the algorithm. I'm using the following line of code: ProcessingConfig.setSettingValue(ProcessingConfig.USE_FILENAME_AS_LAYER_NAME, > True) > I tried setting a different option, like* ProcessingConfig.KEEP_DIALOG_OPEN, *and it behaves as expected, which leads me to believe my code isn't terribly wrong. Is there anything else I should pay attention to? Thanks in advance! André ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [QGIS-Developer] Processing algorithm plugin help
Although the right side panel still didn't show, I did get the "Help" tab to work, and I also found a getParameterDescriptions() method in the source code that might do the trick. Thanks for your help! André 2018-03-18 2:54 GMT-03:00 Luke Pinner <lukepinne...@gmail.com>: > Judging by the 2.18 code[1], it looks like you would do something like: > >def help(self): > return True, QUrl.fromLocalFile("/path/to/ > my_long_help.html").toString() > > def shortHelp(self): > return "My short help string for the right side of the dialog" > #or > return open("/path/to/myshorthelp.txt").read() > > > [1] https://github.com/qgis/QGIS/blob/release-2_18/python/ > plugins/processing/core/GeoAlgorithm.py#L111 > > > > On Sun, 18 Mar 2018 at 16:07 Luke Pinner <lukepinne...@gmail.com> wrote: > >> In QGIS 3.0 I use something like the following. I don't know if it will >> be of any use for QGIS 2x though. >> >> >> from qgis.PyQt.QtCore import QUrl >> >> class MyAlg(etc...) >> etc... >> >> def shortHelpString(self) >> return "My short help string for the right side of the dialog" >> #or >> return open("/path/to/myshorthelp.txt").read() >> >> And >> >> def helpUrl(self): >> return QUrl.fromLocalFile("/path/to/my_long_help.html").toString() >> >> >> On 18 Mar. 2018 15:31, "André William" <wss.an...@gmail.com> wrote: >> >>> Hi all, >>> >>> I developed a processing algorithm plugin using the Plugin Builder but >>> I'm having trouble setting up the Help panel which usually shows on the >>> right side of the windows, or at least the a help button pointing to a >>> static file. >>> >>> I've tried creating the .py.help file with the same name as my algorithm >>> and provider files and placing them in both the >>> "~/.qgis2/processing/scripts" and "~/.qgis2/python/plugins/my_plugin" >>> folders, but without success. >>> >>> Implementing the helpString() and helpUrl() methods in my GeoAlgorithm >>> class didn't work either. >>> >>> Am I missing something? Sorry if it's a noob question. >>> >>> André >>> >>> ___ >>> QGIS-Developer mailing list >>> QGIS-Developer@lists.osgeo.org >>> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer >>> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer >>> >> ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [QGIS-Developer] Processing algorithm plugin help
I was already doing something quite similar but unfortunately it still doesn't work. No help panel and no help button, just the parameters. Is there anything else I should do on the defineCharacteristics() method maybe? As for the QGIS version, I'm still using 2.18. Could this be the problem? Thanks for the input! André class TestlAlgorithm(GeoAlgorithm): > INPUT_LAYER = ' INPUT _LAYER' > OUTPUT_LAYER = 'OUTPUT_LAYER' > > def helpString(self): > return "Test 321" > > def shortHelpString(self): > return "Test 123" > > def helpUrl(self): > return QUrl.fromLocalFile("file:file.txt").toString() > 2018-03-18 2:07 GMT-03:00 Luke Pinner <lukepinne...@gmail.com>: > In QGIS 3.0 I use something like the following. I don't know if it will be > of any use for QGIS 2x though. > > > from qgis.PyQt.QtCore import QUrl > > class MyAlg(etc...) > etc... > > def shortHelpString(self) > return "My short help string for the right side of the dialog" > #or > return open("/path/to/myshorthelp.txt").read() > > And > > def helpUrl(self): > return QUrl.fromLocalFile("/path/to/my_long_help.html").toString() > > > On 18 Mar. 2018 15:31, "André William" <wss.an...@gmail.com> wrote: > >> Hi all, >> >> I developed a processing algorithm plugin using the Plugin Builder but >> I'm having trouble setting up the Help panel which usually shows on the >> right side of the windows, or at least the a help button pointing to a >> static file. >> >> I've tried creating the .py.help file with the same name as my algorithm >> and provider files and placing them in both the >> "~/.qgis2/processing/scripts" and "~/.qgis2/python/plugins/my_plugin" >> folders, but without success. >> >> Implementing the helpString() and helpUrl() methods in my GeoAlgorithm >> class didn't work either. >> >> Am I missing something? Sorry if it's a noob question. >> >> André >> >> ___ >> QGIS-Developer mailing list >> QGIS-Developer@lists.osgeo.org >> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer >> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer >> > ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
[QGIS-Developer] Processing algorithm plugin help
Hi all, I developed a processing algorithm plugin using the Plugin Builder but I'm having trouble setting up the Help panel which usually shows on the right side of the windows, or at least the a help button pointing to a static file. I've tried creating the .py.help file with the same name as my algorithm and provider files and placing them in both the "~/.qgis2/processing/scripts" and "~/.qgis2/python/plugins/my_plugin" folders, but without success. Implementing the helpString() and helpUrl() methods in my GeoAlgorithm class didn't work either. Am I missing something? Sorry if it's a noob question. André ___ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [Qgis-developer] Wiki page/area for 'Building QGIS from scratch'
Thanks for the input, Matthias. It's been some time since I built it from scratch, so I wouldn't be able to provide specifics. But it was on Ubuntu 16, and Mark's comments about Qt5, QScintylla and libpng did ring a bell for me, since the email. I'll try again on the next couple of days and if there's interest I can report on how it went. André 2017-03-17 13:29 GMT-03:00 Matthias Kuhn <matth...@opengis.ch>: > Hi André and Mark, > > Can you clarify on which systems you are working and which dependencies > cause headaches? > > In many situations, a build of Qt is not required and doing this > requires deep understanding of all the involved libraries. I would > strongly advice anyone to first explore other alternatives before > starting the walk on this tricky road. > > For reference, here is a set of script that is able to build many of the > dependencies (into a custom root path) for those who still want to do it: > https://github.com/opengisch/osgeo4travis/tree/master/docker/qt5/scripts > > Best regards > Matthias > > On 03/17/2017 05:17 PM, André William wrote: > > Hi all, my name is André, this is my first email on this list. > > > > I've also struggled with building QGIS before, and besides the problems > > mentioned by Mark, the default installed libraries are often > > incompatible with QGIS or some of its dependencies. > > I'd be willing to help with documenting my steps or possibly > > contributing code to the scripts as I attempt to build on a clean OS. > > > > André > > > > 2017-03-17 12:26 GMT-03:00 Matthias Kuhn <matth...@opengis.ch > > <mailto:matth...@opengis.ch>>: > > > > Hi Mark, > > > > Are the dependencies not available for your distribution? > > > > Except for some very special systems (Android, very old ubuntu > versions > > on travis...) I never ever build these dependencies manually and just > > install them. > > > > Matthias > > > > On 03/17/2017 04:21 PM, Mark Johnson wrote: > > > For the last 10 days I have been attempting to build QGIS 3.0 > master > > > from scratch. > > > For this QT 5 also had to be build, which is not an easy task. > > > > > > In the past I had used the 'run' scripts, which installed the > source > > > - qt-opensource-linux-x64-5.7.1.run > > > but after the first installment I noticed that QGIS needed a modal > that > > > had not been included: QtWebKit > > > > > > The there is QScintilla,PyQt5 (with sip) and Qwt > > > - Qwt: did not install the libs where PyQt5 could not find it > > > - QScintilla did not accept the –-pyqt=PyQt5 parameter, so > > > the configure.py had to be adapted > > > > > > And then there is the cmake of QGIS3 itself, which in itself is a > horror > > > dream come true > > > - instead of asking *once* for the 'Qt5 cmake' directory > > > -- it asks it about 12 times for the 17 modals needed > > > --> I assume ccmake determines for each module the dependencies, > > but for > > > the user this is a horrible - time consuming experience > > > > > > --- > > > For this reason I think it would be a good idea to add an area in > the > > > QGIS wiki with tip how this should be done, > > > > > > Based on a specific QGIS version > > > - which other versions (QT5, python3 [python 3.5.3rc1 does not > work, > > > python 3.4.6 does] etc.) should be used > > > - basic howto's to > > > -- build QT5 from scratch (like using git that contains QtWebKit, > as > > > apposed to the 'run' that does not) > > > -- known irregularities > > > ---> copy the Qwt/libs to the Qt5/libs so that PyQt5 can find them > > > ---> QScintilla how to adapt the configure.py script to create the > > > needed PyQt5 version > > > > > > The goal would be to offer a guideline for those doing this for the > > > first time > > > - avoiding known traps > > > > > > --- > > > Something in the form of (based on the present wiki): > > > > > > Organize an event > > > ... > > > Collaborative documents > > > ... > > > Building QGIS 3.0 from scratch > > > Building QT 5 from scratch > > >Building and correctly installing Qwt > > >Building QScint
Re: [Qgis-developer] Wiki page/area for 'Building QGIS from scratch'
Hi all, my name is André, this is my first email on this list. I've also struggled with building QGIS before, and besides the problems mentioned by Mark, the default installed libraries are often incompatible with QGIS or some of its dependencies. I'd be willing to help with documenting my steps or possibly contributing code to the scripts as I attempt to build on a clean OS. André 2017-03-17 12:26 GMT-03:00 Matthias Kuhn: > Hi Mark, > > Are the dependencies not available for your distribution? > > Except for some very special systems (Android, very old ubuntu versions > on travis...) I never ever build these dependencies manually and just > install them. > > Matthias > > On 03/17/2017 04:21 PM, Mark Johnson wrote: > > For the last 10 days I have been attempting to build QGIS 3.0 master > > from scratch. > > For this QT 5 also had to be build, which is not an easy task. > > > > In the past I had used the 'run' scripts, which installed the source > > - qt-opensource-linux-x64-5.7.1.run > > but after the first installment I noticed that QGIS needed a modal that > > had not been included: QtWebKit > > > > The there is QScintilla,PyQt5 (with sip) and Qwt > > - Qwt: did not install the libs where PyQt5 could not find it > > - QScintilla did not accept the –-pyqt=PyQt5 parameter, so > > the configure.py had to be adapted > > > > And then there is the cmake of QGIS3 itself, which in itself is a horror > > dream come true > > - instead of asking *once* for the 'Qt5 cmake' directory > > -- it asks it about 12 times for the 17 modals needed > > --> I assume ccmake determines for each module the dependencies, but for > > the user this is a horrible - time consuming experience > > > > --- > > For this reason I think it would be a good idea to add an area in the > > QGIS wiki with tip how this should be done, > > > > Based on a specific QGIS version > > - which other versions (QT5, python3 [python 3.5.3rc1 does not work, > > python 3.4.6 does] etc.) should be used > > - basic howto's to > > -- build QT5 from scratch (like using git that contains QtWebKit, as > > apposed to the 'run' that does not) > > -- known irregularities > > ---> copy the Qwt/libs to the Qt5/libs so that PyQt5 can find them > > ---> QScintilla how to adapt the configure.py script to create the > > needed PyQt5 version > > > > The goal would be to offer a guideline for those doing this for the > > first time > > - avoiding known traps > > > > --- > > Something in the form of (based on the present wiki): > > > > Organize an event > > ... > > Collaborative documents > > ... > > Building QGIS 3.0 from scratch > > Building QT 5 from scratch > >Building and correctly installing Qwt > >Building QScintilla for PyQt5 > >Building PyQt5 > > QGIS3 ccmake > > > > I would be willing to start this with my experiences. > > > > Mark Johnson, Berlin Germany > > > > > > > > > > > > > > ___ > > Qgis-developer mailing list > > Qgis-developer@lists.osgeo.org > > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > > ___ > Qgis-developer mailing list > Qgis-developer@lists.osgeo.org > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer ___ Qgis-developer mailing list Qgis-developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer