From a23672b594fdb6ef5ff4fcb63f1bcfdd25f37ede Mon Sep 17 00:00:00 2001 From: AlisterH Date: Thu, 29 Jun 2023 08:24:17 +1200 Subject: [PATCH 01/12] Add g.version algorithm --- .../grassprovider/description/g.version.txt | 11 +++++++++ python/plugins/grassprovider/ext/g_version.py | 24 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 python/plugins/grassprovider/description/g.version.txt create mode 100644 python/plugins/grassprovider/ext/g_version.py diff --git a/python/plugins/grassprovider/description/g.version.txt b/python/plugins/grassprovider/description/g.version.txt new file mode 100644 index 000000000000..acd7d5e2f864 --- /dev/null +++ b/python/plugins/grassprovider/description/g.version.txt @@ -0,0 +1,11 @@ +g.version +g.version - Display GRASS GIS version info +General (g.*) +QgsProcessingParameterBoolean|-c|Print copyright message|False +QgsProcessingParameterBoolean|-x|Print citation options|False +QgsProcessingParameterBoolean|-b|Print build information|False +QgsProcessingParameterBoolean|-r|Print GIS library revision number and date|True +QgsProcessingParameterBoolean|-e|Print info for additional libraries|True +QgsProcessingParameterBoolean|-g|Print in shell script style (with Git commit reference)|False +QgsProcessingParameterBoolean|--verbose|Print verbose output|False +QgsProcessingParameterFileDestination|html|Output file|Html files (*.html)|grass_version_info.html|True diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py new file mode 100644 index 000000000000..09fa49978fa4 --- /dev/null +++ b/python/plugins/grassprovider/ext/g_version.py @@ -0,0 +1,24 @@ +""" +*************************************************************************** + g_version.py + ------------------ + Date : May 2023 + Copyright : (C) 2023 by Alister Hood + Email : alister.hood at gmail dot com +*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +*************************************************************************** +""" + +__author__ = 'Alister Hood' +__date__ = 'May 2023' +__copyright__ = '(C) 2023, Alister Hood' + + +def processInputs(alg, parameters, context, feedback): + pass From aa9344cd755bfebe704df249719bf0727617fad5 Mon Sep 17 00:00:00 2001 From: AlisterH Date: Thu, 29 Jun 2023 15:57:45 +1200 Subject: [PATCH 02/12] Tell the user that they can run without any of the options to get just the GRASS version --- python/plugins/grassprovider/description/g.version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/plugins/grassprovider/description/g.version.txt b/python/plugins/grassprovider/description/g.version.txt index acd7d5e2f864..8f323657031d 100644 --- a/python/plugins/grassprovider/description/g.version.txt +++ b/python/plugins/grassprovider/description/g.version.txt @@ -1,5 +1,5 @@ g.version -g.version - Display GRASS GIS version info +g.version - Display GRASS GIS version info.

Prints only version if run with no options checked. General (g.*) QgsProcessingParameterBoolean|-c|Print copyright message|False QgsProcessingParameterBoolean|-x|Print citation options|False From 968eaef064c2205a472e43cc0d25f0b5559aa7e1 Mon Sep 17 00:00:00 2001 From: AlisterH Date: Thu, 29 Jun 2023 15:59:57 +1200 Subject: [PATCH 03/12] Minor fix to g.extension.list --- python/plugins/grassprovider/description/g.extension.list.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/plugins/grassprovider/description/g.extension.list.txt b/python/plugins/grassprovider/description/g.extension.list.txt index f6db41eeb5df..766549ac43a3 100644 --- a/python/plugins/grassprovider/description/g.extension.list.txt +++ b/python/plugins/grassprovider/description/g.extension.list.txt @@ -1,7 +1,7 @@ g.extension -g.extension.list - List GRASS addons. +g.extension.list - List GRASS addons.

