/**
 * \file gui/edit_tandem_preset_dialog/edittandempresetdialog.cpp
 * \date 30/9/2017
 * \author Olivier Langella
 * \brief edit tandem preset dialog
 */

/*******************************************************************************
 * Copyright (c) 2017 Olivier Langella <olivier.langella@u-psud.fr>.
 *
 * This file is part of XTPcpp.
 *
 *     XTPcpp is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     XTPcpp is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public License
 *     along with XTPcpp.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 *     Olivier Langella <olivier.langella@u-psud.fr> - initial API and
 *implementation
 ******************************************************************************/

#include "edittandempresetdialog.h"
#include <QDebug>
#include <pappsomspp/pappsoexception.h>
#include <pappsomspp/exception/exceptionnotfound.h>

#include "ui_edit_tandem_preset_dialog.h"
#include <QSettings>
#include <QDir>
#include <QFileDialog>
#include <QMessageBox>


EditTandemPresetDialog::EditTandemPresetDialog(QWidget *parent)
    : QDialog(parent), ui(new Ui::EditTandemPresetView)
{
    qDebug() << "EditTandemPresetDialog::EditTandemPresetDialog begin";
    ui->setupUi(this);
    this->setModal(true);

    ui->splitter->setStretchFactor(0, 1);
#if QT_VERSION >= 0x050000
    // Qt5 code
#else
    // Qt4 code

#endif
    qDebug() << "EditTandemPresetDialog::EditTandemPresetDialog end";
}

EditTandemPresetDialog::~EditTandemPresetDialog()
{
    delete ui;
    if(_p_tandem_preset_file != nullptr)
    {
        delete _p_tandem_preset_file;
    }
}

void
EditTandemPresetDialog::setTandemParametersFile(
    const TandemParametersFile &tandem_preset_file)
{

    try
    {
        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/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));
        }
    }

    catch(pappso::PappsoException &error)
    {
        qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
        QMessageBox::warning(
            this, tr("Error"), tr("Error :\n %1").arg(error.qwhat()));
    }

    fillPresetComboBox();
    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;
    }
    _p_tandem_preset_file =
        new TandemParametersFile(QString("%1/untitled.xml").arg(_preset_directory));
}


void
EditTandemPresetDialog::doSelectDir()
{
    try
    {

        QString directory = QFileDialog::getExistingDirectory(
                                this, tr("Choose preset directory"), _preset_directory);

        QFileInfo my_dir(directory);
        if(!directory.isEmpty() && !directory.isNull())
        {
            if(!my_dir.isWritable())
            {
                throw pappso::PappsoException(
                    QObject::tr(
                        "this directory is not writable, check permissions (%1)")
                    .arg(my_dir.absoluteFilePath()));
            }
            _preset_directory = directory;
            fillPresetComboBox();
        }
    }
    catch(pappso::PappsoException &error)
    {
        QMessageBox::warning(
            this,
            tr("Error :"),
            tr("Error choosing preset directory : %1").arg(error.qwhat()));
    }
}

void
EditTandemPresetDialog::doSave()
{
    readUi();
    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();
}

