-
Notifications
You must be signed in to change notification settings - Fork 2
/
mainwindow.h
111 lines (82 loc) · 1.98 KB
/
mainwindow.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "xdffile.h"
#include <QThread>
#include <QStringListModel>
#include <QItemSelection>
class StringList : public QStringListModel
{
public:
void append (const QString& string){
insertRows(rowCount(), 1);
setData(index(rowCount()-1), string);
}
StringList& operator<<(const QString& string){
append(string);
return *this;
}
};
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr, const char* filename = nullptr);
~MainWindow() noexcept override;
private slots:
void on_actionOpen_triggered();
void on_actionClose_triggered();
void on_actionSave_As_triggered();
void on_actionSave_triggered();
void onTextChanged();
void handleSelectionChanged(const QItemSelection& selection);
void errorDialog(QString errorMessage);
private:
Ui::MainWindow *ui;
std::shared_ptr<XDFfile> xdfFile;
std::shared_ptr<StringList> chunkNameList;
void loadfile(QString xdfFileName);
};
class OpenerThread : public QThread
{
Q_OBJECT
public:
OpenerThread() {}
std::shared_ptr<XDFfile> xdfFile;
std::shared_ptr<StringList> chunkNameList;
QProgressBar *progressBar;
signals:
void errorMessageSignal(QString errorMessage);
private:
void run() {
try {
xdfFile->open(progressBar);
for(int i=0; i<xdfFile->getNChunks(); i++) {
chunkNameList->append(xdfFile->getChunkName(i));
}
} catch (const std::exception &ex) {
emit errorMessageSignal(ex.what());
}
}
};
class SaverThread : public QThread
{
Q_OBJECT
public:
std::shared_ptr<XDFfile> xdfFile;
QString xdfFileName;
QProgressBar *progressBar;
signals:
void errorMessageSignal(QString errorMessage);
private:
void run() {
try {
xdfFile->saveAs(xdfFileName, progressBar);
} catch (const std::exception &ex) {
emit errorMessageSignal(ex.what());
}
}
};
#endif // MAINWINDOW_H