Skip to content

Commit f3d032a

Browse files
committed
[georef] Don't allow overwriting input raster (fix #3804)
1 parent cb34348 commit f3d032a

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

src/plugins/georeferencer/qgstransformsettingsdialog.cpp

+17-6
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
QgsTransformSettingsDialog::QgsTransformSettingsDialog( const QString &raster, const QString &output,
3030
int countGCPpoints, QWidget *parent )
3131
: QDialog( parent )
32-
, mModifiedRaster( raster )
32+
, mSourceRasterFile( raster )
3333
, mCountGCPpoints( countGCPpoints )
3434
{
3535
setupUi( this );
@@ -159,12 +159,19 @@ void QgsTransformSettingsDialog::accept()
159159
{
160160
//if the file path is relative, make it relative to the raster file directory
161161
QString outputRasterName = leOutputRaster->text();
162-
QFileInfo rasterFileInfo( mModifiedRaster );
162+
QFileInfo rasterFileInfo( mSourceRasterFile );
163163
QFileInfo outputFileInfo( rasterFileInfo.absoluteDir(), outputRasterName );
164164

165165
if ( outputFileInfo.fileName().isEmpty() || !outputFileInfo.dir().exists() )
166166
{
167-
QMessageBox::warning( this, tr( "Info" ), tr( "Invalid output file name" ) );
167+
QMessageBox::warning( this, tr( "Destination Raster" ), tr( "Invalid output file name." ) );
168+
leOutputRaster->setFocus();
169+
return;
170+
}
171+
if ( outputFileInfo.filePath() == mSourceRasterFile )
172+
{
173+
//can't overwrite input file
174+
QMessageBox::warning( this, tr( "Destination Raster" ), tr( "Input raster can not be overwritten." ) );
168175
leOutputRaster->setFocus();
169176
return;
170177
}
@@ -193,10 +200,14 @@ void QgsTransformSettingsDialog::accept()
193200

194201
void QgsTransformSettingsDialog::on_tbnOutputRaster_clicked()
195202
{
196-
QString selectedFile = generateModifiedRasterFileName( mModifiedRaster );
197-
QString rasterFileName = QFileDialog::getSaveFileName( this, tr( "Save raster" ),
198-
selectedFile, "GeoTIFF (*.tif *.tiff *.TIF *.TIFF)" );
203+
QString selectedFile = leOutputRaster->text();
204+
if ( selectedFile.isEmpty() )
205+
{
206+
selectedFile = generateModifiedRasterFileName( mSourceRasterFile );
207+
}
199208

209+
QString rasterFileName = QFileDialog::getSaveFileName( this, tr( "Destination Raster" ),
210+
selectedFile, "GeoTIFF (*.tif *.tiff *.TIF *.TIFF)" );
200211
if ( rasterFileName.isEmpty() )
201212
return;
202213

src/plugins/georeferencer/qgstransformsettingsdialog.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class QgsTransformSettingsDialog : public QDialog, private Ui::QgsTransformSetti
5353
bool checkGCPpoints( int count, int &minGCPpoints );
5454
QString generateModifiedRasterFileName( const QString &raster );
5555

56-
QString mModifiedRaster;
56+
QString mSourceRasterFile;
5757

5858
int mCountGCPpoints;
5959

0 commit comments

Comments
 (0)