Select only one of the three options. General (g.*) QgsProcessingParameterBoolean|-l|List available extensions in the official GRASS GIS Addons repository|False QgsProcessingParameterBoolean|-c|List available extensions in the official GRASS GIS Addons repository including module description|False QgsProcessingParameterBoolean|-a|List locally installed extensions|False -QgsProcessingParameterFileDestination|html|List of addons|Html files (*.html)|addons_list.html|False +QgsProcessingParameterFileDestination|html|List of addons|Html files (*.html)|addons_list.html|True From 262924c63c083bc008fa0392ed5b91f3dc6091cf Mon Sep 17 00:00:00 2001 From: AlisterH Date: Sun, 2 Jul 2023 00:09:29 +1200 Subject: [PATCH 04/12] Tweak new info in grass7.txt --- python/plugins/grassprovider/grass7.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/plugins/grassprovider/grass7.txt b/python/plugins/grassprovider/grass7.txt index 21e76a2487aa..b1832b98e6ca 100644 --- a/python/plugins/grassprovider/grass7.txt +++ b/python/plugins/grassprovider/grass7.txt @@ -170,17 +170,17 @@ There are 4 different levels where you can add logic: - Processing the command itself: if you need to chain more than one GRASS command for your algorithm. - Processing the outputs: if you need to do special things before exporting layers or if you need special export methods. -Whenever you want to add some logic on one (or more) level(s), you have to create a .py file named according to the algorithm name in python/plugins/grassprovider/ext, replacing '.' with '_'. -Then you need to create methods using the respective names: +To add some logic on one or more of these levels you have to create a .py file named according to the algorithm name in python/plugins/grassprovider/ext, replacing '.' with '_'. +Then create methods using the respective names: - Input parameters: checkParameterValuesBeforeExecuting - Inputs import: processInputs - Command: processCommand - Outputs: processOutputs -If there is a Python file with the algorithm name in the ext directory, methods will be imported from the file and run instead of the common methods (there are "standard" processCommand/processInputs/processOutputs/checkParameterValuesBeforeExecuting methods in the code of the GRASS provider for QGIS Processing, in python/plugins/grassprovider/Grass7Algorithm.py). +If there is a Python file with the algorithm name in the ext directory, methods will be imported from the file and run instead of the common methods (there are "standard" processCommand/processInputs/processOutputs methods in the code of the GRASS provider, in python/plugins/grassprovider/Grass7Algorithm.py). If we take the example of v.what.rast, there is an ext file: ext/v_what_rast.py. In this file there is a processCommand method. It just launches the standard processCommand but with the delOutputs option set to True (we do not want to have standard outputs). Then there is also a customized processOutputs which exports the input vector as an output for QGIS. We need to do this because v.what.rast modifies values directly in the input vector layer instead of generating a new output, so we have to build this output ourself. -If you want to do special things in the ext mechanism, you will need to read (and understand) the GRASS provider code standard methods in Grass7Algorithm.py. +If you want to do special things in the ext mechanism, you will need to read (and understand) the code for the standard methods in Grass7Algorithm.py. From 2c69b95ce32e8e9f36e9e137c0e30d07c4d95faf Mon Sep 17 00:00:00 2001 From: AlisterH Date: Mon, 3 Jul 2023 16:48:37 +1200 Subject: [PATCH 05/12] refine new information in grass7.txt --- python/plugins/grassprovider/grass7.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/plugins/grassprovider/grass7.txt b/python/plugins/grassprovider/grass7.txt index b1832b98e6ca..75409c9da5c2 100644 --- a/python/plugins/grassprovider/grass7.txt +++ b/python/plugins/grassprovider/grass7.txt @@ -1,4 +1,4 @@ -A short guide for creating and editing GRASS GIS 7 algorithms: +A short guide for creating and editing GRASS GIS 7/8 algorithms: ----------------------------------------------------------------------- Each GRASS command, to be executed from a processing framework element such as the toolbox @@ -177,10 +177,10 @@ Then create methods using the respective names: - Command: processCommand - Outputs: processOutputs -If there is a Python file with the algorithm name in the ext directory, methods will be imported from the file and run instead of the common methods (there are "standard" processCommand/processInputs/processOutputs methods in the code of the GRASS provider, in python/plugins/grassprovider/Grass7Algorithm.py). +If there is a Python file with the algorithm name in the ext directory, these methods will be imported from the file. +In the case of processCommand, processInputs and processOutputs these will override the "standard" versions of these methods in the code of the GRASS provider. +You will need to read (and understand) the code for the standard methods in python/plugins/grassprovider/Grass7Algorithm.py. If we take the example of v.what.rast, there is an ext file: ext/v_what_rast.py. In this file there is a processCommand method. It just launches the standard processCommand but with the delOutputs option set to True (we do not want to have standard outputs). Then there is also a customized processOutputs which exports the input vector as an output for QGIS. We need to do this because v.what.rast modifies values directly in the input vector layer instead of generating a new output, so we have to build this output ourself. - -If you want to do special things in the ext mechanism, you will need to read (and understand) the code for the standard methods in Grass7Algorithm.py. From 058f9b286ef0a387ff26d0189368c2f9e6f0c54a Mon Sep 17 00:00:00 2001 From: AlisterH Date: Mon, 3 Jul 2023 22:07:56 +1200 Subject: [PATCH 06/12] Save output of g.version and g.extension.list algorithms to an output variable as well as html --- python/plugins/grassprovider/Grass7Algorithm.py | 7 +++++-- python/plugins/grassprovider/ext/g_extension_list.py | 7 +++++++ python/plugins/grassprovider/ext/g_version.py | 7 +++++++ python/plugins/grassprovider/grass7.txt | 4 +++- python/plugins/processing/gui/AlgorithmDialog.py | 7 ++++--- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/python/plugins/grassprovider/Grass7Algorithm.py b/python/plugins/grassprovider/Grass7Algorithm.py index edf5d4bcb9c4..afd2df28c0b7 100644 --- a/python/plugins/grassprovider/Grass7Algorithm.py +++ b/python/plugins/grassprovider/Grass7Algorithm.py @@ -451,8 +451,11 @@ def processAlgorithm(self, original_parameters, context, feedback): else: outputs[outName] = parameters[outName] if isinstance(out, QgsProcessingOutputHtml): - self.convertToHtml(self.fileOutputs[outName]) - + if self.module and hasattr(self.module, 'convertToHtml'): + func = getattr(self.module, 'convertToHtml') + func(self, self.fileOutputs[outName], outputs) + else: + self.convertToHtml(self.fileOutputs[outName]) return outputs def processInputs(self, parameters, context, feedback): diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 03050268aaad..1360f4859880 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -22,3 +22,10 @@ def processInputs(alg, parameters, context, feedback): pass + +def convertToHtml(alg, fileName, outputs): + # don't copy this for something that will have lots of data like r.stats + # it will be very slow + outputs['MESSAGES'] = open(fileName, 'r').read() + # this will read the file a second time, but calling it saves us duplicating the code here + alg.convertToHtml(fileName) \ No newline at end of file diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py index 09fa49978fa4..55bdd41cd5fc 100644 --- a/python/plugins/grassprovider/ext/g_version.py +++ b/python/plugins/grassprovider/ext/g_version.py @@ -22,3 +22,10 @@ def processInputs(alg, parameters, context, feedback): pass + +def convertToHtml(alg, fileName, outputs): + # don't copy this for something that will have lots of data like r.stats + # it will be very slow + outputs['MESSAGES'] = open(fileName, 'r').read() + # this will read the file a second time, but calling it saves us duplicating the code here + alg.convertToHtml(fileName) \ No newline at end of file diff --git a/python/plugins/grassprovider/grass7.txt b/python/plugins/grassprovider/grass7.txt index 75409c9da5c2..f38666ee77ea 100644 --- a/python/plugins/grassprovider/grass7.txt +++ b/python/plugins/grassprovider/grass7.txt @@ -169,6 +169,7 @@ There are 4 different levels where you can add logic: - Processing inputs import: if you need to do more than importing input layers. - Processing the command itself: if you need to chain more than one GRASS command for your algorithm. - Processing the outputs: if you need to do special things before exporting layers or if you need special export methods. +- Customising html outputs: if you need to do special processing to an html output, or save the raw output to an output variable. To add some logic on one or more of these levels you have to create a .py file named according to the algorithm name in python/plugins/grassprovider/ext, replacing '.' with '_'. Then create methods using the respective names: @@ -176,9 +177,10 @@ Then create methods using the respective names: - Inputs import: processInputs - Command: processCommand - Outputs: processOutputs +- Custom html outputs: convertToHtml If there is a Python file with the algorithm name in the ext directory, these methods will be imported from the file. -In the case of processCommand, processInputs and processOutputs these will override the "standard" versions of these methods in the code of the GRASS provider. +In the case of processCommand, processInputs, processOutputs and convertToHtml these will override the "standard" versions of these methods in the code of the GRASS provider. You will need to read (and understand) the code for the standard methods in python/plugins/grassprovider/Grass7Algorithm.py. If we take the example of v.what.rast, there is an ext file: ext/v_what_rast.py. diff --git a/python/plugins/processing/gui/AlgorithmDialog.py b/python/plugins/processing/gui/AlgorithmDialog.py index 30873a956a54..1bea1e4229f5 100644 --- a/python/plugins/processing/gui/AlgorithmDialog.py +++ b/python/plugins/processing/gui/AlgorithmDialog.py @@ -19,7 +19,6 @@ __date__ = 'August 2012' __copyright__ = '(C) 2012, Victor Olaya' -from pprint import pformat import datetime import time @@ -283,9 +282,11 @@ def on_complete(ok, results): if ok: self.feedback.pushInfo( self.tr(elapsed_time(start_time, 'Execution completed in'))) - self.feedback.pushInfo(self.tr('Results:')) + self.feedback.pushInfo(self.tr('Results:\n')) r = {k: v for k, v in results.items() if k not in ('CHILD_RESULTS', 'CHILD_INPUTS')} - self.feedback.pushCommandInfo(pformat(r)) + for i in r: + self.feedback.pushInfo(i) + self.feedback.pushCommandInfo(r[i]) else: self.feedback.reportError( self.tr(elapsed_time(start_time, 'Execution failed after'))) From 361e0d4b039fb7124aade3f8324d183b09a95a6b Mon Sep 17 00:00:00 2001 From: AlisterH Date: Mon, 3 Jul 2023 23:59:38 +1200 Subject: [PATCH 07/12] fix lint error --- python/plugins/grassprovider/ext/g_extension_list.py | 3 ++- python/plugins/grassprovider/ext/g_version.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 1360f4859880..56fe5d007b03 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -28,4 +28,5 @@ def convertToHtml(alg, fileName, outputs): # it will be very slow outputs['MESSAGES'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here - alg.convertToHtml(fileName) \ No newline at end of file + alg.convertToHtml(fileName) + \ No newline at end of file diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py index 55bdd41cd5fc..f924ea578970 100644 --- a/python/plugins/grassprovider/ext/g_version.py +++ b/python/plugins/grassprovider/ext/g_version.py @@ -28,4 +28,5 @@ def convertToHtml(alg, fileName, outputs): # it will be very slow outputs['MESSAGES'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here - alg.convertToHtml(fileName) \ No newline at end of file + alg.convertToHtml(fileName) + \ No newline at end of file From c3db9b938c1b85eb3d564ddd0b3167e6cc90716b Mon Sep 17 00:00:00 2001 From: AlisterH Date: Tue, 4 Jul 2023 00:04:48 +1200 Subject: [PATCH 08/12] fix flake error --- python/plugins/grassprovider/ext/g_extension_list.py | 1 + python/plugins/grassprovider/ext/g_version.py | 1 + 2 files changed, 2 insertions(+) diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 56fe5d007b03..98ffa1d085a3 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -23,6 +23,7 @@ def processInputs(alg, parameters, context, feedback): pass + def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats # it will be very slow diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py index f924ea578970..23fa74be1fb2 100644 --- a/python/plugins/grassprovider/ext/g_version.py +++ b/python/plugins/grassprovider/ext/g_version.py @@ -23,6 +23,7 @@ def processInputs(alg, parameters, context, feedback): pass + def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats # it will be very slow From 30deda06df454173fc2ec0cc7f4361cb498628f3 Mon Sep 17 00:00:00 2001 From: AlisterH Date: Mon, 10 Jul 2023 06:46:25 +1200 Subject: [PATCH 09/12] Give output variables specific names --- python/plugins/grassprovider/ext/g_extension_list.py | 2 +- python/plugins/grassprovider/ext/g_version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 98ffa1d085a3..86693dd09f13 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -27,7 +27,7 @@ def processInputs(alg, parameters, context, feedback): def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats # it will be very slow - outputs['MESSAGES'] = open(fileName, 'r').read() + outputs['GRASS_ADDONS'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here alg.convertToHtml(fileName) \ No newline at end of file diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py index 23fa74be1fb2..e0ff134facdd 100644 --- a/python/plugins/grassprovider/ext/g_version.py +++ b/python/plugins/grassprovider/ext/g_version.py @@ -27,7 +27,7 @@ def processInputs(alg, parameters, context, feedback): def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats # it will be very slow - outputs['MESSAGES'] = open(fileName, 'r').read() + outputs['GRASS_VERSIONINFO'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here alg.convertToHtml(fileName) \ No newline at end of file From 91c6afe551f9bff1a38a13523f237225301df2ea Mon Sep 17 00:00:00 2001 From: AlisterH Date: Mon, 10 Jul 2023 06:55:07 +1200 Subject: [PATCH 10/12] fix flake error this time? --- python/plugins/grassprovider/ext/g_extension_list.py | 1 - python/plugins/grassprovider/ext/g_version.py | 1 - 2 files changed, 2 deletions(-) diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 86693dd09f13..44a13a70caca 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -30,4 +30,3 @@ def convertToHtml(alg, fileName, outputs): outputs['GRASS_ADDONS'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here alg.convertToHtml(fileName) - \ No newline at end of file diff --git a/python/plugins/grassprovider/ext/g_version.py b/python/plugins/grassprovider/ext/g_version.py index e0ff134facdd..46cbe4d87b4e 100644 --- a/python/plugins/grassprovider/ext/g_version.py +++ b/python/plugins/grassprovider/ext/g_version.py @@ -30,4 +30,3 @@ def convertToHtml(alg, fileName, outputs): outputs['GRASS_VERSIONINFO'] = open(fileName, 'r').read() # this will read the file a second time, but calling it saves us duplicating the code here alg.convertToHtml(fileName) - \ No newline at end of file From c18a5fec88f13b92d43e7488ab2dd4ed25086200 Mon Sep 17 00:00:00 2001 From: AlisterH Date: Tue, 8 Aug 2023 10:09:02 +1200 Subject: [PATCH 11/12] g.extension.list.txt - use QgsProcessingParameterEnum --- .../description/g.extension.list.txt | 6 ++---- .../grassprovider/ext/g_extension_list.py | 20 +++++++++++++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/python/plugins/grassprovider/description/g.extension.list.txt b/python/plugins/grassprovider/description/g.extension.list.txt index 766549ac43a3..06ab65f69440 100644 --- a/python/plugins/grassprovider/description/g.extension.list.txt +++ b/python/plugins/grassprovider/description/g.extension.list.txt @@ -1,7 +1,5 @@ g.extension -g.extension.list - List GRASS addons.

