From 17c0776786a6e230ac79accbe78649ec0eb4f937 Mon Sep 17 00:00:00 2001 From: Olivier Langella <olivier.langella@u-psud.fr> Date: Thu, 15 Nov 2018 16:00:48 +0100 Subject: [PATCH] export report into TSV files --- .../export_spreadsheet_dialog.ui | 26 +++++++++++++ .../exportspreadsheetdialog.cpp | 26 ++++++++++++- .../exportspreadsheetdialog.h | 2 + src/gui/mainwindow.cpp | 38 ++++++++++++++----- src/gui/mainwindow.h | 7 ++-- src/gui/workerthread.cpp | 13 ++++--- src/gui/workerthread.h | 2 +- 7 files changed, 92 insertions(+), 22 deletions(-) diff --git a/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui b/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui index 8aa973a7..40975efd 100644 --- a/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui +++ b/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui @@ -152,6 +152,32 @@ </layout> </widget> </item> + <item> + <widget class="QGroupBox" name="formats_groupbox"> + <property name="title"> + <string>Formats</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QRadioButton" name="ods_radiobutton"> + <property name="text"> + <string>ODS spreadsheet (Excel or Li&breOffice)</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="tsv_radiobutton"> + <property name="text"> + <string>w&rite TSV files in a directory</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> </layout> </widget> </item> diff --git a/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.cpp b/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.cpp index 28231401..c4139d75 100644 --- a/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.cpp +++ b/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.cpp @@ -118,8 +118,17 @@ ExportSpreadsheetDialog::ExportSpreadsheetDialog(QWidget *parent) { ui->ptmspectra_checkbox->setCheckState(Qt::Checked); } - // param.setFilterCrossSamplePeptideNumber(settings.value("automatic_filter/cross_sample", - // "true").toBool()); + // param.setFilterCrossSamplePeptideNumber(settings.value("automatic_filter/cross_sample", + // "true").toBool()); + + if(settings.value("export_ods/format", "ods").toString() == "ods") + { + ui->ods_radiobutton->setChecked(true); + } + else + { + ui->tsv_radiobutton->setChecked(true); + } #if QT_VERSION >= 0x050000 // Qt5 code @@ -284,3 +293,16 @@ ExportSpreadsheetDialog::setProject(const Project *p_project) ui->ptm_groupbox->setEnabled(false); } } + +QString +ExportSpreadsheetDialog::getExportFormat() const +{ + QSettings settings; + QString format = "ods"; + if(ui->tsv_radiobutton->isChecked()) + { + format = "tsv"; + } + settings.setValue("export_ods/format", format); + return format; +} diff --git a/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.h b/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.h index f03559d0..807482cc 100644 --- a/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.h +++ b/src/gui/export_spreadsheet_dialog/exportspreadsheetdialog.h @@ -43,6 +43,8 @@ class ExportSpreadsheetDialog : public QDialog public: explicit ExportSpreadsheetDialog(QWidget *parent); ~ExportSpreadsheetDialog(); + + QString getExportFormat() const; void setProject(const Project *p_project); diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 1443d068..938cfcd8 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -194,36 +194,54 @@ MainWindow::doActionQuit() void MainWindow::doAcceptedExportSpreadsheetDialog() { - qDebug() << "MainWindow::doAcceptedExportSpreadsheetDialog begin"; + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; try { + QString format = this->_p_export_spreadsheet_dialog->getExportFormat(); QSettings settings; QString default_location = settings.value("path/export_ods", "").toString(); - QString filename = QFileDialog::getSaveFileName( - this, - tr("Save ODS file"), - QString("%1/untitled.ods").arg(default_location), - tr("Open Document Spreadsheet (*.ods);;tabulated text file (*.tsv)")); - + QString filename; + if(format == "ods") + { + filename = QFileDialog::getSaveFileName( + this, + tr("Save ODS file"), + QString("%1/untitled.ods").arg(default_location), + tr("Open Document Spreadsheet (*.ods)")); + + settings.setValue("path/export_ods", + QFileInfo(filename).absolutePath()); + } + else + { + filename = QFileDialog::getExistingDirectory( + this, tr("Save TSV files"), QString("%1").arg(default_location)); + + QDir parent(filename); + parent.cdUp(); + settings.setValue("path/export_ods", parent.canonicalPath()); + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " " + << parent.absolutePath(); + } if(filename.isEmpty()) { return; } - settings.setValue("path/export_ods", QFileInfo(filename).absolutePath()); showWaitingMessage( tr("writing %1 ODS file").arg(QFileInfo(filename).fileName())); - emit operateWritingOdsFile(filename, _project_sp); + emit operateWritingOdsFile(filename, format, _project_sp); // emit operateXpipFile(filename); } catch(pappso::PappsoException &error) { viewError(tr("Error while writing ODS file :\n%1").arg(error.qwhat())); } - qDebug() << "MainWindow::doAcceptedExportSpreadsheetDialog end"; + + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; } void diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 39922852..21762189 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -45,7 +45,7 @@ namespace Ui { - class Main; +class Main; } class MainWindow : public QMainWindow @@ -102,7 +102,8 @@ class MainWindow : public QMainWindow AutomaticFilterParameters param, QStringList file_list); void operateWritingXpipFile(QString filename, ProjectSp project_sp); - void operateWritingOdsFile(QString filename, ProjectSp project_sp); + void + operateWritingOdsFile(QString filename, QString format, ProjectSp project_sp); void operateWritingMassChroqFile(QString filename, ProjectSp project_sp); void operateWritingMassChroqPrmFile(QString filename, ProjectSp project_sp); void operateWritingProticFile(QString filename, ProjectSp project_sp); @@ -133,7 +134,7 @@ class MainWindow : public QMainWindow WaitingMessageDialog *_p_waiting_message_dialog; AboutDialog *_p_about_dialog = nullptr; TandemRunDialog *_p_tandem_run_dialog = nullptr; - + HttpVersion m_onlineVersion; }; diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp index e76c0062..5c0d3dd4 100644 --- a/src/gui/workerthread.cpp +++ b/src/gui/workerthread.cpp @@ -505,19 +505,20 @@ WorkerThread::doWritingXpipFile(QString filename, ProjectSp project_sp) } } void -WorkerThread::doWritingOdsFile(QString filename, ProjectSp project_sp) +WorkerThread::doWritingOdsFile(QString filename, + QString format, + ProjectSp project_sp) { try { - - qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ ; - QFileInfo file_info(filename); + + qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__; CalcWriterInterface *p_writer = nullptr; - if(file_info.suffix() == "tsv") + if(format == "tsv") { emit loadingMessage(tr("writing TSV files, please wait")); - p_writer = new TsvDirectoryWriter (filename); + p_writer = new TsvDirectoryWriter(filename); } else { diff --git a/src/gui/workerthread.h b/src/gui/workerthread.h index ba40f866..60168b56 100644 --- a/src/gui/workerthread.h +++ b/src/gui/workerthread.h @@ -59,7 +59,7 @@ class WorkerThread : public QObject void doLoadingResults(bool is_individual, AutomaticFilterParameters param, QStringList file_list); void doWritingXpipFile(QString filename, ProjectSp project_sp); - void doWritingOdsFile(QString filename, ProjectSp project_sp); + void doWritingOdsFile(QString filename, QString format, ProjectSp project_sp); void doWritingMassChroqFile(QString filename, ProjectSp project_sp); void doWritingMassChroqPrmFile(QString filename, ProjectSp project_sp); void doWritingProticFile(QString filename, ProjectSp project_sp); -- GitLab