diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp index b7feb48b0eb0993cc38ed56410f9fa3fda60a569..e8dc8da7b2bc816392af1e6fac490e2ee725955b 100644 --- a/src/files/tandemparametersfile.cpp +++ b/src/files/tandemparametersfile.cpp @@ -30,6 +30,7 @@ #include "tandemparametersfile.h" #include <QXmlSimpleReader> #include <QXmlStreamWriter> +#include <QDir> #include <pappsomspp/pappsoexception.h> #include "../input/xtandemparamsaxhandler.h" @@ -63,19 +64,28 @@ bool TandemParametersFile::exists() const return _param_source.exists(); } -void TandemParametersFile::setTandemParameters(const TandemParameters & parameters) const { +void TandemParametersFile::setTandemParameters(const TandemParameters & parameters) { QFile xml_file(_param_source.absoluteFilePath()); + QFile new_file(QString("%1/%2.xml").arg(_param_source.absolutePath()).arg(parameters.getMethodName())); + if (_param_source.absoluteFilePath() != QFileInfo( new_file).absoluteFilePath()) { + if (xml_file.exists()) { + //move if renamed + xml_file.remove(); + } + } QXmlStreamWriter * p_out; - if (xml_file.open(QIODevice::WriteOnly)) { + if (new_file.open(QIODevice::WriteOnly)) { + + _param_source.setFile(new_file); p_out = new QXmlStreamWriter(); - p_out->setDevice(&xml_file); + p_out->setDevice(&new_file); writeXmlParametersFile(p_out, parameters); - xml_file.close(); + new_file.close(); delete p_out; } else { - throw pappso::PappsoException(QObject::tr("error : cannot open the XML X!Tandem parameter file : %1\n").arg(xml_file.fileName())); + throw pappso::PappsoException(QObject::tr("error : cannot open the XML X!Tandem parameter file : %1\n").arg(new_file.fileName())); } } diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h index e2eae4937687e35a767ac8c456e76ccb5c826848..a1adeb1461c0c95f9e334ea8684ea175228251f8 100644 --- a/src/files/tandemparametersfile.h +++ b/src/files/tandemparametersfile.h @@ -54,13 +54,13 @@ public: /** @brief write tandem parameters to XML file */ - void setTandemParameters(const TandemParameters & parameters) const; + void setTandemParameters(const TandemParameters & parameters); private : void writeXmlParametersFile (QXmlStreamWriter * p_out, const TandemParameters & parameters) const; private : - const QFileInfo _param_source; + QFileInfo _param_source; }; diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp index 8e58775df6e30f2d98ed6072a0fa8e731a42f878..060cf5001622f01286319b61038ff88bad8f4636 100644 --- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp +++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp @@ -29,8 +29,10 @@ #include "edittandempresetdialog.h" #include <QDebug> +#include <pappsomspp/pappsoexception.h> #include "ui_edit_tandem_preset_dialog.h" +#include <QSettings> EditTandemPresetDialog::EditTandemPresetDialog(QWidget * parent): @@ -71,6 +73,58 @@ void EditTandemPresetDialog::setTandemParametersFiles(const TandemParametersFile populate(); } +void EditTandemPresetDialog::doCopy() { + ui->method_name_line_edit->setText("untitled"); + readUi(); + if (_p_tandem_preset_file == nullptr) { + + throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); + } + 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)); +} + +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); +} + +void EditTandemPresetDialog::doLoad() { + int index = ui->preset_combobox->currentIndex(); + if ( index != -1 ) { // -1 for not found + ui->preset_combobox->itemData(index).value<QString>(); + + QSettings settings; + QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); +if (_p_tandem_preset_file == nullptr) { + + throw pappso::PappsoException(QObject::tr("_p_tandem_preset_file == nullptr")); + } + else { + delete _p_tandem_preset_file; + } + QSettings settings; + QString default_preset_location = settings.value("path/tandemrun_preset_directory", "").toString(); + u + +_p_tandem_preset_file = new TandemParametersFile(QString("%1/%2.xml").arg(default_preset_location).arg(ui->preset_combobox)); + } +} + +void EditTandemPresetDialog::doEdit() { + QObject *senderObj = sender(); + QString senderObjName = senderObj->objectName(); + qDebug() << "EditTandemPresetDialog::doEdit begin " << senderObjName; + qDebug() << "EditTandemPresetDialog::doEdit end " << senderObjName; +} void EditTandemPresetDialog::doHelp() { QObject *senderObj = sender(); QString senderObjName = senderObj->objectName(); @@ -94,7 +148,7 @@ void EditTandemPresetDialog::doHelp() { } void EditTandemPresetDialog::readUi() { - + _tandem_params.setMethodName(ui->method_name_line_edit->text()); _tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass error units", ui->parent_ion_window_unit_combo_box->itemData(ui->parent_ion_window_unit_combo_box->currentIndex()).toString()); _tandem_params.setParamLabelValue("spectrum, parent monoisotopic mass error minus", ui->parent_ion_lower_window_edit->text()); diff --git a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h index e0908cf619e986b8eb8d3c81db10bd11758cba6d..e0190d942dc1aeb6521b0a39a6bd5eb2248ed97e 100644 --- a/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h +++ b/src/gui/edit_tandem_preset_dialog/edittandempresetdialog.h @@ -49,6 +49,10 @@ public: public slots: void doHelp (); + void doSave(); + void doCopy(); + void doEdit(); + void doLoad(); private: void populate(); void readUi();