diff options
-rw-r--r-- | qt-ui/divelogexportdialog.cpp | 4 | ||||
-rw-r--r-- | qt-ui/divelogexportdialog.ui | 16 | ||||
-rw-r--r-- | save-xml.c | 3 | ||||
-rw-r--r-- | subsurface.qrc | 1 | ||||
-rw-r--r-- | xslt/xml2manualcsv.xslt | 114 |
5 files changed, 135 insertions, 3 deletions
diff --git a/qt-ui/divelogexportdialog.cpp b/qt-ui/divelogexportdialog.cpp index 965af494f..a237c9941 100644 --- a/qt-ui/divelogexportdialog.cpp +++ b/qt-ui/divelogexportdialog.cpp @@ -272,6 +272,10 @@ void DiveLogExportDialog::on_buttonBox_accepted() stylesheet = "xml2csv.xslt"; filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, tr("CSV files (*.csv *.CSV)")); + } else if (ui->exportCSVDetails->isChecked()) { + stylesheet = "xml2manualcsv.xslt"; + filename = QFileDialog::getSaveFileName(this, tr("Export CSV file as"), lastDir, + tr("CSV files (*.csv *.CSV)")); } else if (ui->exportDivelogs->isChecked()) { DivelogsDeWebServices::instance()->prepareDivesForUpload(ui->exportSelected->isChecked()); } else if (ui->exportDiveshare->isChecked()) { diff --git a/qt-ui/divelogexportdialog.ui b/qt-ui/divelogexportdialog.ui index aaa485eb3..62e984294 100644 --- a/qt-ui/divelogexportdialog.ui +++ b/qt-ui/divelogexportdialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>507</width> - <height>413</height> + <height>423</height> </rect> </property> <property name="windowTitle"> @@ -166,7 +166,17 @@ <item> <widget class="QRadioButton" name="exportCSV"> <property name="text"> - <string>CSV</string> + <string>CSV samples</string> + </property> + <attribute name="buttonGroup"> + <string notr="true">exportGroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="exportCSVDetails"> + <property name="text"> + <string>CSV dive details</string> </property> <attribute name="buttonGroup"> <string notr="true">exportGroup</string> @@ -440,7 +450,7 @@ </connection> </connections> <buttongroups> - <buttongroup name="buttonGroup"/> <buttongroup name="exportGroup"/> + <buttongroup name="buttonGroup"/> </buttongroups> </ui> diff --git a/save-xml.c b/save-xml.c index e4871fbb1..9172032ee 100644 --- a/save-xml.c +++ b/save-xml.c @@ -647,6 +647,9 @@ int export_dives_xslt(const char *filename, const bool selected, const char *exp xmlDoc *transformed; int res = 0; + if (verbose) + fprintf(stderr, "export_dives_xslt with stylesheet %s\n", export_xslt); + if (!filename) return report_error("No filename for export"); diff --git a/subsurface.qrc b/subsurface.qrc index 76875a716..e1103bb92 100644 --- a/subsurface.qrc +++ b/subsurface.qrc @@ -42,6 +42,7 @@ <file>xslt/udcf.xslt</file> <file>xslt/uddf-export.xslt</file> <file>xslt/xml2csv.xslt</file> + <file>xslt/xml2manualcsv.xslt</file> <file>xslt/uddf.xslt</file> <file>xslt/sensuscsv.xslt</file> <file>xslt/manualcsv2xml.xslt</file> diff --git a/xslt/xml2manualcsv.xslt b/xslt/xml2manualcsv.xslt new file mode 100644 index 000000000..fa3868cf8 --- /dev/null +++ b/xslt/xml2manualcsv.xslt @@ -0,0 +1,114 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:strip-space elements="*"/> + <xsl:output method="text" encoding="UTF-8"/> + + <xsl:variable name="fs">,</xsl:variable> + + <xsl:template match="/divelog/dives"> + <xsl:value-of select="concat('"dive number"', $fs, '"date"', $fs, '"time"', $fs, '"duration"', $fs, '"maxdepth"', $fs, '"avgdepth"', $fs, '"airtemp"', $fs, '"watertemp"', $fs, '"startpressure"', $fs, '"endpressure"', $fs, '"location"', $fs, '"gps"', $fs, '"divemaster"', $fs, '"buddy"', $fs, '"suit"', $fs, '"rating"', $fs, '"visibility"', $fs, '"notes"')"/> + <xsl:text> +</xsl:text> + <xsl:apply-templates select="dive|trip/dive"/> + </xsl:template> + + <xsl:template match="dive"> + <xsl:text>"</xsl:text> + <xsl:value-of select="@number"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@date"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@time"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@duration"/> + <xsl:text>"</xsl:text> + <xsl:apply-templates select="divecomputer/depth"/> + <xsl:apply-templates select="divetemperature"/> + <xsl:apply-templates select="cylinder"/> + <xsl:apply-templates select="location"/> + <xsl:apply-templates select="divemaster"/> + <xsl:apply-templates select="buddy"/> + <xsl:apply-templates select="suit"/> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@rating"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@visibility"/> + <xsl:text>"</xsl:text> + <xsl:apply-templates select="notes"/> + <xsl:text> +</xsl:text> + </xsl:template> + <xsl:template match="divecomputer/depth"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@max"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@mean"/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="divetemperature"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@air"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@water"/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="cylinder"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@start"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@end"/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="location"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>"</xsl:text> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="@gps"/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="divemaster"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="buddy"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="suit"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>"</xsl:text> + </xsl:template> + <xsl:template match="notes"> + <xsl:value-of select="$fs"/> + <xsl:text>"</xsl:text> + <xsl:value-of select="."/> + <xsl:text>"</xsl:text> + </xsl:template> +</xsl:stylesheet> |