void
EditTandemPresetDialog::doLoad()
{
    int index = ui->preset_combo_box->currentIndex();
    if(index != -1)
    {   // -1 for not found
        qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
        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;
            try
            {
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                _tandem_params = _p_tandem_preset_file->getTandemParameters();
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                populate();
            }
            catch(pappso::PappsoException &error)
            {
                qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
                QMessageBox::warning(
                    this,
                    tr("Error :"),
                    tr("Error reading %1 X!Tandem parameter file:\n %2")
                    .arg(p_tandem_preset_file->getAbsoluteFilePath())
                    .arg(error.qwhat()));
            }
        }
        else
        {
            QMessageBox::warning(
                this,
                tr("Error :"),
                tr("%1 is not an X!Tandem parameter file")
                .arg(p_tandem_preset_file->getAbsoluteFilePath()));
        }
    }
}
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();
    QString default_preset_name = _tandem_params.getMethodName();

    QDir preset_dir(_preset_directory);
    QStringList filters;
    filters << "*.xml";
    preset_dir.setNameFilters(filters);
    for(QFileInfo file_info : preset_dir.entryInfoList())
    {
        ui->preset_combo_box->addItem(file_info.baseName(),
                                      QVariant(file_info.absoluteFilePath()));
    }
    int index = ui->preset_combo_box->findText(default_preset_name);
    if(index != -1)
    {   // -1 for not found
        ui->preset_combo_box->setCurrentIndex(index);
    }
}
void
EditTandemPresetDialog::doEdit(QString value)
{
    QObject *senderObj    = sender();
    QString senderObjName = senderObj->objectName();
    qDebug() << "EditTandemPresetDialog::doEdit begin " << senderObjName << " "
             << value;
    qDebug() << "EditTandemPresetDialog::doEdit end " << senderObjName;
}
void
EditTandemPresetDialog::doHelp()
{
    QObject *senderObj    = sender();
    QString senderObjName = senderObj->objectName();
    qDebug() << "EditTandemPresetDialog::doHelp begin " << senderObjName;
    QFile html_doc;
    if(senderObjName == "spmmeu_push_button")
    {
        // spmmeu.html
        html_doc.setFileName(":/tandem/resources/html_doc/spmmeu.html");
    }
    if(senderObjName == "smpc_push_button")
    {
        // spmmeu.html
        html_doc.setFileName(":/tandem/resources/html_doc/smpc.html");
    }
    if(senderObjName == "spmmem_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/spmmem.html");
    }
    if(senderObjName == "spmmep_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/spmmep.html");
    }
    if(senderObjName == "spmmie_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/spmmie.html");
    }
    if(senderObjName == "sfmt_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sfmt.html");
    }
    if(senderObjName == "sfmmeu_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sfmmeu.html");
    }
    if(senderObjName == "sfmme_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sfmme.html");
    }
    if(senderObjName == "sunlw_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sunlw.html");
    }
    if(senderObjName == "snlm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/snlm.html");
    }
    if(senderObjName == "snlw_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/snlw.html");
    }
    if(senderObjName == "suns_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/suns.html");
    }
    if(senderObjName == "sdr_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sdr.html");
    }
    if(senderObjName == "stp_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/stp.html");
    }
    if(senderObjName == "smp_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/smp.html");
    }
    if(senderObjName == "smfmz_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/smfmz.html");
    }
    if(senderObjName == "smpmh_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/smpmh.html");
    }
    if(senderObjName == "spsbs_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/spsbs.html");
    }
    if(senderObjName == "suca_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/suca.html");
    }
    if(senderObjName == "st_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/st.html");
    }
    if(senderObjName == "pcs_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pcs.html");
    }
    if(senderObjName == "pcsemi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pcsemi.html");
    }

    if(senderObjName == "pcctmc_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pcctmc.html");
    }
    if(senderObjName == "pcntmc_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pcntmc.html");
    }
    if(senderObjName == "pctrmm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pctrmm.html");
    }
    if(senderObjName == "pntrmm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pntrmm.html");
    }
    if(senderObjName == "pqa_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pqa.html");
    }
    if(senderObjName == "pqp_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pqp.html");
    }
    if(senderObjName == "pstpb_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pstpb.html");
    }
    if(senderObjName == "pmrmf_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/pmrmf.html");
    }
    if((senderObjName == "rmm_push_button") ||
            (senderObjName == "rmm1_push_button") ||
            (senderObjName == "rmm2_push_button"))
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rmm.html");
    }
    if(senderObjName == "rpmm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rpmm.html");
    }
    if(senderObjName == "rpmmotif_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rpmmotif.html");
    }
    if(senderObjName == "smic_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/smic.html");
    }
    if(senderObjName == "smmcs_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/smmcs.html");
    }
    if(senderObjName == "scp_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/scp.html");
    }
    if(senderObjName == "sir_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sir.html");
    }
    if(senderObjName == "syi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/syi.html");
    }
    if(senderObjName == "sbi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sbi.html");
    }
    if(senderObjName == "sci_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sci.html");
    }
    if(senderObjName == "szi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/szi.html");
    }
    if(senderObjName == "sai_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sai.html");
    }
    if(senderObjName == "sxi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/sxi.html");
    }
    if(senderObjName == "refine_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refine.html");
    }
    if(senderObjName == "rmvev_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rmvev.html");
    }
    if(senderObjName == "refpntm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpntm.html");
    }
    if(senderObjName == "refpctm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpctm.html");
    }
    if((senderObjName == "refmm_push_button") ||
            (senderObjName == "refmm1_push_button") ||
            (senderObjName == "refmm2_push_button"))
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refmm.html");
    }
    if((senderObjName == "refpmm_push_button") ||
            (senderObjName == "refpmm1_push_button") ||
            (senderObjName == "refpmm2_push_button"))
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpmm.html");
    }
    if((senderObjName == "refpmmotif_push_button") ||
            (senderObjName == "refpmmotif1_push_button") ||
            (senderObjName == "refpmmotif2_push_button"))
    {
        html_doc.setFileName(":/tandem/resources/html_doc/refpmmotif.html");
    }
    if(senderObjName == "rupmffr_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rupmffr.html");
    }
    if(senderObjName == "rcsemi_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rcsemi.html");
    }
    if(senderObjName == "ruc_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/ruc.html");
    }
    if(senderObjName == "rss_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rss.html");
    }
    if(senderObjName == "rpm_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/rpm.html");
    }
    if((senderObjName == "omvev_push_button") ||
            (senderObjName == "omvpev_push_button"))
    {
        html_doc.setFileName(":/tandem/resources/html_doc/omvev.html");
    }
    if(senderObjName == "oresu_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oresu.html");
    }
    if(senderObjName == "osrb_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/osrb.html");
    }
    if(senderObjName == "oprot_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oprot.html");
    }
    if(senderObjName == "oseq_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oseq.html");
    }
    if(senderObjName == "oosc_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oosc.html");
    }
    if(senderObjName == "ospec_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/ospec.html");
    }
    if(senderObjName == "opara_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/opara.html");
    }
    if(senderObjName == "ohist_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/ohist.html");
    }
    if(senderObjName == "ohcw_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/ohcw.html");
    }
    if(senderObjName == "oph_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oph.html");
    }
    if(senderObjName == "oxp_push_button")
    {
        html_doc.setFileName(":/tandem/resources/html_doc/oxp.html");
    }

    if(html_doc.open(QFile::ReadOnly | QFile::Text))
    {
        QTextStream in(&html_doc);
        ui->doc_plain_text_edit->setHtml(in.readAll());
        qDebug() << "EditTandemPresetDialog::doHelp doc " << in.readAll();
    }
    else
    {
        qDebug() << "EditTandemPresetDialog::doHelp doc not found";
    }
    qDebug() << "EditTandemPresetDialog::doHelp end " << senderObjName;
}

