2923 Commits

Author SHA1 Message Date
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
Martin Dobias
25ed76b86e Move labeling engine config to a new class + QgsPalLabeling cleanup
Another bit to make core library independent from QgsProject::instance().
Until now labeling engine configuration was taken from project singleton.

Removed legacy methods from QgsPalLabeling - the class now does not have
any more member variables/methods, it is just a bunch of helper functions.

(PR #4384)
2017-04-21 18:04:09 +08:00
Mathieu Pellerin
e0d20e537d Update decorators to avoid relying on map canvas when rendering (#4388) 2017-04-21 12:06:24 +07:00
Mathieu Pellerin
db848a3f1a Upgrade the save as image function into a background task (#4382) 2017-04-21 11:47:37 +07:00
Denis Rouzaud
8f2a5c7c00 sipify all 2017-04-20 14:21:36 +02:00
Nyall Dawson
dd6c7fdbc8 Add a QgsProject::ellipsoidChanged signal 2017-04-20 15:46:28 +10:00
Nyall Dawson
dce3c88b06 Add methods to clone annotations 2017-04-20 13:39:36 +10:00
Denis Rouzaud
be9a51c42d sipify QgsMapLayerModel, QgsMapLayerProxyModel 2017-04-19 16:44:36 +02:00