Skip to content

Commit f69e58f

Browse files
committed
Revert to specific setters and getters
1 parent 4b6421c commit f69e58f

File tree

5 files changed

+78
-37
lines changed

5 files changed

+78
-37
lines changed

python/core/auto_generated/qgsvectorlayer.sip.in

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2235,18 +2235,39 @@ Test if an edit command is active
22352235
.. versionadded:: 3.0
22362236
%End
22372237

2238-
GeometryOptions geometryOptions() const;
2238+
bool removeDuplicateNodes() const;
22392239
%Docstring
2240-
The geometry options applied to this layer contain information about
2241-
how geometries should be preprocessed when added to or edited on this layer.
2240+
If the `removeDuplicateNodes` property is set on a layer, whenever a new feature enters
2241+
the edit buffer or the geometry of an existing feature is changed, duplicate nodes will
2242+
automatically be removed without any user intervention.
22422243

22432244
.. versionadded:: 3.4
22442245
%End
22452246

2246-
void setGeometryOptions( const GeometryOptions &geometryOptions );
2247+
void setRemoveDuplicateNodes( bool removeDuplicateNodes );
22472248
%Docstring
2248-
The geometry options applied to this layer contain information about
2249-
how geometries should be preprocessed when added to or edited on this layer.
2249+
If the `removeDuplicateNodes` property is set on a layer, whenever a new feature enters
2250+
the edit buffer or the geometry of an existing feature is changed, duplicate nodes will
2251+
automatically be removed without any user intervention.
2252+
2253+
.. versionadded:: 3.4
2254+
%End
2255+
2256+
2257+
double geometryPrecision() const;
2258+
%Docstring
2259+
The `geometryPrecision` property of a layer will enable an automatic snap to grid operation
2260+
on a layer whenever a new feature is added or the geometry of an existing feature is changed.
2261+
If it is set to 0.0, this feature is disabled.
2262+
2263+
.. versionadded:: 3.4
2264+
%End
2265+
2266+
void setGeometryPrecision( double geometryPrecision );
2267+
%Docstring
2268+
The `geometryPrecision` property of a layer will enable an automatic snap to grid
2269+
on a layer whenever a new feature is added or the geometry of an existing feature is changed.
2270+
If it is set to 0.0, this feature is disabled.
22502271

22512272
.. versionadded:: 3.4
22522273
%End

src/app/qgsvectorlayerproperties.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -423,14 +423,13 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
423423

424424
updateAuxiliaryStoragePage();
425425

426-
QgsVectorLayer::GeometryOptions geomOps = mLayer->geometryOptions();
427426
if ( mLayer->isSpatial() )
428427
{
429428
mRemoveDuplicateVerticeCheckbox->setEnabled( true );
430429
mGeometryPrecisionSpinBox->setEnabled( true );
431430

432-
mRemoveDuplicateVerticeCheckbox->setChecked( geomOps.removeDuplicateNodes );
433-
mGeometryPrecisionSpinBox->setValue( geomOps.geometryPrecision );
431+
mRemoveDuplicateVerticeCheckbox->setChecked( mLayer->removeDuplicateNodes() );
432+
mGeometryPrecisionSpinBox->setValue( mLayer->geometryPrecision() );
434433

435434
mGeometryPrecisionSpinBox->setSuffix( QStringLiteral( " [%1]" ).arg( QgsUnitTypes::toAbbreviatedString( mLayer->crs().mapUnits() ) ) );
436435
}
@@ -778,10 +777,8 @@ void QgsVectorLayerProperties::apply()
778777
mVector3DWidget->apply();
779778
#endif
780779

781-
QgsVectorLayer::GeometryOptions geomOps;
782-
geomOps.removeDuplicateNodes = mRemoveDuplicateVerticeCheckbox->isChecked();
783-
geomOps.geometryPrecision = mGeometryPrecisionSpinBox->value();
784-
mLayer->setGeometryOptions( geomOps );
780+
mLayer->setRemoveDuplicateNodes( mRemoveDuplicateVerticeCheckbox->isChecked() );
781+
mLayer->setGeometryPrecision( mGeometryPrecisionSpinBox->value() );
785782

786783
// update symbology
787784
emit refreshLegend( mLayer->id() );

src/core/qgsvectorlayer.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4790,14 +4790,24 @@ QgsAbstractVectorLayerLabeling *QgsVectorLayer::readLabelingFromCustomProperties
47904790
return labeling;
47914791
}
47924792

4793-
QgsVectorLayer::GeometryOptions QgsVectorLayer::geometryOptions() const
4793+
double QgsVectorLayer::geometryPrecision() const
47944794
{
4795-
return mGeometryOptions;
4795+
return mGeometryOptions.geometryPrecision;
47964796
}
47974797

4798-
void QgsVectorLayer::setGeometryOptions( const GeometryOptions &geometryOptions )
4798+
void QgsVectorLayer::setGeometryPrecision( double geometryPrecision )
47994799
{
4800-
mGeometryOptions = geometryOptions;
4800+
mGeometryOptions.geometryPrecision = geometryPrecision;
4801+
}
4802+
4803+
bool QgsVectorLayer::removeDuplicateNodes() const
4804+
{
4805+
return mGeometryOptions.removeDuplicateNodes;
4806+
}
4807+
4808+
void QgsVectorLayer::setRemoveDuplicateNodes( bool removeDuplicateNodes )
4809+
{
4810+
mGeometryOptions.removeDuplicateNodes = removeDuplicateNodes;
48014811
}
48024812

