28 Commits

Author SHA1 Message Date
Nyall Dawson
ae97c333d6 Revert "Port algorithm countVisibleParameters to c++"
This reverts commit c3c694f8ccfbe0b64df14365f950f5895968a66a.
2017-05-15 10:24:38 +10:00
Nyall Dawson
c3c694f8cc Port algorithm countVisibleParameters to c++ 2017-05-15 08:44:28 +10:00
Nyall Dawson
271a1e38db Convert remaining parameters from python 2017-05-10 17:04:11 +10:00
Nyall Dawson
3706d88045 [processing] c++ framework for parameters and running algorithms (WIP)
This commit adds the virtual method for running processing algs
to the base c++ class, and adds the initial framework
for c++ algorithm parameters.

When running an algorithm, a QVariantMap is passed
as the algorithm parameters. The high level API provided
by QgsProcessingParameters should be used to retrieve
strings/layers/doubles/etc from this QVariantMap.

This allows advanced use cases, such as passing QgsProperty
with the QVariantMap for "dynamic" parameters, where the
value should be evaluated for every feature processed.

E.g. if the buffer algorithm uses a dynamic property for distance,
then the distance could be bound to either a field value or
to a custom expression. This gets evaluated before buffering
each feature to allow for advanced variable buffering.

Support for dynamic parameters will be "opt in", and non default.
So algorithms will need to specifically add support for
dynamic properties as required.
2017-05-10 10:14:37 +10:00
Nyall Dawson
6aa10c6817 [processing] Cleanup some layer/writer related handling
Ensure that layers created by QgsProcessingUtils::createFeatureSink
can always be retrieved using QgsProcessingUtils::mapLayerFromString
2017-05-09 15:29:41 +10:00
Nyall Dawson
a8a3cc82ed [processing] Port vector.createVectorWriter to c++
This implements an improved version of vector.createVectorWriter
in QgsProcessingUtils. The improved version relies on the
core class QgsVectorLayerImport to create empty layers,
which:
- reduces duplicate code and reuses the mature QgsVectorLayerImport
routines
- avoids manual conversion of field types to destination provider
field types
- potentially allows any writable provider to be used as a feature
sink for algorithms (e.g. output direct to MSSQL/Oracle/db2). This
should work now - it just needs exposing via UI.
2017-05-07 08:02:53 +10:00
Nyall Dawson
32e06f486a Make QgsProcessingContext::temporaryLayerStore() return a pointer to store 2017-05-03 08:43:31 +10:00
Nyall Dawson
d2ce9c69b1 Allow access to project's internal layer store, remove some duplicate code 2017-05-03 07:35:47 +10:00
Nyall Dawson
c575c4a869 Fix build 2017-05-03 07:09:44 +10:00
Nyall Dawson
e709e3eb0a Add unit test for QgsProcessingUtils::createSpatialIndex 2017-05-02 13:49:51 +10:00
Nyall Dawson
600518de72 Add unit tests for QgsProcessingUtils::mapLayerFromString 2017-05-02 12:33:22 +10:00
Nyall Dawson
11fb72eef7 Only expose a single mapLayerFromString method in QgsProcessingUtils 2017-05-02 12:33:22 +10:00
Nyall Dawson
13f081359e Fix failing test 2017-04-26 13:05:56 +10:00
Nyall Dawson
f247a7cda3 Add c++ optimised uniqueValues method which respects processing context
Remove processing vector.uniqueValues/vector.getUniqueValues
and port usage to c++ method

Should be much faster than the python method, as the c++ method takes
advantage of handing off the unique values calculation to the
provider source whenever possible
2017-04-26 12:53:35 +10:00
Nyall Dawson
b067bd786a Rename UseSelection -> UseSelectionIfPresent, clarify docs 2017-04-26 12:53:35 +10:00
Nyall Dawson
e6a33e876c Allow setting the invalid geometry callback in processing context 2017-04-26 12:53:35 +10:00
Nyall Dawson
b32b39501e Add methods for getting vector iterators to QgsProcessingUtils 2017-04-26 12:53:35 +10:00
Nyall Dawson
ebd851993a Remove processing specific methods for adding/removing providers
QgsProcessingRegistry methods should always be used instead
2017-04-07 13:21:28 +10:00
Nyall Dawson
fb1cf1e185 Remove processing algList
All functionality has been moved to QgsProcessingRegistry
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
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
Juergen E. Fischer
b9162dccdf scripts/astyle-all.sh run 2017-03-03 15:37:12 +01:00
Nyall Dawson
a80258f82e Fix some leaks in test suite 2017-02-08 13:16:39 +10:00
Nyall Dawson
337dabea4e Swap QSharedPointer to std::shared_ptr 2017-02-07 12:32:02 +10:00
Nyall Dawson
b71019dfda Add some unit tests for QgsProcessingRegistry 2017-01-11 10:55:16 +10:00