From affc6f1d68bc533ab99d6f5ba843c353b3176093 Mon Sep 17 00:00:00 2001 From: Olivier Langella <Olivier.Langella@moulon.inra.fr> Date: Tue, 25 Jul 2017 08:28:36 +0200 Subject: [PATCH] first ptm peptide list view --- src/grouping/ptm/ptmisland.cpp | 3 +++ .../ptmislandlistwindow.cpp | 26 ++++++++++++++++++- .../ptmislandlistwindow.h | 12 +++++++-- .../ptmislandproxymodel.cpp | 11 ++++---- .../ptmpeptidelistwindow.cpp | 3 ++- .../ptmpeptidetablemodel.cpp | 15 +++++++++++ .../ptmpeptidetablemodel.h | 3 +++ 7 files changed, 64 insertions(+), 9 deletions(-) diff --git a/src/grouping/ptm/ptmisland.cpp b/src/grouping/ptm/ptmisland.cpp index 26854b499..ff6e52a9a 100644 --- a/src/grouping/ptm/ptmisland.cpp +++ b/src/grouping/ptm/ptmisland.cpp @@ -171,6 +171,7 @@ bool PtmIsland::merge(PtmIslandSp ptm_island_sp) { } std::vector<PtmSampleScanSp> PtmIsland::getPtmSampleScanSpList() const { + qDebug() << "PtmIsland::getPtmSampleScanSpList begin" ; std::vector<PtmSampleScanSp> sample_scan_list; for (const PeptideMatch * p_peptide_match:_peptide_match_list) { @@ -178,6 +179,7 @@ std::vector<PtmSampleScanSp> PtmIsland::getPtmSampleScanSpList() const { std::vector<PtmSampleScanSp>::iterator it_ptm_end = sample_scan_list.end(); while ((it_ptm != it_ptm_end) && (it_ptm->get()->add(p_peptide_match) == false)) { //peptide added + it_ptm++; } if (it_ptm == it_ptm_end) { //peptide NOT added @@ -185,5 +187,6 @@ std::vector<PtmSampleScanSp> PtmIsland::getPtmSampleScanSpList() const { } } + qDebug() << "PtmIsland::getPtmSampleScanSpList end" ; return sample_scan_list; } diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp index 2c1667e35..e2ad12ad0 100644 --- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp +++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp @@ -33,6 +33,7 @@ #include "ui_ptm_island_list_view.h" #include "../mainwindow.h" #include <QSettings> +#include "../ptm_peptide_list_view/ptmpeptidelistwindow.h" PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent): @@ -68,7 +69,7 @@ PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent): connect (_project_window, SIGNAL(identificationPtmGroupGrouped(IdentificationGroup *)), this,SLOT(doIdentificationPtmGroupGrouped(IdentificationGroup *))); connect (_project_window, SIGNAL(identificationGroupGrouped(IdentificationGroup *)), this,SLOT(doIdentificationGroupGrouped(IdentificationGroup *))); - connect(ui->ptm_island_tableview, SIGNAL(clicked(const QModelIndex &)), _ptm_table_model_p, SLOT(onTableClicked(const QModelIndex &))); + connect(ui->ptm_island_tableview, SIGNAL(clicked(const QModelIndex &)), _ptm_proxy_model_p, SLOT(onTableClicked(const QModelIndex &))); #endif } @@ -126,3 +127,26 @@ void PtmIslandListWindow::doIdentificationPtmGroupGrouped(IdentificationGroup * void PtmIslandListWindow::resizeColumnsToContents() { ui->ptm_island_tableview->resizeColumnsToContents(); } + +void PtmIslandListWindow::connectNewPtmPeptideListWindow() { + qDebug() << "PtmIslandListWindow::connectNewPtmPeptideListWindow begin"; + _p_current_ptm_peptide_list_window = new PtmPeptideListWindow(this); + _ptm_peptide_list_window_collection.push_back(_p_current_ptm_peptide_list_window); + + qDebug() << "PtmIslandListWindow::connectNewPtmPeptideListWindow end"; + +} +void PtmIslandListWindow::askViewPtmPeptideList(PtmIsland * ptm_island) { + if (_ptm_peptide_list_window_collection.size() == 0) { + connectNewPtmPeptideListWindow(); + } + Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers(); + if (modifier == Qt::ControlModifier) { + connectNewPtmPeptideListWindow(); + } + + + _p_current_ptm_peptide_list_window->setPtmIsland(ptm_island); + _p_current_ptm_peptide_list_window->show(); + +} diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.h b/src/gui/ptm_island_list_view/ptmislandlistwindow.h index 4ae9999b2..868fdb7fb 100644 --- a/src/gui/ptm_island_list_view/ptmislandlistwindow.h +++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.h @@ -35,6 +35,7 @@ #include "../../core/identificationgroup.h" class ProjectWindow; +class PtmPeptideListWindow; //http://doc.qt.io/qt-4.8/qt-itemviews-chart-mainwindow-cpp.html namespace Ui { @@ -43,8 +44,8 @@ class PtmIslandListWindow; class PtmIslandListWindow: public QMainWindow { Q_OBJECT + friend PtmIslandProxyModel; public: - explicit PtmIslandListWindow(ProjectWindow * parent = 0); ~PtmIslandListWindow(); void setIdentificationGroup(IdentificationGroup * p_identification_group); @@ -57,13 +58,20 @@ public slots: signals: void ptmIslandDataChanged(); - + +protected: + void askViewPtmPeptideList(PtmIsland * ptm_island); +private: + void connectNewPtmPeptideListWindow(); private: IdentificationGroup * _p_identification_group=nullptr; Ui::PtmIslandListWindow *ui; PtmIslandTableModel * _ptm_table_model_p = nullptr; PtmIslandProxyModel * _ptm_proxy_model_p = nullptr; ProjectWindow * _project_window; + + PtmPeptideListWindow * _p_current_ptm_peptide_list_window; + std::vector<PtmPeptideListWindow *> _ptm_peptide_list_window_collection; }; diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp index 331995b8e..7c3834e78 100644 --- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp +++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp @@ -29,6 +29,7 @@ #include "ptmislandproxymodel.h" #include "ptmislandtablemodel.h" +#include "ptmislandlistwindow.h" #include "../../grouping/ptm/ptmgroupingexperiment.h" #include "../../grouping/ptm/ptmisland.h" #include <pappsomspp/pappsoexception.h> @@ -83,16 +84,16 @@ void PtmIslandProxyModel::onTableClicked(const QModelIndex &index) QModelIndex source_index(this->mapToSource(index)); int row = source_index.row(); int col = source_index.column(); - /* - ProteinMatch* p_protein_match = _p_ptm_island_table_model->getIdentificationGroup()->getProteinMatchList().at(row); + + //ProteinMatch* p_protein_match = _p_ptm_island_table_model->getIdentificationGroup()->getProteinMatchList().at(row); if ((col == 2)||(col == 3)) { - _p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match); + //_p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match); } else { - _p_ptm_island_table_model->askPtmPeptideListView(p_protein_match); + _p_ptm_island_list_window->askViewPtmPeptideList(_p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(row).get()); } - */ + qDebug() << "PtmIslandProxyModel::onTableClicked end " << index.row(); } diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp index 69d462d69..4b1bd7019 100644 --- a/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp +++ b/src/gui/ptm_peptide_list_view/ptmpeptidelistwindow.cpp @@ -71,5 +71,6 @@ PtmPeptideListWindow::PtmPeptideListWindow(PtmIslandListWindow * parent):QMainWi PtmPeptideListWindow::~PtmPeptideListWindow() { } void PtmPeptideListWindow::setPtmIsland(PtmIsland * p_ptm_island) { - _p_ptm_island = _p_ptm_island; + _p_ptm_island = p_ptm_island; + _ptm_table_model_p->setPtmIsland(_p_ptm_island); } diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp index 1ad88b010..26ad081dc 100644 --- a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp +++ b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.cpp @@ -217,3 +217,18 @@ QVariant PtmPeptideTableModel::data(const QModelIndex &index, int role ) const { } return QVariant(); } + +void PtmPeptideTableModel::setPtmIsland(PtmIsland * ptm_island) { + qDebug() << "tmPeptideTableModel::setPtmIsland begin "; + + beginResetModel(); + _p_ptm_island = ptm_island; +_ptm_sample_scan_list = ptm_island->getPtmSampleScanSpList(); + //emit headerDataChanged(Qt::Horizontal, 0,11); + //refresh(); + qDebug() << "tmPeptideTableModel::setPtmIsland end "; + endResetModel(); + + //this->_p_ptm_island_list_window->resizeColumnsToContents(); + +} diff --git a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.h b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.h index 96d744c52..f1bdb796d 100644 --- a/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.h +++ b/src/gui/ptm_peptide_list_view/ptmpeptidetablemodel.h @@ -31,6 +31,7 @@ #include <QAbstractTableModel> #include "../../grouping/ptm/ptmsamplescan.h" +#include "../../grouping/ptm/ptmisland.h" @@ -73,6 +74,7 @@ public: static const QString getDescription(PtmPeptideListColumn column); ~PtmPeptideTableModel(); + void setPtmIsland(PtmIsland * ptm_island); private : static const QString getTitle(std::int8_t column); @@ -80,6 +82,7 @@ private : private: std::vector<PtmSampleScanSp> _ptm_sample_scan_list; + const PtmIsland * _p_ptm_island; }; #endif // PTMPEPTIDETABLEMODEL_H -- GitLab