diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp index e8dc8da7b2bc816392af1e6fac490e2ee725955b..3610dade365f08e9ed9dc3fb31b2d13012f2e8ca 100644 --- a/src/files/tandemparametersfile.cpp +++ b/src/files/tandemparametersfile.cpp @@ -56,6 +56,9 @@ const QString TandemParametersFile::getFilename() const { return _param_source.fileName(); } +const QDir TandemParametersFile::getAbsoluteDir() const { + return _param_source.absoluteDir(); +} const QString TandemParametersFile::getAbsoluteFilePath() const { return _param_source.absoluteFilePath(); } diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h index a1adeb1461c0c95f9e334ea8684ea175228251f8..6557cc2f97b783f608822a80782ca1fc594d373f 100644 --- a/src/files/tandemparametersfile.h +++ b/src/files/tandemparametersfile.h @@ -45,6 +45,7 @@ public: const QString getMethodName() const; const QString getFilename() const; + const QDir getAbsoluteDir() const; const QString getAbsoluteFilePath() const; bool exists() const; diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp index e179de5127a9ec146f5ef79a40ddf0e952c6022b..f3219f9cea4f39e6df9c6f5159dac40bb24a0a5a 100644 --- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp +++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp @@ -64,12 +64,16 @@ EditTandemPresetDialog::~EditTandemPresetDialog() } } -void EditTandemPresetDialog::setTandemParametersFiles(const TandemParametersFile & tandem_preset_file) { +void EditTandemPresetDialog::setTandemParametersFile(const TandemParametersFile & tandem_preset_file) { if (tandem_preset_file.exists()) { _p_tandem_preset_file = new TandemParametersFile( tandem_preset_file); + _preset_directory = _p_tandem_preset_file->getAbsoluteDir().absolutePath(); } else { _p_tandem_preset_file = new TandemParametersFile(":/tandem/ressources/model/QExactive_analysis_FDR_nosemi.xml"); + + QSettings settings; + _preset_directory = settings.value("path/tandemrun_preset_directory", "").toString(); } _tandem_params = _p_tandem_preset_file->getTandemParameters(); @@ -87,21 +91,17 @@ void EditTandemPresetDialog::doCopy() { else { delete _p_tandem_preset_file; } - QSettings settings; - QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); - _p_tandem_preset_file = new TandemParametersFile(QString("%1/untitled.xml").arg(default_preset_location)); + _p_tandem_preset_file = new TandemParametersFile(QString("%1/untitled.xml").arg(_preset_directory)); } void EditTandemPresetDialog::doSelectDir() { try { - QSettings settings; - QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); - QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),default_preset_location ); + QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),_preset_directory ); if (!directory.isEmpty() && ! directory.isNull()) { - settings.setValue("path/tandemrun_preset_directory", directory); + _preset_directory = directory; fillPresetComboBox(); } @@ -115,7 +115,6 @@ void EditTandemPresetDialog::doSelectDir() { void EditTandemPresetDialog::doSave() { readUi(); if (_p_tandem_preset_file == nullptr) { - throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); } _p_tandem_preset_file->setTandemParameters(_tandem_params); @@ -132,9 +131,6 @@ void EditTandemPresetDialog::doLoad() { else { delete _p_tandem_preset_file; } - QSettings settings; - QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); - _p_tandem_preset_file = new TandemParametersFile( ui->preset_combo_box->itemData(index).value<QString>()); @@ -142,14 +138,20 @@ void EditTandemPresetDialog::doLoad() { populate(); } } - +const TandemParametersFile & EditTandemPresetDialog::getTandemParametersFile() const { + if (_p_tandem_preset_file == nullptr) { + throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); + } + if (!_p_tandem_preset_file->exists()) { + throw pappso::PappsoException(QObject::tr("preset file %1 does not exists").arg(_p_tandem_preset_file->getAbsoluteFilePath())); + } + return *_p_tandem_preset_file; +} void EditTandemPresetDialog::fillPresetComboBox() { ui->preset_combo_box->clear(); - QSettings settings; - QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); QString default_preset_name = _tandem_params.getMethodName(); - QDir preset_dir(default_preset_location); + QDir preset_dir(_preset_directory); QStringList filters; filters << "*.xml"; preset_dir.setNameFilters(filters); @@ -207,7 +209,7 @@ void EditTandemPresetDialog::doHelp() { { html_doc.setFileName(":/tandem/resources/html_doc/sfmme.html"); } - + if (html_doc.open(QFile::ReadOnly | QFile::Text)) { QTextStream in(&html_doc); @@ -283,3 +285,28 @@ void EditTandemPresetDialog::populate() { qDebug() << "EditTandemPresetDialog::populate end"; } + +void EditTandemPresetDialog::done(int r) +{ + if(QDialog::Accepted == r) // ok was pressed + { + readUi(); + TandemParameters ref_params = _p_tandem_preset_file->getTandemParameters(); + if(ref_params.equals(_tandem_params)) // validate the data somehow + { + QDialog::done(r); + return; + } + else + { + QMessageBox::warning(this, + tr("Save parameters"), tr("Parameters modified but not saved.\nPlease save it before pressing ok or cancel edition")); + return; + } + } + else // cancel, close or exc was pressed + { + QDialog::done(r); + return; + } +} diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h index 65942e27f7a953a9c7cdc312a0bb673fb76b7bab..509b3d58991f5e126df14fa3b977b0ff1f797335 100644 --- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h +++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h @@ -45,7 +45,12 @@ public: explicit EditTandemPresetDialog(QWidget * parent); ~EditTandemPresetDialog(); - void setTandemParametersFiles(const TandemParametersFile & tandem_preset_file); + void setTandemParametersFile(const TandemParametersFile & tandem_preset_file); + + const TandemParametersFile & getTandemParametersFile() const; + +protected: + void done(int r) override; public slots: void doHelp (); @@ -63,6 +68,7 @@ private: Ui::EditTandemPresetView *ui; TandemParametersFile * _p_tandem_preset_file = nullptr; TandemParameters _tandem_params; + QString _preset_directory; }; #endif // EDITTANDEMPRESETDIALOG_H diff --git a/src/gui/tandem_run_dialog/tandemrundialog.cpp b/src/gui/tandem_run_dialog/tandemrundialog.cpp index e07639eca2bbd386b1a8eb536bfb97f79fb7ac82..0933313dbeb4adf722459ef895034b743278d7e4 100644 --- a/src/gui/tandem_run_dialog/tandemrundialog.cpp +++ b/src/gui/tandem_run_dialog/tandemrundialog.cpp @@ -87,11 +87,14 @@ void TandemRunDialog::setPresetName(QString preset_name) { qDebug() << "TandemRunDialog::setPresetName end"; } void TandemRunDialog::fillPresetComboBox() { + qDebug() << "TandemRunDialog::fillPresetComboBox begin"; ui->preset_combobox->clear(); QSettings settings; QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); QString default_preset_name = settings.value("tandem/preset_name", "").toString(); + qDebug() << "TandemRunDialog::fillPresetComboBox default_preset_location=" << default_preset_location; + qDebug() << "TandemRunDialog::fillPresetComboBox default_preset_name=" << default_preset_name; QDir preset_dir(default_preset_location); QStringList filters; filters << "*.xml"; @@ -148,24 +151,30 @@ void TandemRunDialog::editPresets() { if (_p_preset_dialog == nullptr) { _p_preset_dialog = new EditTandemPresetDialog(this); } - _p_preset_dialog->setTandemParametersFiles(TandemParametersFile(ui->preset_combobox->itemData(ui->preset_combobox->currentIndex()).value<QString>())); + _p_preset_dialog->setTandemParametersFile(TandemParametersFile(ui->preset_combobox->itemData(ui->preset_combobox->currentIndex()).value<QString>())); _p_preset_dialog->show(); #if QT_VERSION >= 0x050000 // Qt5 code - connect(_p_preset_dialog, &EditTandemPresetDialog::accept, this, &TandemRunDialog::acceptPresetEdit); - connect(_p_preset_dialog, &EditTandemPresetDialog::reject, this, &TandemRunDialog::rejectPresetEdit); + connect(_p_preset_dialog, &EditTandemPresetDialog::accepted, this, &TandemRunDialog::acceptPresetEdit); + connect(_p_preset_dialog, &EditTandemPresetDialog::rejected, this, &TandemRunDialog::rejectPresetEdit); #else // Qt4 code #endif } void TandemRunDialog::rejectPresetEdit() { - + fillPresetComboBox(); } void TandemRunDialog::acceptPresetEdit() { + TandemParametersFile param_file = _p_preset_dialog->getTandemParametersFile(); + QSettings settings; + settings.setValue("path/tandemrun_preset_directory", param_file.getAbsoluteDir().absolutePath()); + settings.setValue("tandem/preset_name", param_file.getMethodName()); + fillPresetComboBox(); + } void TandemRunDialog::selectOutputDirectory() {