39838 Commits

Author SHA1 Message Date
Nyall Dawson
70cc19687d Add a method to take result layers (and ownership) from processing context 2017-07-07 09:28:20 +10:00
Nyall Dawson
db816ec3fe Port a multi-step algorithm to new API (concave hull) 2017-07-07 09:28:20 +10:00
Nyall Dawson
a15d283cd6 Port delaunay triangulation alg to new API 2017-07-07 09:28:19 +10:00
Nyall Dawson
75cd91b1a0 Port voronoi polygons algorithm to new API 2017-07-07 09:28:19 +10:00
Nyall Dawson
ebd346c407 runPrepared rethrows exceptions 2017-07-07 09:28:19 +10:00
Nyall Dawson
90f10ae853 Port snap geometries algorithm to new API 2017-07-07 09:28:19 +10:00
Nyall Dawson
05364aa5f0 When running algorithm tests, if two parameters share the same
layer source, ensure that the actual parameter values point
to the same layer
2017-07-07 09:28:19 +10:00
Nyall Dawson
d9fca48217 Add missing signal 2017-07-07 09:28:19 +10:00
Nyall Dawson
ab06973d6a Don't try to load default styles in processing test layers 2017-07-07 09:28:19 +10:00
Nyall Dawson
3cbcd75d2f Add equality operator for QgsProcessingFeatureSourceDefinition 2017-07-07 09:28:19 +10:00
Nyall Dawson
3601138d2a Use a feature source instead of vector layer for QgsGeometrySnapper 2017-07-07 09:28:19 +10:00
Nyall Dawson
8a84e134cc Algorithms don't have to be split to prepare/process/postProcess
Since it's safe to evaluate parameters in background threads
now, it's usually going to be ok to evaluate everything in
the processAlgorithm step.

This keeps the algorithm code as simple as possible, and will
make porting faster.

Note that the prepare/postProcess virtual methods still exist
and can be used when an algorithm MUST do setup/cleanup work
in the main thread.
2017-07-07 09:28:19 +10:00
Nyall Dawson
f39b7a0c4c Fix build warning 2017-07-07 09:28:19 +10:00
Nyall Dawson
3108d68f87 Indentation 2017-07-07 09:28:19 +10:00
Nyall Dawson
4fa2bc025c Keep correct order for zonal stats options, set some stats by default 2017-07-07 09:28:19 +10:00
Nyall Dawson
4eca20f28d Fix zonal stats algorithm execution 2017-07-07 09:28:19 +10:00
Nyall Dawson
274d684f64 Fix procesing test layer loading 2017-07-07 09:28:19 +10:00
Nyall Dawson
b917a82662 Better debuging from processing alg tests 2017-07-07 09:28:19 +10:00
Nyall Dawson
6654aec6a5 Fix execution of script algorithms was not releasing layers/sinks 2017-07-07 09:28:19 +10:00
Nyall Dawson
f82899540e Fix build 2017-07-07 09:28:19 +10:00
Nyall Dawson
5f02e9c89d Avoid QgsFeedback flooding progress report signals
We only emit the progress changed signal when there's been at
least a 0.1% change since the last progress report. Otherwise
it's possible that things like processing algorithms which
are reporting feedback every feature in a 500k feature dataset
cause a gazillion signals to be emitted and everything to
slow to a crawl
2017-07-07 09:28:19 +10:00
Nyall Dawson
e9e335a7bd Don't set thinking cursors when running processing algorithms
Since now they're run in a background thread, it's not appropriate
anymore
2017-07-07 09:28:19 +10:00
Nyall Dawson
e1184cd69a Make QgsProcessingAlgRunnerTask work correctly
It now safely can execute algorithms in background threads
without issues
2017-07-07 09:28:19 +10:00
Nyall Dawson
e5b156b86a Make processing algorithms safe to run in threads 2017-07-07 09:28:19 +10:00
Nyall Dawson
0231e773a1 Remove unused member 2017-07-07 09:28:19 +10:00
Nyall Dawson
5350483c90 Add method to take results from another processing context and
add to the current context

With appropriate note and tests to ensure that both the current
context and that which the results being taken from share the
same thread affinity
2017-07-07 09:28:19 +10:00
Nyall Dawson
d20c68d3f1 Add method to copy thread safe settings between processing contexts 2017-07-07 09:28:19 +10:00
Nyall Dawson
6c6f646291 Add methods to retrieve current thread affinity and push contexts
to another thread

With suitable assert in place to ensure that pushes are only
made when current thread == existing thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
1dce459610 Add method to transfer all layers from one map store to another
With a note and assert that both stores must have the same
thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
2543e079a5 Better assert messages
Issues is actually when prepare/postProcess is called in a different
thread to context - it doesn't have to be the main thread
2017-07-07 09:27:35 +10:00
Nyall Dawson
1b2086e8a6 Make algorithm dialog use background tasks to execute algorithms 2017-07-07 09:27:35 +10:00
Nyall Dawson
8cfcf57541 Fix tests 2017-07-07 09:27:35 +10:00
Nyall Dawson
7a1fd93ace Flush sink buffers instead of deleting sink/sources in processAlgorithm
Avoids potential issues if processAlgorithm is run in a different
thread
2017-07-07 09:27:35 +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
cd7776ca1c Upgrade ported python algs to be thread ready 2017-07-07 09:27:35 +10:00
Nyall Dawson
c2621b1275 Split algorithm execution into separate prepare/process/postProcess steps
The prepare and postProcess steps are designed to be run in main
thread only, while the process step can safely be run in a background
thread.
2017-07-07 09:26:17 +10:00
Nyall Dawson
5c4f64270d Add clone method to ScriptAlgorithm 2017-07-07 09:26:17 +10:00
Nyall Dawson
cd9328d259 Fix some processing algorithm exception handling 2017-07-07 09:26:17 +10:00
Nyall Dawson
1b2afea23e Add some more clone methods to algorithm subclasses 2017-07-07 09:26:17 +10:00
Nyall Dawson
0c6b19cd85 Improvements to QgsProcessingAlgRunnerTask
- take a clone of algs before running them. This avoids issues
if the algorithm is removed or edited while a background task
is running

- accept an optional existing feedback object
2017-07-07 09:26:17 +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
603168e8fa Update sip 2017-07-07 08:54:00 +10:00
Nyall Dawson
014b0400da Merge pull request #4736 from nyalldawson/text_button
New gui widget QgsFontButton
2017-07-07 07:38:18 +10:00
Juergen E. Fischer
536f6432a3 debian packaging: update oracle dependencies 2017-07-06 18:37:54 +02:00
Matthias Kuhn
91f908f754 Protected -> Private 2017-07-06 17:31:09 +02:00
Matthias Kuhn
11e24c29e7 Remove leftovers 2017-07-06 17:31:09 +02:00
Matthias Kuhn
c973c83c8c Remove unused variable 2017-07-06 17:31:09 +02:00
Nathan Woodrow
e49aaedcb1 Don't duplicate layer tree node when alt is held
Looks like it duplicates the layer but it really just copies the node
meaning QGIS can get confused

Duplicate on Alt will come at a later date
2017-07-06 22:11:36 +10:00
Nyall Dawson
e2acf5369f Add custom widget for QgsFontButton 2017-07-06 20:02:25 +10:00