Skip to content

Commit 919b8b6

Browse files
committed
fix measurement dialog translation (fixes #12262)
1 parent c1773d8 commit 919b8b6

File tree

6 files changed

+27
-12
lines changed

6 files changed

+27
-12
lines changed

python/core/qgis.sip

+2
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ class QGis
129129
static UnitType fromLiteral( QString literal, QGis::UnitType defaultType = UnknownUnit );
130130
//! Provides translated version of the type value
131131
static QString tr( QGis::UnitType unit );
132+
//! Provides type value from translated version
133+
static UnitType fromTr( QString literal, QGis::UnitType defaultType = UnknownUnit );
132134
//! Returns the conversion factor between the specified units
133135
static double fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit );
134136

src/app/qgsmeasuredialog.cpp

+8-9
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ QgsMeasureDialog::QgsMeasureDialog( QgsMeasureTool* tool, Qt::WindowFlags f )
4343
mMeasureArea = tool->measureArea();
4444
mTotal = 0.;
4545

46-
mUnitsCombo->addItem( tr( "Meters" ) );
47-
mUnitsCombo->addItem( tr( "Feet" ) );
48-
mUnitsCombo->addItem( tr( "Degrees" ) );
49-
mUnitsCombo->addItem( tr( "Nautical Miles" ) );
46+
mUnitsCombo->addItem( QGis::tr( QGis::Meters ) );
47+
mUnitsCombo->addItem( QGis::tr( QGis::Feet ) );
48+
mUnitsCombo->addItem( QGis::tr( QGis::Degrees ) );
49+
mUnitsCombo->addItem( QGis::tr( QGis::NauticalMiles ) );
5050

5151
QSettings settings;
52-
QString units = settings.value( "/qgis/measure/displayunits", "meters" ).toString();
53-
mUnitsCombo->setCurrentIndex( mUnitsCombo->findText( units, Qt::MatchFixedString ) );
52+
QString units = settings.value( "/qgis/measure/displayunits", QGis::toLiteral( QGis::Meters ) ).toString();
53+
mUnitsCombo->setCurrentIndex( mUnitsCombo->findText( QGis::tr( QGis::fromLiteral( units ) ), Qt::MatchFixedString ) );
5454

5555
updateSettings();
5656

@@ -66,7 +66,7 @@ void QgsMeasureDialog::updateSettings()
6666
mDecimalPlaces = settings.value( "/qgis/measure/decimalplaces", "3" ).toInt();
6767
mCanvasUnits = mTool->canvas()->mapUnits();
6868
// Configure QgsDistanceArea
69-
mDisplayUnits = QGis::fromLiteral( mUnitsCombo->currentText().toLower() );
69+
mDisplayUnits = QGis::fromTr( mUnitsCombo->currentText() );
7070
mDa.setSourceCrs( mTool->canvas()->mapSettings().destinationCrs().srsid() );
7171
mDa.setEllipsoid( QgsProject::instance()->readEntry( "Measure", "/Ellipsoid", GEO_NONE ) );
7272
// Only use ellipsoidal calculation when project wide transformation is enabled.
@@ -92,7 +92,7 @@ void QgsMeasureDialog::updateSettings()
9292

9393
void QgsMeasureDialog::unitsChanged( const QString &units )
9494
{
95-
mDisplayUnits = QGis::fromLiteral( units.toLower() );
95+
mDisplayUnits = QGis::fromTr( units );
9696
mTable->clear();
9797
mTotal = 0.;
9898
updateUi();
@@ -350,4 +350,3 @@ void QgsMeasureDialog::convertMeasurement( double &measure, QGis::UnitType &u, b
350350
mDa.convertMeasurement( measure, myUnits, mDisplayUnits, isArea );
351351
u = myUnits;
352352
}
353-

src/core/qgis.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,18 @@ QString QGis::tr( QGis::UnitType unit )
120120
return QCoreApplication::translate( "QGis::UnitType", qPrintable( toLiteral( unit ) ) );
121121
}
122122

123+
QGis::UnitType QGis::fromTr( QString literal, QGis::UnitType defaultType )
124+
{
125+
for ( unsigned int i = 0; i < ( sizeof( qgisUnitTypes ) / sizeof( qgisUnitTypes[0] ) ); i++ )
126+
{
127+
if ( literal == QGis::tr( static_cast<UnitType>( i ) ) )
128+
{
129+
return static_cast<UnitType>( i );
130+
}
131+
}
132+
return defaultType;
133+
}
134+
123135
double QGis::fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit )
124136
{
125137
#define DEGREE_TO_METER 111319.49079327358

src/core/qgis.h

+2
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ class CORE_EXPORT QGis
246246
static UnitType fromLiteral( QString literal, QGis::UnitType defaultType = UnknownUnit );
247247
//! Provides translated version of the type value
248248
static QString tr( QGis::UnitType unit );
249+
//! Provides type value from translated version
250+
static UnitType fromTr( QString literal, QGis::UnitType defaultType = UnknownUnit );
249251
//! Returns the conversion factor between the specified units
250252
static double fromUnitToUnitFactor( QGis::UnitType fromUnit, QGis::UnitType toUnit );
251253

src/core/qgsdistancearea.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -1026,8 +1026,7 @@ QString QgsDistanceArea::textUnit( double value, int decimals, QGis::UnitType u,
10261026
//intentional fall-through
10271027
default:
10281028
QgsDebugMsg( QString( "Error: not picked up map units - actual value = %1" ).arg( u ) );
1029-
};
1030-
1029+
}
10311030

10321031
return QLocale::system().toString( value, 'f', decimals ) + unitLabel;
10331032
}

src/core/qgssnappingutils.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QPoint& point, QgsPoin
206206

207207
QgsPointLocator::Match QgsSnappingUtils::snapToMap( const QgsPoint& pointMap, QgsPointLocator::MatchFilter* filter )
208208
{
209-
Q_ASSERT( mMapSettings.hasValidSettings() );
209+
if ( !mMapSettings.hasValidSettings() )
210+
return QgsPointLocator::Match();
210211

211212
if ( mSnapToMapMode == SnapCurrentLayer )
212213
{

0 commit comments

Comments
 (0)