diff --git a/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui b/src/gui/export_spreadsheet_dialog/export_spreadsheet_dialog.ui index 8aa973a7ef8060cdc43dfde4cae77574d8ab5d0c..40975efd88d0a2ccb49d38d3488eeb8a2dfea62a 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 28231401cb20cc3660b4486f1489cbfff8598eee..c4139d753763e5512b94d51389d2f46556c5d8a4 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 f03559d09d5b992dddbc7bd14ab69a11c1ced9ad..807482cc3fb7a5d2ca15ca0f10aa034b2fb473c0 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 1443d068a7e2f5673bf0196716d0ba53a23a6a74..938cfcd81d454444b40c7f06731b625a7e63f6bd 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 39922852a544e7323cf2d5c99f419768ca6fdf8a..21762189b04c8b67fef052062331d1c8850abd1e 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 e76c0062024df0e62910fc0173d7d7dc38815552..5c0d3dd469b39c04d40f4d8dbea4737d5311fc7e 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 ba40f8664aae6e0ea92176c53b765148abe33def..60168b5660f1d59b3a1f976cc33f98ddce7bc7c8 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);