7066 Commits

Author SHA1 Message Date
Matthias Kuhn
58ea21124e Streamline expression context generation (#3350)
* Save more data to QML

 * Virtual fields
 * Map tips
 * Display expression
 * Read only flag

* Streamline expression context generation

Whenever an object is able to generate an expression context it
implements the method createExpressionContext() declared in
QgsExpressionContextGenerator.

This makes a cleaner API and allows using QgsFieldExpressionWidget and
QgsDataDefinedButton from python because standard OO programming
approaches are used instead of callbacks and void pointers.

* Colorize output of doc and sip tests

* Fix build

* Fix sip complaints

* Fix rebase problems

* Workaround failing bindings test
2016-08-10 19:44:30 +02:00
Juergen E. Fischer
3f22a7a77f another scripts/replacev2.sh with minor manual fixes 2016-08-10 12:12:28 +02:00
Juergen E. Fischer
eeebf4be08 rename QgsComposerSymbolItem::symbolV2() to symbol() 2016-08-10 12:12:28 +02:00
Juergen E. Fischer
4e8635b517 rename QgsVectorLayerEditUtils::deleteVertexV2 2016-08-10 12:12:28 +02:00
Juergen E. Fischer
39c4409c6a remove deprecated stuff from QgsVectorLayer and editor widgets 2016-08-10 12:12:28 +02:00
Juergen E. Fischer
0688621046 scripts/replacev2.sh run 2016-08-10 12:08:52 +02:00
Juergen E. Fischer
8a4574436f replacev2.sh: replace V2 classes and methods 2016-08-10 12:08:52 +02:00
Nyall Dawson
d5516fa7e3 Merge pull request #3371 from nyalldawson/processing
[processing] New algs + a fix
2016-08-10 19:22:12 +10:00
Nyall Dawson
b160f101c2 QgsExpression::setGeomCalculator now takes a pointer
This allows the calculator to be cleared
2016-08-10 17:56:01 +10:00
Nyall Dawson
cd5f813112 Standardise capitalisation in some QgsExpression methods 2016-08-10 17:56:01 +10:00
Nyall Dawson
a0360a6400 Remove substitution map from QgsExpression::replaceExpressionText
Since expression context variables should now be used instead. Also
remove all the deprecated methods which relied on this API.
2016-08-10 17:56:01 +10:00
Nyall Dawson
c39088bace Remove deprecated QgsAttributeAction from sip bindings 2016-08-10 17:55:06 +10:00
Nyall Dawson
7da8110536 Remove deprecated methods from QgsExpression
Now all evaluate/prepare/etc methods must be called using QgsExpressionContexts

Also remove most remaining traces of special variables. This brings some
user facing changes, such that existing expressions may need to be
updated if they used these old special variables (eg $scale,
$feature). These changes are noted in doc/qgis3_user_changes.dox
so that we can include them in the release notes.
2016-08-10 17:55:06 +10:00
Nyall Dawson
142de7cb08 [FEATURE][processing] Point on surface algorithm 2016-08-10 16:57:38 +10:00
Nyall Dawson
ab022451a5 [FEATURE][processing] New algorithm for geometry boundary 2016-08-10 16:32:31 +10:00
Nyall Dawson
9e66e1593b [processing] Fix broken output of multipoint since WKB type merge 2016-08-10 16:19:29 +10:00
Nyall Dawson
bd8db5d156 [FEATURE][processing] New algorithm for calculating feature bounding boxes 2016-08-10 15:41:44 +10:00
Nyall Dawson
37ef6b8007 Add missing sip binding 2016-08-09 16:55:10 +10:00
Martin Dobias
b4fe9002d8 [FEATURE] API to allow drag'n'drop of custom browser items
QgsDataItem implementations may provide hasDragEnabled(), mimeUri()
and QgsCustomDropHandler implementation to deal with drop of custom items.
2016-08-09 08:49:42 +02:00
Alexander Bruy
23c83b1e93 [processing] fix available inputs selection for multiple input 2016-08-08 13:53:55 +03:00
Alexander Bruy
3461c7e1a7 [processing] add missed multiple input parameter to modeler 2016-08-08 13:40:07 +03:00
Denis Rouzaud
772f59349e rename QgsComposerLegend::modelV2() to model() 2016-08-08 09:50:33 +02:00
Denis Rouzaud
820cc560b2 remove deprecated private helpers QgsMapToolIdentify::convertMeasurement and displayUnits 2016-08-08 09:10:57 +02:00
Denis Rouzaud
6f51a13cd6 remove QgisInterface::actionLayerSelectionSaveAs
this has been deprecated since 2.4 and returns null pointer since then.
did not write this in api_break to not overload the document
2016-08-08 09:10:57 +02:00
Denis Rouzaud
aa82141df7 remove deprecated QgisInterface::fileMenu 2016-08-08 08:34:53 +02:00
Nyall Dawson
26c1e09a58 Remove QgsColorDialog, rename QgsColorDialogV2 to QgsColorDialog
The last bits of missing functionality (handling native dialogs
and live updates) were ported across.
2016-08-06 13:24:36 +10:00
Denis Rouzaud
1db19ce8c0 Merge pull request #3356 from 3nids/remove_legendmodel
remove QgsLegendModel
2016-08-05 20:54:52 +02:00
Denis Rouzaud
bbb9b5322d remove QgsLegendModel 2016-08-05 20:53:58 +02:00
Alexander Bruy
885cc82c3c [processing] more clean in QGIS algs 2016-08-05 16:48:59 +03:00
Alexander Bruy
acdde31b3d [processing] more cleanups (follow up 06c4b07222) 2016-08-05 15:05:36 +03:00
Alexander Bruy
45c8a09439 Merge pull request #3353 from nyalldawson/processing
[Processing] QGIS alg cleanups
2016-08-05 14:51:00 +03:00
Alexander Bruy
4c39bd12e8 [processing] introduce OutputCrs output and add algorithms to get layer CRS in modeler 2016-08-05 12:55:26 +03:00
Alexander Bruy
40de15cc56 [processing] add missed CRS parameter to modeler (refs #11781) 2016-08-05 12:55:25 +03:00
Denis Rouzaud
acbf5cddb4 renamed QgsSymbologyV2Conversion to QgsSymbologyConversion 2016-08-05 08:32:13 +02:00
Denis Rouzaud
f2c3fb003e renamed QgsSymbolLevelsV2Dialog to QgsSymbolLevelsDialog 2016-08-05 08:22:43 +02:00
Denis Rouzaud
275736de92 removed V2 from QgsSymbolV2* 2016-08-05 08:22:21 +02:00
Denis Rouzaud
c16d1393a2 removed V2 from QgsSymbolLayerV2* 2016-08-05 08:18:01 +02:00
Nyall Dawson
c1649ebef4 [processing] pendingFields() -> fields()
Does the same thing, but pendingFields() is ugly
2016-08-05 06:31:07 +10:00
Nyall Dawson
06c4b07222 [processing] Use layer crs/fields instead of provider crs/fields
Since the layer has more complete knowledge of the crs (ie, when
provider could not determine crs and user has selected it from
the list), and also better knowledge of layer fields (virtual
fields, joined fields) we should use these rather than the
provider methods.
2016-08-05 06:28:49 +10:00
Nyall Dawson
c40d6d3f28 Add missing docs 2016-08-05 06:08:07 +10:00
Nyall Dawson
ed4d34fdbc QgsFields returns QgsField value instead of const references
(since QgsField is implicitly shared)
2016-08-05 06:08:07 +10:00
Nyall Dawson
967d37adc7 QgsFeature::fields() returns a value, not a pointer
Also remove all other QgsFields pointers and replace with
references/values, since QgsFields objects are implicitly shared
2016-08-05 06:07:02 +10:00
Denis Rouzaud
3e197ae74a remove QgsColorButton in favor of V2 2016-08-04 14:27:31 +02:00
Matthias Kuhn
bb79d13e82 Remove deprecated Qgis::WKBType and API cleanup (#3325)
* Remove deprecated Qgis::WKBType and API cleanup

Renames QgsWKBTypes to QgsWkbTypes

Replaces usage of the enums:

* Qgis::WKBType with QgsWkbTypes::Type
* Qgis::GeometryType with QgsWkbTypes::GeometryType

Their values should be forward compatible (a fact that was already
explited up to now by casting between the types)

Renames some SSLxxx to SslXxx and URIxxx to UriXxx

* Fix build warnings and simplify type handling

* Add a fixer to rewrite imports

* The forgotten rebase conflictThe forgotten rebase conflicts

* QgsDataSourcURI > QgsDataSourceUri

* QgsWKBTypes > QgsWkbTypes

* Qgis.WKBGeom > QgsWkbTypes.Geom

* Further python fixes

* Guess what... Qgis::wkbDimensions != QgsWkbTypes::wkbDimensions

* Fix tests

* Python 3 updates

* [travis] pull request caching cannot be disabled

so at least use it in r/w mode

* Fix python3 print in plugins
2016-08-04 09:10:08 +02:00
Nyall Dawson
d1aa03a09b Better clip for very separate features 2016-08-03 13:41:22 +10:00
Nyall Dawson
71ebdb8f69 [FEATURE] Optimise processing clip algorithm
Before the algorithm was written to optimise clipping a few
features against thousands of mask features. The revised algorithm
is optimised for clipping thousands of input features against
a few mask features.

Given that this second operation is much more likely, it makes
sense to optimise for this use case.

I've also applied some other optimisations like taking advantage
of spatial indexes on the providers, using prepared geometries
and also only applying an intersection operation if the geometry
isn't wholly contained by the mask geometry.

Benchmarks:

clipping roads layer with 1 million lines against 2 polygons

before: 5 mins 30 seconds
after: 10 seconds

clipping address layer with 5 million points against 2 polygons

before: 50 minutes
after: 30 seconds
2016-08-03 13:15:03 +10:00
Matthias Kuhn
8182f2970f QgsFeatureRendererV2::Capabilities to flags 2016-08-02 17:24:38 +02:00
Matthias Kuhn
2cf9243edb Split displayField into displayExpression and mapTipTemplate (#1973)
Previously there was the expressionField (a field name or an expression)
mainly used for the feature list in the form view of the dual view.
On the other hand there was the displayField which could contain either
a simple field name or a complex HTML structure with embedded expressions.
And to know what it was you could compare it's content with the field names, if
a field name matched, you used it as a displayField (original purpose) and
if not... well, you could deal with HTML if you had a use for it.

The main problem is that there are two different usages for this kind of
thing

 * plain text identifier (field or expression)
 * pretty, rich text feature info

This commit cleans up with this. You want rich text and a lot of info:
go for mapTipTemplate.
You want a plain text string to identify features: go for
the displayExpression.
2016-08-02 16:58:58 +02:00
Alexander Bruy
2134112aab [dbmanager] fix signal/slot connection 2016-08-02 16:50:27 +03:00
Denis Rouzaud
f5b11d9130 Merge pull request #3352 from 3nids/rubberband_ispolygon
QgsRubberBand: remove constructor and method with bool isPolygon
2016-08-02 15:11:13 +02:00