lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #ifndef _CSV_FILE_READER_H_ lbajardsilogic@0: #define _CSV_FILE_READER_H_ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@189: #include "DataFileReader.h" lbajardsilogic@189: lbajardsilogic@0: class QFile; lbajardsilogic@0: class QTableWidget; lbajardsilogic@0: class QComboBox; lbajardsilogic@0: class QLabel; lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: class CSVFileReader : public DataFileReader lbajardsilogic@0: { lbajardsilogic@0: public: lbajardsilogic@0: CSVFileReader(QString path, size_t mainModelSampleRate); lbajardsilogic@0: virtual ~CSVFileReader(); lbajardsilogic@0: lbajardsilogic@0: virtual bool isOK() const; lbajardsilogic@0: virtual QString getError() const; lbajardsilogic@0: virtual Model *load() const; lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@0: QFile *m_file; lbajardsilogic@0: QString m_error; lbajardsilogic@0: size_t m_mainModelSampleRate; lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: lbajardsilogic@0: class CSVFormatDialog : public QDialog lbajardsilogic@0: { lbajardsilogic@0: Q_OBJECT lbajardsilogic@0: lbajardsilogic@0: public: lbajardsilogic@0: CSVFormatDialog(QWidget *parent, QFile *file, size_t defaultSampleRate); lbajardsilogic@0: lbajardsilogic@0: ~CSVFormatDialog(); lbajardsilogic@0: lbajardsilogic@0: enum ModelType { lbajardsilogic@0: OneDimensionalModel, lbajardsilogic@0: TwoDimensionalModel, lbajardsilogic@0: ThreeDimensionalModel lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: enum TimingType { lbajardsilogic@0: ExplicitTiming, lbajardsilogic@0: ImplicitTiming lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: enum TimeUnits { lbajardsilogic@0: TimeSeconds, lbajardsilogic@0: TimeAudioFrames, lbajardsilogic@0: TimeWindows lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: ModelType getModelType() const { return m_modelType; } lbajardsilogic@0: TimingType getTimingType() const { return m_timingType; } lbajardsilogic@0: TimeUnits getTimeUnits() const { return m_timeUnits; } lbajardsilogic@0: QString getSeparator() const { return m_separator; } lbajardsilogic@0: size_t getSampleRate() const { return m_sampleRate; } lbajardsilogic@0: size_t getWindowSize() const { return m_windowSize; } lbajardsilogic@0: lbajardsilogic@0: protected slots: lbajardsilogic@0: void modelTypeChanged(int type); lbajardsilogic@0: void timingTypeChanged(int type); lbajardsilogic@0: void sampleRateChanged(QString); lbajardsilogic@0: void windowSizeChanged(QString); lbajardsilogic@0: lbajardsilogic@0: protected: lbajardsilogic@0: ModelType m_modelType; lbajardsilogic@0: TimingType m_timingType; lbajardsilogic@0: TimeUnits m_timeUnits; lbajardsilogic@0: QString m_separator; lbajardsilogic@0: size_t m_sampleRate; lbajardsilogic@0: size_t m_windowSize; lbajardsilogic@0: lbajardsilogic@0: QList m_example; lbajardsilogic@0: int m_maxExampleCols; lbajardsilogic@0: QTableWidget *m_exampleWidget; lbajardsilogic@0: lbajardsilogic@0: QComboBox *m_modelTypeCombo; lbajardsilogic@0: QComboBox *m_timingTypeCombo; lbajardsilogic@0: QLabel *m_sampleRateLabel; lbajardsilogic@0: QComboBox *m_sampleRateCombo; lbajardsilogic@0: QLabel *m_windowSizeLabel; lbajardsilogic@0: QComboBox *m_windowSizeCombo; lbajardsilogic@0: lbajardsilogic@0: bool guessFormat(QFile *file); lbajardsilogic@0: void populateExample(); lbajardsilogic@0: }; lbajardsilogic@0: lbajardsilogic@0: #endif lbajardsilogic@0: