2562 Commits

Author SHA1 Message Date
Nyall Dawson
c98d380dc1 Move responsibility for testing for attribute against constraints
to QgsVectorLayerUtils::validateAttribute()

Also clean up some strings shown to the user when a constraint
check fails
2016-11-02 11:07:07 +10:00
Nyall Dawson
2500d75f5e Move responsibility for storage of constraint expressions to QgsVectorLayer 2016-11-02 11:07:07 +10:00
Nyall Dawson
f99ea26bdf Refactor constraint handling
- store constraint origin in QgsField
- move handling of constraint expressions to QgsField
2016-11-02 11:07:07 +10:00
Nyall Dawson
b7d0fd6f90 New class QgsVectorLayerUtils
Contains static helper methods for working with vector layers.
Initially only contains a method to test whether a value
exists within a layer's attributes.
2016-11-02 11:07:07 +10:00
Nyall Dawson
6bbd0061f3 Move handling of not null constraint from edit form to layer 2016-11-02 11:07:07 +10:00
Nyall Dawson
bd9f672aa7 Allow constraints to be added at a QgsVectorLayer level 2016-11-02 11:07:07 +10:00
Nyall Dawson
4efad04bd8 Move constraints to QgsField 2016-11-02 11:07:07 +10:00
Nyall Dawson
d1fd588499 Add method to fetch constraints from a vector data provider
Implemented for unique and not null constraints for postgres
provider
2016-11-02 11:07:07 +10:00
Martin Dobias
6b120a8600 Fix display of diagram legend entries (fixes #15448)
To make the implementation saner, the legend node that may be embedded within parent
layer node is kept separately from activeNodes.

(cherry picked from commit b385ebd9ba9272516eed61e5825a603fcee969e9)
2016-11-01 11:41:23 +08:00
Nyall Dawson
47109d13b7 Flip some connects to new style 2016-11-01 11:10:40 +10:00
Martin Dobias
24fbe1a080 Fix crash in node tool after deleting the whole geometry (fixes #15659)
Made sure that both closestVertex() and closestSegment() return negative
distance on error (e.g. with null or emtpy geometry).

Also fixes snapping when dealing with layers with null/invalid geometries

(cherry picked from commit c093d5188fad685c4a596ff23c27aad7d151dac2)
2016-10-31 12:51:21 +08:00
Nyall Dawson
bd950616ac Rename visible "favourite" strings to "favorite", change API to
use "favorite"
2016-10-31 08:00:19 +10:00
Nyall Dawson
ef34e393dc Add method to QgsGeometry to extend the start/end of a linestring 2016-10-31 07:56:24 +10:00
Matthias Kuhn
0b3646b252 Expression functions can dynamically report geometry and columns 2016-10-27 23:11:51 +02:00
Matthias Kuhn
f80a33be65 [FEATURE] Expose @parent variable in aggregate functions
This makes it possible to access attributes and geometry from the parent
feature when in the filter of the "aggregate" expression function.

With this in place aggregates can be calculated per feature.

E.g. max "measurement" for each point_station per polygon_research_area.

Or a default attribute value when digitizing features:

    aggregate(layer:='countries', aggregate:='max', expression:=\"code\",
filter:=intersects( $geometry, geometry(@parent) ) )
2016-10-27 23:11:50 +02:00
Even Rouault
2d2ce00341 Merge pull request #3665 from rouault/save_style_gpkg
[FEATURE] [OGR provider] Load/save style in database for GPKG and Spatialite
2016-10-26 11:04:25 +02:00
Nyall Dawson
49432a8468 Optimise QgsAbstractGeometry
Make nCoordinates virtual, and provide shortcuts for some
geometry types. The base method which calls coordinateSequence()
is quite slow in certain circumstances.

Speeds up rendering point layers by ~25%, also likely to
speed up lots of geometry heavy operations throughout QGIS

Refs #15752
2016-10-26 17:22:09 +10:00
Even Rouault
e237963274 SIP QgsVectorLayer: fix signatures for output parameter
saveStyleToDatabase() and getStyleFromDatabase() should define errMsg as
output parameter
And loadNamedStyle() also for theResultFlag.
2016-10-25 10:28:53 +02:00
Nyall Dawson
08143475ed [FEATURE] QgsTextRenderer class for rich text rendering
Moves all the drawing code out of labeling into a new class
which just handles rendering text. This allows other parts
of the code to utilise all the advanced formatting options
that labeling supports, eg rendering text with shadows,
buffers and backgrounds.
2016-10-24 12:02:00 +10:00
Nyall Dawson
5495f20589 Minor refactor of label drawing
Remove use of scale factors from PAL layer settings and use
render context factors directly
2016-10-24 12:02:00 +10:00
Nyall Dawson
aac2622816 Remove option to show label shadow rectangles from GUI
...and instead just make it #ifdef out
2016-10-24 12:02:00 +10:00
Nyall Dawson
4d5e7536d9 Flip QgsPalLayerSettings to use QgsTextRenderer classes 2016-10-24 12:02:00 +10:00
Nyall Dawson
5f241d6288 Implicitly shared text settings classes 2016-10-24 12:02:00 +10:00
Nyall Dawson
687c66f5d6 Add Points as valid render unit (for font sizes) 2016-10-24 12:02:00 +10:00
Nyall Dawson
44289084e9 Optimise passing of variables by ref/value 2016-10-24 10:36:23 +10:00
Nyall Dawson
3272964f58 Fix classes which violate the rule-of-three
(identified using clazy analyser)
2016-10-24 10:36:22 +10:00
Matthias Kuhn
96a649e37f Add missing bindings 2016-10-23 21:14:42 +02:00
Matthias Kuhn
54b953f433 Cleanup and modernize QgsProject code 2016-10-23 20:54:41 +02:00
Matthias Kuhn
1445647065 QgsVectorDataProvider API cleanup 2016-10-22 23:03:57 +02:00
Nyall Dawson
a51bebdacc Fix missing doc warning 2016-10-22 13:19:32 +10:00
Matthias Kuhn
85c105d6b0 Move management of avoidIntersectionLayers to QgsProject 2016-10-20 12:56:35 +02:00
Matthias Kuhn
5c919fbcca Move topological editing setting management fully to QgsProject 2016-10-20 12:56:35 +02:00
Denis Rouzaud
64d3c788f1 Use toolbar or status bar for snapping config 2016-10-20 12:56:35 +02:00
Matthias Kuhn
f3482d2ce2 Rename visibility presets to map themes part 2 (#3641) 2016-10-20 12:55:48 +02:00
Nyall Dawson
bc30cdf41d Followup c9251c, fix crash 2016-10-20 17:32:39 +10:00
Nyall Dawson
c9251c5793 Avoid creating multiple render contexts when calculating legend
node size

Partial fix for qgis slowdown when using layer with large
number of legend nodes
2016-10-20 07:50:41 +10:00
Matthias Kuhn
e0fc641402 Show commit errors in transaction mode 2016-10-18 15:47:42 +02:00
Nyall Dawson
e8be0ed988 [composer] Allow syncing pictures to true north
Previously pictures could only be synced to grid north, which
can be totally wrong for many CRSes (especially in polar areas)

Users now are given a choice of grid or true north, and can also
enter an optional offset to apply if eg magnetic north is instead
desired.

When synced to true north the bearing is calculated using the
centre point of the linked map item.

Fix #192, #4711

This fix was sponsored by the Norwegian Polar Institute's
Quantarctica project (http://quantarctica.npolar.no) and
coordinated by Faunalia.
2016-10-18 13:45:52 +10:00
Nyall Dawson
fb860fb618 New class QgsBearingUtils with method to calculate true north 2016-10-18 13:45:52 +10:00
Nyall Dawson
a6148deb30 [FEATURE] Data defined symbol layer visibility
Adds a data defined override to control a symbol layer's
visibility. Allows users to disable drawing certain symbol layers
for matching features.
2016-10-18 13:22:22 +10:00
Nyall Dawson
b8c2e68fc5 [FEATURE] Allow symbol layers to be temporarily disabled
Adds a new checkbox at the bottom of each symbol layer's
properties which allows you to control whether the layer is
enabled or not.

Disabled layers are not drawn, but are saved and can be
enabled at a later stage.

This makes it easier to tweak symbol appearance without
having to totally delete a symbol layer.
2016-10-18 13:22:22 +10:00
Nyall Dawson
ecee43814a Fix changing project CRS from legend doesn't correctly set CRS
Also avoid fragile duplicated code for setting/retrieving
common project properties

Fixes #15717
2016-10-18 09:55:56 +10:00
Even Rouault
da0ee8b007 Merge pull request #3597 from rouault/saveas_overwrite_append
[FEATURE] Vector layer save as: offer file/layer overwriting, new layer creation, feature and field appending
2016-10-17 11:22:28 +02:00
Matthias Kuhn
03f08a6c79 Fix QgsMapLayer ConvertToSubClassCode (#3611)
Fix #15683
2016-10-17 10:47:08 +02:00
Matthias Kuhn
8fa3127c66 Don't rely on RTTI to convert symbol layer to sip objects 2016-10-17 10:23:08 +02:00
nirvn
ec2d7fea0c [FEATURE] control over drawing of composer table grid horizontal & vertical lines 2016-10-14 13:20:59 +07:00
Even Rouault
34894c6f5a [FEATURE] Vector layer save as: offer file/layer overwriting, new layer creation, feature and field appending
When saving a vector layer into an existing file, depending on the capabilities
of the output driver, the user can now decide whether:
- to overwrite the whole file
- to overwrite only the target layer (layer name is now configurable)
- to append features to the existing target layer
- to append features, add new fields if there are any.

All above is available for drivers like GPKG, SpatiaLite, FileGDB, ...
For drivers like Shapefile, MapInfo .tab, feature append is also available.
2016-10-13 11:38:41 +02:00
rldhont
726bac5291 Last Redo [BUGFIX][QGIS Server] Joins was not reloaded if the layer is in cache
Add an accessor to QgsVectorLayer join buffer, to not duplicate QgsVectorLayerJoinBuffer::readXml code
2016-10-12 17:03:38 +02:00
Nyall Dawson
0c4bf943c1 Allow expression functions to appear in multiple groups (fix #15682)
Now functions which make sense for multiple contexts (eg length,
to_date) can appear in more than one group.
2016-10-10 19:53:15 +10:00
Nyall Dawson
3a76708bcb Fix renaming a virtual field leads to crash (fix #15669) 2016-10-09 09:03:52 +10:00