4446 Commits

Author SHA1 Message Date
Nyall Dawson
094cef7140 Sipify and astyle 2018-02-25 08:22:14 +10:00
Nyall Dawson
43cd62b62f [processing] Tweak api for QgsProcessingFeatureBasedAlgorithm
Instead of returning a single QgsFeature from processFeature, we now
return a list of features.

This allows feature based algorithms which return multiple features
per input feature, e.g. "explode" type algorithms which split a
single input feature into multiple output features.
2018-02-21 09:16:43 +11:00
Denis Rouzaud
713bfd3452 add Q_ENUM for QgsRasterProjector::Precision 2018-02-20 02:00:57 -09:00
Nyall Dawson
3ffbd84f5f Add a bounding box intersection test to QgsGeometry
We only previously had methods for exact intersections - this
commit adds a new QgsGeometry.boundingBoxIntersects() method
which can be used to test if just the bounding boxes of
geometries/rectangles intersect.

It's fast, and doesn't care about invalid geometries (unlike
the exact intersects checks)
2018-02-20 13:20:38 +10:00
Nyall Dawson
1da2da219a Fix build 2018-02-20 11:31:33 +10:00
Nyall Dawson
3d4f6f82bb Followup 0548f4, fixes to layer metadata and metadata widget
Address outstanding review requests so that this PR can be merged
2018-02-20 11:10:55 +10:00
mj10777
0548f4267e Added QgsLayerMetadata logic to QgsDataProvider. Added setMetadata in QgsVector/RasterLayer::setDataProvider. Corrections in QgsMetadataWidget with added get/setMetadata and hasChanged functions plus checking for set mLayer pointer before use. 2018-02-20 11:06:57 +10:00
Juergen E. Fischer
f14b729e3b fix some references to PROJ.4 2018-02-19 22:12:09 +01:00
Denis Rouzaud
1a1b197ced use Qgsettins::enumSettingValue where possible 2018-02-19 05:55:09 -09:00
Denis Rouzaud
9e2e99fe42 snapToCurrentLayer correctly handles Area type 2018-02-19 02:08:36 -09:00
Denis Rouzaud
965a4e87aa revert adding tolerance to QgsSnappingUtils::snapToCurrentLayer
since it already uses digitizing settings
2018-02-19 02:08:36 -09:00
Nyall Dawson
0e3af9c6a9 [layouts] Remove use of QStyleOptionGraphicsItem from QgsLayoutItem API
Turns out the useful methods in QStyleOptionGraphicsItem were deprecated
in Qt 5.10. To future protect our API this replaces all public
use of QStyleOptionGraphicsItem, so that we're free to revise
the internals of how we use QStyleOptionGraphicsItem without breaking
the public QGIS API.
2018-02-19 19:18:24 +11:00
Nyall Dawson
d830821b13 Remove QgsInterruptionChecker and replace with QgsFeedback use
There's little need for two classes with similar goals here.
2018-02-19 10:18:00 +10:00
Blottiere Paul
323e75c029
Merge pull request #5823 from pblottiere/bugfix_curvedstrings_z
[bugfix] Fixes #17576 and #17574 Add Z support and fixes crashes
2018-02-18 10:58:09 +00:00
Denis Rouzaud
f1123501d4 make QgsTolerance a Q_GADGET
to use Q_ENUM
2018-02-17 09:33:35 -09:00
Denis Rouzaud
2f385da9c8 [offset tool] handle rings and allow selecting by area
* correctly handles rings and parts
* allow to select polygon by area (not only edge)
2018-02-17 09:33:35 -09:00
Denis Rouzaud
37f180c59e
Merge pull request #6365 from 3nids/geom_gadget
make QgsGeometry a Q_GADGET
2018-02-17 06:56:46 -09:00
Denis Rouzaud
f31ba78ccd
Merge pull request #6364 from 3nids/setting_enum_value
[settings] add method to get value for a setting associated to an enum
2018-02-17 06:28:35 -09:00
Denis Rouzaud
91e98ef5a5 run sip_include.sh 2018-02-17 11:16:47 -04:00
Nyall Dawson
1f3ee0501a [processing] Always report errors if features cannot be written
to a destination

Before we silently ignored these - now algorithms will automatically
push errors to the log if a feature cannot be written to a sink (no
changes to algorithms or special handling required)
2018-02-17 19:10:46 +11:00
Denis Rouzaud
1198dbad24 [settings] add method to get value for a setting associated to an enum
this will make sure the returned value is actually an existing entry of the enum
2018-02-16 21:37:05 -04:00
Blottiere Paul
a6a3e0b1d4 Fix spelling check and sip binding 2018-02-16 10:06:42 +00:00
Blottiere Paul
35d0f57807 Update documentation 2018-02-16 10:06:42 +00:00
Blottiere Paul
76a57b8345 The first point in 3D is used to propagate Z dimension 2018-02-16 10:06:42 +00:00
Alessandro Pasotti
0310c1d253
Merge pull request #6354 from elpaso/NathanW2-settings_17670
Nathan w2 settings 17670
2018-02-16 09:57:58 +01:00
Nyall Dawson
14787ffb32 [processing] Add easy method to retrieve layers from context
Allows python algorithms to call

