From 2695e000422b48b3772a39c7a4040f29d43d0d61 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Wed, 4 Jul 2018 08:58:11 +1000 Subject: [PATCH] Add a context getter to QgsCoordinateTransform --- .../auto_generated/qgscoordinatetransform.sip.in | 12 ++++++++++++ src/core/qgscoordinatetransform.cpp | 5 +++++ src/core/qgscoordinatetransform.h | 9 +++++++++ src/quickgui/qgsquickcoordinatetransformer.cpp | 5 ++--- src/quickgui/qgsquickcoordinatetransformer.h | 1 - tests/src/python/test_qgscoordinatetransform.py | 2 ++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/python/core/auto_generated/qgscoordinatetransform.sip.in b/python/core/auto_generated/qgscoordinatetransform.sip.in index 73df966fc18e..8604e887e20f 100644 --- a/python/core/auto_generated/qgscoordinatetransform.sip.in +++ b/python/core/auto_generated/qgscoordinatetransform.sip.in @@ -156,7 +156,19 @@ Sets the destination coordinate reference system. Sets the ``context`` in which the coordinate transform should be calculated. +.. seealso:: :py:func:`context` + .. versionadded:: 3.0 +%End + + QgsCoordinateTransformContext context() const; +%Docstring +Returns the context in which the coordinate transform will be +calculated. + +.. seealso:: :py:func:`setContext` + +.. versionadded:: 3.4 %End QgsCoordinateReferenceSystem sourceCrs() const; diff --git a/src/core/qgscoordinatetransform.cpp b/src/core/qgscoordinatetransform.cpp index 659cdea60fa0..280b4c3bec68 100644 --- a/src/core/qgscoordinatetransform.cpp +++ b/src/core/qgscoordinatetransform.cpp @@ -185,6 +185,11 @@ void QgsCoordinateTransform::setContext( const QgsCoordinateTransformContext &co } } +QgsCoordinateTransformContext QgsCoordinateTransform::context() const +{ + return mContext; +} + QgsCoordinateReferenceSystem QgsCoordinateTransform::sourceCrs() const { return d->mSourceCRS; diff --git a/src/core/qgscoordinatetransform.h b/src/core/qgscoordinatetransform.h index 32ffbfaf2fb7..3a42a3434e0b 100644 --- a/src/core/qgscoordinatetransform.h +++ b/src/core/qgscoordinatetransform.h @@ -175,10 +175,19 @@ class CORE_EXPORT QgsCoordinateTransform /** * Sets the \a context in which the coordinate transform should be * calculated. + * \see context() * \since QGIS 3.0 */ void setContext( const QgsCoordinateTransformContext &context ); + /** + * Returns the context in which the coordinate transform will be + * calculated. + * \see setContext() + * \since QGIS 3.4 + */ + QgsCoordinateTransformContext context() const; + /** * Returns the source coordinate reference system, which the transform will * transform coordinates from. diff --git a/src/quickgui/qgsquickcoordinatetransformer.cpp b/src/quickgui/qgsquickcoordinatetransformer.cpp index e10152782f20..4547ff75b0b8 100644 --- a/src/quickgui/qgsquickcoordinatetransformer.cpp +++ b/src/quickgui/qgsquickcoordinatetransformer.cpp @@ -76,14 +76,13 @@ void QgsQuickCoordinateTransformer::setSourceCrs( const QgsCoordinateReferenceSy void QgsQuickCoordinateTransformer::setTransformContext( const QgsCoordinateTransformContext &context ) { - mTransformContext = context; - mCoordinateTransform.setContext( mTransformContext ); + mCoordinateTransform.setContext( context ); emit transformContextChanged(); } QgsCoordinateTransformContext QgsQuickCoordinateTransformer::transformContext() const { - return mTransformContext; + return mCoordinateTransform.context(); } void QgsQuickCoordinateTransformer::updatePosition() diff --git a/src/quickgui/qgsquickcoordinatetransformer.h b/src/quickgui/qgsquickcoordinatetransformer.h index 4e9b5cce54bc..a69cd8cd255d 100644 --- a/src/quickgui/qgsquickcoordinatetransformer.h +++ b/src/quickgui/qgsquickcoordinatetransformer.h @@ -108,7 +108,6 @@ class QUICK_EXPORT QgsQuickCoordinateTransformer : public QObject QgsPoint mProjectedPosition; QgsPoint mSourcePosition; QgsCoordinateTransform mCoordinateTransform; - QgsCoordinateTransformContext mTransformContext; }; #endif // QGSQUICKCOORDINATETRANSFORMER_H diff --git a/tests/src/python/test_qgscoordinatetransform.py b/tests/src/python/test_qgscoordinatetransform.py index cfbeacecc019..76f9c6fe07ed 100644 --- a/tests/src/python/test_qgscoordinatetransform.py +++ b/tests/src/python/test_qgscoordinatetransform.py @@ -145,6 +145,7 @@ def testContext(self): 3, 4) transform = QgsCoordinateTransform(QgsCoordinateReferenceSystem('EPSG:28354'), QgsCoordinateReferenceSystem('EPSG:28353'), context) + self.assertEqual(list(transform.context().sourceDestinationDatumTransforms().keys()), [('EPSG:28356', 'EPSG:4283')]) # should be no datum transforms self.assertEqual(transform.sourceDatumTransformId(), -1) self.assertEqual(transform.destinationDatumTransformId(), -1) @@ -193,6 +194,7 @@ def testContext(self): transform.setContext(context) self.assertEqual(transform.sourceDatumTransformId(), 3) self.assertEqual(transform.destinationDatumTransformId(), 4) + self.assertEqual(list(transform.context().sourceDestinationDatumTransforms().keys()), [('EPSG:28356', 'EPSG:4283')]) def testProjectContext(self): """