void
EditTandemPresetDialog::readUi()
{
    try
    {
        _tandem_params.setMethodName(ui->method_name_line_edit->text());
        _tandem_params.setParamLabelValue(
            "spectrum, parent monoisotopic mass error units", "Daltons");
        if(ui->spmmeu_ppm_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue(
                "spectrum, parent monoisotopic mass error units", "ppm");
        }

        _tandem_params.setParamLabelValue(
            "spectrum, parent monoisotopic mass error minus",
            ui->parent_ion_lower_window_edit->text());

        _tandem_params.setParamLabelValue(
            "spectrum, parent monoisotopic mass error plus",
            ui->parent_ion_upper_window_edit->text());

        _tandem_params.setParamLabelValue(
            "spectrum, parent monoisotopic mass isotope error", "no");
        if(ui->spmmie_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue(
                "spectrum, parent monoisotopic mass isotope error", "yes");
        }

        _tandem_params.setParamLabelValue("spectrum, maximum parent charge",
                                          ui->smpc_edit->text());

        _tandem_params.setParamLabelValue("spectrum, fragment mass type",
                                          ui->sfmt_combo_box->currentText());

        _tandem_params.setParamLabelValue(
            "spectrum, fragment monoisotopic mass error units", "Daltons");
        if(ui->sfmmeu_ppm_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue(
                "spectrum, fragment monoisotopic mass error units", "ppm");
        }

        _tandem_params.setParamLabelValue(
            "spectrum, fragment monoisotopic mass error", ui->sfmme_edit->text());
        _tandem_params.setParamLabelValue("spectrum, use neutral loss window",
                                          "no");
        if(ui->sunlw_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("spectrum, use neutral loss window",
                                              "yes");
        }

        _tandem_params.setParamLabelValue("spectrum, neutral loss mass",
                                          ui->snlm_edit->text());
        _tandem_params.setParamLabelValue("spectrum, neutral loss window",
                                          ui->snlw_edit->text());
        _tandem_params.setParamLabelValue("spectrum, use noise suppression",
                                          "no");
        if(ui->suns_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("spectrum, use noise suppression",
                                              "yes");
        }


        _tandem_params.setParamLabelValue("spectrum, dynamic range",
                                          ui->sdr_edit->text());
        _tandem_params.setParamLabelValue("spectrum, total peaks",
                                          ui->stp_edit->text());
        _tandem_params.setParamLabelValue("spectrum, minimum peaks",
                                          ui->smp_edit->text());
        _tandem_params.setParamLabelValue("spectrum, minimum fragment mz",
                                          ui->smfmz_edit->text());
        _tandem_params.setParamLabelValue("spectrum, minimum parent m+h",
                                          ui->smpmh_edit->text());
        _tandem_params.setParamLabelValue("spectrum, sequence batch size",
                                          ui->spsbs_edit->text());
        _tandem_params.setParamLabelValue("spectrum, use contrast angle", "no");
        if(ui->suca_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("spectrum, use contrast angle",
                                              "yes");
        }
        _tandem_params.setParamLabelValue("spectrum, threads",
                                          ui->st_edit->text());


        _tandem_params.setParamLabelValue("protein, cleavage site",
                                          ui->pcs_edit->text());
        _tandem_params.setParamLabelValue("protein, cleavage semi", "no");
        if(ui->pcsemi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("protein, cleavage semi", "yes");
        }
        _tandem_params.setParamLabelValue(
            "protein, cleavage C-terminal mass change", ui->pcctmc_edit->text());
        _tandem_params.setParamLabelValue(
            "protein, cleavage N-terminal mass change", ui->pcntmc_edit->text());
        _tandem_params.setParamLabelValue("protein, quick acetyl", "no");
        if(ui->pqa_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("protein, quick acetyl", "yes");
        }
        _tandem_params.setParamLabelValue("protein, quick pyrolidone", "no");
        if(ui->pqp_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("protein, quick pyrolidone", "yes");
        }
        _tandem_params.setParamLabelValue("protein, stP bias", "no");
        if(ui->pstpb_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("protein, stP bias", "yes");
        }
        _tandem_params.setParamLabelValue("protein, modified residue mass file",
                                          ui->pmrmf_edit->text());


        _tandem_params.setParamLabelValue("residue, modification mass",
                                          ui->rmm_edit->text());
        _tandem_params.setParamLabelValue("residue, modification mass 1",
                                          ui->rmm1_edit->text());
        _tandem_params.setParamLabelValue("residue, modification mass 2",
                                          ui->rmm2_edit->text());
        _tandem_params.setParamLabelValue("residue, potential modification mass",
                                          ui->rpmm_edit->text());

        _tandem_params.setParamLabelValue("residue, potential modification motif",
                                          ui->rpmmotif_edit->text());
        _tandem_params.setParamLabelValue(
            "scoring, maximum missed cleavage sites", ui->smmcs_edit->text());
        _tandem_params.setParamLabelValue("scoring, cyclic permutation", "no");
        if(ui->scp_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, cyclic permutation",
                                              "yes");
        }
        _tandem_params.setParamLabelValue("scoring, include reverse", "no");
        if(ui->sir_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, include reverse", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, minimum ion count",
                                          ui->smic_edit->text());

        _tandem_params.setParamLabelValue("scoring, y ions", "no");
        if(ui->syi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, y ions", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, b ions", "no");
        if(ui->sbi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, b ions", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, c ions", "no");
        if(ui->sci_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, c ions", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, z ions", "no");
        if(ui->szi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, z ions", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, a ions", "no");
        if(ui->sai_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, a ions", "yes");
        }
        _tandem_params.setParamLabelValue("scoring, x ions", "no");
        if(ui->sxi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("scoring, x ions", "yes");
        }
        _tandem_params.setParamLabelValue("refine", "no");
        if(ui->refine_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("refine", "yes");
        }
        _tandem_params.setParamLabelValue(
            "refine, maximum valid expectation value", ui->rmvev_edit->text());

        _tandem_params.setParamLabelValue(
            "refine, potential N-terminus modifications", ui->refpntm_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential C-terminus modifications", ui->refpctm_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass",
                                          ui->refmm_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass 1",
                                          ui->refmm1_edit->text());
        _tandem_params.setParamLabelValue("refine, modification mass 2",
                                          ui->refmm2_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass",
                                          ui->refpmm_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass 1",
                                          ui->refpmm1_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification mass 2",
                                          ui->refpmm2_edit->text());
        _tandem_params.setParamLabelValue("refine, potential modification motif",
                                          ui->refpmmotif_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential modification motif 1", ui->refpmmotif1_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, potential modification motif 2", ui->refpmmotif2_edit->text());
        _tandem_params.setParamLabelValue(
            "refine, use potential modifications for full refinement", "no");
        if(ui->rupmffr_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue(
                "refine, use potential modifications for full refinement", "yes");
        }
        _tandem_params.setParamLabelValue("refine, cleavage semi", "no");
        if(ui->rcsemi_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("refine, cleavage semi", "yes");
        }
        _tandem_params.setParamLabelValue("refine, unanticipated cleavage", "no");
        if(ui->ruc_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("refine, unanticipated cleavage",
                                              "yes");
        }
        _tandem_params.setParamLabelValue("refine, spectrum synthesis", "no");
        if(ui->rss_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("refine, spectrum synthesis",
                                              "yes");
        }
        _tandem_params.setParamLabelValue("refine, point mutations", "no");
        if(ui->rpm_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("refine, point mutations", "yes");
        }

        _tandem_params.setParamLabelValue(
            "output, maximum valid expectation value", ui->omvev_edit->text());

        _tandem_params.setParamLabelValue(
            "output, maximum valid protein expectation value",
            ui->omvpev_edit->text());


        _tandem_params.setParamLabelValue("output, results", "valid");
        if(ui->oresu_all_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("output, results", "all");
        }
        if(ui->oresu_stochastic_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("output, results", "stochastic");
        }
        _tandem_params.setParamLabelValue("output, spectra", "no");
        if(ui->ospec_yes_radio_button->isChecked())
        {
            _tandem_params.setParamLabelValue("output, spectra", "yes");
        }
        _tandem_params.setParamLabelValue("output, histogram column width", "30");

        _tandem_params.setParamLabelValue("output, xsl path",
                                          ui->oxp_edit->text());

    }
    catch(pappso::PappsoException &error)
    {
        QMessageBox::warning(this, tr("Error in parameters :"), error.qwhat());
    }
}

