From 8f67e6dee5e0b2bacde7c8af3579094d89921382 Mon Sep 17 00:00:00 2001 From: Olivier Langella <Olivier.Langella@moulon.inra.fr> Date: Tue, 4 Apr 2017 22:27:03 +0200 Subject: [PATCH] load result dialog is OK --- src/CMakeLists.txt | 4 +- .../load_results_dialog.ui | 32 ++++++++++-- .../load_results_dialog/loadresultsdialog.cpp | 52 +++++++++++++------ .../load_results_dialog/loadresultsdialog.h | 8 ++- src/gui/mainwindow.cpp | 22 ++++++-- src/gui/mainwindow.h | 1 + .../automaticfilterwidget.cpp | 6 +++ .../automaticfilterwidget.h | 1 + 8 files changed, 101 insertions(+), 25 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9e1f53ba..88bd6083 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,8 +29,8 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5 #sudo apt-get install libpappsomspp-dev #FIND_PACKAGE( Pappsomspp REQUIRED ) -# SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") - SET (PAPPSOMSPP_DIR "/home/langella/developpement/git/pappsomspp") + SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") +# SET (PAPPSOMSPP_DIR "/home/langella/developpement/git/pappsomspp") SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src") SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so") diff --git a/src/gui/load_results_dialog/load_results_dialog.ui b/src/gui/load_results_dialog/load_results_dialog.ui index f2ee0a20..1a4abe2a 100644 --- a/src/gui/load_results_dialog/load_results_dialog.ui +++ b/src/gui/load_results_dialog/load_results_dialog.ui @@ -6,14 +6,40 @@ <rect> <x>0</x> <y>0</y> - <width>533</width> - <height>300</height> + <width>573</width> + <height>559</height> </rect> </property> <property name="windowTitle"> <string>Form</string> </property> <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>mode</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QRadioButton" name="combine_radio"> + <property name="text"> + <string>com&bine</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="individual_radio"> + <property name="text"> + <string>indi&vidual</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> <item> <widget class="QGroupBox" name="choose_files_groupbox"> <property name="title"> @@ -21,7 +47,7 @@ </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> - <widget class="QListView" name="listView"/> + <widget class="QListView" name="file_list_view"/> </item> <item row="1" column="0"> <widget class="QPushButton" name="add_files_button"> diff --git a/src/gui/load_results_dialog/loadresultsdialog.cpp b/src/gui/load_results_dialog/loadresultsdialog.cpp index 0a6971eb..765d5ce8 100644 --- a/src/gui/load_results_dialog/loadresultsdialog.cpp +++ b/src/gui/load_results_dialog/loadresultsdialog.cpp @@ -28,7 +28,6 @@ #include <QFileDialog> #include <QMessageBox> #include <pappsomspp/pappsoexception.h> -#include "../project_view/automatic_filter_widget/automaticfilterwidget.h" LoadResultsDialog::LoadResultsDialog(QWidget * parent): @@ -38,11 +37,24 @@ LoadResultsDialog::LoadResultsDialog(QWidget * parent): qDebug() << "LoadResultsDialog::LoadResultsDialog begin"; ui->setupUi(this); this->setModal(true); + _p_file_list = new QStringListModel(); + + + _p_automatic_filter_widget = new AutomaticFilterWidget(this); + _p_automatic_filter_widget->hideButton(); + + QSettings settings; + AutomaticFilterParameters param = _p_automatic_filter_widget->getAutomaticFilterParameters(); + param.setFilterCrossSamplePeptideNumber(settings.value("automatic_filter/cross_sample", "true").toBool()); + param.setFilterMinimumPeptidePerMatch((unsigned int) settings.value("automatic_filter/peptide_number", "2").toInt()); + param.setFilterPeptideEvalue(settings.value("automatic_filter/peptide_evalue", "0.05").toDouble()); + param.setFilterProteinEvalue(settings.value("automatic_filter/protein_evalue", "0.01").toDouble()); + _p_automatic_filter_widget->setAutomaticFilterParameters(param); + + - AutomaticFilterWidget* p_automatic_filter_widget = new AutomaticFilterWidget(this); - p_automatic_filter_widget->hideButton(); - ui->filter_parameter_layout->addWidget(p_automatic_filter_widget); + ui->filter_parameter_layout->addWidget(_p_automatic_filter_widget); #if QT_VERSION >= 0x050000 // Qt5 code /* @@ -63,26 +75,36 @@ LoadResultsDialog::~LoadResultsDialog() delete ui; } +bool LoadResultsDialog::isIndividual() const { + if (ui->individual_radio->isChecked()) { + return true; + } +} +QStringList LoadResultsDialog::getFileList() const { + return _p_file_list->stringList(); +} + +AutomaticFilterParameters LoadResultsDialog::getAutomaticFilterParameters() const { + return _p_automatic_filter_widget->getAutomaticFilterParameters(); +} - void LoadResultsDialog::chooseFiles() { - try { + try { QSettings settings; QString default_location = settings.value("path/identificationfiles", "").toString(); - QString filename = QFileDialog::getOpenFileName(this, - tr("Open XPIP File"), default_location, - tr("X!Tandem files (*.xml);;all files (*)")); + QStringList filenames = QFileDialog::getOpenFileNames(this,tr("identification files"),default_location, + tr("X!Tandem files (*.xml);;all files (*)") ); - if (filename.isEmpty()) { - return; + if (filenames.size() > 0) { + settings.setValue("path/identificationfiles", QFileInfo(filenames[0]).absolutePath()); } - - settings.setValue("path/identificationfiles", QFileInfo(filename).absolutePath()); + _p_file_list->setStringList(filenames); + ui->file_list_view->setModel(_p_file_list); } catch (pappso::PappsoException & error) { - //QMessageBox::warning(this, - // tr("Error choosing identification result files : %1").arg(error.qwhat()), error); + //QMessageBox::warning(this, + // tr("Error choosing identification result files : %1").arg(error.qwhat()), error); } } diff --git a/src/gui/load_results_dialog/loadresultsdialog.h b/src/gui/load_results_dialog/loadresultsdialog.h index bec67ade..5af69f86 100644 --- a/src/gui/load_results_dialog/loadresultsdialog.h +++ b/src/gui/load_results_dialog/loadresultsdialog.h @@ -24,8 +24,9 @@ #ifndef LOADRESULTSDIALOG_H #define LOADRESULTSDIALOG_H -#include "../../../core/automaticfilterparameters.h" #include <QDialog> +#include <QStringListModel> +#include "../project_view/automatic_filter_widget/automaticfilterwidget.h" namespace Ui { @@ -42,6 +43,9 @@ public: explicit LoadResultsDialog(QWidget * parent); ~LoadResultsDialog(); + AutomaticFilterParameters getAutomaticFilterParameters() const; + QStringList getFileList() const; + bool isIndividual() const; public slots: void chooseFiles(); @@ -50,6 +54,8 @@ signals: private: Ui::LoadResultsDialog *ui; + QStringListModel * _p_file_list; + AutomaticFilterWidget* _p_automatic_filter_widget; }; diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index d71adf10..2f1f0869 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -64,9 +64,11 @@ MainWindow::MainWindow(QWidget *parent): */ workerThread.start(); + _p_load_results_dialog = new LoadResultsDialog(this); + _project_window = new ProjectWindow(this); - + ui->centralwidget->layout()->addWidget(_project_window); _project_window->show(); //_protein_list_window = new ProteinListWindow(this); @@ -87,6 +89,7 @@ MainWindow::MainWindow(QWidget *parent): connect(this, SIGNAL(operateXpipFile(QString)), worker,SLOT(doXpipFileLoad(QString))); connect(worker, SIGNAL(projectReady(ProjectSp)), this,SLOT(doProjectReady(ProjectSp))); + connect(_p_load_results_dialog, SIGNAL(accepted()), this,SLOT(doAcceptedLoadResultDialog())); /* connect(&workerThread, SIGNAL(finished()), worker, SLOT(deleteLater())); connect(this, SIGNAL(operateMsDataFile(QString)), worker,SLOT(doMsDataFileLoad(QString))); @@ -120,6 +123,20 @@ void MainWindow::viewError(QString error) { } +void MainWindow::doAcceptedLoadResultDialog() { + qDebug() << "MainWindow::doAcceptedLoadResultDialog begin"; + AutomaticFilterParameters param = _p_load_results_dialog->getAutomaticFilterParameters(); + QSettings settings; + settings.setValue("automatic_filter/cross_sample", QString("%1").arg(param.getFilterCrossSamplePeptideNumber())); + settings.setValue("automatic_filter/peptide_number", QString("%1").arg(param.getFilterMinimumPeptidePerMatch())); + settings.setValue("automatic_filter/peptide_evalue", QString("%1").arg(param.getFilterPeptideEvalue())); + settings.setValue("automatic_filter/protein_evalue", QString("%1").arg(param.getFilterProteinEvalue())); + + QStringList file_list = _p_load_results_dialog->getFileList(); + bool is_individual = _p_load_results_dialog->isIndividual(); + qDebug() << "MainWindow::doAcceptedLoadResultDialog end"; +} + void MainWindow::doProjectReady(ProjectSp project_sp) { try { @@ -136,9 +153,6 @@ void MainWindow::doProjectNotReady(QString error) { viewError(tr("Error while grouping :\n%1").arg(error)); } void MainWindow::loadResults() { - if (_p_load_results_dialog == nullptr) { - _p_load_results_dialog = new LoadResultsDialog(this); - } _p_load_results_dialog->show(); _p_load_results_dialog->raise(); diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index a9d97fd3..9bdd170e 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -78,6 +78,7 @@ public slots: void selectXpipFile(); void doProjectReady(ProjectSp project_sp); void doProjectNotReady(QString error); + void doAcceptedLoadResultDialog(); //void peptideEdited(QString peptideStr); // void setColor(const QColor &color); // void setShape(Shape shape); diff --git a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp index 783bbc2a..716a5d1a 100644 --- a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp +++ b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp @@ -26,6 +26,7 @@ #include "../projectwindow.h" #include "ui_automatic_filter_widget.h" #include <QDebug> +#include <cmath> AutomaticFilterWidget::AutomaticFilterWidget(QWidget * parent): @@ -43,6 +44,11 @@ AutomaticFilterWidget::~AutomaticFilterWidget() delete ui; } + +AutomaticFilterParameters AutomaticFilterWidget::getAutomaticFilterParameters() const { + return _parameters; +} + void AutomaticFilterWidget::hideButton() { qDebug() << "AutomaticFilterWidget::hideButton begin "; ui->set_param_button->setVisible(false); diff --git a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h index b9e66d2d..13109ca5 100644 --- a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h +++ b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h @@ -42,6 +42,7 @@ public: void setAutomaticFilterParameters(const AutomaticFilterParameters & params); void hideButton(); + AutomaticFilterParameters getAutomaticFilterParameters() const; public slots: void doPeptideEvalue(double evalue); -- GitLab