27 #include <boost/filesystem.hpp>
28 #include <boost/foreach.hpp>
31 #include "../../common/OSSettingsDir.h"
32 #include "../../common/SystemApplicationSettings.h"
33 #include "../../common/Translator.h"
34 #include "../../common/UserApplicationSettings.h"
35 #include "../../plugin/PluginInfo.h"
36 #include "../../plugin/PluginManager.h"
37 #include "../../plugin/Utils.h"
55 std::set<std::pair<std::string, std::string> > sPlugins;
56 bool child_exists =
false;
62 child_exists = p.count(
"Plugins") > 0;
64 if(child_exists && (!p.empty()))
65 BOOST_FOREACH(boost::property_tree::ptree::value_type& v, p.get_child(
"Plugins"))
67 std::string first = v.first.data();
72 const std::string& pname = v.second.get<std::string>(
"Name");
73 const std::string& pdir = v.second.get<std::string>(
"Path.<xmlattr>.xlink:href");
75 sPlugins.insert(std::pair<std::string, std::string>(pname, pdir));
83 child_exists = p.count(
"SpecificPlugins") > 0;
85 if(child_exists && (!p.empty()))
86 BOOST_FOREACH(boost::property_tree::ptree::value_type& v, p.get_child(
"SpecificPlugins"))
88 if(v.second.data().empty())
91 const std::string& pname = v.second.get<std::string>(
"Name");
92 const std::string& pdir = v.second.get<std::string>(
"Path.<xmlattr>.xlink:href");
94 sPlugins.insert(std::pair<std::string, std::string>(pname, pdir));
99 std::set<std::string> uPlugins;
104 child_exists = p.count(
"EnabledPlugins") > 0;
106 if(child_exists && (!p.empty()))
107 BOOST_FOREACH(boost::property_tree::ptree::value_type& v, p.get_child(
"EnabledPlugins"))
109 if(v.second.data().empty())
112 uPlugins.insert(v.second.data());
117 boost::ptr_vector<te::plugin::PluginInfo> plugins;
118 std::set<std::pair<std::string, std::string> >::const_iterator it = sPlugins.begin();
119 std::set<std::pair<std::string, std::string> >::const_iterator itend = sPlugins.end();
120 std::set<std::string>::const_iterator ituend = uPlugins.end();
124 std::set<std::string>::const_iterator itu = uPlugins.find(it->first);
131 plugins.push_back(pinfo);
void load()
It starts all the plugins enabled by the user.
The basic information about a plugin.
An exception class for the TerraLib Application Framework.
TEPLUGINEXPORT PluginInfo * GetInstalledPlugin(const std::string &pluginFilePath)
It returns information about a given plugin provided its plugin configuration file name or dir...
const boost::property_tree::ptree & getAllSettings() const
It return a reading reference to the internal settings.
~UserPlugins()
Destructor.
A singleton for managing the application plugins.
A singleton for managing the plugins enabled by a specific user.
UserPlugins()
It initializes the singleton.
ObjectLevelLockingPolicy< ::boost::lock_guard< ::boost::recursive_mutex > > LockRead
static ApplicationPlugins & getInstance()
It returns a reference to the singleton instance.