annotate data/fileio/CSVFileReader.h @ 391:5858cc462d0a

* Fix #1628781 changes to layer visibility and mute should use a command * Also use a command for changes to layer playback pan, gain, plugin settings * Refactor PlayParameterRepository to remove dependency on audioio from base * Fix failure to save play parameters for main model in session file
author Chris Cannam
date Thu, 13 Mar 2008 14:06:03 +0000
parents 1a42221a1522
children 183ee2a55fc7
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
Chris@148 16 #ifndef _CSV_FILE_READER_H_
Chris@148 17 #define _CSV_FILE_READER_H_
Chris@148 18
Chris@148 19 #include "DataFileReader.h"
Chris@148 20
Chris@148 21 #include <QList>
Chris@148 22 #include <QStringList>
Chris@148 23 #include <QDialog>
Chris@148 24
Chris@148 25 class QFile;
Chris@148 26 class QTableWidget;
Chris@148 27 class QComboBox;
Chris@148 28 class QLabel;
Chris@148 29
Chris@148 30
Chris@148 31 class CSVFileReader : public DataFileReader
Chris@148 32 {
Chris@148 33 public:
Chris@148 34 CSVFileReader(QString path, size_t mainModelSampleRate);
Chris@148 35 virtual ~CSVFileReader();
Chris@148 36
Chris@148 37 virtual bool isOK() const;
Chris@148 38 virtual QString getError() const;
Chris@148 39 virtual Model *load() const;
Chris@148 40
Chris@148 41 protected:
Chris@148 42 QFile *m_file;
Chris@148 43 QString m_error;
Chris@148 44 size_t m_mainModelSampleRate;
Chris@148 45 };
Chris@148 46
Chris@148 47
Chris@148 48 class CSVFormatDialog : public QDialog
Chris@148 49 {
Chris@148 50 Q_OBJECT
Chris@148 51
Chris@148 52 public:
Chris@148 53 CSVFormatDialog(QWidget *parent, QFile *file, size_t defaultSampleRate);
Chris@148 54
Chris@148 55 ~CSVFormatDialog();
Chris@148 56
Chris@148 57 enum ModelType {
Chris@148 58 OneDimensionalModel,
Chris@148 59 TwoDimensionalModel,
Chris@148 60 ThreeDimensionalModel
Chris@148 61 };
Chris@148 62
Chris@148 63 enum TimingType {
Chris@148 64 ExplicitTiming,
Chris@148 65 ImplicitTiming
Chris@148 66 };
Chris@148 67
Chris@148 68 enum TimeUnits {
Chris@148 69 TimeSeconds,
Chris@148 70 TimeAudioFrames,
Chris@148 71 TimeWindows
Chris@148 72 };
Chris@148 73
Chris@148 74 ModelType getModelType() const { return m_modelType; }
Chris@148 75 TimingType getTimingType() const { return m_timingType; }
Chris@148 76 TimeUnits getTimeUnits() const { return m_timeUnits; }
Chris@148 77 QString getSeparator() const { return m_separator; }
Chris@148 78 size_t getSampleRate() const { return m_sampleRate; }
Chris@148 79 size_t getWindowSize() const { return m_windowSize; }
Chris@148 80
Chris@391 81 QString::SplitBehavior getSplitBehaviour() const { return m_behaviour; }
Chris@391 82
Chris@148 83 protected slots:
Chris@148 84 void modelTypeChanged(int type);
Chris@148 85 void timingTypeChanged(int type);
Chris@148 86 void sampleRateChanged(QString);
Chris@148 87 void windowSizeChanged(QString);
Chris@148 88
Chris@148 89 protected:
Chris@148 90 ModelType m_modelType;
Chris@148 91 TimingType m_timingType;
Chris@148 92 TimeUnits m_timeUnits;
Chris@148 93 QString m_separator;
Chris@148 94 size_t m_sampleRate;
Chris@148 95 size_t m_windowSize;
Chris@391 96
Chris@391 97 QString::SplitBehavior m_behaviour;
Chris@148 98
Chris@148 99 QList<QStringList> m_example;
Chris@148 100 int m_maxExampleCols;
Chris@148 101 QTableWidget *m_exampleWidget;
Chris@148 102
Chris@148 103 QComboBox *m_modelTypeCombo;
Chris@148 104 QComboBox *m_timingTypeCombo;
Chris@148 105 QLabel *m_sampleRateLabel;
Chris@148 106 QComboBox *m_sampleRateCombo;
Chris@148 107 QLabel *m_windowSizeLabel;
Chris@148 108 QComboBox *m_windowSizeCombo;
Chris@148 109
Chris@148 110 bool guessFormat(QFile *file);
Chris@148 111 void populateExample();
Chris@148 112 };
Chris@148 113
Chris@148 114 #endif
Chris@148 115