From 16917fc0be42cdafa455e2aa63c7428c337d1bbe Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 3 Oct 2016 17:08:02 +0200 Subject: [PATCH 4/4] Export to TeX file initialized To: subsurface@subsurface-divelog.org Signed-off-by: Robert C. Helling --- desktop-widgets/divelogexportdialog.cpp | 33 +++++++++++++++++++++++++++++++++ desktop-widgets/divelogexportdialog.h | 1 + desktop-widgets/divelogexportdialog.ui | 12 +++++++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/desktop-widgets/divelogexportdialog.cpp b/desktop-widgets/divelogexportdialog.cpp index 5b58d0c..395c494 100644 --- a/desktop-widgets/divelogexportdialog.cpp +++ b/desktop-widgets/divelogexportdialog.cpp @@ -86,6 +86,8 @@ void DiveLogExportDialog::showExplanation() ui->description->setText(tr("Subsurface native XML format.")); } else if (ui->exportImageDepths->isChecked()) { ui->description->setText(tr("Write depths of images to file.")); + } else if (ui->exportTeX->isChecked()) { + ui->description->setText(tr("Write dive as TeX macros to file.")); } } @@ -162,6 +164,10 @@ void DiveLogExportDialog::on_buttonBox_accepted() filename = QFileDialog::getSaveFileName(this, tr("Save image depths"), lastDir); if (!filename.isNull() && !filename.isEmpty()) export_depths(filename.toUtf8().data(), ui->exportSelected->isChecked()); + } else if (ui->exportTeX->isChecked()) { + filename = QFileDialog::getSaveFileName(this, tr("Export to TeX file"), lastDir, tr("TeX files(*.tex)")); + if (!filename.isNull() && !filename.isEmpty()) + export_TeX(filename.toUtf8().data(), ui->exportSelected->isChecked()); } break; case 1: @@ -223,3 +229,30 @@ void DiveLogExportDialog::export_depths(const char *filename, const bool selecte } free_buffer(&buf); } + +void DiveLogExportDialog::export_TeX(const char *filename, const bool selected_only) +{ + FILE *f; + struct dive *dive; + depth_t depth; + int i; + const char *unit = NULL; + + struct membuffer buf = {}; + + for_each_dive (i, dive) { + if (selected_only && !dive->selected) + continue; + + put_format(&buf, "\\number{%d}\n", dive->number); + } + + f = subsurface_fopen(filename, "w+"); + if (!f) { + report_error(tr("Can't open file %s").toUtf8().data(), filename); + } else { + flush_buffer(&buf, f); /*check for writing errors? */ + fclose(f); + } + free_buffer(&buf); +} diff --git a/desktop-widgets/divelogexportdialog.h b/desktop-widgets/divelogexportdialog.h index e7cde31..5d5ad14 100644 --- a/desktop-widgets/divelogexportdialog.h +++ b/desktop-widgets/divelogexportdialog.h @@ -33,6 +33,7 @@ private: void showExplanation(); void exportHtmlInit(const QString &filename); void export_depths(const char *filename, const bool selected_only); + void export_TeX(const char *filename, const bool selected_only); }; #endif // DIVELOGEXPORTDIALOG_H diff --git a/desktop-widgets/divelogexportdialog.ui b/desktop-widgets/divelogexportdialog.ui index 4713bf0..d01f817 100644 --- a/desktop-widgets/divelogexportdialog.ui +++ b/desktop-widgets/divelogexportdialog.ui @@ -192,6 +192,16 @@ + + + TeX + + + exportGroup + + + + I&mage depths @@ -600,7 +610,7 @@ - + -- 2.8.4 (Apple Git-73)