void
EditTandemPresetDialog::populate()
{
    qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
    try
    {
        ui->method_name_line_edit->setText(_tandem_params.getMethodName());
        /*
         * <note type="input" label="spectrum, parent monoisotopic mass error
         * units">ppm</note>
         * */
        ui->spmmeu_daltons_radio_button->setChecked(true);
        ui->spmmeu_ppm_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass error units") == "ppm")
        {   // -1 for not found
            ui->spmmeu_daltons_radio_button->setChecked(false);
            ui->spmmeu_ppm_radio_button->setChecked(true);
        }
        //<note type="input" label="spectrum, parent monoisotopic mass error
        // minus">10</note>
        ui->parent_ion_lower_window_edit->setText(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass error minus"));
        //<note type="input" label="spectrum, parent monoisotopic mass error
        // plus">10</note>
        ui->parent_ion_upper_window_edit->setText(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass error plus"));
        //<note type="input" label="spectrum, parent monoisotopic mass isotope
        // error">yes</note>
        ui->spmmie_yes_radio_button->setChecked(true);
        ui->spmmie_no_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, parent monoisotopic mass isotope error") == "no")
        {   // -1 for not found
            ui->spmmie_yes_radio_button->setChecked(false);
            ui->spmmie_no_radio_button->setChecked(true);
        }
        //<note type="input" label="spectrum, maximum parent charge">4</note>
        ui->smpc_edit->setText(
            _tandem_params.getValue("spectrum, maximum parent charge"));

        //<note type="input" label="spectrum, fragment mass
        // type">monoisotopic</note>
        auto index = ui->sfmt_combo_box->findText("monoisotopic");
        if(index != -1)
        {   // -1 for not found
            ui->sfmt_combo_box->setCurrentIndex(index);
        }
        //<note type="input" label="spectrum, fragment monoisotopic mass error
        // units">Daltons</note>
        ui->sfmmeu_daltons_radio_button->setChecked(true);
        ui->sfmmeu_ppm_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "spectrum, fragment monoisotopic mass error units") == "ppm")
        {   // -1 for not found
            ui->sfmmeu_daltons_radio_button->setChecked(false);
            ui->sfmmeu_ppm_radio_button->setChecked(true);
        }

        //<note type="input" label="spectrum, fragment monoisotopic mass
        // error">0.02</note>
        ui->sfmme_edit->setText(
            _tandem_params.getValue("spectrum, fragment monoisotopic mass error"));


        //<note type="input" label="spectrum, use neutral loss window">yes</note>
        ui->sunlw_yes_radio_button->setChecked(true);
        ui->sunlw_no_radio_button->setChecked(false);
        try
        {
            if(_tandem_params.getValue("spectrum, use neutral loss window") ==
                    "no")
            {   // -1 for not found
                ui->sunlw_yes_radio_button->setChecked(false);
                ui->sunlw_no_radio_button->setChecked(true);
            }
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->sunlw_yes_radio_button->setChecked(false);
            ui->sunlw_no_radio_button->setChecked(true);
        }


        try
        {
            //<note type="input" label="spectrum, neutral loss
            // mass">18.01057</note>
            ui->snlm_edit->setText(
                _tandem_params.getValue("spectrum, neutral loss mass"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->snlm_edit->setText("18.01057");
        }

        try
        {
            //<note type="input" label="spectrum, neutral loss window">0.02</note>
            ui->snlw_edit->setText(
                _tandem_params.getValue("spectrum, neutral loss window"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->snlm_edit->setText("0.02");
        }
        //<note type="input" label="spectrum, use noise suppression">yes</note>
        ui->suns_yes_radio_button->setChecked(true);
        ui->suns_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("spectrum, use noise suppression") == "no")
        {   // -1 for not found
            ui->suns_yes_radio_button->setChecked(false);
            ui->suns_no_radio_button->setChecked(true);
        }

        //<note type="input" label="spectrum, dynamic range">100.0</note>
        ui->sdr_edit->setText(_tandem_params.getValue("spectrum, dynamic range"));

        //<note type="input" label="spectrum, total peaks">100</note>
        ui->stp_edit->setText(_tandem_params.getValue("spectrum, total peaks"));

        ui->smp_edit->setText(_tandem_params.getValue("spectrum, minimum peaks"));


        //<note type="input" label="spectrum, minimum fragment mz">150.0</note>
        ui->smfmz_edit->setText(
            _tandem_params.getValue("spectrum, minimum fragment mz"));
        //<note type="input" label="spectrum, minimum parent m+h">500.0</note>
        ui->smpmh_edit->setText(
            _tandem_params.getValue("spectrum, minimum parent m+h"));

        //<note type="input" label="spectrum, sequence batch size">1000</note>
        ui->spsbs_edit->setText(
            _tandem_params.getValue("spectrum, sequence batch size"));
        //<note type="input" label="spectrum, use contrast angle">no</note>
        ui->suca_yes_radio_button->setChecked(true);
        ui->suca_no_radio_button->setChecked(false);

        try
        {
            if(_tandem_params.getValue("spectrum, use contrast angle") == "no")
            {   // -1 for not found
                ui->suca_yes_radio_button->setChecked(false);
                ui->suca_no_radio_button->setChecked(true);
            }
        }
        catch(pappso::ExceptionNotFound &error)
        {

            ui->suca_yes_radio_button->setChecked(false);
            ui->suca_no_radio_button->setChecked(true);
        }

        //<note type="input" label="spectrum, threads">1</note>
        ui->st_edit->setText(_tandem_params.getValue("spectrum, threads"));


        //<note type="input" label="protein, cleavage site">[RK]|{P}</note>
        ui->pcs_edit->setText(_tandem_params.getValue("protein, cleavage site"));
        //<note type="input" label="protein, cleavage semi">no</note>
        ui->pcsemi_yes_radio_button->setChecked(true);
        ui->pcsemi_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("protein, cleavage semi") == "no")
        {   // -1 for not found
            ui->pcsemi_yes_radio_button->setChecked(false);
            ui->pcsemi_no_radio_button->setChecked(true);
        }


        try
        {
            //<note type="input" label="protein, cleavage C-terminal mass
            // change">+17.00305</note>
            ui->pcctmc_edit->setText(_tandem_params.getValue(
                                         "protein, cleavage C-terminal mass change"));
        }
        catch(pappso::ExceptionNotFound &error)
        {

            ui->pcctmc_edit->setText("+17.00305");
        }

        try
        {
            //<note type="input" label="protein, cleavage N-terminal mass
            // change">+1.00794</note>
            ui->pcntmc_edit->setText(_tandem_params.getValue(
                                         "protein, cleavage N-terminal mass change"));
        }
        catch(pappso::ExceptionNotFound &error)
        {

            ui->pcntmc_edit->setText("+1.00794");
        }

        //<note type="input" label="protein, C-terminal residue modification
        // mass">0.0</note>
        ui->pctrmm_edit->setText(_tandem_params.getValue(
                                     "protein, C-terminal residue modification mass"));
        //<note type="input" label="protein, N-terminal residue modification
        // mass">0.0</note>
        ui->pntrmm_edit->setText(_tandem_params.getValue(
                                     "protein, N-terminal residue modification mass"));

        //<note type="input" label="protein, quick acetyl">yes</note>
        ui->pqa_yes_radio_button->setChecked(true);
        ui->pqa_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("protein, quick acetyl") == "no")
        {   // -1 for not found
            ui->pqa_yes_radio_button->setChecked(false);
            ui->pqa_no_radio_button->setChecked(true);
        }

        //<note type="input" label="protein, quick pyrolidone">yes</note>
        ui->pqp_yes_radio_button->setChecked(true);
        ui->pqp_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("protein, quick pyrolidone") == "no")
        {   // -1 for not found
            ui->pqp_yes_radio_button->setChecked(false);
            ui->pqp_no_radio_button->setChecked(true);
        }


        //<note type="input" label="protein, stP bias">yes</note>
        ui->pstpb_yes_radio_button->setChecked(true);
        ui->pstpb_no_radio_button->setChecked(false);
        try
        {
            if(_tandem_params.getValue("protein, stP bias") == "no")
            {   // -1 for not found
                ui->pstpb_yes_radio_button->setChecked(false);
                ui->pstpb_no_radio_button->setChecked(true);
            }
        }
        catch(pappso::ExceptionNotFound &error)
        {
        }

        //<note type="input" label="protein, modified residue mass file"></note>
        ui->pmrmf_edit->setText(
            _tandem_params.getValue("protein, modified residue mass file"));

        //<note type="input" label="residue, modification mass">57.02146@C</note>
        ui->rmm_edit->setText(
            _tandem_params.getValue("residue, modification mass"));

        try
        {
            //<note type="input" label="residue, modification mass 1"></note>
            ui->rmm1_edit->setText(
                _tandem_params.getValue("residue, modification mass 1"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->rmm1_edit->setText("");
        }

        try
        {
            //<note type="input" label="residue, modification mass 2"></note>
            ui->rmm2_edit->setText(
                _tandem_params.getValue("residue, modification mass 2"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->rmm2_edit->setText("");
        }

        //<note type="input" label="residue, potential modification
        // mass">15.99491@M</note>
        ui->rpmm_edit->setText(
            _tandem_params.getValue("residue, potential modification mass"));
        //<note type="input" label="residue, potential modification motif"></note>
        ui->rpmmotif_edit->setText(
            _tandem_params.getValue("residue, potential modification motif"));
        //<note type="input" label="scoring, minimum ion count">4</note>
        ui->smic_edit->setText(
            _tandem_params.getValue("scoring, minimum ion count"));
        //<note type="input" label="scoring, maximum missed cleavage
        // sites">1</note>
        ui->smmcs_edit->setText(
            _tandem_params.getValue("scoring, maximum missed cleavage sites"));
        //<note type="input" label="scoring, cyclic permutation">yes</note>
        ui->scp_yes_radio_button->setChecked(true);
        ui->scp_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, cyclic permutation") == "no")
        {   // -1 for not found
            ui->scp_yes_radio_button->setChecked(false);
            ui->scp_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, include reverse">yes</note>
        ui->sir_yes_radio_button->setChecked(true);
        ui->sir_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, include reverse") == "no")
        {   // -1 for not found
            ui->sir_yes_radio_button->setChecked(false);
            ui->sir_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, y ions">yes</note>
        ui->syi_yes_radio_button->setChecked(true);
        ui->syi_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, y ions") == "no")
        {   // -1 for not found
            ui->syi_yes_radio_button->setChecked(false);
            ui->syi_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, b ions">yes</note>
        ui->sbi_yes_radio_button->setChecked(true);
        ui->sbi_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, b ions") == "no")
        {   // -1 for not found
            ui->sbi_yes_radio_button->setChecked(false);
            ui->sbi_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, c ions">no</note>
        ui->sci_yes_radio_button->setChecked(true);
        ui->sci_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, c ions") == "no")
        {   // -1 for not found
            ui->sci_yes_radio_button->setChecked(false);
            ui->sci_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, z ions">no</note>
        ui->szi_yes_radio_button->setChecked(true);
        ui->szi_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, z ions") == "no")
        {   // -1 for not found
            ui->szi_yes_radio_button->setChecked(false);
            ui->szi_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, a ions">no</note>
        ui->sai_yes_radio_button->setChecked(true);
        ui->sai_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, a ions") == "no")
        {   // -1 for not found
            ui->sai_yes_radio_button->setChecked(false);
            ui->sai_no_radio_button->setChecked(true);
        }
        //<note type="input" label="scoring, x ions">no</note>
        ui->sxi_yes_radio_button->setChecked(true);
        ui->sxi_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("scoring, x ions") == "no")
        {   // -1 for not found
            ui->sxi_yes_radio_button->setChecked(false);
            ui->sxi_no_radio_button->setChecked(true);
        }


        //<note type="input" label="refine">yes</note>
        ui->refine_yes_radio_button->setChecked(true);
        ui->refine_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("refine") == "no")
        {   // -1 for not found
            ui->refine_yes_radio_button->setChecked(false);
            ui->refine_no_radio_button->setChecked(true);
        }
        //<note type="input" label="refine, maximum valid expectation
        // value">0.01</note>
        ui->rmvev_edit->setText(
            _tandem_params.getValue("refine, maximum valid expectation value"));

        //<note type="input" label="refine, potential N-terminus
        // modifications">+42.01056@[</note>
        ui->refpntm_edit->setText(
            _tandem_params.getValue("refine, potential N-terminus modifications"));
        //<note type="input" label="refine, potential C-terminus
        // modifications"></note>
        ui->refpctm_edit->setText(
            _tandem_params.getValue("refine, potential C-terminus modifications"));
        //<note type="input" label="refine, modification mass">57.02146@C</note>
        ui->refmm_edit->setText(
            _tandem_params.getValue("refine, modification mass"));
        try
        {
            //<note type="input" label="refine, modification mass 1"></note>
            ui->refmm1_edit->setText(
                _tandem_params.getValue("refine, modification mass 1"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refmm1_edit->setText("");
        }

        try
        {
            //<note type="input" label="refine, modification mass 2"></note>
            ui->refmm2_edit->setText(
                _tandem_params.getValue("refine, modification mass 2"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refmm2_edit->setText("");
        }
        //<note type="input" label="refine, potential modification
        // mass">15.99491@M</note>
        ui->refpmm_edit->setText(
            _tandem_params.getValue("refine, potential modification mass"));
        try
        {
            //<note type="input" label="refine, potential modification mass
            // 1"></note>
            ui->refpmm1_edit->setText(
                _tandem_params.getValue("refine, potential modification mass 1"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refpmm1_edit->setText("");
        }
        try
        {
            //<note type="input" label="refine, potential modification mass
            // 2"></note>
            ui->refpmm2_edit->setText(
                _tandem_params.getValue("refine, potential modification mass 2"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refpmm2_edit->setText("");
        }
        //<note type="input" label="refine, potential modification motif"></note>
        ui->refpmmotif_edit->setText(
            _tandem_params.getValue("refine, potential modification motif"));
        try
        {
            //<note type="input" label="refine, potential modification motif
            // 1"></note>
            ui->refpmmotif1_edit->setText(
                _tandem_params.getValue("refine, potential modification motif 1"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refpmmotif1_edit->setText("");
        }
        try
        {
            //<note type="input" label="refine, potential modification motif
            // 2"></note>
            ui->refpmmotif2_edit->setText(
                _tandem_params.getValue("refine, potential modification motif 2"));
        }
        catch(pappso::ExceptionNotFound &error)
        {
            ui->refpmmotif2_edit->setText("");
        }
        //<note type="input" label="refine, use potential modifications for full
        // refinement">yes</note>
        ui->rupmffr_yes_radio_button->setChecked(true);
        ui->rupmffr_no_radio_button->setChecked(false);
        if(_tandem_params.getValue(
                    "refine, use potential modifications for full refinement") == "no")
        {   // -1 for not found
            ui->rupmffr_yes_radio_button->setChecked(false);
            ui->rupmffr_no_radio_button->setChecked(true);
        }
        //<note type="input" label="refine, cleavage semi">no</note>
        ui->rcsemi_yes_radio_button->setChecked(true);
        ui->rcsemi_no_radio_button->setChecked(false);
        try
        {
            if(_tandem_params.getValue("refine, cleavage semi") == "no")
            {   // -1 for not found
                ui->rcsemi_yes_radio_button->setChecked(false);
                ui->rcsemi_no_radio_button->setChecked(true);
            }
        }
        catch(pappso::ExceptionNotFound &error)
        {
        }
        //<note type="input" label="refine, unanticipated cleavage">no</note>
        ui->ruc_yes_radio_button->setChecked(true);
        ui->ruc_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("refine, unanticipated cleavage") == "no")
        {   // -1 for not found
            ui->ruc_yes_radio_button->setChecked(false);
            ui->ruc_no_radio_button->setChecked(true);
        }
        //<note type="input" label="refine, spectrum synthesis">yes</note>
        ui->rss_yes_radio_button->setChecked(true);
        ui->rss_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("refine, spectrum synthesis") == "no")
        {   // -1 for not found
            ui->rss_yes_radio_button->setChecked(false);
            ui->rss_no_radio_button->setChecked(true);
        }
        //<note type="input" label="refine, point mutations">no</note>
        ui->rpm_yes_radio_button->setChecked(true);
        ui->rpm_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("refine, point mutations") == "no")
        {   // -1 for not found
            ui->rpm_yes_radio_button->setChecked(false);
            ui->rpm_no_radio_button->setChecked(true);
        }


        try
        {
            //<note type="input" label="output, maximum valid expectation
            // value">0.05</note>
            ui->omvev_edit->setText(
                _tandem_params.getValue("output, maximum valid expectation value"));
        }
        catch(pappso::ExceptionNotFound &error)
        {

            ui->omvev_edit->setText("0.01");
        }

        try
        {
            //<note type="input" label="output, maximum valid protein expectation
            // value">0.05</note>
            ui->omvpev_edit->setText(_tandem_params.getValue(
                                         "output, maximum valid protein expectation value"));
        }
        catch(pappso::ExceptionNotFound &error)
        {

            ui->omvpev_edit->setText("0.01");
        }
        //<note type="input" label="output, results">valid</note>
        ui->oresu_all_radio_button->setChecked(false);
        ui->oresu_valid_radio_button->setChecked(true);
        ui->oresu_stochastic_radio_button->setChecked(false);
        if(_tandem_params.getValue("output, results") == "all")
        {   // -1 for not found
            ui->oresu_all_radio_button->setChecked(true);
            ui->oresu_valid_radio_button->setChecked(false);
            ui->oresu_stochastic_radio_button->setChecked(false);
        }
        if(_tandem_params.getValue("output, results") == "stochastic")
        {   // -1 for not found
            ui->oresu_all_radio_button->setChecked(false);
            ui->oresu_valid_radio_button->setChecked(false);
            ui->oresu_stochastic_radio_button->setChecked(true);
        }
        //<note type="input" label="output, sort results by">spectrum</note>
        //<note type="input" label="output, proteins">yes</note>
        //<note type="input" label="output, sequences">yes</note>
        //<note type="input" label="output, one sequence copy">yes</note>
        //<note type="input" label="output, spectra">yes</note>
        ui->ospec_yes_radio_button->setChecked(true);
        ui->ospec_no_radio_button->setChecked(false);
        if(_tandem_params.getValue("output, spectra") == "no")
        {   // -1 for not found
            ui->ospec_yes_radio_button->setChecked(false);
            ui->ospec_no_radio_button->setChecked(true);
        }
        //<note type="input" label="output, parameters">yes</note>
        //<note type="input" label="output, performance">yes</note>
        //<note type="input" label="output, histograms">yes</note>
        //<note type="input" label="output, histogram column width">30</note>
        //<note type="input" label="output, path hashing">no</note>
        //<note type="input" label="output, xsl path">tandem-style.xsl</note>
        ui->oxp_edit->setText(_tandem_params.getValue("output, xsl path"));

    }
    catch(pappso::ExceptionNotFound &error)
    {
        QMessageBox::warning(this, tr("Parameter not found :"), error.qwhat());
    }
    catch(pappso::PappsoException &error)
    {
        QMessageBox::warning(this, tr("Error in parameters :"), error.qwhat());
    }
    qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__;
}

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
        {
            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;
    }
}