Skip to content

Commit

Permalink
Allow manually specifying ellipsoid for new projects
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Jul 26, 2019
1 parent 7ec2101 commit 4cd2812
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 4 deletions.
5 changes: 4 additions & 1 deletion src/app/qgisapp.cpp
Expand Up @@ -5514,7 +5514,10 @@ bool QgisApp::fileNew( bool promptToSaveFlag, bool forceBlank )
// set project CRS
const QgsCoordinateReferenceSystem srs = QgsCoordinateReferenceSystem( settings.value( QStringLiteral( "/projections/defaultProjectCrs" ), GEO_EPSG_CRS_AUTHID, QgsSettings::App ).toString() );
// write the projections _proj string_ to project settings
prj->setCrs( srs, true );
const bool ellipsoidFollowProjectCrs = settings.value( QStringLiteral( "/qgis/measure/followProjectCrs" ), true ).toBool();
prj->setCrs( srs, ellipsoidFollowProjectCrs );
if ( !ellipsoidFollowProjectCrs )
prj->setEllipsoid( settings.value( QStringLiteral( "/qgis/measure/defaultCrs" ), GEO_NONE ).toString() );

/* New Empty Project Created
(before attempting to load custom project templates/filepaths) */
Expand Down
20 changes: 20 additions & 0 deletions src/app/qgsoptions.cpp
Expand Up @@ -83,6 +83,9 @@

#include "qgsconfig.h"

// TODO Move to generic place
const char *QgsOptions::GEO_NONE_DESC = QT_TRANSLATE_NOOP( "QgsOptions", "None / Planimetric" );

/**
* \class QgsOptions - Set user options and preferences
* Constructor
Expand Down Expand Up @@ -556,6 +559,10 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti
{
mKeepBaseUnitCheckBox->setChecked( false );
}
initEllipsoidList();
mOverrideDefaultEllipsoid->setChecked( !mSettings->value( QStringLiteral( "/qgis/measure/followProjectCrs" ), true ).toBool() );
const QString defaultEllipsoid = mSettings->value( QStringLiteral( "/qgis/measure/defaultCrs" ), GEO_NONE ).toString();
mEllipsoidComboBox->setCurrentIndex( mEllipsoidComboBox->findData( defaultEllipsoid ) );

cmbIconSize->setCurrentIndex( cmbIconSize->findText( mSettings->value( QStringLiteral( "qgis/iconSize" ), QGIS_ICON_SIZE ).toString() ) );

Expand Down Expand Up @@ -1579,6 +1586,8 @@ void QgsOptions::saveOptions()
mSettings->setValue( QStringLiteral( "/projections/promptWhenMultipleTransformsExist" ), mShowDatumTransformDialogCheckBox->isChecked(), QgsSettings::App );

//measurement settings
mSettings->setValue( QStringLiteral( "/qgis/measure/followProjectCrs" ), ! mOverrideDefaultEllipsoid->isChecked() );
mSettings->setValue( QStringLiteral( "/qgis/measure/defaultCrs" ), mEllipsoidComboBox->currentData().toString() );

QgsUnitTypes::DistanceUnit distanceUnit = static_cast< QgsUnitTypes::DistanceUnit >( mDistanceUnitsComboBox->currentData().toInt() );
mSettings->setValue( QStringLiteral( "/qgis/measure/displayunits" ), QgsUnitTypes::encodeUnit( distanceUnit ) );
Expand Down Expand Up @@ -1903,6 +1912,17 @@ QStringList QgsOptions::i18nList()
return myList;
}

void QgsOptions::initEllipsoidList()
{
mEllipsoidComboBox->addItem( tr( GEO_NONE_DESC ), GEO_NONE );

const auto definitions {QgsEllipsoidUtils::definitions()};
for ( const QgsEllipsoidUtils::EllipsoidDefinition &def : definitions )
{
mEllipsoidComboBox->addItem( def.description, def.acronym );
}
}

void QgsOptions::restoreDefaultWindowState()
{
// richard
Expand Down
5 changes: 5 additions & 0 deletions src/app/qgsoptions.h
Expand Up @@ -229,6 +229,9 @@ class APP_EXPORT QgsOptions : public QgsOptionsDialogBase, private Ui::QgsOption
private:
QgsSettings *mSettings = nullptr;
QStringList i18nList();

void initEllipsoidList();

void initContrastEnhancement( QComboBox *cbox, const QString &name, const QString &defaultVal );
void saveContrastEnhancement( QComboBox *cbox, const QString &name );
void initMinMaxLimits( QComboBox *cbox, const QString &name, const QString &defaultVal );
Expand Down Expand Up @@ -267,6 +270,8 @@ class APP_EXPORT QgsOptions : public QgsOptionsDialogBase, private Ui::QgsOption

void checkPageWidgetNameMap();

static const char *GEO_NONE_DESC;

friend class QgsAppScreenShots;
};

Expand Down
3 changes: 1 addition & 2 deletions src/app/qgsprojectproperties.cpp
Expand Up @@ -2393,8 +2393,7 @@ void QgsProjectProperties::populateEllipsoidList()
}
// Add all items to selector

const auto constMEllipsoidList = mEllipsoidList;
for ( const EllipsoidDefs &i : constMEllipsoidList )
for ( const EllipsoidDefs &i : qgis::as_const( mEllipsoidList ) )
{
cmbEllipsoid->addItem( i.description );
}
Expand Down
5 changes: 4 additions & 1 deletion src/gui/layertree/qgslayertreemapcanvasbridge.cpp
Expand Up @@ -115,8 +115,11 @@ void QgsLayerTreeMapCanvasBridge::setCanvasLayers()
switch ( projectCrsBehavior )
{
case QgsGui::UseCrsOfFirstLayerAdded:
QgsProject::instance()->setCrs( mFirstCRS, true );
{
const bool ellipsoidFollowProjectCrs = QgsSettings().value( QStringLiteral( "/qgis/measure/followProjectCrs" ), true ).toBool();
QgsProject::instance()->setCrs( mFirstCRS, ellipsoidFollowProjectCrs );
break;
}

case QgsGui::UsePresetCrs:
break;
Expand Down
18 changes: 18 additions & 0 deletions src/ui/qgsoptionsbase.ui
Expand Up @@ -1793,6 +1793,24 @@
</layout>
</widget>
</item>
<item row="5" column="0">
<widget class="QGroupBox" name="mOverrideDefaultEllipsoid">
<property name="toolTip">
<string>If the default ellipsoid is disabled, the project will take the ellipsoid imposed by the project CRS.</string>
</property>
<property name="title">
<string>Default Ellipsoid for Measurement</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_30">
<item row="0" column="0">
<widget class="QComboBox" name="mEllipsoidComboBox"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
Expand Down

0 comments on commit 4cd2812

Please sign in to comment.