[QGIS-Developer] only read name and group name of processing algorithms during startup

Rashad Kanavath rashad.kanavath at c-s.fr
Tue Mar 13 03:56:03 PDT 2018


if a provier is enabled then qgis reads all algorithm's during
startup. This involves reading descriptor files and doing all parsing
required to make gui when user actually open algorithm (click on
treeitem).
So If I have like three provider enabled it takes more time to start qgis than
usual. Even though, I might open one or two later at some point. 

It is not necessary here to parse "all" data during startup.  name and
group name is only needed to fill provider-algorithm tree. This is
true for any provider which uses descriptor files (OTB, GRASS, SAGA etc..).

Issue is more about calling defineDescriptorFile() in Algorithm's
__init__ method. And ofcourse, one cannot avoid init when adding
algorithm and tree need to add an instance of algorithm. what can be
done?

There is canExecute() method in baseclass that providers can
override. so init method can read first two line or (single line?) to
fill algorithms tree. And canExecute() can do full parsing of
descriptor files.
I had tried this in OTB code and it seems to work!.

I don't know if there is a better way to implement this or it is
intentional to parse all descriptor files of all providers during
every startup.

I appreciate your comments and feedback on this improvement.

https://gitlab.orfeo-toolbox.org/orfeotoolbox/qgis-otb-plugin/blob/master/otb/OTBAlgorithm.py#L48

-- 
Take care,
Rashad


More information about the QGIS-Developer mailing list