134 Commits

Author SHA1 Message Date
Nyall Dawson
1d6d4be556 Correctly reject algorithm dialog
Algorithm dialog was not being rejected when close button was
called (only hidden), leading to old dialogs and widgets
hanging around forever...
2017-06-12 07:26:02 +10:00
Nyall Dawson
aa544a14c0 Only use a temporary feedback object when running algorithms
Otherwise canceling a run causes all future runs to be canceled
2017-06-12 07:26:02 +10:00
Nyall Dawson
2d2c229332 Port checkInputCRS to c++, and allow algorithms to flag when they
require all input layers to be in the same CRS

The default behaviour is to assume that algorithms are well behaved
and can handle multi-CRS inputs, but algs have the option to
flag that they do not allow this and require the input CRS check.

Those algs should document that they require all inputs to have
matching CRS - processing 3.0 behaviour is to assume that algs
can handle this.
2017-06-12 07:26:02 +10:00
Nyall Dawson
6b55300fbc If a feature sink parameter is optional and not set, don't create the sink
This adds a lot of flexibility to algorithms, as it makes output
sinks truely optional. For instance, the various "Extract by..."
algorithms could add a new optional sink for features which
'fail' the extraction criteria. This effectively allows these
algorithms to become feature 'routers', directing features onto
other parts of a model depending on whether they pass or fail
the test.

But in this situation we don't always care about these failing
features, and we don't want to force them to always be fetched
from the provider. By making the outputs truely optional,
the algorithm can tweak its logic to either fetch all features
and send them to the correct output, or only fetch
matching features from the provider in the first place (a big
speed boost).
2017-06-09 14:22:29 +10:00
Alexander Bruy
77fa17781e [processing] save and restore geometry of the algorithm dialog 2017-06-06 10:51:22 +03:00
Nyall Dawson
c1d35a043b Port getHTMLOutputsCount to c++ API 2017-06-06 15:39:54 +10:00
Nyall Dawson
a27c22d9b1 Add raster layer output parameters 2017-06-06 14:38:24 +10:00
Nyall Dawson
b75a174780 Rename QgsProcessingFeatureSinkDefinition to QgsProcessingOutputLayerDefinition
Since it also applies to raster layer outputs, we need a more generic name
2017-06-06 13:43:55 +10:00
Nyall Dawson
ab64428891 Add a cancel button for algorithms which support cancelation 2017-06-06 11:40:33 +10:00
Nyall Dawson
5e92c0dbf4 Fix saving processing outputs with correct encoding 2017-06-06 09:51:49 +10:00
Nyall Dawson
77072b15ac Rename QgsProcessingFeatureSink to QgsProcessingFeatureSinkDefinition
For consistency with QgsProcessingFeatureSourceDefinition
2017-06-06 08:42:48 +10:00
Nyall Dawson
81da209bf5 Use a QgsProject pointer instead of bool loadIntoProject
Allows potential future use case of loading results into
a different open project
2017-06-06 08:40:23 +10:00
Nyall Dawson
ea2e477d91 Fix failing tests, temporarily disable some processing tests during
refactoring
2017-06-06 07:41:20 +10:00
Nyall Dawson
5b9d925c70 Fix loading of results after running algorithms 2017-06-06 07:41:20 +10:00
Nyall Dawson
5b8affcb56 Rename QgsProcessingParameterOutputVectorLayer to QgsProcessingParameterFeatureSink 2017-06-06 07:41:20 +10:00
Nyall Dawson
189f804714 Adapt more code to c++ API 2017-06-06 07:41:19 +10:00
Nyall Dawson
ef59d0c454 Port parameter checking to c++ 2017-06-06 07:41:19 +10:00
Nyall Dawson
c1d9d57dd2 First working pure c++ algorithms 2017-06-06 07:41:19 +10:00
Nyall Dawson
4cb7d18b1c Push parameters into processAlgorithm and related functions 2017-06-06 07:41:19 +10:00
Nyall Dawson
f1c53c3aa4 Refactor Algorithm setParamValues -> getParamValues
Now returns a dict of parameter inputs for the algorithm
2017-06-06 07:41:19 +10:00
Nyall Dawson
134c04b8bb Move getParametersPanel out of algorithm class
It's a gui related method, so shouldn't be in core class
2017-06-06 07:41:19 +10:00
arnaud.morvan@camptocamp.com
e232a0809c [processing] Handle context in processing.run
Fix #15985 (Concave hull)
2017-05-02 17:04:57 +02:00
Nyall Dawson
49c688bbe4 Fix use of QgsProcessingUtils.mapLayerFromString 2017-05-02 13:40:49 +10:00
Nyall Dawson
f84d703234 Add method QgsProcessingUtils::mapLayerFromString
Algorithms and other processing code should use this method
(instead of dataobjects.getLayerFromString) to
retrieve layers from a string, as it considers the processing
context and allows resolving strings to temporarily stored layers.

