diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp index 481bafb64b44b66c59ee2a6dc93c86ac412cf9f5..bf0711d9ee148706248b837b91ef52d906a0df6f 100644 --- a/src/files/tandemparametersfile.cpp +++ b/src/files/tandemparametersfile.cpp @@ -67,6 +67,10 @@ bool TandemParametersFile::exists() const { return _param_source.exists(); } +void TandemParametersFile::setDirectory(const QDir & directory) { + QFileInfo new_dir(QString("%1/%2").arg(directory.absolutePath()).arg(_param_source.fileName())); + _param_source = new_dir; +} void TandemParametersFile::setTandemParameters(const TandemParameters & parameters) { @@ -110,20 +114,21 @@ TandemParameters TandemParametersFile::getTandemParameters() const { QXmlInputSource xmlInputSource(&qfile); if (simplereader.parse(xmlInputSource)) { - + qDebug() << "TandemParametersFile::getTandemParameters parse ok"; qfile.close(); + delete parser; } else { + qDebug() << "TandemParametersFile::getTandemParameters parse error"; qfile.close(); - delete parser; throw pappso::PappsoException(QObject::tr("Error reading %1 X!Tandem preset file :\n %2").arg(_param_source.absoluteFilePath()).arg(parser->errorString())); + delete parser; } - delete parser; return parameters; } -bool TandemParametersFile::isTandemPresetFile() { +bool TandemParametersFile::isTandemPresetFile() const { if (this->exists()) { diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h index fda4836871353960710569449b5a7686b7fc224f..73dcd62116dd079941b47bd123f6800500759d66 100644 --- a/src/files/tandemparametersfile.h +++ b/src/files/tandemparametersfile.h @@ -61,6 +61,10 @@ public: */ void setTandemParameters(const TandemParameters & parameters); + /** @brief set param file directory + */ + void setDirectory(const QDir & directory); + private : void writeXmlParametersFile (QXmlStreamWriter * p_out, const TandemParameters & parameters) const; diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp index 88f67be1eddbf978c411ffd70873e96e7571ffd5..cc7b41badd0cd3c25e50defdcea226eed7b75cc3 100644 --- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp +++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp @@ -70,13 +70,15 @@ void EditTandemPresetDialog::setTandemParametersFile(const TandemParametersFile if (tandem_preset_file.exists()) { _p_tandem_preset_file = new TandemParametersFile( tandem_preset_file); _preset_directory = _p_tandem_preset_file->getAbsoluteDir().absolutePath(); + _tandem_params = _p_tandem_preset_file->getTandemParameters(); } else { - _p_tandem_preset_file = new TandemParametersFile(":/tandem/ressources/model/QExactive_analysis_FDR_nosemi.xml"); - + _p_tandem_preset_file = new TandemParametersFile(":/tandem/resources/model/QExactive_analysis_FDR_nosemi.xml"); + _tandem_params = _p_tandem_preset_file->getTandemParameters(); QSettings settings; _preset_directory = settings.value("path/tandemrun_preset_directory", "").toString(); + _p_tandem_preset_file->setDirectory(QDir(_preset_directory)); } - _tandem_params = _p_tandem_preset_file->getTandemParameters(); + fillPresetComboBox(); populate(); @@ -118,6 +120,7 @@ void EditTandemPresetDialog::doSave() { if (_p_tandem_preset_file == nullptr) { throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); } + _p_tandem_preset_file->setDirectory(QDir(_preset_directory)); _p_tandem_preset_file->setTandemParameters(_tandem_params); fillPresetComboBox(); populate(); @@ -126,17 +129,23 @@ void EditTandemPresetDialog::doSave() { void EditTandemPresetDialog::doLoad() { int index = ui->preset_combo_box->currentIndex(); if ( index != -1 ) { // -1 for not found - if (_p_tandem_preset_file == nullptr) { - throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); + TandemParametersFile * p_tandem_preset_file = new TandemParametersFile( + ui->preset_combo_box->itemData(index).value<QString>()); + if (p_tandem_preset_file->isTandemPresetFile()) { + if (_p_tandem_preset_file == nullptr) { + throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); + } + else { + delete _p_tandem_preset_file; + } + + _p_tandem_preset_file = p_tandem_preset_file; + _tandem_params = _p_tandem_preset_file->getTandemParameters(); + populate(); } else { - delete _p_tandem_preset_file; + QMessageBox::warning(this,tr("Error :"), tr("%1 is not an X!Tandem parameter file").arg(p_tandem_preset_file->getAbsoluteFilePath())); } - - _p_tandem_preset_file = new TandemParametersFile( - ui->preset_combo_box->itemData(index).value<QString>()); - _tandem_params = _p_tandem_preset_file->getTandemParameters(); - populate(); } } const TandemParametersFile & EditTandemPresetDialog::getTandemParametersFile() const { @@ -972,6 +981,11 @@ void EditTandemPresetDialog::done(int r) if(QDialog::Accepted == r) // ok was pressed { readUi(); + if (!_p_tandem_preset_file->exists()) { + QMessageBox::warning(this, + tr("Save parameters"), tr("Parameters file does not exists.\nPlease save it before pressing ok or cancel edition")); + return; + } TandemParameters ref_params = _p_tandem_preset_file->getTandemParameters(); if(ref_params.equals(_tandem_params)) // validate the data somehow { diff --git a/src/gui/tandem_run_dialog/tandemrundialog.cpp b/src/gui/tandem_run_dialog/tandemrundialog.cpp index 7be7e716d14164a7fd0def04b09b6736a9451043..3b4bb303e97448ae1d7c93918f2ef5e97cc20dd0 100644 --- a/src/gui/tandem_run_dialog/tandemrundialog.cpp +++ b/src/gui/tandem_run_dialog/tandemrundialog.cpp @@ -104,7 +104,10 @@ void TandemRunDialog::fillPresetComboBox() { filters << "*.xml"; preset_dir.setNameFilters(filters); for (QFileInfo file_info: preset_dir.entryInfoList() ) { - ui->preset_combobox->addItem(file_info.baseName(), QVariant(file_info.absoluteFilePath())); + TandemParametersFile param_file(file_info.absoluteFilePath()); + if (param_file.isTandemPresetFile()) { + ui->preset_combobox->addItem(file_info.baseName(), QVariant(file_info.absoluteFilePath())); + } } int index = ui->preset_combobox->findText(default_preset_name); if ( index != -1 ) { // -1 for not found diff --git a/src/input/xtandemparamsaxhandler.cpp b/src/input/xtandemparamsaxhandler.cpp index f68fbabce17faca23748727c04b91ac806336f58..06e44a24258b5f4e20dc39f545f6214bde652c53 100644 --- a/src/input/xtandemparamsaxhandler.cpp +++ b/src/input/xtandemparamsaxhandler.cpp @@ -29,6 +29,7 @@ #include "xtandemparamsaxhandler.h" #include <pappsomspp/pappsoexception.h> +#include <QDebug> XtandemParamSaxHandler::XtandemParamSaxHandler(TandemParameters * p_tandem_parameters) { @@ -51,6 +52,13 @@ bool XtandemParamSaxHandler::startElement(const QString & namespaceURI, const QS bool is_ok = true; try { + //<bioml label="example api document"> + if (_tag_stack.size() == 1) { + if (qName != "bioml") { + _errorStr = QObject::tr("ERROR in XtandemParamSaxHandler::startElement root tag %1 is not <bioml>").arg(qName); + return false; + } + } //startElement_group if (qName == "note") { @@ -102,7 +110,7 @@ bool XtandemParamSaxHandler::error(const QXmlParseException &exception) { _errorStr = QObject::tr("Parse error at line %1, column %2 :\n" "%3").arg(exception.lineNumber()).arg(exception.columnNumber()).arg( exception.message()); - + qDebug() << "XtandemParamSaxHandler::error " << _errorStr; return false; } @@ -111,6 +119,7 @@ bool XtandemParamSaxHandler::fatalError(const QXmlParseException &exception) { _errorStr = QObject::tr("Parse error at line %1, column %2 :\n" "%3").arg(exception.lineNumber()).arg(exception.columnNumber()).arg( exception.message()); + qDebug() << "XtandemParamSaxHandler::fatalError " << _errorStr; return false; }