diff --git a/src/app/qgsrastercalcdialog.cpp b/src/app/qgsrastercalcdialog.cpp index b3805e9a95b..b0c5818dc41 100644 --- a/src/app/qgsrastercalcdialog.cpp +++ b/src/app/qgsrastercalcdialog.cpp @@ -34,12 +34,10 @@ QgsRasterCalcDialog::QgsRasterCalcDialog( QgsRasterLayer *rasterLayer, QWidget * setupUi( this ); QgsGui::instance()->enableAutoGeometryRestore( this ); - connect( mOutputLayerPushButton, &QPushButton::clicked, this, &QgsRasterCalcDialog::mOutputLayerPushButton_clicked ); connect( mRasterBandsListWidget, &QListWidget::itemDoubleClicked, this, &QgsRasterCalcDialog::mRasterBandsListWidget_itemDoubleClicked ); connect( mButtonBox, &QDialogButtonBox::accepted, this, &QgsRasterCalcDialog::mButtonBox_accepted ); connect( mCurrentLayerExtentButton, &QPushButton::clicked, this, &QgsRasterCalcDialog::mCurrentLayerExtentButton_clicked ); connect( mExpressionTextEdit, &QTextEdit::textChanged, this, &QgsRasterCalcDialog::mExpressionTextEdit_textChanged ); - connect( mOutputLayerLineEdit, &QLineEdit::textChanged, this, &QgsRasterCalcDialog::mOutputLayerLineEdit_textChanged ); connect( mPlusPushButton, &QPushButton::clicked, this, &QgsRasterCalcDialog::mPlusPushButton_clicked ); connect( mMinusPushButton, &QPushButton::clicked, this, &QgsRasterCalcDialog::mMinusPushButton_clicked ); connect( mMultiplyPushButton, &QPushButton::clicked, this, &QgsRasterCalcDialog::mMultiplyPushButton_clicked ); @@ -77,6 +75,11 @@ QgsRasterCalcDialog::QgsRasterCalcDialog( QgsRasterLayer *rasterLayer, QWidget * insertAvailableRasterBands(); mExpressionTextEdit->setCurrentFont( QFontDatabase::systemFont( QFontDatabase::FixedFont ) ); + + QgsSettings settings; + mOutputLayer->setDialogTitle( tr( "Enter result file" ) ); + mOutputLayer->setDefaultRoot( settings.value( QStringLiteral( "/RasterCalculator/lastOutputDir" ), QDir::homePath() ).toString() ); + connect( mOutputLayer, &QgsFileWidget::fileChanged, this, [ = ]() { setAcceptButtonState(); } ); } QString QgsRasterCalcDialog::formulaString() const @@ -86,7 +89,7 @@ QString QgsRasterCalcDialog::formulaString() const QString QgsRasterCalcDialog::outputFile() const { - QString outputFileName = mOutputLayerLineEdit->text(); + QString outputFileName = mOutputLayer->filePath(); QFileInfo fileInfo( outputFileName ); QString suffix = fileInfo.suffix(); if ( !suffix.isEmpty() ) @@ -253,7 +256,7 @@ void QgsRasterCalcDialog::mButtonBox_accepted() //save last output format QgsSettings s; s.setValue( QStringLiteral( "/RasterCalculator/lastOutputFormat" ), QVariant( mOutputFormatComboBox->currentText() ) ); - s.setValue( QStringLiteral( "/RasterCalculator/lastOutputDir" ), QVariant( QFileInfo( mOutputLayerLineEdit->text() ).absolutePath() ) ); + s.setValue( QStringLiteral( "/RasterCalculator/lastOutputDir" ), QVariant( QFileInfo( mOutputLayer->filePath() ).absolutePath() ) ); } void QgsRasterCalcDialog::showHelp() @@ -261,16 +264,6 @@ void QgsRasterCalcDialog::showHelp() QgsHelp::openHelp( QStringLiteral( "working_with_raster/raster_analysis.html#raster-calculator" ) ); } -void QgsRasterCalcDialog::mOutputLayerPushButton_clicked() -{ - QgsSettings s; - QString saveFileName = QFileDialog::getSaveFileName( nullptr, tr( "Enter result file" ), s.value( QStringLiteral( "/RasterCalculator/lastOutputDir" ), QDir::homePath() ).toString() ); - if ( !saveFileName.isNull() ) - { - mOutputLayerLineEdit->setText( saveFileName ); - } -} - void QgsRasterCalcDialog::mCurrentLayerExtentButton_clicked() { QListWidgetItem *currentLayerItem = mRasterBandsListWidget->currentItem(); @@ -320,12 +313,6 @@ void QgsRasterCalcDialog::mExpressionTextEdit_textChanged() mButtonBox->button( QDialogButtonBox::Ok )->setEnabled( false ); } -void QgsRasterCalcDialog::mOutputLayerLineEdit_textChanged( const QString &text ) -{ - Q_UNUSED( text ); - setAcceptButtonState(); -} - void QgsRasterCalcDialog::setAcceptButtonState() { if ( expressionValid() && filePathValid() ) @@ -352,7 +339,7 @@ bool QgsRasterCalcDialog::expressionValid() const bool QgsRasterCalcDialog::filePathValid() const { - QString outputPath = mOutputLayerLineEdit->text(); + QString outputPath = mOutputLayer->filePath(); if ( outputPath.isEmpty() ) return false; diff --git a/src/app/qgsrastercalcdialog.h b/src/app/qgsrastercalcdialog.h index c6ecda1e917..6560b23ae35 100644 --- a/src/app/qgsrastercalcdialog.h +++ b/src/app/qgsrastercalcdialog.h @@ -46,12 +46,10 @@ class APP_EXPORT QgsRasterCalcDialog: public QDialog, private Ui::QgsRasterCalcD QVector rasterEntries() const; private slots: - void mOutputLayerPushButton_clicked(); void mRasterBandsListWidget_itemDoubleClicked( QListWidgetItem *item ); void mButtonBox_accepted(); void mCurrentLayerExtentButton_clicked(); void mExpressionTextEdit_textChanged(); - void mOutputLayerLineEdit_textChanged( const QString &text ); //! Enables OK button if calculator expression is valid and output file path exists void setAcceptButtonState(); void showHelp(); diff --git a/src/ui/qgsrastercalcdialogbase.ui b/src/ui/qgsrastercalcdialogbase.ui index fa4708638e0..3ee2655cb91 100644 --- a/src/ui/qgsrastercalcdialogbase.ui +++ b/src/ui/qgsrastercalcdialogbase.ui @@ -84,7 +84,7 @@ - XMax + X Max @@ -163,8 +163,8 @@ - - + + @@ -176,7 +176,7 @@ - Current layer extent + Selected layer extent @@ -185,28 +185,6 @@ Output layer - - mOutputLayerPushButton - - - - - - - - 0 - 0 - - - - - 20 - 0 - - - - - @@ -526,11 +504,15 @@
qgsprojectionselectionwidget.h
1 + + QgsFileWidget + QWidget +
qgsfilewidget.h
+
mRasterBandsListWidget - mOutputLayerLineEdit - mOutputLayerPushButton + mOutputLayer mOutputFormatComboBox mCurrentLayerExtentButton mXMinSpinBox