2930 Commits

Author SHA1 Message Date
Nyall Dawson
0b0ccc9e9d Rename QgsVectorLayer::selectedFeaturesIterator to getSelectedFeatures
It's more in line with QgsVectorLayer::getFeatures, hence a more
discoverable API
2017-04-27 11:16:10 +10:00
lbartoletti
84471f2e6d New classes for circle and ellipse. 2017-04-27 10:25:29 +10:00
Nyall Dawson
ccb4ac98b4 Merge pull request #4417 from nyalldawson/processing_writer
Refactor processing writer to use QgsFeatureSink
2017-04-27 10:14:33 +10:00
Denis Rouzaud
4cc4a27068 [sipify] operators, remove argument
* skip some operators
 * allow to remove an argument with SIP_PYARGREMOVE
2017-04-26 15:06:16 +02:00
Denis Rouzaud
45266cd03e [sipify] improvements
* add In annotation
 * remove struct forward declarations
 * fix members initialization list in header
 * merge removal code for function bodies and constructor definition
2017-04-26 10:25:50 +02: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
a5e33fa93c Add method to take layer and ownership from a project 2017-04-26 16:48:27 +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
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
a28bc086eb Indentation/sipify 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
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
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
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
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
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
Denis Rouzaud
c1832854a2 sipify batch
* QgsDial
* QgsDialog
* QgsDockWidget
* QgsEncodingFileDialog
* QgsErrorDialog
2017-04-25 13:46:56 +02:00
Denis Rouzaud
a60b31d3b3 fix doxymentation 2017-04-25 13:28:01 +02:00
Denis Rouzaud
157709129e sipify layer tree classes 2017-04-25 13:28:01 +02:00
Nyall Dawson
d27cbe7f3f Try to fix build failure on clang 2017-04-25 16:47:52 +10:00
Nyall Dawson
5be060fe85 More cleanups to MethodCode 2017-04-25 16:26:11 +10:00
Nyall Dawson
c658f5ac63 Cleaner MethodCode 2017-04-25 16:16:17 +10:00
Nyall Dawson
9743831123 Expose invalid geometry callback to python 2017-04-25 16:16:17 +10:00
Nyall Dawson
80d07cb4b9 Add method to perform invalid geometry checking in QgsFeatureRequest
Allows requests to specify how invalid geometries should be
handled. Default is to perform no geometry validity checking.
2017-04-25 16:16:17 +10:00
Denis Rouzaud
5a19463cbc sipify batch
* QgsCredentials
 * QgsCrsCache
 * QgsDataSourceUri
 * QgsDateTimeStatisticalSummary
 * QgsDatumTransformStore
2017-04-24 13:06:03 +02:00
Denis Rouzaud
c540ab33bd sipify QgsApplication 2017-04-24 09:35:09 +02:00
Denis Rouzaud
10d34ece02 sipify batch
* QgsBearingUtils
    * QgsBrowserModel
    * QgsColorScheme, QgsColorSchemeRegistry
    * QgsContextHelp
    * QgsCoordinateReferenceSystem
    * QgsCoordinateTransform
    * QgsFeedback
2017-04-24 09:32:39 +02:00
Denis Rouzaud
3652fa7e2b Revert "Revert "Revert "Remove virtual method from class which shouldn't be subclassed"""
This reverts commit 2a8555e13eb9a0e6bc0a24502ddb034f1aa1a3ac.

sorry for the noise
2017-04-24 08:09:13 +02:00
Denis Rouzaud
2a8555e13e Revert "Revert "Remove virtual method from class which shouldn't be subclassed""
This reverts commit cb68c982b829ecf94b19f9b9a030a269e1c2239f.
2017-04-24 08:07:56 +02:00
Denis Rouzaud
1bfa539df1 [sipify] remove extra blank line 2017-04-24 07:39:30 +02:00
Nyall Dawson
cb68c982b8 Revert "Remove virtual method from class which shouldn't be subclassed"
This reverts commit 858129ddd3072d633e0abd97e1a45fe880f4cfb2.

I remember now... that was added to avoid a totally nonsense and
otherwise unfixable crash in the sip bindings...
2017-04-24 12:32:28 +10:00
Nyall Dawson
858129ddd3 Remove virtual method from class which shouldn't be subclassed 2017-04-24 11:02:03 +10:00
Nyall Dawson
6beaa51837 Add test to provider test suite that provider source does not rely
on source layer or provider in any way

Fails for OGR provider! :o
2017-04-24 08:21:06 +10:00
Mathieu Pellerin
268acab5d6 [FEATURE] New "Save as image" settings dialog (#4390)
* Resolution dpi setting
* Extent setting
* Scale setting
* Draw annotations / decorations setting
2017-04-23 13:02:42 +07:00
Nyall Dawson
4a2226af31 Allow canceling background map renders 2017-04-23 13:07:04 +10:00