# HG changeset patch # User Chris Cannam # Date 1579016902 0 # Node ID 23d5cb3f9f381c859df8253f62a0bbd0065b8408 # Parent c546429d4c2f06090de42a39301faf16bd7aac92# Parent fd5a87f3c5b4fb65a352ab5e6878465b6d3f4b6c Merge from branch csv-export-dialog diff -r c546429d4c2f -r 23d5cb3f9f38 base/DataExportOptions.h --- a/base/DataExportOptions.h Fri Jan 10 14:29:54 2020 +0000 +++ b/base/DataExportOptions.h Tue Jan 14 15:48:22 2020 +0000 @@ -18,9 +18,36 @@ enum DataExportOption { DataExportDefaults = 0x0, + + /** + * Export sparse event-based models as if they were dense models, + * writing an event at every interval of the model's + * resolution. Where no event is present in the actual model, a + * constant "fill event" is interpolated instead. + */ DataExportFillGaps = 0x1, - DataExportOmitLevels = 0x2, - DataExportWriteTimeInFrames = 0x4 // otherwise in seconds + + /** + * Omit the level attribute from exported events. + */ + DataExportOmitLevel = 0x2, + + /** + * Always include a timestamp in the first column. Otherwise + * timestamps will only be included in sparse models. + */ + DataExportAlwaysIncludeTimestamp = 0x4, + + /** + * Use sample frames rather than seconds for time and duration + * values. + */ + DataExportWriteTimeInFrames = 0x8, + + /** + * Write a header row before any data rows. + */ + DataExportIncludeHeader = 0x10 }; typedef int DataExportOptions; diff -r c546429d4c2f -r 23d5cb3f9f38 base/Event.h --- a/base/Event.h Fri Jan 10 14:29:54 2020 +0000 +++ b/base/Event.h Tue Jan 14 15:48:22 2020 +0000 @@ -390,7 +390,7 @@ } if (m_haveLevel) { - if (!(opts & DataExportOmitLevels)) { + if (!(opts & DataExportOmitLevel)) { list << nameOpts.levelAttributeName; } } @@ -430,7 +430,7 @@ } if (m_haveLevel) { - if (!(opts & DataExportOmitLevels)) { + if (!(opts & DataExportOmitLevel)) { list << QString("%1").arg(m_level); } } diff -r c546429d4c2f -r 23d5cb3f9f38 data/fileio/CSVFileWriter.cpp --- a/data/fileio/CSVFileWriter.cpp Fri Jan 10 14:29:54 2020 +0000 +++ b/data/fileio/CSVFileWriter.cpp Tue Jan 14 15:48:22 2020 +0000 @@ -85,8 +85,10 @@ QTextStream out(&file); -// out << m_model->getDelimitedDataHeaderLine(m_delimiter, m_options) -// << endl; + if (m_options & DataExportIncludeHeader) { + out << m_model->getDelimitedDataHeaderLine(m_delimiter, m_options) + << endl; + } sv_frame_t blockSize = 65536;