- added multiple format support for input data (now supports csv, tabs, ; and spaces)
[mldemos:baraks-mldemos.git] / _IOPlugins / CSVImport / CSVImport.h
1 /*********************************************************************
2 MLDemos: A User-Friendly visualization toolkit for machine learning
3 Copyright (C) 2011 Chrstophe Paccolat
4 Contact: mldemos@b4silio.com
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public License,
8 version 3 as published by the Free Software Foundation.
9
10 This library is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free
17 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *********************************************************************/
19 // http://stackoverflow.com/users/14065/martin
20 // http://stackoverflow.com/questions/1120140/csv-parser-in-c
21 // http://www.gamedev.net/topic/603211-get-type-of-string-in-c/
22 // http://www.gamedev.net/user/78572-rip-off/
23
24
25 #ifndef WEBIMPORT_H_INCLUDED
26 #define WEBIMPORT_H_INCLUDED
27
28 #include "parser.h"
29 #include <interfaces.h>
30 #include "ui_CSVImport.h"
31 #include <QFileDialog>
32 #include <QTableView>
33 #include <QDebug>
34
35 class CSVImport : public QObject, public InputOutputInterface
36 {
37         Q_OBJECT
38         Q_INTERFACES(InputOutputInterface)
39
40 public:
41         const char* QueryClassifierSignal() {return SIGNAL(QueryClassifier(std::vector<fvec>));}
42         const char* QueryRegressorSignal() {return SIGNAL(QueryRegressor(std::vector<fvec>));}
43         const char* QueryDynamicalSignal() {return SIGNAL(QueryDynamical(std::vector<fvec>));}
44         const char* QueryClustererSignal() {return SIGNAL(QueryClusterer(std::vector<fvec>));}
45         const char* QueryMaximizerSignal() {return SIGNAL(QueryMaximizer(std::vector<fvec>));}
46     const char* SetDataSignal() {return SIGNAL(SetData(std::vector<fvec>, ivec, std::vector<ipair>, bool));}
47         const char* SetTimeseriesSignal() {return SIGNAL(SetTimeseries(std::vector<TimeSerie>));}
48         const char* FetchResultsSlot() {return SLOT(FetchResults(std::vector<fvec>));}
49         const char* DoneSignal() {return SIGNAL(Done(QObject *));}
50     QObject *object(){return this;}
51     QString GetName(){return "CSVImport";}
52
53         void Start();
54         void Stop();
55
56     CSVImport();
57     ~CSVImport();
58
59 private:
60     Ui::CSVImportDialog *gui;
61         QDialog *guiDialog;
62     CSVParser *inputParser;
63 //    QLabel *eigLabel;
64
65     bool saveFile(const QString &filename, QIODevice *data);
66
67 signals:
68         void Done(QObject *);
69     void SetData(std::vector<fvec> samples, ivec labels, std::vector<ipair> trajectories, bool bProjected);
70         void SetTimeseries(std::vector<TimeSerie> series);
71         void QueryClassifier(std::vector<fvec> samples);
72         void QueryRegressor(std::vector<fvec> samples);
73         void QueryDynamical(std::vector<fvec> samples);
74         void QueryClusterer(std::vector<fvec> samples);
75         void QueryMaximizer(std::vector<fvec> samples);
76 public slots:
77         void FetchResults(std::vector<fvec> results);
78         void Closing();
79     void Parse(QString filename);
80         void LoadFile();
81 private slots:
82     void headerChanged();
83     void spinBoxChanged(int value);
84     void on_dumpButton_clicked();
85 //    void on_pcaButton_clicked();
86 };
87
88 #endif // WEBIMPORT_H_INCLUDED