6588 Commits

Author SHA1 Message Date
Nyall Dawson
ba17b130f8 Move forceRHR to QgsGeometry, avoid duplicate code 2018-11-09 19:06:48 +10:00
Nyall Dawson
63c9bcb5d2 Update reference lines 2018-11-09 19:06:48 +10:00
Nyall Dawson
7641605eb9 Fix warning 2018-11-09 19:06:48 +10:00
Nyall Dawson
30214538c2 [FEATURE] Add option to simple line and marker line to only
render exterior ring or interior rings

This option is shown whenever a simple line symbol or
marker line symbol is used as part of a fill symbol for
rendering polygons.

The default behavior is to render both interior and exterior
rings, but this new setting allows users to set the symbol
layer to render only for the exterior ring OR only
for interior rings.

This allows for symbolisation which wasn't directly possible
before, such as a marker line with markers for interior
rings angled toward the interior of the polygon.

Sponsored by the German QGIS User Group

Fixes #12652
2018-11-09 19:06:48 +10:00
Nyall Dawson
73d0ced5df [FEATURE] Add option to force right-hand-rule during polygon symbol rendering
This new option, available under the "Advanced" button for fill symbols,
allows forcing rendered polygons to follow the standard "right hand
rule" for ring orientation (where exterior ring is clockwise, and
interior rings are all counter-clockwise).

The orientation fix is applied while rendering only, and the original
feature geometry is unchanged.

This allows for creation of fill symbols with consistent appearance,
regardless of the dataset being rendered and the ring orientation
of individual features.