48034813
void QgsVectorLayer::setReadExtentFromXml( bool readExtentFromXml )

src/core/qgsvectorlayer.h

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2019,20 +2019,41 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
20192019
bool isEditCommandActive() const { return mEditCommandActive; }
20202020

20212021
/**
2022-
* The geometry options applied to this layer contain information about
2023-
* how geometries should be preprocessed when added to or edited on this layer.
2022+
* If the `removeDuplicateNodes` property is set on a layer, whenever a new feature enters
2023+
* the edit buffer or the geometry of an existing feature is changed, duplicate nodes will
2024+
* automatically be removed without any user intervention.
20242025
*
20252026
* \since QGIS 3.4
20262027
*/
2027-
GeometryOptions geometryOptions() const;
2028+
bool removeDuplicateNodes() const;
20282029

20292030
/**
2030-
* The geometry options applied to this layer contain information about
2031-
* how geometries should be preprocessed when added to or edited on this layer.
2031+
* If the `removeDuplicateNodes` property is set on a layer, whenever a new feature enters
2032+
* the edit buffer or the geometry of an existing feature is changed, duplicate nodes will
2033+
* automatically be removed without any user intervention.
20322034
*
20332035
* \since QGIS 3.4
20342036
*/
2035-
void setGeometryOptions( const GeometryOptions &geometryOptions );
2037+
void setRemoveDuplicateNodes( bool removeDuplicateNodes );
2038+
2039+
2040+
/**
2041+
* The `geometryPrecision` property of a layer will enable an automatic snap to grid operation
2042+
* on a layer whenever a new feature is added or the geometry of an existing feature is changed.
2043+
* If it is set to 0.0, this feature is disabled.
2044+
*
2045+
* \since QGIS 3.4
2046+
*/
2047+
double geometryPrecision() const;
2048+
2049+
/**
2050+
* The `geometryPrecision` property of a layer will enable an automatic snap to grid
2051+
* on a layer whenever a new feature is added or the geometry of an existing feature is changed.
2052+
* If it is set to 0.0, this feature is disabled.
2053+
*
2054+
* \since QGIS 3.4
2055+
*/
2056+
void setGeometryPrecision( double geometryPrecision );
20362057

20372058
public slots:
20382059

tests/src/python/test_qgsvectorlayer.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2758,44 +2758,36 @@ def testFeatureRequestWithReprojectionAndVirtualFields(self):
27582758

27592759
def testPrecision(self):
27602760
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2761-
geomOps = QgsVectorLayer.GeometryOptions()
2762-
geomOps.geometryPrecision = 10
2763-
layer.setGeometryOptions(geomOps)
2761+
layer.setGeometryPrecision(10)
27642762
geom = QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))')
27652763
feature = QgsFeature(layer.fields())
27662764
feature.setGeometry(geom)
27672765
layer.startEditing()
27682766
layer.addFeature(feature)
27692767
self.assertGeometriesEqual(QgsGeometry.fromWkt('Polygon ((2596410 1224650, 2596400 1224650, 2596410 1224640, 2596410 1224650))'), feature.geometry(), 'geometry with unsnapped nodes', 'fixed geometry')
2770-
geomOps.geometryPrecision = 0.0
2771-
layer.setGeometryOptions(geomOps)
2768+
layer.setGeometryPrecision(0.0)
27722769
feature.setGeometry(QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))'))
27732770
layer.addFeature(feature)
27742771
self.assertGeometriesEqual(QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))'), feature.geometry(), 'geometry with duplicates', 'unchanged geometry')
27752772

27762773
def testRemoveDuplicateNodes(self):
27772774
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2778-
geomOps = QgsVectorLayer.GeometryOptions()
2779-
geomOps.removeDuplicateNodes = True
2780-
layer.setGeometryOptions(geomOps)
2775+
layer.setRemoveDuplicateNodes(True)
27812776
geom = QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))')
27822777
feature = QgsFeature(layer.fields())
27832778
feature.setGeometry(geom)
27842779
layer.startEditing()
27852780
layer.addFeature(feature)
27862781
self.assertGeometriesEqual(feature.geometry(), QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 60 50, 70 80))'), 'fixed geometry', 'geometry with duplicates')
2787-
geomOps.removeDuplicateNodes = False
2788-
layer.setGeometryOptions(geomOps)
2782+
layer.setRemoveDuplicateNodes(False)
27892783
feature.setGeometry(QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))'))
27902784
layer.addFeature(feature)
27912785
self.assertGeometriesEqual(feature.geometry(), QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))'), 'unchanged geometry', 'geometry with duplicates')
27922786

27932787
def testPrecisionAndDuplicateNodes(self):
27942788
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2795-
geomOps = QgsVectorLayer.GeometryOptions()
2796-
geomOps.removeDuplicateNodes = True
2797-
geomOps.geometryPrecision = 10
2798-
layer.setGeometryOptions(geomOps)
2789+
layer.setGeometryPrecision(10)
2790+
layer.setRemoveDuplicateNodes(True)
27992791
geom = QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596402 1224653, 2596405 1224640, 2596410 1224641, 2596411 1224654))')
28002792
feature = QgsFeature(layer.fields())
28012793
feature.setGeometry(geom)

0 commit comments

Comments
 (0)