38202 Commits

Author SHA1 Message Date
Nyall Dawson
946f0fac22 Merge pull request #4418 from nyalldawson/take_layer
Allow taking layers from QgsProject
2017-04-26 17:37:43 +10:00
Nyall Dawson
a5e33fa93c Add method to take layer and ownership from a project 2017-04-26 16:48:27 +10:00
Denis Rouzaud
9bb076295e [sipify] improvements
* add Array and ArraySize annotations
 * also handle multiline skipped bodies
 * handle #if 0 blocks
2017-04-26 08:15:18 +02:00
Nyall Dawson
7c71ea6257 Add missing docs 2017-04-26 15:29:30 +10:00
Nyall Dawson
7c9b00c331 Merge pull request #4400 from nyalldawson/processing_log
[processing] Move some log handling to c++ class
2017-04-26 14:12:36 +10:00
Nyall Dawson
6b4ddb3b0d Add temporary layer store to processing context
This temporary layer store (a QgsProject) is used as a
store for layers that are added if a parameter that
is evaluated to a layer requires that a new, non-active-project
layer is loaded. It means that these layers will remain accessible
for the duration of the algorithm's execution (or models
execution if an algorithm is run as part of a model), before
being automatically discarded when the QgsProcessingContext
used to run the algorithm/model goes out of scope.

This approach has several benefits:
- it means that algorithms (including c++ algorithms) are able
to use both project and non-project layers without needing
to handle any memory management themselves.
- it means that layers are guaranteed to last for the duration
of a model execution. This is currently an issue where models
which use memory layers as intermediate outputs do not
function correctly as the memory layers are destroyed before
the model has finished executing
- there should be no leakage of layers remaining open
after an algorithm exits
2017-04-26 14:06:59 +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
93c32e68ef Fix logging from GDAL 2017-04-26 13:56:30 +10:00
Nyall Dawson
1394c28d13 [processing] Move some log handling to c++ class 2017-04-26 13:56:29 +10:00
Nyall Dawson
5169e0db65 Merge pull request #4412 from nyalldawson/processing_get_features
Port processing vector.features to c++
2017-04-26 13:48:41 +10:00
Nyall Dawson
a4cd66f8d8 Port some more code to new API 2017-04-26 13:13:08 +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
91679b3cbd [processing] Don't use config values for invalid geometry handling in tests 2017-04-26 12:53:35 +10:00
Nyall Dawson
a28bc086eb Indentation/sipify 2017-04-26 12:53:35 +10:00
Nyall Dawson
845027d0a3 Fix failing tests 2017-04-26 12:53:35 +10:00
Nyall Dawson
86002f3b6f Move createContext to dataobjects 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
1c6f165ff5 Add missing doc 2017-04-26 12:53:35 +10:00
Nyall Dawson
427c3b1684 Remove vector.features
Use QgsProcessingUtils.getFeatures instead
2017-04-26 12:53:35 +10:00
Nyall Dawson
6397386fda Remove len method from vector.features
Use QgsProcessingUtils::featureCount instead
2017-04-26 12:53:35 +10:00
Nyall Dawson
f4f4ca3d83 Raise GeoAlgorithmExecutionException when encountering invalid
geometries in QgsProcessingUtils::getFeatures
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
8cf1617f5d Use context to control vector.features() 2017-04-26 12:53:35 +10:00
Nyall Dawson
3f137e123d Add context argument to other vector methods 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
f3cfb8b759 Add invalid geometry handling method to processing context 2017-04-26 12:53:35 +10:00
Nyall Dawson
06a20b935d Add UseSelection flag to QgsProcessingContext
Indicates whether only selected features should be used in
algorithms
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
241d283bb8 Create a context object for processing algorithm execution 2017-04-26 12:53:35 +10:00
Nyall Dawson
fea6bff707 Merge pull request #4389 from nyalldawson/scalebar
Refactor scalebar renderer, split from composer
2017-04-26 12:40:06 +10:00
Nyall Dawson
16cb244d2a Merge pull request #4416 from nyalldawson/feature_sink
Add a QgsFeatureSink interface
2017-04-26 12:39:54 +10:00
Nyall Dawson
4293de6327 Add missing override keywords 2017-04-26 12:06:02 +10:00
Nyall Dawson
3dfc4cf6fd Provide a base class version of QgsFeatureSink::addFeature
Means that subclasses are only required to implement addFeatures
2017-04-26 11:58:19 +10:00
Nyall Dawson
9e4f9d4ac6 Sipify update 2017-04-26 11:47:06 +10:00
Nyall Dawson
8d24a9a189 Add missing docs 2017-04-26 11:46:51 +10:00
Nyall Dawson
fa21311e4c More robust test for numeric scale bar 2017-04-26 11:46:51 +10:00
Nyall Dawson
b40bc0c1f7 Refactor scale bar rendering
Move all scalebar rendering code out of composer and ensure that
all scalebar rendering is done independant of QgsComposerScaleBar

This allows scalebar rendering code to be reused by plugins
and by non-composer code.

Also rename QgsScaleBarStyle -> QgsScaleBarRenderer, (and all
subclasses too). This name better reflects what these classes do.
2017-04-26 11:46:51 +10:00
Nyall Dawson
dd7be73fa4 Add a method to QgsFeatureSink to add all features from an iterator 2017-04-26 11:43:47 +10:00
Nyall Dawson
e273ec7345 Remove invalid doxygen note
It's only flipping a bool, and possibly in some circumstances
it's more efficient to add features one by one rather than storing
large number of features in a temporary list
2017-04-26 11:32:35 +10:00
Nyall Dawson
1280779617 Don't force use of In,Out in QgsFeatureSink methods 2017-04-26 11:32:34 +10:00
Nyall Dawson
49d4b5eb2f QgsFeatureStore is a QgsFeatureSink
Also clean up API for QgsFeatureStore, sipify
2017-04-26 11:32:34 +10:00
Nyall Dawson
c4578c3c1d QgsVectorLayer is a QgsFeatureSink
Also cleanup API for addFeature(s) in QgsVectorLayer, by removing
the unused extra argument from addFeature() and be removing the
makeSelected argument from addFeatures() (code should be adapted
to manually select added features after adding if desired - this
was only used in a single place in the QGIS code and I suspect
this was unintentional in any case)
2017-04-26 11:32:34 +10:00
Nyall Dawson
8d598337f3 QgsVectorFileWriter is a QgsFeatureSink 2017-04-26 11:32:34 +10:00
Nyall Dawson
8d0a9d6bce Add In,Out annotations to QgsFeatureSink methods 2017-04-26 10:43:44 +10:00
Nyall Dawson
7ae71ded57 QgsVectorDataProvider is a QgsFeatureSink 2017-04-26 10:43:07 +10:00
Nyall Dawson
363336394e Add a QgsFeatureSink interface for classes which accept adding features 2017-04-26 10:39:57 +10:00
Nyall Dawson
13b44722ca Add a simple qHash for QVariant
Allows creation of QSet<QVariant>
2017-04-26 09:58:21 +10:00
Larry Shaffer
66f4ff9710 Merge pull request #4407 from boundlessgeo/filedownloader-auth
[auth] Add authentication configuration support to QgsFileDownloader
2017-04-25 17:39:22 -06:00