@@ -0,0 +1,46 | |||
|
1 | #ifndef SCIQLOP_METATYPES_H | |
|
2 | #define SCIQLOP_METATYPES_H | |
|
3 | ||
|
4 | #include <QMetaType> | |
|
5 | ||
|
6 | /** | |
|
7 | * Struct used to create an instance that registers a type in Qt for signals / slots mechanism | |
|
8 | * @tparam T the type to register | |
|
9 | */ | |
|
10 | template <typename T> | |
|
11 | struct MetaTypeRegistry { | |
|
12 | explicit MetaTypeRegistry() { qRegisterMetaType<T>(); } | |
|
13 | }; | |
|
14 | ||
|
15 | /** | |
|
16 | * This macro can be used to : | |
|
17 | * - declare a type as a Qt meta type | |
|
18 | * - and register it (through a static instance) at the launch of SciQlop, so it can be passed in | |
|
19 | * Qt signals/slots | |
|
20 | * | |
|
21 | * It can be used both in .h or in .cpp files | |
|
22 | * | |
|
23 | * @param NAME name of the instance under which the type will be registered (in uppercase) | |
|
24 | * @param TYPE type to register | |
|
25 | * | |
|
26 | * Example: | |
|
27 | * ~~~cpp | |
|
28 | * // The following macro : | |
|
29 | * // - declares std::shared_ptr<Variable> as a Qt meta type | |
|
30 | * // - registers it through an instance named VAR_SHARED_PTR | |
|
31 | * SCIQLOP_REGISTER_META_TYPE(VAR_SHARED_PTR, std::shared_ptr<Variable>) | |
|
32 | * | |
|
33 | * // The following macro : | |
|
34 | * // - declares a raw pointer of Variable as a Qt meta type | |
|
35 | * // - registers it through an instance named VAR_RAW_PTR | |
|
36 | * SCIQLOP_REGISTER_META_TYPE(VAR_RAW_PTR, Variable*) | |
|
37 | * ~~~ | |
|
38 | * | |
|
39 | */ | |
|
40 | // clang-format off | |
|
41 | #define SCIQLOP_REGISTER_META_TYPE(NAME, TYPE) \ | |
|
42 | Q_DECLARE_METATYPE(TYPE) \ | |
|
43 | const auto NAME = MetaTypeRegistry<TYPE>{}; \ | |
|
44 | // clang-format on | |
|
45 | ||
|
46 | #endif // SCIQLOP_METATYPES_H |
@@ -183,12 +183,10 MainWindow::MainWindow(QWidget *parent) | |||
|
183 | 183 | connect(timeWidget, SIGNAL(timeUpdated(SqpDateTime)), &sqpApp->timeController(), |
|
184 | 184 | SLOT(onTimeToUpdate(SqpDateTime))); |
|
185 | 185 | |
|
186 | qRegisterMetaType<SqpDateTime>(); | |
|
187 | 186 | connect(&sqpApp->timeController(), SIGNAL(timeUpdated(SqpDateTime)), |
|
188 | 187 | &sqpApp->variableController(), SLOT(onDateTimeOnSelection(SqpDateTime))); |
|
189 | 188 | |
|
190 | 189 | // Widgets / widgets connections |
|
191 | qRegisterMetaType<std::shared_ptr<Variable> >(); | |
|
192 | 190 | |
|
193 | 191 | // For the following connections, we use DirectConnection to allow each widget that can |
|
194 | 192 | // potentially attach a menu to the variable's menu to do so before this menu is displayed. |
@@ -5,6 +5,8 | |||
|
5 | 5 | |
|
6 | 6 | #include <QObject> |
|
7 | 7 | |
|
8 | #include <Common/MetaTypes.h> | |
|
9 | ||
|
8 | 10 | #include <Data/SqpDateTime.h> |
|
9 | 11 | |
|
10 | 12 | class DataProviderParameters; |
@@ -33,7 +35,8 public: | |||
|
33 | 35 | signals: |
|
34 | 36 | void dataProvided(std::shared_ptr<IDataSeries> dateSerie, const SqpDateTime &dateTime); |
|
35 | 37 | }; |
|
38 | ||
|
36 | 39 | // Required for using shared_ptr in signals/slots |
|
37 |
|
|
|
40 | SCIQLOP_REGISTER_META_TYPE(IDATAPROVIDER_PTR_REGISTRY, std::shared_ptr<IDataProvider>) | |
|
38 | 41 | |
|
39 | 42 | #endif // SCIQLOP_IDATAPROVIDER_H |
@@ -1,10 +1,10 | |||
|
1 | 1 | #ifndef SCIQLOP_IDATASERIES_H |
|
2 | 2 | #define SCIQLOP_IDATASERIES_H |
|
3 | 3 | |
|
4 | #include <Common/MetaTypes.h> | |
|
4 | 5 | |
|
5 | 6 | #include <memory> |
|
6 | 7 | |
|
7 | #include <QObject> | |
|
8 | 8 | #include <QString> |
|
9 | 9 | |
|
10 | 10 | template <int Dim> |
@@ -49,6 +49,6 public: | |||
|
49 | 49 | }; |
|
50 | 50 | |
|
51 | 51 | // Required for using shared_ptr in signals/slots |
|
52 |
|
|
|
52 | SCIQLOP_REGISTER_META_TYPE(IDATASERIES_PTR_REGISTRY, std::shared_ptr<IDataSeries>) | |
|
53 | 53 | |
|
54 | 54 | #endif // SCIQLOP_IDATASERIES_H |
@@ -6,6 +6,8 | |||
|
6 | 6 | #include <QDateTime> |
|
7 | 7 | #include <QDebug> |
|
8 | 8 | |
|
9 | #include <Common/MetaTypes.h> | |
|
10 | ||
|
9 | 11 | /** |
|
10 | 12 | * @brief The SqpDateTime struct holds the information of time parameters |
|
11 | 13 | */ |
@@ -37,6 +39,6 inline QDebug operator<<(QDebug d, SqpDateTime obj) | |||
|
37 | 39 | } |
|
38 | 40 | |
|
39 | 41 | // Required for using shared_ptr in signals/slots |
|
40 | Q_DECLARE_METATYPE(SqpDateTime) | |
|
42 | SCIQLOP_REGISTER_META_TYPE(SQPDATETIME_REGISTRY, SqpDateTime) | |
|
41 | 43 | |
|
42 | 44 | #endif // SCIQLOP_SQPDATETIME_H |
@@ -3,10 +3,10 | |||
|
3 | 3 | |
|
4 | 4 | #include <Data/SqpDateTime.h> |
|
5 | 5 | |
|
6 | ||
|
7 | 6 | #include <QLoggingCategory> |
|
8 | 7 | #include <QObject> |
|
9 | 8 | |
|
9 | #include <Common/MetaTypes.h> | |
|
10 | 10 | #include <Common/spimpl.h> |
|
11 | 11 | |
|
12 | 12 | Q_DECLARE_LOGGING_CATEGORY(LOG_Variable) |
@@ -50,6 +50,6 private: | |||
|
50 | 50 | }; |
|
51 | 51 | |
|
52 | 52 | // Required for using shared_ptr in signals/slots |
|
53 |
|
|
|
53 | SCIQLOP_REGISTER_META_TYPE(VARIABLE_PTR_REGISTRY, std::shared_ptr<Variable>) | |
|
54 | 54 | |
|
55 | 55 | #endif // SCIQLOP_VARIABLE_H |
@@ -104,8 +104,6 void VariableController::createVariable(const QString &name, | |||
|
104 | 104 | |
|
105 | 105 | // store the provider |
|
106 | 106 | impl->m_VariableToProviderMap[newVariable] = provider; |
|
107 | qRegisterMetaType<std::shared_ptr<IDataSeries> >(); | |
|
108 | qRegisterMetaType<SqpDateTime>(); | |
|
109 | 107 | connect(provider.get(), &IDataProvider::dataProvided, newVariable.get(), |
|
110 | 108 | &Variable::onAddDataSeries); |
|
111 | 109 |
@@ -23,14 +23,12 public: | |||
|
23 | 23 | // /////////////////////////////// // |
|
24 | 24 | |
|
25 | 25 | // VariableController <-> DataSourceController |
|
26 | qRegisterMetaType<std::shared_ptr<IDataProvider> >(); | |
|
27 | 26 | connect(m_DataSourceController.get(), |
|
28 | 27 | SIGNAL(variableCreationRequested(const QString &, std::shared_ptr<IDataProvider>)), |
|
29 | 28 | m_VariableController.get(), |
|
30 | 29 | SLOT(createVariable(const QString &, std::shared_ptr<IDataProvider>))); |
|
31 | 30 | |
|
32 | 31 | // VariableController <-> VisualizationController |
|
33 | qRegisterMetaType<std::shared_ptr<Variable> >(); | |
|
34 | 32 | connect(m_VariableController.get(), SIGNAL(variableCreated(std::shared_ptr<Variable>)), |
|
35 | 33 | m_VisualizationController.get(), |
|
36 | 34 | SIGNAL(variableCreated(std::shared_ptr<Variable>))); |
General Comments 0
You need to be logged in to leave comments.
Login now