This permits processing models to function correctly when
intermediate results are stored as memory layers. Subsequent
model algorithms can then access these temporary layers as inputs.
All temporary layers will be removed when the context object
is destroyed after the model algorithm is run.
2017-05-02 12:33:04 +10:00
Nyall Dawson
fd2c18ee16 Refactor processing writer to use QgsFeatureSink, and to store
temporary output layers in the provided processing context

Should fix loss of intermediate memory layers when running
a multi-step model
2017-04-26 17:38:40 +10:00
Nyall Dawson
1394c28d13 [processing] Move some log handling to c++ class 2017-04-26 13:56:29 +10:00
Nyall Dawson
86002f3b6f Move createContext to dataobjects 2017-04-26 12:53:35 +10:00
Nyall Dawson
adc7cf0ec2 Add context argument to vector.features 2017-04-26 12:53:35 +10:00
Nyall Dawson
dd4f530cfb [processing] Pass context argument to processAlgorithm 2017-04-26 12:53:35 +10:00
Nyall Dawson
377b181c4e Port more processing dataobjects methods to c++
Also
- simplify and add tests
- remove large memory leak (persistant store of all non-project layers)
- remove broken support for direct loading postgres/virtual layers
by string (Python version was very broken and would never match
a postgres/virtual layer)
2017-04-05 19:50:46 +10:00
Nyall Dawson
8ffdb362cc Port some processing dataobjects routines to c++ 2017-04-05 15:27:17 +10:00
Nyall Dawson
6987d7b37c Port handling of algorithm names to QgsProcessingAlgorithm 2017-04-03 21:17:45 +10:00
Alexander Bruy
c1e6ba0f40 [processing] rename AlgorithmExecutor's runalg() and runalgIterating()
to avoid overlapping with general functions and improve readability
2017-03-22 19:11:36 +02:00
Juergen E. Fischer
f00a87cb8a update translation strings 2017-03-05 10:21:24 +01:00
Nyall Dawson
3ecafb3472 [processing] Allow extent parameters to avoid matching layer CRS check 2017-02-14 05:49:23 +10:00
Nyall Dawson
ede452be85 [processing] Port feedback object to c++
Algorithms are now passed a QgsProcessingFeedback object
instead of the loosely defined progress parameter.
2017-01-11 11:11:10 +10:00
Martin Dobias
d56a97d4fe Merge QgsMapLayerRegistry into QgsProject
All methods/signals of QgsMapLayerRegistry moved verbatim to QgsProject.
2016-12-10 15:18:12 +08:00
volaya
fcc343724e [processing] some fixes and changes in parameters and parameters panel 2016-12-01 12:50:27 +01:00
nirvn
c87839f054 [processing] fix ExtentSelectionPanel's getValue() 2016-11-15 09:07:58 +07:00
Alexander Bruy
9d6acbdb99 [processing] add missed imports 2016-10-18 20:57:34 +03:00
Alexander Bruy
700441eec9 [processing] remove debug line and fix spatial index creation 2016-10-18 16:55:19 +03:00
volaya
b83fbb16c9 [processing] warn if extent might not be in the expected CRS 2016-10-18 16:55:19 +03:00
arnaud.morvan@camptocamp.com
4184934b9a [processing] Apply 2to3 on changes 2016-10-05 12:39:01 +02:00
Alexander Bruy
3407ced90e fix indentation
Conflicts:
	python/plugins/processing/gui/BatchInputSelectionPanel.py
	python/plugins/processing/gui/wrappers.py
2016-10-05 12:38:50 +02:00
volaya
8ce93b102c [processing] removed unused imports 2016-10-05 12:38:31 +02:00
volaya
5464c4501b [processing] use QgsMessage bar in algorithm dialogs 2016-10-05 12:38:30 +02:00
volaya
c491c01266 [processing] changes to allow custom parameter dialog adapt to new parameter architecture 2016-10-05 12:38:21 +02:00
volaya
fe5d0166cc [processing] added multiple option to ParameterTableFIeld
removed ParameterTableMultipleField and did some cleanup
2016-10-05 12:38:09 +02:00
volaya
e353d226a8 [processing] evaluate parameters before executing algorithm
This allows a better use of expressions
2016-10-05 12:35:02 +02:00
volaya
b298c76ee4 [processing] implemented parameter widget wrappers
Conflicts:
	python/plugins/processing/core/GeoAlgorithm.py
	python/plugins/processing/gui/ExtentSelectionPanel.py
	python/plugins/processing/modeler/ModelerParametersDialog.py
2016-10-05 12:34:58 +02:00