@@ -17,6 +17,7 Q_DECLARE_LOGGING_CATEGORY(LOG_PluginManager) | |||||
17 | class SCIQLOP_CORE_EXPORT PluginManager { |
|
17 | class SCIQLOP_CORE_EXPORT PluginManager { | |
18 | public: |
|
18 | public: | |
19 | explicit PluginManager(); |
|
19 | explicit PluginManager(); | |
|
20 | ~PluginManager(); | |||
20 |
|
21 | |||
21 | /** |
|
22 | /** | |
22 | * Loads plugins into SciQlop. The loaded plugins are those located in the directory passed in |
|
23 | * Loads plugins into SciQlop. The loaded plugins are those located in the directory passed in |
@@ -1,7 +1,7 | |||||
1 |
|
1 | |||
2 | catalogicpp_dep = dependency('catalogicpp', required : true, fallback:['catalogicpp','catalogicpp_dep']) |
|
2 | catalogicpp_dep = dependency('catalogicpp', required : true, fallback:['catalogicpp','catalogicpp_dep']) | |
3 | pybind11_dep = dependency('pybind11', required : true, fallback:['pybind11','pybind11_dep']) |
|
3 | pybind11_dep = dependency('pybind11', required : true, fallback:['pybind11','pybind11_dep']) | |
4 |
|
4 | timeseries_dep = dependency('TimeSeries', required : true, fallback:['TimeSeries','time_series_dep']) | ||
5 |
|
5 | |||
6 | core_moc_headers = [ |
|
6 | core_moc_headers = [ | |
7 | './include/Common/containers.h', |
|
7 | './include/Common/containers.h', | |
@@ -16,24 +16,15 core_moc_headers = [ | |||||
16 | './include/Common/MetaTypes.h', |
|
16 | './include/Common/MetaTypes.h', | |
17 | './include/Common/cpp_utils.h', |
|
17 | './include/Common/cpp_utils.h', | |
18 | './include/Common/SortUtils.h', |
|
18 | './include/Common/SortUtils.h', | |
19 | './include/Data/DataSeries.h', |
|
|||
20 | './include/Data/DataSeriesIterator.h', |
|
|||
21 | './include/Data/DateTimeRangeHelper.h', |
|
19 | './include/Data/DateTimeRangeHelper.h', | |
22 |
'./include/Data/S |
|
20 | './include/Data/ScalarTimeSerie.h', | |
23 | './include/Data/DateTimeRange.h', |
|
21 | './include/Data/DateTimeRange.h', | |
24 | './include/Data/VectorSeries.h', |
|
|||
25 | './include/Data/DataProviderParameters.h', |
|
22 | './include/Data/DataProviderParameters.h', | |
26 |
'./include/Data/ |
|
23 | './include/Data/VectorTimeSerie.h', | |
27 | './include/Data/Unit.h', |
|
|||
28 | './include/Data/ScalarSeries.h', |
|
|||
29 | './include/Data/SqpIterator.h', |
|
24 | './include/Data/SqpIterator.h', | |
30 | './include/Data/IDataProvider.h', |
|
25 | './include/Data/IDataProvider.h', | |
31 |
'./include/Data/ |
|
26 | './include/Data/SpectrogramTimeSerie.h', | |
32 | './include/Data/OptionalAxis.h', |
|
|||
33 | './include/Data/IDataSeries.h', |
|
|||
34 | './include/Data/DataSeriesType.h', |
|
27 | './include/Data/DataSeriesType.h', | |
35 | './include/Data/ArrayDataIterator.h', |
|
|||
36 | './include/Data/DataSeriesMergeHelper.h', |
|
|||
37 | './include/CoreGlobal.h', |
|
28 | './include/CoreGlobal.h', | |
38 | './include/Network/NetworkController.h', |
|
29 | './include/Network/NetworkController.h', | |
39 | './include/Network/Response.h', |
|
30 | './include/Network/Response.h', | |
@@ -50,16 +41,11 core_moc_headers = [ | |||||
50 | './include/Catalogue/CatalogueController.h', |
|
41 | './include/Catalogue/CatalogueController.h', | |
51 | './include/Plugin/IPlugin.h', |
|
42 | './include/Plugin/IPlugin.h', | |
52 | './include/Variable/VariableModel2.h', |
|
43 | './include/Variable/VariableModel2.h', | |
53 | './include/Variable/Variable.h', |
|
|||
54 | './include/Variable/VariableCacheStrategy.h', |
|
|||
55 | './include/Variable/VariableController2.h', |
|
44 | './include/Variable/VariableController2.h', | |
56 |
'./include/Variable/Variable |
|
45 | './include/Variable/Variable2.h', | |
57 | './include/Variable/VariableSynchronizationGroup2.h', |
|
46 | './include/Variable/VariableSynchronizationGroup2.h', | |
58 | './include/Variable/ProportionalCacheStrategy.h', |
|
|||
59 | './include/Variable/private/VCTransaction.h', |
|
47 | './include/Variable/private/VCTransaction.h', | |
60 | './include/Variable/SingleThresholdCacheStrategy.h', |
|
48 | './include/Visualization/VisualizationController.h'] | |
61 | './include/Visualization/VisualizationController.h' |
|
|||
62 | ] |
|
|||
63 |
|
49 | |||
64 |
|
50 | |||
65 | core_moc_sources = ['src/Network/Downloader.cpp'] |
|
51 | core_moc_sources = ['src/Network/Downloader.cpp'] | |
@@ -72,13 +58,6 core_sources = [ | |||||
72 | './src/Common/SignalWaiter.cpp', |
|
58 | './src/Common/SignalWaiter.cpp', | |
73 | './src/Common/DateUtils.cpp', |
|
59 | './src/Common/DateUtils.cpp', | |
74 | './src/Common/StringUtils.cpp', |
|
60 | './src/Common/StringUtils.cpp', | |
75 | './src/Data/VectorSeries.cpp', |
|
|||
76 | './src/Data/ScalarSeries.cpp', |
|
|||
77 | './src/Data/OptionalAxis.cpp', |
|
|||
78 | './src/Data/DataSeriesIterator.cpp', |
|
|||
79 | './src/Data/SpectrogramSeries.cpp', |
|
|||
80 | './src/Data/ArrayDataIterator.cpp', |
|
|||
81 | './src/Data/DataSeriesUtils.cpp', |
|
|||
82 | './src/Network/Downloader.cpp', |
|
61 | './src/Network/Downloader.cpp', | |
83 | './src/Network/NetworkController.cpp', |
|
62 | './src/Network/NetworkController.cpp', | |
84 | './src/Settings/SqpSettingsDefs.cpp', |
|
63 | './src/Settings/SqpSettingsDefs.cpp', | |
@@ -88,13 +67,10 core_sources = [ | |||||
88 | './src/DataSource/DataSourceController.cpp', |
|
67 | './src/DataSource/DataSourceController.cpp', | |
89 | './src/Time/TimeController.cpp', |
|
68 | './src/Time/TimeController.cpp', | |
90 | './src/PluginManager/PluginManager.cpp', |
|
69 | './src/PluginManager/PluginManager.cpp', | |
91 | './src/pybind11_wrappers/CatalogWrappers.cpp', |
|
|||
92 | #'./src/pybind11_wrappers/QtWrappers.cpp', |
|
|||
93 | #'./src/pybind11_wrappers/CoreWrappers.cpp', |
|
|||
94 | './src/Version.cpp', |
|
70 | './src/Version.cpp', | |
95 | './src/Catalogue/CatalogueController.cpp', |
|
71 | './src/Catalogue/CatalogueController.cpp', | |
96 | './src/Variable/Variable.cpp', |
|
|||
97 | './src/Variable/VariableSynchronizationGroup2.cpp', |
|
72 | './src/Variable/VariableSynchronizationGroup2.cpp', | |
|
73 | './src/Variable/Variable2.cpp', | |||
98 | './src/Variable/VariableController2.cpp', |
|
74 | './src/Variable/VariableController2.cpp', | |
99 | './src/Variable/VariableModel2.cpp', |
|
75 | './src/Variable/VariableModel2.cpp', | |
100 | './src/Visualization/VisualizationController.cpp'] |
|
76 | './src/Visualization/VisualizationController.cpp'] | |
@@ -107,16 +83,22 sciqlop_core_lib = library('sciqlopcore', | |||||
107 | core_moc_files, |
|
83 | core_moc_files, | |
108 | cpp_args : '-DCORE_LIB', |
|
84 | cpp_args : '-DCORE_LIB', | |
109 | include_directories : core_inc, |
|
85 | include_directories : core_inc, | |
110 | dependencies : [qt5core, qt5network, catalogicpp_dep, pybind11_dep], |
|
86 | dependencies : [qt5core, qt5network, catalogicpp_dep, pybind11_dep, timeseries_dep], | |
111 | install : true |
|
87 | install : true | |
112 | ) |
|
88 | ) | |
113 |
|
89 | |||
114 |
|
90 | |||
115 | sciqlop_core = declare_dependency(link_with : sciqlop_core_lib, |
|
91 | sciqlop_core = declare_dependency(link_with : sciqlop_core_lib, | |
116 | include_directories : core_inc, |
|
92 | include_directories : core_inc, | |
117 | dependencies : [qt5core, qt5network, catalogicpp_dep, pybind11_dep]) |
|
93 | dependencies : [qt5core, qt5network, catalogicpp_dep, pybind11_dep, timeseries_dep]) | |
118 |
|
94 | |||
119 |
|
95 | |||
|
96 | [ | |||
|
97 | './src/pybind11_wrappers/CatalogWrappers.cpp', | |||
|
98 | './src/pybind11_wrappers/QtWrappers.cpp', | |||
|
99 | './src/pybind11_wrappers/CoreWrappers.cpp' | |||
|
100 | ] | |||
|
101 | ||||
120 |
|
102 | |||
121 | subdir('tests') |
|
103 | subdir('tests') | |
122 |
|
104 |
@@ -78,9 +78,10 struct PluginManager::PluginManagerPrivate { | |||||
78 | loadState.setError(QObject::tr("name '%1' already registered").arg(pluginName)); |
|
78 | loadState.setError(QObject::tr("name '%1' already registered").arg(pluginName)); | |
79 | } |
|
79 | } | |
80 | else { |
|
80 | else { | |
81 |
if (auto plugin |
|
81 | if (auto plugin = pluginLoader.instance()) { | |
82 |
plugin |
|
82 | qobject_cast<IPlugin *>(plugin)->initialize(); | |
83 | m_RegisteredPlugins.insert(pluginName, pluginPath); |
|
83 | m_RegisteredPlugins.insert(pluginName, pluginPath); | |
|
84 | m_LoadedPlugins.insert(pluginName, plugin); | |||
84 | } |
|
85 | } | |
85 | else { |
|
86 | else { | |
86 | loadState.setError(QObject::tr("the file is not a Sciqlop plugin")); |
|
87 | loadState.setError(QObject::tr("the file is not a Sciqlop plugin")); | |
@@ -100,17 +101,33 struct PluginManager::PluginManagerPrivate { | |||||
100 | for (QObject *plugin : QPluginLoader::staticInstances()) { |
|
101 | for (QObject *plugin : QPluginLoader::staticInstances()) { | |
101 | qobject_cast<IPlugin *>(plugin)->initialize(); |
|
102 | qobject_cast<IPlugin *>(plugin)->initialize(); | |
102 | m_RegisteredPlugins.insert(plugin->metaObject()->className(), "StaticPlugin"); |
|
103 | m_RegisteredPlugins.insert(plugin->metaObject()->className(), "StaticPlugin"); | |
|
104 | m_LoadedPlugins.insert(plugin->metaObject()->className(), plugin); | |||
|
105 | } | |||
|
106 | } | |||
|
107 | void clearAllPlugins() | |||
|
108 | { | |||
|
109 | for(auto plugin:m_LoadedPlugins) | |||
|
110 | { | |||
|
111 | delete plugin; | |||
103 |
|
|
112 | } | |
|
113 | m_LoadedPlugins.clear(); | |||
|
114 | m_RegisteredPlugins.clear(); | |||
104 | } |
|
115 | } | |
105 |
|
116 | |||
106 | /// Registered plugins (key: plugin name, value: plugin path) |
|
117 | /// Registered plugins (key: plugin name, value: plugin path) | |
107 | QHash<QString, QString> m_RegisteredPlugins; |
|
118 | QHash<QString, QString> m_RegisteredPlugins; | |
|
119 | QHash<QString,QObject*> m_LoadedPlugins; | |||
108 | }; |
|
120 | }; | |
109 |
|
121 | |||
110 | PluginManager::PluginManager() : impl{spimpl::make_unique_impl<PluginManagerPrivate>()} |
|
122 | PluginManager::PluginManager() : impl{spimpl::make_unique_impl<PluginManagerPrivate>()} | |
111 | { |
|
123 | { | |
112 | } |
|
124 | } | |
113 |
|
125 | |||
|
126 | PluginManager::~PluginManager() | |||
|
127 | { | |||
|
128 | impl->clearAllPlugins(); | |||
|
129 | } | |||
|
130 | ||||
114 | void PluginManager::loadPlugins(const QDir &pluginDir) |
|
131 | void PluginManager::loadPlugins(const QDir &pluginDir) | |
115 | { |
|
132 | { | |
116 | // Load plugins |
|
133 | // Load plugins |
@@ -7,17 +7,6 TestUtils_dep = declare_dependency(link_with : TestUtils, | |||||
7 | dependencies : [sciqlop_core, qt5test]) |
|
7 | dependencies : [sciqlop_core, qt5test]) | |
8 |
|
8 | |||
9 |
|
9 | |||
10 | DataSeriesTestsUtils = library('DataSeriesTestsUtils', 'Data/DataSeriesBuilders.h', 'Data/DataSeriesBuilders.cpp', |
|
|||
11 | 'Data/DataSeriesTestsUtils.h', |
|
|||
12 | 'Data/DataSeriesTestsUtils.cpp', |
|
|||
13 | dependencies : [sciqlop_core, qt5test] |
|
|||
14 | ) |
|
|||
15 |
|
||||
16 |
|
||||
17 | DataSeriesTestsUtils_dep = declare_dependency(link_with : DataSeriesTestsUtils, |
|
|||
18 | dependencies : [sciqlop_core, qt5test]) |
|
|||
19 |
|
||||
20 |
|
||||
21 |
|
10 | |||
22 | tests = [ |
|
11 | tests = [ | |
23 | { |
|
12 | { | |
@@ -41,47 +30,6 tests = [ | |||||
41 | 'deps': [sciqlop_core, qt5test] |
|
30 | 'deps': [sciqlop_core, qt5test] | |
42 | }, |
|
31 | }, | |
43 | { |
|
32 | { | |
44 | 'name':'TestDataSeriesUtils', |
|
|||
45 | 'sources': ['Data/TestDataSeriesUtils.cpp'], |
|
|||
46 | 'deps': [sciqlop_core, qt5test] |
|
|||
47 | }, |
|
|||
48 | { |
|
|||
49 | 'name':'TestOptionalAxis', |
|
|||
50 | 'sources': ['Data/TestOptionalAxis.cpp'], |
|
|||
51 | 'deps': [sciqlop_core, qt5test] |
|
|||
52 | }, |
|
|||
53 | { |
|
|||
54 | 'name':'TestSpectrogramSeries', |
|
|||
55 | 'sources': [ |
|
|||
56 | 'Data/TestSpectrogramSeries.cpp', |
|
|||
57 | ], |
|
|||
58 | 'deps': [sciqlop_core, qt5test, DataSeriesTestsUtils_dep] |
|
|||
59 | }, |
|
|||
60 | { |
|
|||
61 | 'name':'TestOneDimArrayData', |
|
|||
62 | 'sources': ['Data/TestOneDimArrayData.cpp'], |
|
|||
63 | 'deps': [sciqlop_core, qt5test] |
|
|||
64 | }, |
|
|||
65 | { |
|
|||
66 | 'name':'TestScalarSeries', |
|
|||
67 | 'sources': [ |
|
|||
68 | 'Data/TestScalarSeries.cpp', |
|
|||
69 | ], |
|
|||
70 | 'deps': [sciqlop_core, qt5test, DataSeriesTestsUtils_dep] |
|
|||
71 | }, |
|
|||
72 | { |
|
|||
73 | 'name':'TestTwoDimArrayData', |
|
|||
74 | 'sources': ['Data/TestTwoDimArrayData.cpp'], |
|
|||
75 | 'deps': [sciqlop_core, qt5test] |
|
|||
76 | }, |
|
|||
77 | { |
|
|||
78 | 'name':'TestVectorSeries', |
|
|||
79 | 'sources': [ |
|
|||
80 | 'Data/TestVectorSeries.cpp', |
|
|||
81 | ], |
|
|||
82 | 'deps': [sciqlop_core, qt5test, DataSeriesTestsUtils_dep] |
|
|||
83 | }, |
|
|||
84 | { |
|
|||
85 | 'name':'TestDataSourceController', |
|
33 | 'name':'TestDataSourceController', | |
86 | 'sources': [ |
|
34 | 'sources': [ | |
87 | 'DataSource/TestDataSourceController.cpp', |
|
35 | 'DataSource/TestDataSourceController.cpp', |
General Comments 0
You need to be logged in to leave comments.
Login now