##// END OF EJS Templates
Unplot menu (5): adds contains() method to an IVariableContainer...
Unplot menu (5): adds contains() method to an IVariableContainer The method will be used to generate an action in the 'unplot' menu, depending on whether or not the container contains the variable

File last commit:

r167:31990a7209fc
r327:87af69bdce8a
Show More
MockPlugin.cpp
81 lines | 2.8 KiB | text/x-c | CppLexer
#include "MockPlugin.h"
#include "CosinusProvider.h"
#include <DataSource/DataSourceController.h>
#include <DataSource/DataSourceItem.h>
#include <DataSource/DataSourceItemAction.h>
#include <SqpApplication.h>
Q_LOGGING_CATEGORY(LOG_MockPlugin, "MockPlugin")
namespace {
/// Name of the data source
const auto DATA_SOURCE_NAME = QStringLiteral("MMS");
/// Creates the data provider relative to the plugin
std::unique_ptr<IDataProvider> createDataProvider() noexcept
{
return std::make_unique<CosinusProvider>();
}
std::unique_ptr<DataSourceItem> createProductItem(const QString &productName,
const QUuid &dataSourceUid)
{
auto result = std::make_unique<DataSourceItem>(DataSourceItemType::PRODUCT,
QVector<QVariant>{productName});
// Add action to load product from DataSourceController
result->addAction(std::make_unique<DataSourceItemAction>(
QObject::tr("Load %1 product").arg(productName),
[productName, dataSourceUid](DataSourceItem &item) {
if (auto app = sqpApp) {
app->dataSourceController().loadProductItem(dataSourceUid, item);
}
}));
return result;
}
/// Creates the data source item relative to the plugin
std::unique_ptr<DataSourceItem> createDataSourceItem(const QUuid &dataSourceUid) noexcept
{
// Magnetic field products
auto magneticFieldFolder = std::make_unique<DataSourceItem>(
DataSourceItemType::NODE, QVector<QVariant>{QStringLiteral("Magnetic field")});
magneticFieldFolder->appendChild(createProductItem(QStringLiteral("FGM"), dataSourceUid));
magneticFieldFolder->appendChild(createProductItem(QStringLiteral("SC"), dataSourceUid));
// Electric field products
auto electricFieldFolder = std::make_unique<DataSourceItem>(
DataSourceItemType::NODE, QVector<QVariant>{QStringLiteral("Electric field")});
// Root
auto root = std::make_unique<DataSourceItem>(DataSourceItemType::NODE,
QVector<QVariant>{DATA_SOURCE_NAME});
root->appendChild(std::move(magneticFieldFolder));
root->appendChild(std::move(electricFieldFolder));
return root;
}
} // namespace
void MockPlugin::initialize()
{
if (auto app = sqpApp) {
// Registers to the data source controller
auto &dataSourceController = app->dataSourceController();
auto dataSourceUid = dataSourceController.registerDataSource(DATA_SOURCE_NAME);
// Sets data source tree
dataSourceController.setDataSourceItem(dataSourceUid, createDataSourceItem(dataSourceUid));
// Sets data provider
dataSourceController.setDataProvider(dataSourceUid, createDataProvider());
}
else {
qCWarning(LOG_MockPlugin()) << tr("Can't access to SciQlop application");
}
}