m_standardFeatureList.clear();
}
+void PluginContainerSupport::Initialize(int widgetHandle)
+{
+ if (isInitialized() == false)
+ {
+ readAllowedPlugins(widgetHandle);
+ readRootPlugins(widgetHandle);
+ }
+}
+
std::list<std::string> PluginContainerSupport::getAllowedFeatures(int widgetHandle) const
{
//TODO it has to return LIST NOT SET!!!
return plugins;
}
+PluginContainerSupport::PluginsList
+PluginContainerSupport::getPluginsList() const
+{
+ LogDebug("");
+
+ PluginsList plugins;
+
+ FOREACH(it, m_pluginModels)
+ {
+ plugins.push_back(*it);
+ }
+
+ return plugins;
+}
+
PluginModelPtr
PluginContainerSupport::getPluginForFeature(const std::string& featureName)
{
PluginContainerSupport();
bool isInitialized() { return m_initialized; }
+ void Initialize(int widgetHandle);
void registerPluginModel(WrtDB::DbPluginHandle handle);
std::list<std::string> getAllowedFeatures(int widgetHandle) const;
void readAllowedPlugins(int widgetHandle);
void readRootPlugins(int widgetHandle);
FeaturesList getStandardFeatures() const;
PluginsList getStandardPlugins() const;
+ PluginsList getPluginsList() const;
PluginModelPtr getPluginForFeature(const std::string& featureName);
~Impl();
// Widget session
+ void initSession(int widgetHandle);
void startSession(int widgetHandle,
JSGlobalContextRef context,
double scaleFactor,
LogDebug("Deinitializing plugin Logic...");
}
+void PluginLogic::initSession(int widgetHandle)
+{
+ m_impl->initSession(widgetHandle);
+}
void PluginLogic::startSession(int widgetHandle,
JSGlobalContextRef ctx,
{
}
+void PluginLogic::Impl::initSession(int widgetHandle)
+{
+ LogInfo("init pluginLogic...");
+
+ m_pluginsSupport->Initialize(widgetHandle);
+
+ //add standard objects
+ LogDebug("Preload plugins so file");
+
+ PluginContainerSupport::PluginsList pluginList =
+ m_pluginsSupport->getPluginsList();
+
+ FOREACH(it, pluginList)
+ {
+ PluginModelPtr& pluginModel = *it;
+ PluginPtr pluginLib = pluginModel->LibraryInstance.Get();
+
+ if (!pluginLib)
+ {
+ std::string path = pluginModel->LibraryPath.Get() +
+ std::string(LIBRARY_PATH_SEPARATOR) +
+ pluginModel->LibraryName.Get();
+
+ pluginLib = Plugin::LoadFromFile(path);
+
+ if (!pluginLib)
+ {
+ LogError("Loading library failed");
+ } else
+ {
+ pluginModel->LibraryInstance.Set(pluginLib);
+
+ LogDebug("pluginModel->LibraryInstance.Set() : " << pluginLib->GetFileName());
+ }
+ }
+ else
+ {
+ LogDebug("Already loaded");
+ }
+ }
+
+ LogDebug("Preload plugins so file_done");
+}
+
void PluginLogic::Impl::startSession(int widgetHandle,
JSGlobalContextRef context,
double scaleFactor,
{
LogInfo("Starting widget session...");
- if (!m_pluginsSupport->isInitialized()) {
- m_pluginsSupport->readRootPlugins(widgetHandle);
- m_pluginsSupport->readAllowedPlugins(widgetHandle);
+ if (!m_pluginsSupport->isInitialized())
+ {
+ m_pluginsSupport->Initialize(widgetHandle);
}
auto sessionIt = m_sessions.find(context);