layer = context.getMapLayer(other_alg_results['OUTPUT'] )
2018-02-16 19:49:30 +11:00
Nyall Dawson
a6a36acc14
Merge pull request #6316 from nyalldawson/locator_thread
Make QgsLocator more thread safe
2018-02-16 12:36:09 +11:00
Alessandro Pasotti
79a924ef5c Spelling and docs 2018-02-15 09:25:26 +01:00
Mathieu Pellerin
543e4f0dd1
[attribute table] fix long UI freeze when resizing columns for large filtered datasets (#6341) 2018-02-14 21:25:43 +07:00
Nyall Dawson
a1a45536a2
Merge pull request #6221 from nyalldawson/var_leak
Fix massive memory leak in PyQGIS, pt 1
2018-02-13 13:18:42 +11:00
Nyall Dawson
0c6f22386b Drop some legacy sip conversion code 2018-02-13 12:02:50 +11:00
Denis Rouzaud
2a7aeafb75 doxygen, init in header 2018-02-12 11:29:41 -04:00
Denis Rouzaud
338a73b32e [sip] remove unused QPair conversion 2018-02-12 09:22:53 -04:00
Denis Rouzaud
31e93aecae [dxf] use a struct instead of QPair for layers
there was a crash in Python in QgsDxfExport.addLayers due to a bad conversion
2018-02-12 09:22:21 -04:00
Nyall Dawson
44df58e54d Simplify code 2018-02-12 20:28:32 +10:00
Nyall Dawson
7609ab7c9d Allow certain locator filters to operate on the main thread
Some filters are fast enough to return results that it's overkill
to run them in a background thread - add a flag to these filters
to allow them to run (blocking) in the main thread instead.
2018-02-12 20:28:32 +10:00
Nyall Dawson
fabda53671 Add missing docs 2018-02-12 20:28:32 +10:00
Nyall Dawson
981afb3da1 Make QgsLocator more thread safe
- add a clone() method to filters, and always search using the
clone instead of the original filter
- add a prepare() method to filters, which is always run in the
main thread and can be used to prepare the filter for safe
background execution (e.g. creating feature iterators in advance)
- don't use QtConcurrent to perform searches in background threads,
since it is not safe to use with QObjects
- instead manually create threads and ensure that cloned objects
are always moved to the thread that they will run in, to ensure
that they correctly have thread affinity with the thread in which
they are executed
2018-02-12 20:26:26 +10:00
Nyall Dawson
ff7bb9aa53 Remove inefficient method for creating empty geometry of same
WKB type, and use optimized method instead

Refs #17809
2018-02-12 08:56:12 +10:00
Nyall Dawson
65827adc7d Provide an optimised constructor for a null QgsRectangle
This is used a lot, yet the current constructor calls the
normalize() method which does a bunch of operations for no
result.

So instead provide a simple optimised null QgsRectangle
constructor and save a lot of cycles.

Refs #17809
2018-02-12 08:56:12 +10:00
Nyall Dawson
4bcc9df5b4 [processing] Add explicit output type for multiple layers
This was a missing capability in the processing API - while algorithms
could declare multiple layer input parameters, there was no corresponding
multi-layer output. This meant that algorithms (such as Package Layers,
Vector Split) which create a set of layers which cannot be determined
in advance had no way to pass these generated layers on for further model
processing steps.

It's also useful for algorithms which operate on a specified folder,
processing all layers found there, and allowing these generated
outputs to be utilised in other model steps (e.g. packaging
all of them, merging them, etc)
2018-02-11 10:57:44 +10:00
Nyall Dawson
8f902e7796 Implement manual locks on QgsSpatialIndex
Since libspatialindex is not thread safe on all platforms, and
have expressed desire to remove the thread safety that they DO
have on remaining platforms, it's safer and easier for us
to manually add locks to QgsSpatialIndex and be gauranteed that
this class is thread safe on all platforms and libspatialindex
versions.

Also improve docs for the class.
2018-02-09 20:13:04 +11:00
Nyall Dawson
abcaba857f Add method to force a detach for QgsSpatialIndex
Since the underlying libspatialindex is not thread safe
on some platforms (e.g. Windows), manual calls to detach()
must be made if a QgsSpatialIndex is to be accessed across
multiple threads.

Note that for platforms on which libspatialindex is thread
safe, calling detach() has no effect and does not force the
deep copy.
2018-02-09 20:13:04 +11:00
Nyall Dawson
2d1e9188f1 [processing] Allow providers to return a different helpId() vs
their unique id()

This is used when generating the QgsHelp url for algorithms
attached to the providers.

Implement helpId overrides for the native and 3d providers so
that they return 'qgis' helpIds, meaning that all QGIS processing
algorithm documentation can be kept within the same url path
regardless of which QGIS provider library it sits within.

This also allows us to freely move algorithms from the Python
'qgis' provider to c++ 'native' provider in future releases
without breaking the help URLs.

Fixes #17231
2018-02-09 11:26:03 +10:00
nirvn
715677ee5d move getValues, getDoubleValues to vector layer utils source file 2018-02-07 13:27:39 +07:00
Denis Rouzaud
3205c96af6
Merge pull request #6275 from 3nids/messagelevel
unite QgsMessageLog::Level and QgsMessageBar::MessageLevel in Qgis::MessageLevel
2018-02-06 05:28:17 -09:00
Denis Rouzaud
3dc3d9d1b2 unite QgsMessageLog::Level and QgsMessageBar::MessageLevel in Qgis::MessageLevel
make enum items lower case
remove unused QgsMessageLog::None and All
2018-02-06 08:56:40 -04:00
Nyall Dawson
1d3a4e421e Update sip bindings 2018-02-06 16:30:20 +10:00
Nyall Dawson
345dd0c376 [layouts] Fix items disappear in designer with 90 or 270 degree
rotation

Caused by Qt bug 66185

Fixes #18027
2018-02-05 12:36:18 +11:00
Martin Dobias
4b365a8f47 pyqgis: add conversion to subclasses for QgsAbstractVectorLayerLabeling 2018-02-03 22:30:00 +01:00