diff --git a/src/files/fastafile.h b/src/files/fastafile.h index 59213a2f5b7a3e23960bfd6ba568d5c9256bda87..c398d3bdbcf0f16eb087bd19a29514688c00eb75 100644 --- a/src/files/fastafile.h +++ b/src/files/fastafile.h @@ -62,4 +62,6 @@ private : }; Q_DECLARE_METATYPE(FastaFile *) +Q_DECLARE_METATYPE(FastaFileSp) + #endif // FASTAFILE_H diff --git a/src/gui/widgets/contaminant_widget/contaminantwidget.cpp b/src/gui/widgets/contaminant_widget/contaminantwidget.cpp index ee3275cc59758e7cf4a1b5eb79bb429b27f32b1b..e316b142b3763fef42eca15a5ff7e7b44bf756f7 100644 --- a/src/gui/widgets/contaminant_widget/contaminantwidget.cpp +++ b/src/gui/widgets/contaminant_widget/contaminantwidget.cpp @@ -47,7 +47,7 @@ ContaminantWidget::ContaminantWidget(QWidget * parent): ui->contaminant_database_listview->setModel(_p_fasta_str_li); QItemSelectionModel * selection_model = ui->contaminant_database_listview->selectionModel(); ui->contaminant_database_listview->setSelectionMode(QAbstractItemView::MultiSelection); - + doSelectContaminantSource(); qDebug() << "ContaminantWidget::ContaminantWidget end"; } @@ -68,14 +68,13 @@ void ContaminantWidget::setRegexpContaminantPattern(const QString & pattern) { void ContaminantWidget::setFastaFileList(std::vector<FastaFileSp> fasta_file_list) { - _fasta_file_list = fasta_file_list; _p_fasta_str_li->removeRows(0, _p_fasta_str_li->rowCount()); for (FastaFileSp fasta_file : fasta_file_list ) { QStandardItem *item; item = new QStandardItem(QString("%1").arg(fasta_file.get()->getFilename())); item->setEditable(false); - item->setData(QVariant::fromValue(fasta_file.get()), Qt::UserRole); + item->setData(QVariant::fromValue(fasta_file), Qt::UserRole); _p_fasta_str_li->appendRow(item); //item->setData(QVariant(QString("%1").arg(fasta_file.get()->getAbsoluteFilePath())),Qt::UserRole); } @@ -106,9 +105,9 @@ void ContaminantWidget::setProjectContaminants(Project * p_project) { p_project->getProteinStore().clearContaminants(); if (index_list.size() > 0) { for (QModelIndex index :index_list) { - if (index.data(Qt::UserRole).canConvert<FastaFile *>()) { - FastaFile * p_fasta_file = index.data(Qt::UserRole).value<FastaFile *>(); - p_fasta_file->setContaminants(p_project->getProteinStore()); + if (index.data(Qt::UserRole).canConvert<FastaFileSp>()) { + FastaFileSp p_fasta_file = index.data(Qt::UserRole).value<FastaFileSp>(); + p_fasta_file.get()->setContaminants(p_project->getProteinStore()); } else { throw pappso::PappsoException(QObject::tr("can not convert to FastaFile index.data().canConvert<FastaFile *>()")); @@ -153,13 +152,22 @@ void ContaminantWidget::doSelectFastaFile() { if (filenames.size() > 0) { settings.setValue("path/fastafiles_directory", QFileInfo(filenames[0]).absolutePath()); } - + std::vector<FastaFileSp> fasta_file_list; for (QString filename :filenames) { fasta_file_list.push_back(std::make_shared<FastaFile>(filename)); } - - this->setFastaFileList(fasta_file_list); + + + for (FastaFileSp fasta_file : fasta_file_list ) { + + QStandardItem *item; + item = new QStandardItem(QString("%1").arg(fasta_file.get()->getFilename())); + item->setEditable(false); + item->setData(QVariant::fromValue(fasta_file), Qt::UserRole); + _p_fasta_str_li->appendRow(item); + //item->setData(QVariant(QString("%1").arg(fasta_file.get()->getAbsoluteFilePath())),Qt::UserRole); + } } catch (pappso::PappsoException & error) { diff --git a/src/gui/widgets/contaminant_widget/contaminantwidget.h b/src/gui/widgets/contaminant_widget/contaminantwidget.h index 5ed5d73a38f1195a544d36b219ec58074425c40f..f0b0081ca279306adab2b403bc7df24dc6e0590d 100644 --- a/src/gui/widgets/contaminant_widget/contaminantwidget.h +++ b/src/gui/widgets/contaminant_widget/contaminantwidget.h @@ -70,8 +70,6 @@ private: bool _no_project = true; QStandardItemModel * _p_fasta_str_li; - - std::vector<FastaFileSp> _fasta_file_list; };