142 Commits

Author SHA1 Message Date
Nyall Dawson
6e1c5c4d75 [FEATURE] Show processing models in browser
And allow them to be executed and edited directly from there
2017-09-20 14:09:03 +10:00
Nyall Dawson
cf16a82419 Fix indentation 2017-09-12 19:23:37 +10:00
Nyall Dawson
4a974eab18 Cleanup model algorithm parameter definition dialog 2017-09-12 17:12:13 +10:00
Nyall Dawson
b62fd51cc2 Don't allow dragging groups in model algorithm tree 2017-08-22 23:16:33 +10:00
Nyall Dawson
d6e2985c08 Fix invalid icon sizes in processing model builder
While the toolbar buttons were shown in the correct size, the
actual icon image in the buttons was not correctly scaling to
match the button size.

Hardcoding the svg icons in the py file seems to be the only
way to avoid this.
2017-08-07 05:24:12 +10:00
Nyall Dawson
cad54f2cea Fix incorrect icon sizes in Python console
Console was not respecting application icon size setting
2017-08-07 05:24:12 +10:00
arnaud.morvan@camptocamp.com
40ccd3bcb3 [processing] Correctly delete processing dialogs
del only delete the python variable, not the dialog which is owned by the main window.
2017-08-05 09:31:40 +02:00
Nyall Dawson
5c844a5cfb Really delete processing dialogs
The dialogs are parented to the main window, which means sip
transfers the ownership to the main window - and they are
never deleted as a result. This results in various error
messages caused by the widgets hanging around forever
and listening out for various signals they are connected to.
2017-07-12 18:52:53 +10:00
Nyall Dawson
1e13d733c2 Move declaration of algorithm parameters/outputs to a new virtual
initAlgorithm() method

