annotate data/fileio/CSVFileWriter.h @ 1833:21c792334c2e sensible-delimited-data-strings

Rewrite all the DelimitedDataString stuff so as to return vectors of individual cell strings rather than having the classes add the delimiters themselves. Rename accordingly to names based on StringExport. Take advantage of this in the CSV writer code so as to properly quote cells that contain delimiter characters.
author Chris Cannam
date Fri, 03 Apr 2020 17:11:05 +0100
parents 6e9615bde1f9
children
rev   line source
Chris@148 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@148 2
Chris@148 3 /*
Chris@148 4 Sonic Visualiser
Chris@148 5 An audio file viewer and annotation editor.
Chris@148 6 Centre for Digital Music, Queen Mary, University of London.
Chris@148 7 This file copyright 2006 Chris Cannam.
Chris@148 8
Chris@148 9 This program is free software; you can redistribute it and/or
Chris@148 10 modify it under the terms of the GNU General Public License as
Chris@148 11 published by the Free Software Foundation; either version 2 of the
Chris@148 12 License, or (at your option) any later version. See the file
Chris@148 13 COPYING included with this distribution for more information.
Chris@148 14 */
Chris@148 15
cannam@1452 16 #ifndef SV_CSV_FILE_WRITER_H
cannam@1452 17 #define SV_CSV_FILE_WRITER_H
Chris@148 18
Chris@148 19 #include <QObject>
Chris@148 20 #include <QString>
Chris@148 21
Chris@1063 22 #include "base/DataExportOptions.h"
Chris@1063 23
Chris@148 24 class Model;
Chris@839 25 class MultiSelection;
dev@1435 26 class ProgressReporter;
Chris@148 27
Chris@148 28 class CSVFileWriter : public QObject
Chris@148 29 {
Chris@148 30 Q_OBJECT
Chris@148 31
Chris@148 32 public:
Chris@1063 33 CSVFileWriter(QString path,
Chris@1063 34 Model *model,
Chris@1063 35 QString delimiter = ",",
Chris@1063 36 DataExportOptions options = DataExportDefaults);
dev@1435 37
dev@1438 38 CSVFileWriter(QString path,
dev@1438 39 Model *model,
dev@1438 40 ProgressReporter *reporter,
dev@1438 41 QString delimiter = ",",
dev@1438 42 DataExportOptions options = DataExportDefaults)
dev@1438 43 : CSVFileWriter(path, model, delimiter, options)
dev@1435 44 {
dev@1435 45 m_reporter = reporter;
dev@1435 46 }
Chris@148 47 virtual ~CSVFileWriter();
Chris@148 48
Chris@148 49 virtual bool isOK() const;
Chris@148 50 virtual QString getError() const;
Chris@148 51
Chris@148 52 virtual void write();
cannam@1452 53 virtual void writeSelection(MultiSelection selection);
Chris@148 54
Chris@148 55 protected:
Chris@148 56 QString m_path;
Chris@148 57 Model *m_model;
Chris@148 58 QString m_error;
Chris@148 59 QString m_delimiter;
Chris@1063 60 DataExportOptions m_options;
dev@1439 61 ProgressReporter *m_reporter = nullptr;
Chris@148 62 };
Chris@148 63
Chris@148 64 #endif
Chris@148 65
Chris@148 66