diff --git a/src/grouping/ptm/ptmgroupingexperiment.cpp b/src/grouping/ptm/ptmgroupingexperiment.cpp index 73339189cd46a3f9db4109f145263fca38f2e400..c52b912c496d49ca5e64a687c8ce58dbd0501db2 100644 --- a/src/grouping/ptm/ptmgroupingexperiment.cpp +++ b/src/grouping/ptm/ptmgroupingexperiment.cpp @@ -83,7 +83,7 @@ const std::vector<PtmIslandGroupSp> & PtmGroupingExperiment::getPtmIslandGroupLi } const std::vector<PtmIslandSp> & PtmGroupingExperiment::getPtmIslandList() const { - qDebug() << "PtmGroupingExperiment::getPtmIslandList begin" << _ptm_island_list.size(); + //qDebug() << "PtmGroupingExperiment::getPtmIslandList begin" << _ptm_island_list.size(); return _ptm_island_list; } diff --git a/src/gui/ptm_island_list_view/ptm_island_list_view.ui b/src/gui/ptm_island_list_view/ptm_island_list_view.ui index 01d7d80519d8d55e46c900ef15cd54739a693ba4..10d234c13099216a603877f052c95adaa48a3732 100644 --- a/src/gui/ptm_island_list_view/ptm_island_list_view.ui +++ b/src/gui/ptm_island_list_view/ptm_island_list_view.ui @@ -67,7 +67,7 @@ </widget> </item> <item> - <widget class="QLineEdit" name="protein_search_edit"/> + <widget class="QLineEdit" name="ptm_search_edit"/> </item> </layout> </item> @@ -79,19 +79,52 @@ <x>0</x> <y>0</y> <width>826</width> - <height>23</height> + <height>25</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> - <connections/> + <connections> + <connection> + <sender>ptm_search_edit</sender> + <signal>textChanged(QString)</signal> + <receiver>PtmIslandListWindow</receiver> + <slot>doPtmSearchEdit(QString)</slot> + <hints> + <hint type="sourcelabel"> + <x>485</x> + <y>357</y> + </hint> + <hint type="destinationlabel"> + <x>1025</x> + <y>289</y> + </hint> + </hints> + </connection> + <connection> + <sender>search_combobox</sender> + <signal>activated(QString)</signal> + <receiver>PtmIslandListWindow</receiver> + <slot>doSearchOn(QString)</slot> + <hints> + <hint type="sourcelabel"> + <x>76</x> + <y>352</y> + </hint> + <hint type="destinationlabel"> + <x>988</x> + <y>347</y> + </hint> + </hints> + </connection> + </connections> <slots> <slot>doNotValidHide(bool)</slot> <slot>doNotCheckedHide(bool)</slot> <slot>doNotGroupedHide(bool)</slot> - <slot>onProteinSearchEdit(QString)</slot> + <slot>doPtmSearchEdit(QString)</slot> <slot>doSearchOn(QString)</slot> </slots> </ui> diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp index e872d2e804bfef17ee13d47c6d2447ca6dbe791d..f3b0d219599b215608741c5d287634c47966b889 100644 --- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp +++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp @@ -55,7 +55,7 @@ PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent): ui->ptm_island_tableview->setAlternatingRowColors(true); - + _statusbar_ptm_islands_label = new QLabel(""); ui->statusbar->addWidget(_statusbar_ptm_islands_label); @@ -177,3 +177,12 @@ void PtmIslandListWindow::updateStatusBar() { } } + +void PtmIslandListWindow::doPtmSearchEdit(QString ptm_search_string) { + _ptm_proxy_model_p->setPtmSearchString(ptm_search_string); + emit ptmIslandDataChanged(); +} +void PtmIslandListWindow::doSearchOn(QString search_on) { + _ptm_proxy_model_p->setSearchOn(search_on); + emit ptmIslandDataChanged(); +} diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.h b/src/gui/ptm_island_list_view/ptmislandlistwindow.h index a33bf2ce5e0319160d05a3f9ff46ec53991fe457..cb460570dd9c82afe281c3120d422e257af767ed 100644 --- a/src/gui/ptm_island_list_view/ptmislandlistwindow.h +++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.h @@ -61,6 +61,9 @@ public slots: protected slots: void updateStatusBar(); + void doPtmSearchEdit(QString ptm_search_string); + void doSearchOn(QString search_on); + signals: void ptmIslandDataChanged(); diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp index 38a985b7276f388e5e743fc8e590669277187fbc..be015191e27cfe8afba36fe9778c010186822a1e 100644 --- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp +++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp @@ -36,8 +36,10 @@ PtmIslandProxyModel::PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p) { - _p_ptm_island_list_window = p_ptm_island_list_window; - _p_ptm_island_table_model = ptm_table_model_p; + _p_ptm_island_list_window = p_ptm_island_list_window; + _p_ptm_island_table_model = ptm_table_model_p; + _ptm_search_string = ""; + _search_on = "accession"; } PtmIslandProxyModel::~PtmIslandProxyModel() @@ -52,6 +54,40 @@ bool PtmIslandProxyModel::filterAcceptsRow(int source_row, PtmIslandSp sp_ptm_island = _p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(source_row); //qDebug() << "ProteinTableProxyModel::filterAcceptsRow protein_match " << source_row; + if (!_ptm_search_string.isEmpty()) { + if (_search_on == "accession") { + if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getAccession().contains(_ptm_search_string)) { + return false; + } + } + else if (_search_on == "group") { + if (!sp_ptm_island.get()->getGroupingId().startsWith(QString("ptm%1").arg(_ptm_search_string))) { + return false; + } + + } + else if (_search_on == "sequence") { + if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getSequence().contains(_ptm_search_string)) { + return false; + } + } + else if (_search_on == "peptide") { + QString peptide_search_string = QString(_ptm_search_string).replace("L","I"); + for (const PeptideMatch & p_peptide_match: sp_ptm_island.get()->getProteinMatch()->getPeptideMatchList()) { + if (p_peptide_match.getPeptideEvidence()->getPeptideXtpSp().get()->getSequenceLi().contains(peptide_search_string)) { + return true; + } + } + return false; + } + + else if (_search_on == "description") { + //description + if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getDescription().contains(_ptm_search_string)) { + return false; + } + } + } if (sp_ptm_island != nullptr) { return true; } @@ -84,16 +120,25 @@ 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); - if ((col == (std::int8_t) PtmIslandListColumn::accession)||(col == (std::int8_t) PtmIslandListColumn::description)) { - //_p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match); - } - else { - _p_ptm_island_list_window->askViewPtmPeptideList(_p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(row).get()); - } - + if ((col == (std::int8_t) PtmIslandListColumn::accession)||(col == (std::int8_t) PtmIslandListColumn::description)) { + //_p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match); + } + else { + _p_ptm_island_list_window->askViewPtmPeptideList(_p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(row).get()); + } + qDebug() << "PtmIslandProxyModel::onTableClicked end " << index.row(); } + + +void PtmIslandProxyModel::setSearchOn(QString search_on) { + _search_on = search_on; +} + +void PtmIslandProxyModel::setPtmSearchString(QString ptm_search_string) { + _ptm_search_string = ptm_search_string; +} diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.h b/src/gui/ptm_island_list_view/ptmislandproxymodel.h index c55ab77914f86b8e4f49c3ec3f8ac56526f0684b..71eaf6d34045197cad1f16a1803f3141e560b8a4 100644 --- a/src/gui/ptm_island_list_view/ptmislandproxymodel.h +++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.h @@ -45,14 +45,20 @@ public: ~PtmIslandProxyModel(); bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; - - + + void setSearchOn(QString search_on); + + void setPtmSearchString(QString ptm_search_string) ; + public slots: void onTableClicked(const QModelIndex &index); private: PtmIslandListWindow * _p_ptm_island_list_window; PtmIslandTableModel * _p_ptm_island_table_model; + QString _search_on; + QString _ptm_search_string; + }; #endif // PTMISLANDPROXYMODEL_H diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp index 2fd26318e17cda0e6a45e3f633340217d0feaa80..a51a54093c63dddc17d0830052725820a87d4acb 100644 --- a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp +++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp @@ -143,9 +143,9 @@ const PtmGroupingExperiment * PtmIslandTableModel::getPtmGroupingExperiment() co return _p_identification_group->getPtmGroupingExperiment(); } int PtmIslandTableModel::rowCount(const QModelIndex &parent ) const { - qDebug() << "PtmIslandTableModel::rowCount begin "; + //qDebug() << "PtmIslandTableModel::rowCount begin "; if (getPtmGroupingExperiment() != nullptr) { - qDebug() << "PtmIslandTableModel::rowCount(const QModelIndex &parent ) " << getPtmGroupingExperiment()->getPtmIslandList().size(); + //qDebug() << "PtmIslandTableModel::rowCount(const QModelIndex &parent ) " << getPtmGroupingExperiment()->getPtmIslandList().size(); return (int) getPtmGroupingExperiment()->getPtmIslandList().size(); } return 0;