35#include "moc_qgsdatumtransformdialog.cpp"
39 if ( sourceCrs == destinationCrs )
48 QgsDatumTransformDialog dlg( sourceCrs, destinationCrs,
false,
true,
false, qMakePair( -1, -1 ), parent, Qt::WindowFlags(), QString(), mapCanvas );
49 if ( !windowTitle.isEmpty() )
50 dlg.setWindowTitle( windowTitle );
52 if ( dlg.shouldAskUserForSelection() )
72 dlg.applyDefaultTransform();
77QgsDatumTransformDialog::QgsDatumTransformDialog(
const QgsCoordinateReferenceSystem &sCrs,
const QgsCoordinateReferenceSystem &dCrs,
const bool allowCrsChanges,
const bool showMakeDefault,
const bool forceChoice, QPair<int, int> selectedDatumTransforms, QWidget *parent, Qt::WindowFlags f,
const QString &selectedProj,
QgsMapCanvas *mapCanvas,
bool allowFallback )
78 : QDialog( parent, f )
88 if ( !showMakeDefault )
89 mCoordinateOperationsWidget->setShowMakeDefault(
false );
93 mButtonBox->removeButton( mButtonBox->button( QDialogButtonBox::Cancel ) );
94 setWindowFlags( windowFlags() | Qt::CustomizeWindowHint );
95 setWindowFlags( windowFlags() & ~Qt::WindowCloseButtonHint );
102 if ( !destinationCrs.
isValid() )
104 if ( !destinationCrs.
isValid() )
110 mSourceProjectionSelectionWidget->setCrs( sourceCrs );
111 mDestinationProjectionSelectionWidget->setCrs( destinationCrs );
112 if ( !allowCrsChanges )
114 mCrsStackedWidget->setCurrentIndex( 1 );
115 mSourceProjectionSelectionWidget->setEnabled(
false );
116 mDestinationProjectionSelectionWidget->setEnabled(
false );
121 mCoordinateOperationsWidget->setMapCanvas( mapCanvas );
126 mCoordinateOperationsWidget->setSourceCrs( sourceCrs );
127 mCoordinateOperationsWidget->setDestinationCrs( destinationCrs );
129 connect( mButtonBox, &QDialogButtonBox::helpRequested,
this, [] {
130 QgsHelp::openHelp( QStringLiteral(
"working_with_projections/working_with_projections.html" ) );
135 deets.
proj = selectedProj;
139 mCoordinateOperationsWidget->setSelectedOperation( deets );
142 if ( mCoordinateOperationsWidget->sourceCrs().isValid() && mCoordinateOperationsWidget->destinationCrs().isValid()
143 && mCoordinateOperationsWidget->selectedOperation().isAvailable )
148void QgsDatumTransformDialog::setOKButtonEnabled()
150 mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( mCoordinateOperationsWidget->sourceCrs().isValid() && mCoordinateOperationsWidget->destinationCrs().isValid() && mCoordinateOperationsWidget->selectedOperation().isAvailable );
155 if ( mCoordinateOperationsWidget->makeDefaultSelected() && mCoordinateOperationsWidget->hasSelection() )
158 settings.
beginGroup( QStringLiteral(
"/Projections" ) );
165 QString sourceDatumProj;
167 if ( sourceDatumTransform >= 0 )
170 QString destinationDatumProj;
171 if ( destinationDatumTransform >= 0 )
174 settings.
setValue( srcAuthId + QStringLiteral(
"//" ) + destAuthId + QStringLiteral(
"_srcTransform" ), sourceDatumProj );
175 settings.
setValue( srcAuthId + QStringLiteral(
"//" ) + destAuthId + QStringLiteral(
"_destTransform" ), destinationDatumProj );
176 settings.
setValue( srcAuthId + QStringLiteral(
"//" ) + destAuthId + QStringLiteral(
"_coordinateOp" ), dt.
proj );
177 settings.
setValue( srcAuthId + QStringLiteral(
"//" ) + destAuthId + QStringLiteral(
"_allowFallback" ), dt.
allowFallback );
184 if ( !mButtonBox->button( QDialogButtonBox::Cancel ) )
190bool QgsDatumTransformDialog::shouldAskUserForSelection()
const
192 if ( mCoordinateOperationsWidget->availableOperations().count() > 1 )
203 preferred.
sourceCrs = mCoordinateOperationsWidget->sourceCrs();
204 preferred.destinationCrs = mCoordinateOperationsWidget->destinationCrs();
205 const QgsCoordinateOperationWidget::OperationDetails defaultOp = mCoordinateOperationsWidget->defaultOperation();
208 preferred.proj = defaultOp.
proj;
212void QgsDatumTransformDialog::applyDefaultTransform()
214 if ( mCoordinateOperationsWidget->availableOperations().count() > 0 )
232 sdt.
sourceCrs = mCoordinateOperationsWidget->sourceCrs();
233 sdt.
destinationCrs = mCoordinateOperationsWidget->destinationCrs();
241bool QgsDatumTransformDialog::gridShiftTransformation(
const QString &itemText )
const
243 return !itemText.isEmpty() && !itemText.contains( QLatin1String(
"towgs84" ), Qt::CaseInsensitive );
246void QgsDatumTransformDialog::operationChanged()
248 setOKButtonEnabled();
253 mCoordinateOperationsWidget->setSourceCrs( sourceCrs );
254 setOKButtonEnabled();
259 mCoordinateOperationsWidget->setDestinationCrs( destinationCrs );
260 setOKButtonEnabled();
Represents a coordinate reference system (CRS).
bool isValid() const
Returns whether this CRS is correctly initialized and usable.
Contains information about the context in which a coordinate transform is executed.
Q_DECL_DEPRECATED bool addSourceDestinationDatumTransform(const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, int sourceTransformId, int destinationTransformId)
Adds a new sourceTransform and destinationTransform to use when projecting coordinates from the speci...
bool addCoordinateOperation(const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs, const QString &coordinateOperationProjString, bool allowFallback=true)
Adds a new coordinateOperationProjString to use when projecting coordinates from the specified source...
void removeCoordinateOperation(const QgsCoordinateReferenceSystem &sourceCrs, const QgsCoordinateReferenceSystem &destinationCrs)
Removes the coordinate operation for the specified sourceCrs and destinationCrs.
bool hasTransform(const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination) const
Returns true if the context has a valid coordinate operation to use when transforming from the specif...
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
Map canvas is a class for displaying all GIS data types on a canvas.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsCoordinateTransformContext transformContext
QgsCoordinateReferenceSystem crs
void setTransformContext(const QgsCoordinateTransformContext &context)
Sets the project's coordinate transform context, which stores various information regarding which dat...
Stores settings for use within QGIS.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
void beginGroup(const QString &prefix, QgsSettings::Section section=QgsSettings::NoSection)
Appends prefix to the current group.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
Temporarily removes all cursor overrides for the QApplication for the lifetime of the object.
#define Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_PUSH