Select only one of the three options. +g.extension.list - List GRASS addons. General (g.*) -QgsProcessingParameterBoolean|-l|List available extensions in the official GRASS GIS Addons repository|False -QgsProcessingParameterBoolean|-c|List available extensions in the official GRASS GIS Addons repository including module description|False -QgsProcessingParameterBoolean|-a|List locally installed extensions|False +QgsProcessingParameterEnum|list|List|Locally installed extensions;Extensions available in the official GRASS GIS Addons repository;Extensions available in the official GRASS GIS Addons repository including module description|False|0|False QgsProcessingParameterFileDestination|html|List of addons|Html files (*.html)|addons_list.html|True diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index 44a13a70caca..fa94f6c76f9b 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -19,10 +19,26 @@ __date__ = 'May 2023' __copyright__ = '(C) 2023, Alister Hood' +from qgis.core import QgsProcessingParameterBoolean -def processInputs(alg, parameters, context, feedback): - pass +def processInputs(alg, parameters, context, feedback): + # get the option we want to run + # we would need to update the if statements below if the order in the description file is changed + selectedOption = alg.parameterAsInt(parameters, 'list', context) + # Locally installed extensions + if selectedOption == 0: + optionString = '-a' + # Extensions available in the official GRASS GIS Addons repository + elif selectedOption == 1: + optionString = '-l' + # Extensions available in the official GRASS GIS Addons repository including module description + else: + optionString = '-c' + param = QgsProcessingParameterBoolean(optionString,'',True) + alg.addParameter(param) + # Don't forget to remove the old input parameter + alg.removeParameter('list') def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats From 3b9d6253118cecbfd39325c7061f7e6a66779e02 Mon Sep 17 00:00:00 2001 From: AlisterH Date: Tue, 8 Aug 2023 10:59:39 +1200 Subject: [PATCH 12/12] Fix flake errors from last commit --- python/plugins/grassprovider/ext/g_extension_list.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/plugins/grassprovider/ext/g_extension_list.py b/python/plugins/grassprovider/ext/g_extension_list.py index fa94f6c76f9b..37862cc73024 100644 --- a/python/plugins/grassprovider/ext/g_extension_list.py +++ b/python/plugins/grassprovider/ext/g_extension_list.py @@ -35,11 +35,12 @@ def processInputs(alg, parameters, context, feedback): # Extensions available in the official GRASS GIS Addons repository including module description else: optionString = '-c' - param = QgsProcessingParameterBoolean(optionString,'',True) + param = QgsProcessingParameterBoolean(optionString, '', True) alg.addParameter(param) # Don't forget to remove the old input parameter alg.removeParameter('list') + def convertToHtml(alg, fileName, outputs): # don't copy this for something that will have lots of data like r.stats # it will be very slow