|
@@
-1,188
+1,203
|
|
1
|
#include "SqpApplication.h"
|
|
1
|
#include "SqpApplication.h"
|
|
2
|
|
|
2
|
|
|
|
|
|
3
|
#include <Catalogue/CatalogueController.h>
|
|
3
|
#include <Data/IDataProvider.h>
|
|
4
|
#include <Data/IDataProvider.h>
|
|
4
|
#include <DataSource/DataSourceController.h>
|
|
5
|
#include <DataSource/DataSourceController.h>
|
|
5
|
#include <DragAndDrop/DragDropHelper.h>
|
|
6
|
#include <DragAndDrop/DragDropHelper.h>
|
|
6
|
#include <Network/NetworkController.h>
|
|
7
|
#include <Network/NetworkController.h>
|
|
7
|
#include <QThread>
|
|
8
|
#include <QThread>
|
|
8
|
#include <Time/TimeController.h>
|
|
9
|
#include <Time/TimeController.h>
|
|
9
|
#include <Variable/Variable.h>
|
|
10
|
#include <Variable/Variable.h>
|
|
10
|
#include <Variable/VariableController.h>
|
|
11
|
#include <Variable/VariableController.h>
|
|
11
|
#include <Variable/VariableModel.h>
|
|
12
|
#include <Variable/VariableModel.h>
|
|
12
|
#include <Visualization/VisualizationController.h>
|
|
13
|
#include <Visualization/VisualizationController.h>
|
|
13
|
|
|
14
|
|
|
14
|
Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication")
|
|
15
|
Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication")
|
|
15
|
|
|
16
|
|
|
16
|
class SqpApplication::SqpApplicationPrivate {
|
|
17
|
class SqpApplication::SqpApplicationPrivate {
|
|
17
|
public:
|
|
18
|
public:
|
|
18
|
SqpApplicationPrivate()
|
|
19
|
SqpApplicationPrivate()
|
|
19
|
: m_DataSourceController{std::make_unique<DataSourceController>()},
|
|
20
|
: m_DataSourceController{std::make_unique<DataSourceController>()},
|
|
20
|
m_VariableController{std::make_unique<VariableController>()},
|
|
21
|
m_VariableController{std::make_unique<VariableController>()},
|
|
21
|
m_TimeController{std::make_unique<TimeController>()},
|
|
22
|
m_TimeController{std::make_unique<TimeController>()},
|
|
22
|
m_NetworkController{std::make_unique<NetworkController>()},
|
|
23
|
m_NetworkController{std::make_unique<NetworkController>()},
|
|
23
|
m_VisualizationController{std::make_unique<VisualizationController>()},
|
|
24
|
m_VisualizationController{std::make_unique<VisualizationController>()},
|
|
24
|
m_DragDropHelper{std::make_unique<DragDropHelper>()},
|
|
25
|
m_DragDropHelper{std::make_unique<DragDropHelper>()},
|
|
|
|
|
26
|
m_CatalogueController{std::make_unique<CatalogueController>()},
|
|
25
|
m_PlotInterractionMode(SqpApplication::PlotsInteractionMode::None),
|
|
27
|
m_PlotInterractionMode(SqpApplication::PlotsInteractionMode::None),
|
|
26
|
m_PlotCursorMode(SqpApplication::PlotsCursorMode::NoCursor)
|
|
28
|
m_PlotCursorMode(SqpApplication::PlotsCursorMode::NoCursor)
|
|
27
|
{
|
|
29
|
{
|
|
28
|
// /////////////////////////////// //
|
|
30
|
// /////////////////////////////// //
|
|
29
|
// Connections between controllers //
|
|
31
|
// Connections between controllers //
|
|
30
|
// /////////////////////////////// //
|
|
32
|
// /////////////////////////////// //
|
|
31
|
|
|
33
|
|
|
32
|
// VariableController <-> DataSourceController
|
|
34
|
// VariableController <-> DataSourceController
|
|
33
|
connect(m_DataSourceController.get(),
|
|
35
|
connect(m_DataSourceController.get(),
|
|
34
|
SIGNAL(variableCreationRequested(const QString &, const QVariantHash &,
|
|
36
|
SIGNAL(variableCreationRequested(const QString &, const QVariantHash &,
|
|
35
|
std::shared_ptr<IDataProvider>)),
|
|
37
|
std::shared_ptr<IDataProvider>)),
|
|
36
|
m_VariableController.get(),
|
|
38
|
m_VariableController.get(),
|
|
37
|
SLOT(createVariable(const QString &, const QVariantHash &,
|
|
39
|
SLOT(createVariable(const QString &, const QVariantHash &,
|
|
38
|
std::shared_ptr<IDataProvider>)));
|
|
40
|
std::shared_ptr<IDataProvider>)));
|
|
39
|
|
|
41
|
|
|
40
|
connect(m_VariableController->variableModel(), &VariableModel::requestVariable,
|
|
42
|
connect(m_VariableController->variableModel(), &VariableModel::requestVariable,
|
|
41
|
m_DataSourceController.get(), &DataSourceController::requestVariable);
|
|
43
|
m_DataSourceController.get(), &DataSourceController::requestVariable);
|
|
42
|
|
|
44
|
|
|
43
|
// VariableController <-> VisualizationController
|
|
45
|
// VariableController <-> VisualizationController
|
|
44
|
connect(m_VariableController.get(),
|
|
46
|
connect(m_VariableController.get(),
|
|
45
|
SIGNAL(variableAboutToBeDeleted(std::shared_ptr<Variable>)),
|
|
47
|
SIGNAL(variableAboutToBeDeleted(std::shared_ptr<Variable>)),
|
|
46
|
m_VisualizationController.get(),
|
|
48
|
m_VisualizationController.get(),
|
|
47
|
SIGNAL(variableAboutToBeDeleted(std::shared_ptr<Variable>)), Qt::DirectConnection);
|
|
49
|
SIGNAL(variableAboutToBeDeleted(std::shared_ptr<Variable>)), Qt::DirectConnection);
|
|
48
|
|
|
50
|
|
|
49
|
connect(m_VariableController.get(),
|
|
51
|
connect(m_VariableController.get(),
|
|
50
|
SIGNAL(rangeChanged(std::shared_ptr<Variable>, const SqpRange &)),
|
|
52
|
SIGNAL(rangeChanged(std::shared_ptr<Variable>, const SqpRange &)),
|
|
51
|
m_VisualizationController.get(),
|
|
53
|
m_VisualizationController.get(),
|
|
52
|
SIGNAL(rangeChanged(std::shared_ptr<Variable>, const SqpRange &)));
|
|
54
|
SIGNAL(rangeChanged(std::shared_ptr<Variable>, const SqpRange &)));
|
|
53
|
|
|
55
|
|
|
54
|
|
|
56
|
|
|
55
|
m_DataSourceController->moveToThread(&m_DataSourceControllerThread);
|
|
57
|
m_DataSourceController->moveToThread(&m_DataSourceControllerThread);
|
|
56
|
m_DataSourceControllerThread.setObjectName("DataSourceControllerThread");
|
|
58
|
m_DataSourceControllerThread.setObjectName("DataSourceControllerThread");
|
|
57
|
m_NetworkController->moveToThread(&m_NetworkControllerThread);
|
|
59
|
m_NetworkController->moveToThread(&m_NetworkControllerThread);
|
|
58
|
m_NetworkControllerThread.setObjectName("NetworkControllerThread");
|
|
60
|
m_NetworkControllerThread.setObjectName("NetworkControllerThread");
|
|
59
|
m_VariableController->moveToThread(&m_VariableControllerThread);
|
|
61
|
m_VariableController->moveToThread(&m_VariableControllerThread);
|
|
60
|
m_VariableControllerThread.setObjectName("VariableControllerThread");
|
|
62
|
m_VariableControllerThread.setObjectName("VariableControllerThread");
|
|
61
|
m_VisualizationController->moveToThread(&m_VisualizationControllerThread);
|
|
63
|
m_VisualizationController->moveToThread(&m_VisualizationControllerThread);
|
|
62
|
m_VisualizationControllerThread.setObjectName("VsualizationControllerThread");
|
|
64
|
m_VisualizationControllerThread.setObjectName("VsualizationControllerThread");
|
|
|
|
|
65
|
m_CatalogueController->moveToThread(&m_CatalogueControllerThread);
|
|
|
|
|
66
|
m_CatalogueControllerThread.setObjectName("CatalogueControllerThread");
|
|
63
|
|
|
67
|
|
|
64
|
|
|
68
|
|
|
65
|
// Additionnal init
|
|
69
|
// Additionnal init
|
|
66
|
m_VariableController->setTimeController(m_TimeController.get());
|
|
70
|
m_VariableController->setTimeController(m_TimeController.get());
|
|
67
|
}
|
|
71
|
}
|
|
68
|
|
|
72
|
|
|
69
|
virtual ~SqpApplicationPrivate()
|
|
73
|
virtual ~SqpApplicationPrivate()
|
|
70
|
{
|
|
74
|
{
|
|
71
|
m_DataSourceControllerThread.quit();
|
|
75
|
m_DataSourceControllerThread.quit();
|
|
72
|
m_DataSourceControllerThread.wait();
|
|
76
|
m_DataSourceControllerThread.wait();
|
|
73
|
|
|
77
|
|
|
74
|
m_NetworkControllerThread.quit();
|
|
78
|
m_NetworkControllerThread.quit();
|
|
75
|
m_NetworkControllerThread.wait();
|
|
79
|
m_NetworkControllerThread.wait();
|
|
76
|
|
|
80
|
|
|
77
|
m_VariableControllerThread.quit();
|
|
81
|
m_VariableControllerThread.quit();
|
|
78
|
m_VariableControllerThread.wait();
|
|
82
|
m_VariableControllerThread.wait();
|
|
79
|
|
|
83
|
|
|
80
|
m_VisualizationControllerThread.quit();
|
|
84
|
m_VisualizationControllerThread.quit();
|
|
81
|
m_VisualizationControllerThread.wait();
|
|
85
|
m_VisualizationControllerThread.wait();
|
|
|
|
|
86
|
|
|
|
|
|
87
|
m_CatalogueControllerThread.quit();
|
|
|
|
|
88
|
m_CatalogueControllerThread.wait();
|
|
82
|
}
|
|
89
|
}
|
|
83
|
|
|
90
|
|
|
84
|
std::unique_ptr<DataSourceController> m_DataSourceController;
|
|
91
|
std::unique_ptr<DataSourceController> m_DataSourceController;
|
|
85
|
std::unique_ptr<VariableController> m_VariableController;
|
|
92
|
std::unique_ptr<VariableController> m_VariableController;
|
|
86
|
std::unique_ptr<TimeController> m_TimeController;
|
|
93
|
std::unique_ptr<TimeController> m_TimeController;
|
|
87
|
std::unique_ptr<NetworkController> m_NetworkController;
|
|
94
|
std::unique_ptr<NetworkController> m_NetworkController;
|
|
88
|
std::unique_ptr<VisualizationController> m_VisualizationController;
|
|
95
|
std::unique_ptr<VisualizationController> m_VisualizationController;
|
|
|
|
|
96
|
std::unique_ptr<CatalogueController> m_CatalogueController;
|
|
89
|
QThread m_DataSourceControllerThread;
|
|
97
|
QThread m_DataSourceControllerThread;
|
|
90
|
QThread m_NetworkControllerThread;
|
|
98
|
QThread m_NetworkControllerThread;
|
|
91
|
QThread m_VariableControllerThread;
|
|
99
|
QThread m_VariableControllerThread;
|
|
92
|
QThread m_VisualizationControllerThread;
|
|
100
|
QThread m_VisualizationControllerThread;
|
|
|
|
|
101
|
QThread m_CatalogueControllerThread;
|
|
93
|
|
|
102
|
|
|
94
|
std::unique_ptr<DragDropHelper> m_DragDropHelper;
|
|
103
|
std::unique_ptr<DragDropHelper> m_DragDropHelper;
|
|
95
|
|
|
104
|
|
|
96
|
SqpApplication::PlotsInteractionMode m_PlotInterractionMode;
|
|
105
|
SqpApplication::PlotsInteractionMode m_PlotInterractionMode;
|
|
97
|
SqpApplication::PlotsCursorMode m_PlotCursorMode;
|
|
106
|
SqpApplication::PlotsCursorMode m_PlotCursorMode;
|
|
98
|
};
|
|
107
|
};
|
|
99
|
|
|
108
|
|
|
100
|
|
|
109
|
|
|
101
|
SqpApplication::SqpApplication(int &argc, char **argv)
|
|
110
|
SqpApplication::SqpApplication(int &argc, char **argv)
|
|
102
|
: QApplication{argc, argv}, impl{spimpl::make_unique_impl<SqpApplicationPrivate>()}
|
|
111
|
: QApplication{argc, argv}, impl{spimpl::make_unique_impl<SqpApplicationPrivate>()}
|
|
103
|
{
|
|
112
|
{
|
|
104
|
qCDebug(LOG_SqpApplication()) << tr("SqpApplication construction") << QThread::currentThread();
|
|
113
|
qCDebug(LOG_SqpApplication()) << tr("SqpApplication construction") << QThread::currentThread();
|
|
105
|
|
|
114
|
|
|
106
|
connect(&impl->m_DataSourceControllerThread, &QThread::started,
|
|
115
|
connect(&impl->m_DataSourceControllerThread, &QThread::started,
|
|
107
|
impl->m_DataSourceController.get(), &DataSourceController::initialize);
|
|
116
|
impl->m_DataSourceController.get(), &DataSourceController::initialize);
|
|
108
|
connect(&impl->m_DataSourceControllerThread, &QThread::finished,
|
|
117
|
connect(&impl->m_DataSourceControllerThread, &QThread::finished,
|
|
109
|
impl->m_DataSourceController.get(), &DataSourceController::finalize);
|
|
118
|
impl->m_DataSourceController.get(), &DataSourceController::finalize);
|
|
110
|
|
|
119
|
|
|
111
|
connect(&impl->m_NetworkControllerThread, &QThread::started, impl->m_NetworkController.get(),
|
|
120
|
connect(&impl->m_NetworkControllerThread, &QThread::started, impl->m_NetworkController.get(),
|
|
112
|
&NetworkController::initialize);
|
|
121
|
&NetworkController::initialize);
|
|
113
|
connect(&impl->m_NetworkControllerThread, &QThread::finished, impl->m_NetworkController.get(),
|
|
122
|
connect(&impl->m_NetworkControllerThread, &QThread::finished, impl->m_NetworkController.get(),
|
|
114
|
&NetworkController::finalize);
|
|
123
|
&NetworkController::finalize);
|
|
115
|
|
|
124
|
|
|
116
|
connect(&impl->m_VariableControllerThread, &QThread::started, impl->m_VariableController.get(),
|
|
125
|
connect(&impl->m_VariableControllerThread, &QThread::started, impl->m_VariableController.get(),
|
|
117
|
&VariableController::initialize);
|
|
126
|
&VariableController::initialize);
|
|
118
|
connect(&impl->m_VariableControllerThread, &QThread::finished, impl->m_VariableController.get(),
|
|
127
|
connect(&impl->m_VariableControllerThread, &QThread::finished, impl->m_VariableController.get(),
|
|
119
|
&VariableController::finalize);
|
|
128
|
&VariableController::finalize);
|
|
120
|
|
|
129
|
|
|
121
|
connect(&impl->m_VisualizationControllerThread, &QThread::started,
|
|
130
|
connect(&impl->m_VisualizationControllerThread, &QThread::started,
|
|
122
|
impl->m_VisualizationController.get(), &VisualizationController::initialize);
|
|
131
|
impl->m_VisualizationController.get(), &VisualizationController::initialize);
|
|
123
|
connect(&impl->m_VisualizationControllerThread, &QThread::finished,
|
|
132
|
connect(&impl->m_VisualizationControllerThread, &QThread::finished,
|
|
124
|
impl->m_VisualizationController.get(), &VisualizationController::finalize);
|
|
133
|
impl->m_VisualizationController.get(), &VisualizationController::finalize);
|
|
125
|
|
|
134
|
|
|
|
|
|
135
|
connect(&impl->m_CatalogueControllerThread, &QThread::started,
|
|
|
|
|
136
|
impl->m_CatalogueController.get(), &CatalogueController::initialize);
|
|
|
|
|
137
|
connect(&impl->m_CatalogueControllerThread, &QThread::finished,
|
|
|
|
|
138
|
impl->m_CatalogueController.get(), &CatalogueController::finalize);
|
|
|
|
|
139
|
|
|
126
|
impl->m_DataSourceControllerThread.start();
|
|
140
|
impl->m_DataSourceControllerThread.start();
|
|
127
|
impl->m_NetworkControllerThread.start();
|
|
141
|
impl->m_NetworkControllerThread.start();
|
|
128
|
impl->m_VariableControllerThread.start();
|
|
142
|
impl->m_VariableControllerThread.start();
|
|
129
|
impl->m_VisualizationControllerThread.start();
|
|
143
|
impl->m_VisualizationControllerThread.start();
|
|
|
|
|
144
|
impl->m_CatalogueControllerThread.start();
|
|
130
|
}
|
|
145
|
}
|
|
131
|
|
|
146
|
|
|
132
|
SqpApplication::~SqpApplication()
|
|
147
|
SqpApplication::~SqpApplication()
|
|
133
|
{
|
|
148
|
{
|
|
134
|
}
|
|
149
|
}
|
|
135
|
|
|
150
|
|
|
136
|
void SqpApplication::initialize()
|
|
151
|
void SqpApplication::initialize()
|
|
137
|
{
|
|
152
|
{
|
|
138
|
}
|
|
153
|
}
|
|
139
|
|
|
154
|
|
|
140
|
DataSourceController &SqpApplication::dataSourceController() noexcept
|
|
155
|
DataSourceController &SqpApplication::dataSourceController() noexcept
|
|
141
|
{
|
|
156
|
{
|
|
142
|
return *impl->m_DataSourceController;
|
|
157
|
return *impl->m_DataSourceController;
|
|
143
|
}
|
|
158
|
}
|
|
144
|
|
|
159
|
|
|
145
|
NetworkController &SqpApplication::networkController() noexcept
|
|
160
|
NetworkController &SqpApplication::networkController() noexcept
|
|
146
|
{
|
|
161
|
{
|
|
147
|
return *impl->m_NetworkController;
|
|
162
|
return *impl->m_NetworkController;
|
|
148
|
}
|
|
163
|
}
|
|
149
|
|
|
164
|
|
|
150
|
TimeController &SqpApplication::timeController() noexcept
|
|
165
|
TimeController &SqpApplication::timeController() noexcept
|
|
151
|
{
|
|
166
|
{
|
|
152
|
return *impl->m_TimeController;
|
|
167
|
return *impl->m_TimeController;
|
|
153
|
}
|
|
168
|
}
|
|
154
|
|
|
169
|
|
|
155
|
VariableController &SqpApplication::variableController() noexcept
|
|
170
|
VariableController &SqpApplication::variableController() noexcept
|
|
156
|
{
|
|
171
|
{
|
|
157
|
return *impl->m_VariableController;
|
|
172
|
return *impl->m_VariableController;
|
|
158
|
}
|
|
173
|
}
|
|
159
|
|
|
174
|
|
|
160
|
VisualizationController &SqpApplication::visualizationController() noexcept
|
|
175
|
VisualizationController &SqpApplication::visualizationController() noexcept
|
|
161
|
{
|
|
176
|
{
|
|
162
|
return *impl->m_VisualizationController;
|
|
177
|
return *impl->m_VisualizationController;
|
|
163
|
}
|
|
178
|
}
|
|
164
|
|
|
179
|
|
|
165
|
DragDropHelper &SqpApplication::dragDropHelper() noexcept
|
|
180
|
DragDropHelper &SqpApplication::dragDropHelper() noexcept
|
|
166
|
{
|
|
181
|
{
|
|
167
|
return *impl->m_DragDropHelper;
|
|
182
|
return *impl->m_DragDropHelper;
|
|
168
|
}
|
|
183
|
}
|
|
169
|
|
|
184
|
|
|
170
|
SqpApplication::PlotsInteractionMode SqpApplication::plotsInteractionMode() const
|
|
185
|
SqpApplication::PlotsInteractionMode SqpApplication::plotsInteractionMode() const
|
|
171
|
{
|
|
186
|
{
|
|
172
|
return impl->m_PlotInterractionMode;
|
|
187
|
return impl->m_PlotInterractionMode;
|
|
173
|
}
|
|
188
|
}
|
|
174
|
|
|
189
|
|
|
175
|
void SqpApplication::setPlotsInteractionMode(SqpApplication::PlotsInteractionMode mode)
|
|
190
|
void SqpApplication::setPlotsInteractionMode(SqpApplication::PlotsInteractionMode mode)
|
|
176
|
{
|
|
191
|
{
|
|
177
|
impl->m_PlotInterractionMode = mode;
|
|
192
|
impl->m_PlotInterractionMode = mode;
|
|
178
|
}
|
|
193
|
}
|
|
179
|
|
|
194
|
|
|
180
|
SqpApplication::PlotsCursorMode SqpApplication::plotsCursorMode() const
|
|
195
|
SqpApplication::PlotsCursorMode SqpApplication::plotsCursorMode() const
|
|
181
|
{
|
|
196
|
{
|
|
182
|
return impl->m_PlotCursorMode;
|
|
197
|
return impl->m_PlotCursorMode;
|
|
183
|
}
|
|
198
|
}
|
|
184
|
|
|
199
|
|
|
185
|
void SqpApplication::setPlotsCursorMode(SqpApplication::PlotsCursorMode mode)
|
|
200
|
void SqpApplication::setPlotsCursorMode(SqpApplication::PlotsCursorMode mode)
|
|
186
|
{
|
|
201
|
{
|
|
187
|
impl->m_PlotCursorMode = mode;
|
|
202
|
impl->m_PlotCursorMode = mode;
|
|
188
|
}
|
|
203
|
}
|