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