summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Miika Turkia <miika.turkia@gmail.com>2014-12-31 22:09:34 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-12-31 12:12:20 -0800
commit5d68c7d4a19ca56405bc039808e7262eb3b18510 (patch)
tree84817aa58d7f8d7916e627102e87dc3ee821970e
parentc1d9055948b319a2f918e1115fae13619dda3f5e (diff)
downloadsubsurface-5d68c7d4a19ca56405bc039808e7262eb3b18510.tar.gz
Use unit selection for XSL transformation on CSV export
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.h2
-rw-r--r--qt-ui/divelogexportdialog.cpp2
-rw-r--r--save-xml.c12
3 files changed, 12 insertions, 4 deletions
diff --git a/dive.h b/dive.h
index 6821a8425..5906d058d 100644
--- a/dive.h
+++ b/dive.h
@@ -638,7 +638,7 @@ extern int parse_manual_file(const char *filename, int separator_index, int unit
extern int save_dives(const char *filename);
extern int save_dives_logic(const char *filename, bool select_only);
extern int save_dive(FILE *f, struct dive *dive);
-extern int export_dives_xslt(const char *filename, const bool selected, const char *export_xslt);
+extern int export_dives_xslt(const char *filename, const bool selected, const int units, const char *export_xslt);
struct git_oid;
struct git_repository;
diff --git a/qt-ui/divelogexportdialog.cpp b/qt-ui/divelogexportdialog.cpp
index d168ebe25..8f5d720e3 100644
--- a/qt-ui/divelogexportdialog.cpp
+++ b/qt-ui/divelogexportdialog.cpp
@@ -318,7 +318,7 @@ void DiveLogExportDialog::on_buttonBox_accepted()
settings.endGroup();
// the non XSLT exports are called directly above, the XSLT based ons are called here
if (!stylesheet.isEmpty())
- export_dives_xslt(filename.toUtf8(), ui->exportSelected->isChecked(), stylesheet.toUtf8());
+ export_dives_xslt(filename.toUtf8(), ui->exportSelected->isChecked(), ui->CSVUnits_2->currentIndex(), stylesheet.toUtf8());
}
}
diff --git a/save-xml.c b/save-xml.c
index 9172032ee..7317446f7 100644
--- a/save-xml.c
+++ b/save-xml.c
@@ -638,7 +638,7 @@ int save_dives_logic(const char *filename, const bool select_only)
return error;
}
-int export_dives_xslt(const char *filename, const bool selected, const char *export_xslt)
+int export_dives_xslt(const char *filename, const bool selected, const int units, const char *export_xslt)
{
FILE *f;
struct membuffer buf = { 0 };
@@ -646,6 +646,9 @@ int export_dives_xslt(const char *filename, const bool selected, const char *exp
xsltStylesheetPtr xslt = NULL;
xmlDoc *transformed;
int res = 0;
+ char *params[3];
+ int pnr = 0;
+ char unitstr[3];
if (verbose)
fprintf(stderr, "export_dives_xslt with stylesheet %s\n", export_xslt);
@@ -671,7 +674,12 @@ int export_dives_xslt(const char *filename, const bool selected, const char *exp
if (!xslt)
return report_error("Failed to open export conversion stylesheet");
- transformed = xsltApplyStylesheet(xslt, doc, NULL);
+ snprintf(unitstr, 3, "%d", units);
+ params[pnr++] = "units";
+ params[pnr++] = unitstr;
+ params[pnr++] = NULL;
+
+ transformed = xsltApplyStylesheet(xslt, doc, (const char **)params);
xmlFreeDoc(doc);
/* Write the transformed export to file */