[PATCH 7/7] Add optional support for stopdepth import from csv

Anton Lundin glance at acc.umu.se
Thu Nov 21 14:48:42 UTC 2013


Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 dive.h                    |  2 +-
 file.c                    | 10 +++++++---
 qt-ui/csvimportdialog.cpp |  8 ++++++--
 qt-ui/csvimportdialog.h   |  1 +
 qt-ui/csvimportdialog.ui  | 25 +++++++++++++++++++++++++
 xslt/csv2xml.xslt         | 12 ++++++++++++
 6 files changed, 52 insertions(+), 6 deletions(-)

diff --git a/dive.h b/dive.h
index d6490fd..41e37a7 100644
--- a/dive.h
+++ b/dive.h
@@ -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, int cnsf, char **error);
+extern void parse_csv_file(const char *filename, int time, int depth, int temp, int po2f, int cnsf, int stopdepthf, char **error);
 
 extern void save_dives(const char *filename);
 extern void save_dives_logic(const char *filename, bool select_only);
diff --git a/file.c b/file.c
index 47bc1d5..5f9b3d9 100644
--- a/file.c
+++ b/file.c
@@ -327,22 +327,23 @@ 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, int cnsf, char **error)
+void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int po2f, int cnsf, int stopdepthf, char **error)
 {
 	struct memblock mem;
 	int pnr=0;
-	char *params[15];
+	char *params[17];
 	char timebuf[MAXCOLDIGITS];
 	char depthbuf[MAXCOLDIGITS];
 	char tempbuf[MAXCOLDIGITS];
 	char po2buf[MAXCOLDIGITS];
 	char cnsbuf[MAXCOLDIGITS];
+	char stopdepthbuf[MAXCOLDIGITS];
 	time_t now;
 	struct tm *timep;
 	char curdate[9];
 	char curtime[6];
 
-	if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS || cnsf >= MAXCOLS) {
+	if (timef >= MAXCOLS || depthf >= MAXCOLS || tempf >= MAXCOLS || po2f >= MAXCOLS || cnsf >= MAXCOLS || stopdepthf >= 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);
@@ -354,6 +355,7 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int
 	snprintf(tempbuf, MAXCOLDIGITS, "%d", tempf);
 	snprintf(po2buf, MAXCOLDIGITS, "%d", po2f);
 	snprintf(cnsbuf, MAXCOLDIGITS, "%d", cnsf);
+	snprintf(stopdepthbuf, MAXCOLDIGITS, "%d", stopdepthf);
 	time(&now);
 	timep = localtime(&now);
 	strftime(curdate, sizeof(curdate), "%Y%m%d", timep);
@@ -372,6 +374,8 @@ void parse_csv_file(const char *filename, int timef, int depthf, int tempf, int
 	params[pnr++] = po2buf;
 	params[pnr++] = "cnsField";
 	params[pnr++] = cnsbuf;
+	params[pnr++] = "stopdepthField";
+	params[pnr++] = stopdepthbuf;
 	params[pnr++] = "date";
 	params[pnr++] = curdate;
 	params[pnr++] = "time";
diff --git a/qt-ui/csvimportdialog.cpp b/qt-ui/csvimportdialog.cpp
index 281aa66..91b9ddd 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, 17, "Tab"},
-		{"XP5", 0, 1, 9, -1, -1, "Tab"},
+		{"APD Log Viewer", 0, 1, 15, 6, 17, 18, "Tab"},
+		{"XP5", 0, 1, 9, -1, -1, -1, "Tab"},
 		{NULL,}
 };
 
@@ -33,6 +33,8 @@ CSVImportDialog::CSVImportDialog(QWidget *parent) :
 	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)));
+	connect(ui->CSVstopdepth, SIGNAL(valueChanged(int)), this, SLOT(unknownImports(int)));
+	connect(ui->stopdepthCheckBox, SIGNAL(clicked(bool)), this, SLOT(unknownImports(bool)));
 }
 
 CSVImportDialog::~CSVImportDialog()
