@@ -152,7 +152,8 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
152
152
// Properties stored in map canvas's QgsMapRenderer
153
153
// these ones are propagated to QgsProject by a signal
154
154
155
- updateGuiForMapUnits ( QgsProject::instance ()->crs ().mapUnits () );
155
+ mCrs = QgsProject::instance ()->crs ();
156
+ updateGuiForMapUnits ();
156
157
projectionSelector->setCrs ( QgsProject::instance ()->crs () );
157
158
158
159
// Datum transforms
@@ -235,12 +236,25 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
235
236
// selection of the ellipsoid from settings is defferred to a later point, because it would
236
237
// be overridden in the meanwhile by the projection selector
237
238
populateEllipsoidList ();
238
-
239
239
if ( !QgsProject::instance ()->crs ().isValid () )
240
240
{
241
241
cmbEllipsoid->setCurrentIndex ( 0 );
242
242
cmbEllipsoid->setEnabled ( false );
243
243
}
244
+ else
245
+ {
246
+ // attempt to reset the projection ellipsoid according to the srs
247
+ int index = 0 ;
248
+ for ( int i = 0 ; i < mEllipsoidList .length (); i++ )
249
+ {
250
+ if ( mEllipsoidList [ i ].acronym == QgsProject::instance ()->crs ().ellipsoidAcronym () )
251
+ {
252
+ index = i;
253
+ break ;
254
+ }
255
+ }
256
+ updateEllipsoidUI ( index );
257
+ }
244
258
245
259
QString format = QgsProject::instance ()->readEntry ( QStringLiteral ( " PositionPrecision" ), QStringLiteral ( " /DegreeFormat" ), QStringLiteral ( " MU" ) );
246
260
if ( format == QLatin1String ( " MU" ) )
@@ -1260,9 +1274,9 @@ void QgsProjectProperties::cbxWCSPubliedStateChanged( int aIdx )
1260
1274
}
1261
1275
}
1262
1276
1263
- void QgsProjectProperties::updateGuiForMapUnits ( QgsUnitTypes::DistanceUnit units )
1277
+ void QgsProjectProperties::updateGuiForMapUnits ()
1264
1278
{
1265
- if ( !projectionSelector-> crs () .isValid () )
1279
+ if ( !mCrs .isValid () )
1266
1280
{
1267
1281
// no projection set - disable everything!
1268
1282
int idx = mDistanceUnitsCombo ->findData ( QgsUnitTypes::DistanceUnknownUnit );
@@ -1289,6 +1303,8 @@ void QgsProjectProperties::updateGuiForMapUnits( QgsUnitTypes::DistanceUnit unit
1289
1303
}
1290
1304
else
1291
1305
{
1306
+ QgsUnitTypes::DistanceUnit units = mCrs .mapUnits ();
1307
+
1292
1308
mDistanceUnitsCombo ->setEnabled ( true );
1293
1309
mAreaUnitsCombo ->setEnabled ( true );
1294
1310
mCoordinateDisplayComboBox ->setEnabled ( true );
@@ -1319,27 +1335,23 @@ void QgsProjectProperties::srIdUpdated()
1319
1335
if ( !projectionSelector->hasValidSelection () )
1320
1336
return ;
1321
1337
1322
- QgsCoordinateReferenceSystem srs = projectionSelector->crs ();
1338
+ mCrs = projectionSelector->crs ();
1339
+ updateGuiForMapUnits ();
1323
1340
1324
- // set radio button to crs map unit type
1325
- QgsUnitTypes::DistanceUnit units = srs.mapUnits ();
1326
-
1327
- updateGuiForMapUnits ( units );
1328
-
1329
- if ( srs.isValid () )
1341
+ if ( mCrs .isValid () )
1330
1342
{
1331
1343
cmbEllipsoid->setEnabled ( true );
1332
1344
// attempt to reset the projection ellipsoid according to the srs
1333
- int myIndex = 0 ;
1345
+ int index = 0 ;
1334
1346
for ( int i = 0 ; i < mEllipsoidList .length (); i++ )
1335
1347
{
1336
- if ( mEllipsoidList [ i ].acronym == srs .ellipsoidAcronym () )
1348
+ if ( mEllipsoidList [ i ].acronym == mCrs .ellipsoidAcronym () )
1337
1349
{
1338
- myIndex = i;
1350
+ index = i;
1339
1351
break ;
1340
1352
}
1341
1353
}
1342
- updateEllipsoidUI ( myIndex );
1354
+ updateEllipsoidUI ( index );
1343
1355
}
1344
1356
else
1345
1357
{
@@ -1410,10 +1422,8 @@ void QgsProjectProperties::pbnWMSSetUsedSRS_clicked()
1410
1422
}
1411
1423
1412
1424
QSet<QString> crsList;
1413
-
1414
- QgsCoordinateReferenceSystem srs = projectionSelector->crs ();
1415
- if ( srs.isValid () )
1416
- crsList << srs.authid ();
1425
+ if ( mCrs .isValid () )
1426
+ crsList << mCrs .authid ();
1417
1427
1418
1428
const QMap<QString, QgsMapLayer *> &mapLayers = QgsProject::instance ()->mapLayers ();
1419
1429
for ( QMap<QString, QgsMapLayer *>::const_iterator it = mapLayers.constBegin (); it != mapLayers.constEnd (); ++it )
@@ -1927,7 +1937,7 @@ void QgsProjectProperties::updateEllipsoidUI( int newIndex )
1927
1937
leSemiMajor->clear ();
1928
1938
leSemiMinor->clear ();
1929
1939
1930
- cmbEllipsoid->setEnabled ( projectionSelector-> crs () .isValid () );
1940
+ cmbEllipsoid->setEnabled ( mCrs .isValid () );
1931
1941
cmbEllipsoid->setToolTip ( QLatin1String ( " " ) );
1932
1942
if ( mEllipsoidList .at ( mEllipsoidIndex ).acronym .startsWith ( QLatin1String ( " PARAMETER:" ) ) )
1933
1943
{
@@ -1945,7 +1955,7 @@ void QgsProjectProperties::updateEllipsoidUI( int newIndex )
1945
1955
leSemiMinor->setText ( QLocale::system ().toString ( myMinor, ' f' , 3 ) );
1946
1956
}
1947
1957
1948
- if ( projectionSelector-> crs () .isValid () )
1958
+ if ( mCrs .isValid () )
1949
1959
cmbEllipsoid->setCurrentIndex ( mEllipsoidIndex ); // Not always necessary
1950
1960
}
1951
1961
@@ -1956,24 +1966,24 @@ void QgsProjectProperties::projectionSelectorInitialized()
1956
1966
// Reading ellipsoid from settings
1957
1967
QStringList mySplitEllipsoid = QgsProject::instance ()->ellipsoid ().split ( ' :' );
1958
1968
1959
- int myIndex = 0 ;
1969
+ int index = 0 ;
1960
1970
for ( int i = 0 ; i < mEllipsoidList .length (); i++ )
1961
1971
{
1962
1972
if ( mEllipsoidList .at ( i ).acronym .startsWith ( mySplitEllipsoid[ 0 ] ) )
1963
1973
{
1964
- myIndex = i;
1974
+ index = i;
1965
1975
break ;
1966
1976
}
1967
1977
}
1968
1978
1969
1979
// Update parameters if present.
1970
1980
if ( mySplitEllipsoid.length () >= 3 )
1971
1981
{
1972
- mEllipsoidList [ myIndex ].semiMajor = mySplitEllipsoid[ 1 ].toDouble ();
1973
- mEllipsoidList [ myIndex ].semiMinor = mySplitEllipsoid[ 2 ].toDouble ();
1982
+ mEllipsoidList [ index ].semiMajor = mySplitEllipsoid[ 1 ].toDouble ();
1983
+ mEllipsoidList [ index ].semiMinor = mySplitEllipsoid[ 2 ].toDouble ();
1974
1984
}
1975
1985
1976
- updateEllipsoidUI ( myIndex );
1986
+ updateEllipsoidUI ( index );
1977
1987
}
1978
1988
1979
1989
void QgsProjectProperties::mButtonAddColor_clicked ()
0 commit comments