diff options
author | Anton Lundin <glance@acc.umu.se> | 2013-11-21 23:48:41 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-21 15:54:21 -0800 |
commit | 5eccd73a306298616da122ba4e653d4c8f391df8 (patch) | |
tree | 61e85992f9863bdd2f4913dd8c840c99cd88c5a9 | |
parent | 8dde12fa35e0e53f93efef8a99a7fe2e625e901c (diff) | |
download | subsurface-5eccd73a306298616da122ba4e653d4c8f391df8.tar.gz |
Add optional support for cns import from csv files
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | file.c | 10 | ||||
-rw-r--r-- | qt-ui/csvimportdialog.cpp | 8 | ||||
-rw-r--r-- | qt-ui/csvimportdialog.h | 1 | ||||
-rw-r--r-- | qt-ui/csvimportdialog.ui | 25 | ||||
-rw-r--r-- | xslt/csv2xml.xslt | 12 |
6 files changed, 52 insertions, 6 deletions
@@ -626,7 +626,7 @@ extern void set_filename(const char *filename, bool force); extern int parse_dm4_buffer(const char *url, const char *buf, int size, struct dive_table *table, char **error); extern void parse_file(const char *filename, char **error); -extern void parse_csv_file(const char *filename, int time, int depth, int temp, int po2f, char **error); +extern void parse_csv_file(const char *filename, int time, int depth, int temp, int po2f, int cnsf, char **error); extern void save_dives(const char *filename); extern void save_dives_logic(const char *filename, bool select_only); @@ -327,21 +327,22 @@ void parse_file(const char *filename, char **error) #define MAXCOLDIGITS 3 #define MAXCOLS 100 -void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int po2f, char **error) +void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int po2f, int cnsf, char **error) { struct memblock mem; int pnr=0; - char *params[13]; + char *params[15]; char timebuf[MAXCOLDIGITS]; char depthbuf[MAXCOLDIGITS]; char tempbuf[MAXCOLDIGITS]; char po2buf[MAXCOLDIGITS]; + char cnsbuf[MAXCOLDIGITS]; time_t now; struct tm *timep; char curdate[9]; char curtime[6]; - if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS) { + if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS || cnsf >= MAXCOLS) { int len = strlen(translate("gettextFromC", "Maximum number of supported columns on CSV import is %d")) + MAXCOLDIGITS; *error = malloc(len); snprintf(*error, len, translate("gettextFromC", "Maximum number of supported columns on CSV import is %d"), MAXCOLS); @@ -352,6 +353,7 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int snprintf(depthbuf, MAXCOLDIGITS, "%d", depthf); snprintf(tempbuf, MAXCOLDIGITS, "%d", tempf); snprintf(po2buf, MAXCOLDIGITS, "%d", po2f); + snprintf(cnsbuf, MAXCOLDIGITS, "%d", cnsf); time(&now); timep = localtime(&now); strftime(curdate, sizeof(curdate), "%Y%m%d", timep); @@ -368,6 +370,8 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int params[pnr++] = tempbuf; params[pnr++] = "po2Field"; params[pnr++] = po2buf; + params[pnr++] = "cnsField"; + params[pnr++] = cnsbuf; params[pnr++] = "date"; params[pnr++] = curdate; params[pnr++] = "time"; diff --git a/qt-ui/csvimportdialog.cpp b/qt-ui/csvimportdialog.cpp index 8a213e055..281aa66f6 100644 --- a/qt-ui/csvimportdialog.cpp +++ b/qt-ui/csvimportdialog.cpp @@ -6,8 +6,8 @@ const CSVImportDialog::CSVAppConfig CSVImportDialog::CSVApps[CSVAPPS] = { {"", }, - {"APD Log Viewer", 0, 1, 15, 6, "Tab"}, - {"XP5", 0, 1, 9, -1, "Tab"}, + {"APD Log Viewer", 0, 1, 15, 6, 17, "Tab"}, + {"XP5", 0, 1, 9, -1, -1, "Tab"}, {NULL,} }; @@ -31,6 +31,8 @@ CSVImportDialog::CSVImportDialog(QWidget *parent) : connect(ui->temperatureCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); connect(ui->CSVpo2, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int))); connect(ui->po2CheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); + connect(ui->CSVcns, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int))); + connect(ui->cnsCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool))); } CSVImportDialog::~CSVImportDialog() @@ -46,6 +48,7 @@ void CSVImportDialog::on_buttonBox_accepted() parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value(), ui->CSVDepth->value(), VALUE_IF_CHECKED(CSVTemperature), VALUE_IF_CHECKED(CSVpo2), + VALUE_IF_CHECKED(CSVcns), &error); if (error != NULL) { @@ -88,6 +91,7 @@ void CSVImportDialog::on_knownImports_currentIndexChanged(int index) ui->CSVDepth->blockSignals(false); SET_VALUE_AND_CHECKBOX(CSVTemperature, temperatureCheckBox, CSVApps[index].temperature); SET_VALUE_AND_CHECKBOX(CSVpo2, po2CheckBox, CSVApps[index].po2); + SET_VALUE_AND_CHECKBOX(CSVcns, cnsCheckBox, CSVApps[index].cns); } void CSVImportDialog::unknownImports(bool arg1) diff --git a/qt-ui/csvimportdialog.h b/qt-ui/csvimportdialog.h index b76882744..ec2f02347 100644 --- a/qt-ui/csvimportdialog.h +++ b/qt-ui/csvimportdialog.h @@ -38,6 +38,7 @@ private: int depth; int temperature; int po2; + int cns; QString separator; }; diff --git a/qt-ui/csvimportdialog.ui b/qt-ui/csvimportdialog.ui index fe70a075c..3b1167066 100644 --- a/qt-ui/csvimportdialog.ui +++ b/qt-ui/csvimportdialog.ui @@ -166,6 +166,23 @@ </property> </widget> </item> + <item row="4" column="1"> + <widget class="QSpinBox" name="CSVcns"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="value"> + <number>0</number> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="cnsCheckBox"> + <property name="text"> + <string>Cns</string> + </property> + </widget> + </item> </layout> <zorder>label</zorder> <zorder>label_2</zorder> @@ -175,6 +192,8 @@ <zorder>CSVTemperature</zorder> <zorder>po2CheckBox</zorder> <zorder>CSVpo2</zorder> + <zorder>cnsCheckBox</zorder> + <zorder>CSVcns</zorder> </widget> <widget class="QGroupBox" name="groupBox_4"> <property name="geometry"> @@ -249,5 +268,11 @@ <receiver>CSVpo2</receiver> <slot>setEnabled(bool)</slot> </connection> + <connection> + <sender>cnsCheckBox</sender> + <signal>clicked(bool)</signal> + <receiver>CSVcns</receiver> + <slot>setEnabled(bool)</slot> + </connection> </connections> </ui> diff --git a/xslt/csv2xml.xslt b/xslt/csv2xml.xslt index 6a72ffa17..382bb2be6 100644 --- a/xslt/csv2xml.xslt +++ b/xslt/csv2xml.xslt @@ -6,6 +6,7 @@ <xsl:param name="depthField" select="depthField"/> <xsl:param name="tempField" select="tempField"/> <xsl:param name="po2Field" select="po2Field"/> + <xsl:param name="cnsField" select="cnsField"/> <xsl:param name="date" select="date"/> <xsl:param name="time" select="time"/> <xsl:output method="xml" indent="yes"/> @@ -117,6 +118,17 @@ </xsl:when> </xsl:choose> </xsl:attribute> + + <xsl:attribute name="cns"> + <xsl:choose> + <xsl:when test="$cnsField >= 0"> + <xsl:call-template name="getFieldByIndex"> + <xsl:with-param name="index" select="$cnsField"/> + <xsl:with-param name="line" select="$line"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:attribute> </sample> </xsl:if> </xsl:template> |