@@ -49,6 +51,7 @@ void CSVImportDialog::on_buttonBox_accepted()
 			ui->CSVDepth->value(), VALUE_IF_CHECKED(CSVTemperature),
 			VALUE_IF_CHECKED(CSVpo2),
 			VALUE_IF_CHECKED(CSVcns),
+			VALUE_IF_CHECKED(CSVstopdepth),
 			&error);
 	if (error != NULL) {
 
@@ -92,6 +95,7 @@ void CSVImportDialog::on_knownImports_currentIndexChanged(int index)
 	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);
+	SET_VALUE_AND_CHECKBOX(CSVstopdepth, stopdepthCheckBox, CSVApps[index].stopdepth);
 }
 
 void CSVImportDialog::unknownImports(bool arg1)
diff --git a/qt-ui/csvimportdialog.h b/qt-ui/csvimportdialog.h
index ec2f023..fda36bc 100644
--- a/qt-ui/csvimportdialog.h
+++ b/qt-ui/csvimportdialog.h
@@ -39,6 +39,7 @@ private:
 		int temperature;
 		int po2;
 		int cns;
+		int stopdepth;
 		QString separator;
 	};
 
diff --git a/qt-ui/csvimportdialog.ui b/qt-ui/csvimportdialog.ui
index 3b11670..8f405e9 100644
--- a/qt-ui/csvimportdialog.ui
+++ b/qt-ui/csvimportdialog.ui
@@ -183,6 +183,23 @@
       </property>
      </widget>
     </item>
+    <item row="5" column="1">
+     <widget class="QSpinBox" name="CSVstopdepth">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="value">
+       <number>0</number>
+      </property>
+     </widget>
+    </item>
+    <item row="5" column="0">
+     <widget class="QCheckBox" name="stopdepthCheckBox">
+      <property name="text">
+       <string>Stopdepth</string>
+      </property>
+     </widget>
+    </item>
    </layout>
    <zorder>label</zorder>
    <zorder>label_2</zorder>
@@ -194,6 +211,8 @@
    <zorder>CSVpo2</zorder>
    <zorder>cnsCheckBox</zorder>
    <zorder>CSVcns</zorder>
+   <zorder>stopdepthCheckBox</zorder>
+   <zorder>CSVstopdepth</zorder>
   </widget>
   <widget class="QGroupBox" name="groupBox_4">
    <property name="geometry">
@@ -274,5 +293,11 @@
    <receiver>CSVcns</receiver>
    <slot>setEnabled(bool)</slot>
   </connection>
+  <connection>
+   <sender>stopdepthCheckBox</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>CSVstopdepth</receiver>
+   <slot>setEnabled(bool)</slot>
+  </connection>
  </connections>
 </ui>
diff --git a/xslt/csv2xml.xslt b/xslt/csv2xml.xslt
index 382bb2b..07aa91d 100644
--- a/xslt/csv2xml.xslt
+++ b/xslt/csv2xml.xslt
@@ -7,6 +7,7 @@
   <xsl:param name="tempField" select="tempField"/>
   <xsl:param name="po2Field" select="po2Field"/>
   <xsl:param name="cnsField" select="cnsField"/>
+  <xsl:param name="otuField" select="otuField"/>
   <xsl:param name="date" select="date"/>
   <xsl:param name="time" select="time"/>
   <xsl:output method="xml" indent="yes"/>
@@ -129,6 +130,17 @@
               </xsl:when>
           </xsl:choose>
         </xsl:attribute>
+
+        <xsl:attribute name="otu">
+          <xsl:choose>
+              <xsl:when test="$otuField >= 0">
+                <xsl:call-template name="getFieldByIndex">
+                  <xsl:with-param name="index" select="$otuField"/>
+                  <xsl:with-param name="line" select="$line"/>
+                </xsl:call-template>
+              </xsl:when>
+          </xsl:choose>
+        </xsl:attribute>
       </sample>
     </xsl:if>
   </xsl:template>
-- 
1.8.3.2



More information about the subsurface mailing list