From 919b8b6183e3d0ec6df160f040cfaeb5d2964b87 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Thu, 26 Feb 2015 03:08:56 +0100 Subject: [PATCH] fix measurement dialog translation (fixes #12262) --- python/core/qgis.sip | 2 ++ src/app/qgsmeasuredialog.cpp | 17 ++++++++--------- src/core/qgis.cpp | 12 ++++++++++++ src/core/qgis.h | 2 ++ src/core/qgsdistancearea.cpp | 3 +-- src/core/qgssnappingutils.cpp | 3 ++- 6 files changed, 27 insertions(+), 12 deletions(-) diff --git a/python/core/qgis.sip b/python/core/qgis.sip index 288b5263338..152bf8e11a4 100644 --- a/python/core/qgis.sip +++ b/python/core/qgis.sip @@ -129,6 +129,8 @@ class QGis static UnitType fromLiteral( QString literal, QGis::UnitType defaultType = UnknownUnit ); //! Provides translated version of the type value static QString tr( QGis::UnitType unit ); + //! Provides type value from translated version + static UnitType fromTr( QString literal, QGis::UnitType defaultType = UnknownUnit ); //! Returns the conversion factor between the specified units static double fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit ); diff --git a/src/app/qgsmeasuredialog.cpp b/src/app/qgsmeasuredialog.cpp index 1638c7bd690..c4267bcae94 100644 --- a/src/app/qgsmeasuredialog.cpp +++ b/src/app/qgsmeasuredialog.cpp @@ -43,14 +43,14 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool* tool, Qt::WindowFlags f ) mMeasureArea = tool->measureArea(); mTotal = 0.; - mUnitsCombo->addItem( tr( "Meters" ) ); - mUnitsCombo->addItem( tr( "Feet" ) ); - mUnitsCombo->addItem( tr( "Degrees" ) ); - mUnitsCombo->addItem( tr( "Nautical Miles" ) ); + mUnitsCombo->addItem( QGis::tr( QGis::Meters ) ); + mUnitsCombo->addItem( QGis::tr( QGis::Feet ) ); + mUnitsCombo->addItem( QGis::tr( QGis::Degrees ) ); + mUnitsCombo->addItem( QGis::tr( QGis::NauticalMiles ) ); QSettings settings; - QString units = settings.value( "/qgis/measure/displayunits", "meters" ).toString(); - mUnitsCombo->setCurrentIndex( mUnitsCombo->findText( units, Qt::MatchFixedString ) ); + QString units = settings.value( "/qgis/measure/displayunits", QGis::toLiteral( QGis::Meters ) ).toString(); + mUnitsCombo->setCurrentIndex( mUnitsCombo->findText( QGis::tr( QGis::fromLiteral( units ) ), Qt::MatchFixedString ) ); updateSettings(); @@ -66,7 +66,7 @@ void QgsMeasureDialog::updateSettings() mDecimalPlaces = settings.value( "/qgis/measure/decimalplaces", "3" ).toInt(); mCanvasUnits = mTool->canvas()->mapUnits(); // Configure QgsDistanceArea - mDisplayUnits = QGis::fromLiteral( mUnitsCombo->currentText().toLower() ); + mDisplayUnits = QGis::fromTr( mUnitsCombo->currentText() ); mDa.setSourceCrs( mTool->canvas()->mapSettings().destinationCrs().srsid() ); mDa.setEllipsoid( QgsProject::instance()->readEntry( "Measure", "/Ellipsoid", GEO_NONE ) ); // Only use ellipsoidal calculation when project wide transformation is enabled. @@ -92,7 +92,7 @@ void QgsMeasureDialog::updateSettings() void QgsMeasureDialog::unitsChanged( const QString &units ) { - mDisplayUnits = QGis::fromLiteral( units.toLower() ); + mDisplayUnits = QGis::fromTr( units ); mTable->clear(); mTotal = 0.; updateUi(); @@ -350,4 +350,3 @@ void QgsMeasureDialog::convertMeasurement( double &measure, QGis::UnitType &u, b mDa.convertMeasurement( measure, myUnits, mDisplayUnits, isArea ); u = myUnits; } - diff --git a/src/core/qgis.cpp b/src/core/qgis.cpp index 44ac5279bc0..0b10f4142fa 100644 --- a/src/core/qgis.cpp +++ b/src/core/qgis.cpp @@ -120,6 +120,18 @@ QString QGis::tr( QGis::UnitType unit ) return QCoreApplication::translate( "QGis::UnitType", qPrintable( toLiteral( unit ) ) ); } +QGis::UnitType QGis::fromTr( QString literal, QGis::UnitType defaultType ) +{ + for ( unsigned int i = 0; i < ( sizeof( qgisUnitTypes ) / sizeof( qgisUnitTypes[0] ) ); i++ ) + { + if ( literal == QGis::tr( static_cast( i ) ) ) + { + return static_cast( i ); + } + } + return defaultType; +} + double QGis::fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit ) { #define DEGREE_TO_METER 111319.49079327358 diff --git a/src/core/qgis.h b/src/core/qgis.h index cc5a9b7607a..eac17a2e922 100644 --- a/src/core/qgis.h +++ b/src/core/qgis.h @@ -246,6 +246,8 @@ class CORE_EXPORT QGis static UnitType fromLiteral( QString literal, QGis::UnitType defaultType = UnknownUnit ); //! Provides translated version of the type value static QString tr( QGis::UnitType unit ); + //! Provides type value from translated version + static UnitType fromTr( QString literal, QGis::UnitType defaultType = UnknownUnit ); //! Returns the conversion factor between the specified units static double fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit ); diff --git a/src/core/qgsdistancearea.cpp b/src/core/qgsdistancearea.cpp index 30a4d23389a..87f27dae425 100644 --- a/src/core/qgsdistancearea.cpp +++ b/src/core/qgsdistancearea.cpp @@ -1026,8 +1026,7 @@ QString QgsDistanceArea::textUnit( double value, int decimals, QGis::UnitType u, //intentional fall-through default: QgsDebugMsg( QString( "Error: not picked up map units - actual value = %1" ).arg( u ) ); - }; - + } return QLocale::system().toString( value, 'f', decimals ) + unitLabel; } diff --git a/src/core/qgssnappingutils.cpp b/src/core/qgssnappingutils.cpp index cbb0dcde8a9..9f96f5fc732 100644 --- a/src/core/qgssnappingutils.cpp +++ b/src/core/qgssnappingutils.cpp @@ -206,7 +206,8 @@ QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QPoint& point, QgsPoin QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QgsPoint& pointMap, QgsPointLocator::MatchFilter* filter ) { - Q_ASSERT( mMapSettings.hasValidSettings() ); + if ( !mMapSettings.hasValidSettings() ) + return QgsPointLocator::Match(); if ( mSnapToMapMode == SnapCurrentLayer ) {