3218 Commits

Author SHA1 Message Date
Denis Rouzaud
a373f95707 [FEATURE] add functionnality to copy/move feature to move feature map tool 2016-11-15 11:28:47 +01:00
Nyall Dawson
8f8624a333 Improve test debugging 2016-11-15 14:03:49 +10:00
Nyall Dawson
b5c1d0f24e QgsCacheIndexFeatureId can also handle non-FilterFid requests
in certain circumstances

On behalf of Faunalia, sponsored by ENEL
2016-11-15 14:03:49 +10:00
Nyall Dawson
5e3d8fe0b6 Use cached feature iterator if cache has all needed features
Previously a cached feature iterator would only be returned
if cache was either full or used a cache index

On behalf of Faunalia, sponsored by ENEL
2016-11-15 14:03:48 +10:00
Nyall Dawson
afd5d1e934 Recognise that a cache can be filled using a FilterNone request
On behalf of Faunalia, sponsored by ENEL
2016-11-15 14:00:13 +10:00
Nyall Dawson
85c8c97d5f Allow empty field name ('not set' option) in QgsFieldModel, QgsFieldComboBox 2016-11-15 07:00:35 +10:00
Martin Dobias
968e02d6fe Propagate layer/group name changes in the layer tree (fixes #15844) 2016-11-14 19:57:00 +08:00
Nyall Dawson
1f81a7c4fc [FEATURE] pole_of_inaccessibility expression function
Exposes calculation of pole of inaccessiblity to expression
engine
2016-11-14 15:52:41 +10:00
Nyall Dawson
b44093914b Fix test failure, report distance from pole 2016-11-14 15:52:41 +10:00
Nyall Dawson
d6f09c012e [FEATURE] Add method to calculate pole of inaccessibility for polygons
Implements a method in QgsGeometry and a processing algorithm to
calculate the pole of inaccessibility for a surface, which is the
most distant internal point from the boundary of the surface. This function
uses the 'polylabel' algorithm (Vladimir Agafonkin, 2016), which is an iterative
approach guaranteed to find the true pole of inaccessibility within a specified
tolerance. More precise tolerances require more iterations and will take longer
to calculate.
2016-11-14 15:52:41 +10:00
Nyall Dawson
d5c307eb05 Add method to find distance from a point to a poylgon's boundary 2016-11-14 15:52:41 +10:00
Martin Dobias
d729951dcd Remove caching of WKB from QgsGeometry (was kept just for compatibility)
Also improves the API to export/import WKB as QByteArray
2016-11-14 13:36:12 +08:00
Nyall Dawson
fbc12a8a81 Allow showing 'not set' in QgsProjectionSelectionWidget 2016-11-13 20:34:35 +10:00
Alessandro Pasotti
fb124baaf6 Merge pull request #3751 from elpaso/downloader_master
[bugfix][forwardport] File downloader for identify dialog hyperlinks
2016-11-11 17:42:56 +01:00
Alessandro Pasotti
4e96912c91 [bugfix][forwardport] File downloader for identify dialog hyperlinks
fixes #14703

Include C++ and Python tests

Travis won: ported all test cases to Python
and disabled C++ companion test (still useful locally and
for debugging)

For the curious: QTemporaryFile is not working as expected

Moved to Qt5 new style signals

Disabled C++ test and connected cancel to progress

Make string comparison on SSL errors more robust
2016-11-11 17:26:33 +01:00
Nyall Dawson
1ef7ed53c9 Merge pull request #3703 from aaime/svg_params
Export parametric SVG, will fallback symbols for the systems that cannot understand them
2016-11-11 13:25:48 +10:00
nirvn
6b2b4c578a [FEATURE][expression] strpos() and regexp_match() improvements
- strpos() now relies on a simple string within a string search
- regexp_match() now returns pos of a matching regular expression
2016-11-10 11:55:20 +07:00
Nyall Dawson
e40d64f9d5 Make provider default value clauses exempt from unique constraint checks
Otherwise the check fails when the provider has a default value clause
like 'nextval(...)' even though the actual committed value will be
unique.
2016-11-08 12:54:31 +10:00
Nyall Dawson
8cd810ed2c Return false from QgsVectorLayer::addFeatures if adding features failed 2016-11-08 12:54:25 +10:00
Nyall Dawson
fcb6c2bb9a Fix some incorrect return values from QgsFeature python bindings 2016-11-08 12:54:19 +10:00
Nyall Dawson
6f3b0caa81 Add method to QgsAttributes to convert to QgsAttributeMap 2016-11-08 11:25:48 +10:00
Nyall Dawson
32b1603c81 Update indentation 2016-11-08 08:57:51 +10:00
Nyall Dawson
f8bda8dbfc Avoid crash in testqgsexpression.cpp 2016-11-08 08:42:27 +10:00
Nyall Dawson
ec55161866 Avoid lazy evaluation for substr expression function
Better solution is to set handlesNull to true to avoid the default
null parameter = null result behaviour, and handle null values
in params 1 and 2 manually
2016-11-08 08:42:22 +10:00
nirvn
0fbcc4b95d [FEATURE] upgrade the substr() function
- support negative start value (e.g. substr('hello',-2) returns 'lo')
- support negative length value (e.g. substr('hello',3,-1) returns 'll')
- length parameter now optional, defaults to end of string
  (e.g. substr('hello world',7) returns 'world')
2016-11-08 08:42:17 +10:00
Nyall Dawson
b0bd61f308 [FEATURE] Detect default literal values from OGR layers
Requires GDAL >= 2
2016-11-08 08:18:16 +10:00
Nyall Dawson
0ae610c5e3 [FEATURE] Detect literal default values for spatialite provider 2016-11-08 08:18:16 +10:00
Nyall Dawson
1fea20de50 Split handling of literal default values from provider side
default value SQL clauses

QgsVectorDataProvider now has two methods:

- defaultValueClause: returns SQL fragment which must be evaluated
by the provider to obtain the default value, eg sequence values
- defaultValue: returns the literal constant default value
for a field
2016-11-08 08:18:16 +10:00
Nyall Dawson
3c530a62e5 Merge pull request #3723 from nirvn/regexp_matches
[FEATURE] add regexp_matches() function
2016-11-07 14:34:27 +10:00
nirvn
1d245b2ef6 [FEATURE] add regexp_matches() function
The new function returns an array of strings captured by capturing
groups in a supplied regular expression. For e.g., the following
expression: regexp_matches('qgis=>rocks','(.*)=>(.*)')
will return the following array: 'qgis', 'rocks'.
2016-11-07 10:47:19 +07:00
Nyall Dawson
8acc286b0f [FEATURE] Snap to layer algorithm accepts a mode parameter
With a new option to prefer to snap to closest point on geometry.
The old behaviour was to prefer to snap to nodes, even if a node
was further from the input geometry than a segment. The new option
allows you to snap geometries to the closest point, regardless
of whether it's a node or segment.
2016-11-07 12:20:59 +10:00
Nyall Dawson
983fe24806 Port some API from QgsPoint to QgsPointV2 2016-11-07 12:20:59 +10:00
Nyall Dawson
dae0a01761 [FEATURE][processing] Snap geometries algorithm allows snapping
to other layer types, supports point/line layers

Fix #14791, #15313
2016-11-07 12:20:59 +10:00
Andrea Aime
701d4440ac Export parametric SVG parameters, will fallback symbols for the system that cannot understand them 2016-11-05 11:48:31 +01:00
Alessandro Pasotti
a0e0fcf9a9 [tests] WMS/WFS PKI authentication test 2016-11-04 12:09:57 +01:00
Alessandro Pasotti
16a88e6c36 Merge pull request #3719 from elpaso/auth_tests_more_master
Auth tests more master
2016-11-04 11:36:18 +01:00
Alessandro Pasotti
f587defde2 [tests][bugfix] Check for result diff existance before accessing to it 2016-11-04 09:50:34 +01:00
Alessandro Pasotti
f582849ca7 [tests] Authmanager Postgres PKI test 2016-11-04 09:46:17 +01:00
Nyall Dawson
9a2ca1cebd Merge pull request #3673 from nyalldawson/constraints
[FEATURE] Improved constraint handling, pt 1
2016-11-04 10:34:15 +10:00
nirvn
769c82b579 [pal] fix curved labels failure with zero-width characters
(fixes 15801)
2016-11-03 13:35:51 +07:00
Even Rouault
06dc501139 test_provider_ogr_gpkg.py: Test disabling walForSqlite3 setting 2016-11-02 12:40:20 +01:00
Nyall Dawson
3f2a7810cf Respect non-enforced constraints when editing/adding features
Warnings are shown, but features can be committed. Fields which
fail an unenforced constraint are now shaded in yellow to differentiate
from the red failure for enforced constraints.
2016-11-02 13:42:22 +10:00
Nyall Dawson
fac5bc0691 [FEATURE] Field constraints can be enforced or not
Non-enforced constraints just show a warning to the user, but
do not prevent committing the feature. Enforced constraints
block users from comitting non compliant features.

Any constraints detected by the provider are always
enforced.
2016-11-02 13:42:22 +10:00
Nyall Dawson
e3a608365f fix test 2016-11-02 13:42:22 +10:00
Nyall Dawson
cb94b68d88 Move constraint handling to QgsFieldConstraints
Avoids cluttering QgsField API
2016-11-02 11:07:07 +10:00
Nyall Dawson
003fe1830c Color a few pixels slightly differently 2016-11-02 11:07:07 +10:00
Nyall Dawson
bb6fc32eec [FEATURE] Not null constraint detection for ogr provider
Implements not null constraint detection for the OGR layers, where
supported for the data format by OGR.

(only available for GDAL >= 2.0)
2016-11-02 11:07:07 +10:00
Nyall Dawson
210c98bedc Fix failing unit test 2016-11-02 11:07:07 +10:00
Nyall Dawson
a6319a47d7 If the layer is NOT being edited then only check layer based constraints
and not any constraints enforced by the provider

Because:

1. we want to keep browsing features nice and responsive. It's nice to give
 feedback as to whether the value checks out, but not if it's too slow to
 do so. Some constraints (eg unique) can be expensive to test. A user can
 freely remove a layer-based constraint if it proves to be too slow to
 test, but they are unlikely to have any control over provider-side
 constraints

2. the provider has already accepted the value, so presumably it doesn't
 violate the constraint and there's no point rechecking!
2016-11-02 11:07:07 +10:00
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