Refs #12652
2018-11-09 19:06:48 +10:00
Nyall Dawson
ae2255469b Fix accidently skipped test 2018-11-09 19:06:48 +10:00
Nyall Dawson
e5946c50e7 Ensure that QgsGeometry::offsetCurve does not reverse curve orientation 2018-11-09 19:06:48 +10:00
Nyall Dawson
1b79b9a140 [FEATURE] force_rhr expression function
Forces polygons to follow the right hand rule, in which the area that
is bounded by a polygon is to the right of the boundary. In particular,
the exterior ring is oriented in a clockwise direction and the
interior rings in a counter-clockwise direction.
2018-11-09 19:06:48 +10:00
Nyall Dawson
27e1ef5c1c Add method to QgsCurvePolygon to force RHR, ensuring standard ring orientation 2018-11-09 19:06:48 +10:00
Nyall Dawson
c22364d45e Add method to determine orientation of closed curves 2018-11-09 19:06:48 +10:00
Nyall Dawson
df81e554f8 Fix crash in geometry checker
Fixes #20408
2018-11-09 12:57:42 +10:00
Alessandro Pasotti
eab40d0e4c
Merge pull request #8435 from elpaso/handle-bad-layers5
bad layers dialog new button labels and icon
2018-11-08 12:15:21 +01:00
Martin Dobias
ad1bba2ac9
Merge pull request #8438 from wonder-sk/fix-block-outside-raster-extent
Fix raster block output when block extent is outside of valid area
2018-11-08 11:56:10 +01:00
Alessandro Pasotti
ba4981a1f4 Move change data source under filter 2018-11-08 11:30:06 +01:00
Martin Dobias
872c9a10a3 Add unit test 2018-11-08 10:09:57 +01:00
Alessandro Pasotti
c74ce886dc Disable "Change data source..." action if layer is editable 2018-11-08 09:22:33 +01:00
Nyall Dawson
4b32e7cc78 [afs] Implemented decodeUri for AFS provider
Allows retrieval of the web URL for an AFS layer
2018-11-07 15:30:17 +10:00
Alessandro Pasotti
9af0719ff2 Bad layers: added tests for subset string and groups 2018-11-06 14:58:04 +01:00
Alessandro Pasotti
7db1d4e8b4 Added test project with the bad layers (not used by tests)
but still useful for manual tests
2018-11-06 10:28:49 +01:00
Alessandro Pasotti
ba3ccca2dd Add rule-based and categorized styles to the bad layers test 2018-11-06 10:27:07 +01:00
Alessandro Pasotti
c8b26771cf
Merge pull request #8359 from elpaso/handle-bad-layers2
[needs-docs][feature] Deferred handling of bad layers
2018-11-06 08:43:18 +01:00
Nyall Dawson
dc72f06e53 Bump minimum Qt version to 5.9 2018-11-06 08:45:37 +10:00
Matthias Kuhn
e9deafcf37
Merge pull request #8409 from DelazJ/renameFiles
Rename some rendererV2 ui files
2018-11-05 14:24:10 +01:00
Nyall Dawson
82baff87d4 Add a __repr__ method to QgsMimeDataUtils::Uri 2018-11-05 22:02:32 +10:00
Martin Dobias
93e737e4bf [vertex tool] Fix topo editing when moving vertices/edges (fixes #20158)
- when some "extra" vertices are selected when moving a vertex, their coincident
  vertices will be also moved (#20158)
- when moving an edge, coincident vertices to its endpoints will be also moved
- new tests to cover the above scenarios
- made the code hopefully easier to read
2018-11-05 12:31:51 +01:00
Alessandro Pasotti
f02345bd8b Remove unnecessary project from test data 2018-11-05 10:27:02 +01:00
Alessandro Pasotti
eb02004b60 Store original style as QDomDocument instead of an XML string 2018-11-05 10:27:02 +01:00
Alessandro Pasotti
a4182c1e04 Remove unnecessary project from test data 2018-11-05 10:26:39 +01:00
Alessandro Pasotti
7a259c6ea5 Better handling of invalid relations ...
- do not add them to the manager dialog
- do not add relations to not existent layers (but keep relations to invalid layers)
2018-11-05 10:26:39 +01:00
Alessandro Pasotti
bc424d09c1 Store original style as QDomDocument instead of an XML string 2018-11-05 10:26:39 +01:00
Alessandro Pasotti
d46d765d58 Restore handle bad layers dialog original behavior 2018-11-05 10:26:39 +01:00
Alessandro Pasotti
8493636f18 Data source select dialog now accepts a model 2018-11-05 10:26:39 +01:00
Alessandro Pasotti
086be3832c Rendering test for bad layers and setDataSource 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
64c23dec34 Spelling 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
17433181aa Fix raster style restore when setDataSource 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
4481127b9a Fix raster set data source (with test) 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
8d9d52d128 Add test data for relations 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
0cd21c91f1 Keep invalid relations and update them when the data source changes
Added a check for layer.isValid in relation.isValid, keep
relations in the manager even if they are not valid and
connect dataSourceChanged with updateRelationStatus
2018-11-05 10:24:35 +01:00
Alessandro Pasotti
2bd90da9c1 Added a validOnly flag to mapLayers to filter for valid layers only 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
bd71df0054 Add the bad layers test to cmake and fix it for renamed methods 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
f856b4c8e3 Renamed originalXmlProperties methods and variables 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
9cfb4369f9 Tests for bad layers raster support 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
99638cfdb6 More readable test 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
5010956cb4 Add test case for getFeatures on invalid bad layer 2018-11-05 10:24:35 +01:00
Alessandro Pasotti
497a7da9de Added API methods to retrieve only valid maplayers
... and to count them

Tests updated accordingly, note that from now on
the assumption that a layer store or a layer project
contains only valid layers will not be true anymore.

To be honest it has never been true, because a
layer can become invalid at any time during
its life cycle, so better never assume that a
layer from the store or from the project is vaid.
2018-11-05 10:24:35 +01:00
Alessandro Pasotti
f9289802a3 Add test for handle bad layers and invalid layers pass through 2018-11-05 10:24:35 +01:00
Nyall Dawson
18d4059546 Correct test comparisons
Previously QCOMPARE( QgsGeometry, QgsGeometry ) was actually only
testing for QCOMPARE( bool(QgsGeometry), bool(QgsGeometry) )...!
2018-11-05 08:39:10 +10:00
Nyall Dawson
7be2925649 Remove QgsGeometry bool operator
This is too dangerous -- it gets silently casted to numeric values
instead of throwing compilation errors
2018-11-05 08:39:10 +10:00
Nyall Dawson
c98d13d2f4 Add method to populate browser context menu to QgsDataItemGuiProvider 2018-11-04 21:07:27 +10:00
Nyall Dawson
6ec7f02e83 Add a QgsDataItemGuiProvider interface and registry for providers
These providers will be used to control how the browser data items
behave within GUI, and to allow separation of GUI related
properties of browser items from the core code.

A new registry QgsDataItemGuiProviderRegistry has been created
(modeled off QgsDataItemProviderRegistry), with an application
wide instance available from QgsGui::instance()->dataItemGuiProviderRegistry()
2018-11-04 21:07:27 +10:00