From 6cd7247c950c912dc8a82576ba844703e898f62a Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Tue, 15 Jan 2019 16:20:51 +0100 Subject: [PATCH] export fasta now works the same way as old Java version : all, one by subgroup, one by group --- src/gui/main.ui | 68 +++++++++++++++++++++++---- src/gui/mainwindow.cpp | 84 ++++++++++++++++++++++++---------- src/gui/mainwindow.h | 2 + src/output/exportfastafile.cpp | 2 +- 4 files changed, 124 insertions(+), 32 deletions(-) diff --git a/src/gui/main.ui b/src/gui/main.ui index f3387e1b..f3df8229 100644 --- a/src/gui/main.ui +++ b/src/gui/main.ui @@ -65,7 +65,15 @@ <property name="title"> <string>&Export files</string> </property> - <addaction name="actionFasta"/> + <widget class="QMenu" name="menu_Fasta"> + <property name="title"> + <string>&Fasta</string> + </property> + <addaction name="actionAll_grouped_proteins"/> + <addaction name="actionOnly_one_by_subgroup"/> + <addaction name="actionOnly_one_by_group"/> + </widget> + <addaction name="menu_Fasta"/> <addaction name="actionMassChroQ"/> <addaction name="actionMassChroqPRM"/> <addaction name="actionSpreadsheet"/> @@ -112,11 +120,6 @@ <string>Load &results</string> </property> </action> - <action name="actionFasta"> - <property name="text"> - <string>&Fasta</string> - </property> - </action> <action name="actionMassChroQ"> <property name="text"> <string>&MassChroQ</string> @@ -169,7 +172,22 @@ </action> <action name="actionMassChroqPRM"> <property name="text"> - <string>MassChroqPRM</string> + <string>MassC&hroqPRM</string> + </property> + </action> + <action name="actionAll_grouped_proteins"> + <property name="text"> + <string>all grouped proteins</string> + </property> + </action> + <action name="actionOnly_one_by_subgroup"> + <property name="text"> + <string>only one by subgroup</string> + </property> + </action> + <action name="actionOnly_one_by_group"> + <property name="text"> + <string>only one by group</string> </property> </action> </widget> @@ -290,7 +308,7 @@ </hints> </connection> <connection> - <sender>actionFasta</sender> + <sender>actionAll_grouped_proteins</sender> <signal>triggered()</signal> <receiver>Main</receiver> <slot>doActionFasta()</slot> @@ -449,6 +467,38 @@ </hint> </hints> </connection> + <connection> + <sender>actionOnly_one_by_group</sender> + <signal>triggered()</signal> + <receiver>Main</receiver> + <slot>doActionFastaOneByGroup()</slot> + <hints> + <hint type="sourcelabel"> + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel"> + <x>231</x> + <y>191</y> + </hint> + </hints> + </connection> + <connection> + <sender>actionOnly_one_by_subgroup</sender> + <signal>triggered()</signal> + <receiver>Main</receiver> + <slot>doActionFastaOneBySubgroup()</slot> + <hints> + <hint type="sourcelabel"> + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel"> + <x>231</x> + <y>191</y> + </hint> + </hints> + </connection> </connections> <slots> <slot>selectXpipFile()</slot> @@ -465,5 +515,7 @@ <slot>doActionTandemRun()</slot> <slot>doActionSaveProject()</slot> <slot>doActionMassChroqPRM()</slot> + <slot>doActionFastaOneBySubgroup()</slot> + <slot>doActionFastaOneByGroup()</slot> </slots> </ui> diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 492888c6..6faee7ac 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -500,40 +500,78 @@ MainWindow::doActionSpectralCountingMcq() void MainWindow::doActionFasta() { - try + QSettings settings; + QString default_location = settings.value("path/fastafile", "").toString(); + + QString filename = QFileDialog::getSaveFileName( + this, + tr("Save FASTA file"), + QString("%1/untitled.fasta").arg(default_location), + tr("FASTA (*.fasta)")); + + if(filename.isEmpty()) { - // export all grouped proteins - // or only one protein by sub grouped - // or only one protein by group + return; + } - QSettings settings; - QString default_location = - settings.value("path/fastafile", "").toString(); + settings.setValue("path/fastafile", QFileInfo(filename).absolutePath()); - QString filename = QFileDialog::getSaveFileName( - this, - tr("Save FASTA file"), - QString("%1/untitled.fasta").arg(default_location), - tr("FASTA (*.fasta)")); + showWaitingMessage( + tr("Writing %1 FASTA file").arg(QFileInfo(filename).fileName())); + emit operateWritingFastaFile(filename, _project_sp, ExportFastaType::all); +} - if(filename.isEmpty()) - { - return; - } - settings.setValue("path/fastafile", QFileInfo(filename).absolutePath()); +void +MainWindow::doActionFastaOneBySubgroup() +{ + QSettings settings; + QString default_location = settings.value("path/fastafile", "").toString(); - showWaitingMessage( - tr("Writing %1 FASTA file").arg(QFileInfo(filename).fileName())); - emit operateWritingFastaFile(filename, _project_sp, ExportFastaType::all); + QString filename = QFileDialog::getSaveFileName( + this, + tr("Save FASTA file"), + QString("%1/untitled.fasta").arg(default_location), + tr("FASTA (*.fasta)")); + if(filename.isEmpty()) + { + return; } - catch(pappso::PappsoException &error) + + settings.setValue("path/fastafile", QFileInfo(filename).absolutePath()); + + showWaitingMessage( + tr("Writing %1 FASTA file").arg(QFileInfo(filename).fileName())); + emit operateWritingFastaFile( + filename, _project_sp, ExportFastaType::oneBySubgroup); +} + +void +MainWindow::doActionFastaOneByGroup() +{ + QSettings settings; + QString default_location = settings.value("path/fastafile", "").toString(); + + QString filename = QFileDialog::getSaveFileName( + this, + tr("Save FASTA file"), + QString("%1/untitled.fasta").arg(default_location), + tr("FASTA (*.fasta)")); + + if(filename.isEmpty()) { - viewError( - tr("Error while writing MassChroqML file :\n%1").arg(error.qwhat())); + return; } + + settings.setValue("path/fastafile", QFileInfo(filename).absolutePath()); + + showWaitingMessage( + tr("Writing %1 FASTA file").arg(QFileInfo(filename).fileName())); + emit operateWritingFastaFile( + filename, _project_sp, ExportFastaType::oneByGroup); } + void MainWindow::doActionMassChroQ() { diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 4acaa6c1..8696379f 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -68,6 +68,8 @@ class MainWindow : public QMainWindow void doActionAbout(); void doActionQuit(); void doActionFasta(); + void doActionFastaOneBySubgroup(); + void doActionFastaOneByGroup(); void doActionMassChroQ(); void doActionMassChroqPRM(); void doActionProticDb(); diff --git a/src/output/exportfastafile.cpp b/src/output/exportfastafile.cpp index c2735cd4..b64e010f 100644 --- a/src/output/exportfastafile.cpp +++ b/src/output/exportfastafile.cpp @@ -102,7 +102,7 @@ ExportFastaFile::writeIdentificationGroup( continue; if((m_exportType == ExportFastaType::oneByGroup) && - (group_number == old_group_number) && (subgroup_number > 1)) + (group_number == old_group_number)) continue; old_group_number = group_number; -- GitLab