This allows 2 benefits:
- algorithms can be subclassed and have subclasses add additional
parameters/outputs to the algorithm. With the previous approach
of declaring parameters/outputs in the constructor, it's not
possible to call virtual methods to add additional parameters/
outputs (since you can't call virtual methods from a constructor).

- initAlgorithm takes a variant map argument, allowing the algorithm
to dynamically adjust its declared parameters and outputs according
to this configuration map. This potentially allows model algorithms which
can be configured to have variable numbers of parameters and
outputs at run time. E.g. a "router" algorithm which directs
features to one of any number of output sinks depending on some
user configured criteria.
2017-07-10 16:31:14 +10:00
Nyall Dawson
f49b603443 Split QgsProcessingModelAlgorithm into separate components
The cpp/h file was getting too large, so split off the individual
subcomponents into their own h/cpp files to keep code
maintainable.
2017-07-08 20:49:17 +10:00
Nyall Dawson
cfa18039af Fix incorrect icon size in processing windows
Well... kind of. It fixes the toolbar button size, but for some
reason the actual icon content itself isn't being resized. I can't
work out why this is...
2017-07-08 20:49:17 +10:00
Nyall Dawson
82ef7d2a89 Create specific expression context scope for child algorithms
Contains variables for model parameters, algorithm results for
other child algorithms which are not dependent on the
algorithm.

Allows removal of final pieces of ModelerAlgorithm code
2017-07-07 11:35:31 +10:00
Nyall Dawson
e0c7daa2d8 Rename QgsProcessingAlgorithm::clone to ::create
Since it better describes what the function does. It returns a new
pristine copy of the algorithm, not a clone of its current state
2017-07-07 09:27:35 +10:00
Nyall Dawson
6d7b0a3bbc Fix re-saving already saved models 2017-07-07 09:26:17 +10:00
Nyall Dawson
9156933c9e Add a pure virtual clone method for algorithms
This is required for safely executing the algorithm in a background
thread.
2017-07-07 09:26:17 +10:00
Nyall Dawson
0a32add69e Port exporting model as python code to c++ 2017-06-27 08:33:13 +10:00
Nyall Dawson
ab9470dada More .model -> .model3 updates 2017-06-24 13:34:14 +10:00
Nyall Dawson
5e7fbf44be Make QgsAlgorithm::setProvider() public
Turns out there's valid use cases for calling this from outside
code.
2017-06-24 13:33:44 +10:00
Nyall Dawson
8f586ef020 Move groups from QGIS (and QGIS native) provider to top level items
in processing toolbox

Helps aid in user discoverability of these algorithms, and
indicates to users that these should generally be the
preferred algorithm choices if duplicates exist from other
providers.
2017-06-24 12:01:16 +10:00
Nyall Dawson
8e88276ab5 Remove another member from ModelerAlgorithm 2017-06-24 07:36:25 +10:00
Nyall Dawson
10aeba2e72 Move more modelling code to c++ 2017-06-24 07:36:13 +10:00
Nyall Dawson
e7f13f5bd8 Port model help code to c++ 2017-06-24 07:36:07 +10:00
Nyall Dawson
9c47e1b148 Fix errors when edit model help 2017-06-24 07:35:56 +10:00
Nyall Dawson
df07772a56 Fix error when adding parameter 2017-06-22 12:21:25 +10:00
Nyall Dawson
9a2f14b931 First steps to model/save restore in c++
Models now save to QVariantMap, using QgsXmlUtils to save to
an xml based format (with extension .model3)
2017-06-20 17:26:57 +10:00
Nyall Dawson
1a4a654f8b Port more model API across to c++ 2017-06-20 14:45:13 +10:00
Nyall Dawson
f6358b2118 Begin port of modeler algorithm to c++ 2017-06-20 14:45:13 +10:00
Nyall Dawson
efe8bba006 Work on resurrecting modeler 2017-06-20 14:45:13 +10:00
Nyall Dawson
03e40f7497 [processing] Remove all remaining algorithm copies
Algorithms are no longer copied - just a single const instance
of each algorithm is used
2017-06-06 07:41:19 +10:00
Nyall Dawson
877775d2c0 Remove a bunch of unneeded imports 2017-05-02 14:47:58 +10:00
Nyall Dawson
ac84326464 [processing] Fix executing models 2017-05-01 17:29:40 +10:00
Nyall Dawson
e9f13d1ea3 Just use standard QgsMessageLog functionality instead of a dedicated
method for processing
2017-04-26 13:57:06 +10:00
Nyall Dawson
1394c28d13 [processing] Move some log handling to c++ class 2017-04-26 13:56:29 +10:00
Nyall Dawson
117260dcf3 Remove activation control from AlgorithmProvider
Split between QgsProcessingProvider and subclasses
2017-04-07 13:21:28 +10:00
Nyall Dawson
ff32054da6 Fix some breakage 2017-04-07 13:21:28 +10:00
Nyall Dawson
4970bb4cd5 Move more algList functionality to QgsProcessingRegistry 2017-04-07 13:21:28 +10:00
Nyall Dawson
2a1a71574a Move algorithm id (previously commandLineName) to QgsProcessingAlgorithm 2017-04-07 13:21:28 +10:00
Nyall Dawson
b3142a0baf Move provider algorithm handling to QgsProcessingProvider 2017-04-07 13:21:28 +10:00
Nyall Dawson
e506ceb1f8 Move flags (hide from toolbox, etc) to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Nyall Dawson
6987d7b37c Port handling of algorithm names to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Nyall Dawson
dc729c1b5a Move algorithm group handling to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Nyall Dawson
faa8a653b2 Move algorithm icon handling to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Nyall Dawson
28e75731e1 Move tag handling to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Nyall Dawson
b0dc9f8517 [processing] Fix error when opening modeler (fix #16270) 2017-03-16 12:56:42 +10:00
Juergen E. Fischer
f00a87cb8a update translation strings 2017-03-05 10:21:24 +01:00
Juergen E. Fischer
ecc5bb508e pep8/pyflakes3 cleanups 2017-03-04 02:38:15 +01:00
Juergen E. Fischer
a10c890383 More QgsSettings updates:
* revives WMS
* QgsSettings::clear() added
* section added to QgsSettings::contains()
* type parameter added to sip binding of QgsSettings.value()
* TODO: customization & evis
2017-03-04 02:37:59 +01:00
arnaud.morvan@camptocamp.com
c43b04ffff Fix modeler and batch file dialog 2017-02-09 11:05:09 +01:00
Juergen E. Fischer
89b58d7334 translation string fixes 2017-01-25 02:19:33 +01:00
Nyall Dawson
dca697b427 [processing] New c++ QgsProcessingRegistry class
Intended as a registry for the various processing components,
including providers, algorithms and various parameters and outputs.

Currently handles only registration of providers, as a step toward
removing processing's algList (this requires first porting
the algorithm class to c++)

A QgsProcessingRegistry instance is attached to QgsApplication,
and is retrieved by QgsApplication::processingRegistry()
2017-01-11 10:55:15 +10:00