#include <BALL/PLUGIN/pluginManager.h>
Public Member Functions | |
virtual | ~PluginManager () |
void | addPluginDirectory (const QString &dir, bool autoactivate=false) |
bool | removePluginDirectory (const QString &dir) |
vector< QString > | getPluginDirectories () const |
BALLPlugin * | loadPlugin (const QString &plugin_name) |
bool | unloadPlugin (const QString &plugin) |
QObject * | getPluginInstance (const QString &plugin) |
QObject * | getPluginInstance (int pos) |
bool | startPlugin (int plugin) |
bool | startPlugin (const QString &plugin) |
bool | startPlugin (BALLPlugin *plugin) |
bool | stopPlugin (int plugin) |
bool | stopPlugin (const QString &plugin) |
bool | stopPlugin (BALLPlugin *plugin) |
void | unloadAllPlugins () |
int | getPluginCount () const |
void | registerHandler (PluginHandler *h) |
virtual bool | getValue (String &) const |
Overload this in derived classes! | |
virtual bool | setValue (const String &) |
Overload this in derived classes! | |
Static Public Member Functions | |
static PluginManager & | instance () |
Protected Member Functions | |
PluginManager () | |
PluginManager (const PluginManager &) | |
const PluginManager & | operator= (const PluginManager &) |
Protected Attributes | |
std::map< QString, vector < BALLPlugin * > > | loaded_plugin_dirs_ |
QHash< QString, QPluginLoader * > | loaders_ |
std::list< PluginHandler * > | handlers_ |
QReadWriteLock | handler_mutex_ |
QReadWriteLock | loader_mutex_ |
Static Protected Attributes | |
static const char * | BETWEEN_PLUGINDIR_SEPERATOR |
static boost::shared_ptr < PluginManager > | manager_ |
static QMutex | mutex_ |
A singleton that takes care of handling all plugins. It is responsible for loading, starting and stopping plugins. For the task of properly initializing the plugins it utilizes the PluginHandler helper classes, that need to be supplemented for each new plugin type.
virtual BALL::PluginManager::~PluginManager | ( | ) | [virtual] |
BALL::PluginManager::PluginManager | ( | ) | [protected] |
BALL::PluginManager::PluginManager | ( | const PluginManager & | ) | [protected] |
void BALL::PluginManager::addPluginDirectory | ( | const QString & | dir, |
bool | autoactivate = false |
||
) |
Tries to load all plugins (files named like: pluginMyPlugin.$LIBRARY_SUFFIX) located in the specified directoy dir.
dir | the directory to search for plugins. |
int BALL::PluginManager::getPluginCount | ( | ) | const |
Returns the number of loaded plugins.
vector<QString> BALL::PluginManager::getPluginDirectories | ( | ) | const |
Return a list of directories currently searched for plugins.
QObject* BALL::PluginManager::getPluginInstance | ( | int | pos | ) |
Searches for the plugin and returns a pointer to it if it has been loaded.
pos | The position of the plugin in the plugin list |
QObject* BALL::PluginManager::getPluginInstance | ( | const QString & | plugin | ) |
Searches for the plugin and returns a pointer to it if it has been loaded.
plugin | The name of the plugin to search |
Overload this in derived classes!
Implements BALL::PreferencesObject.
static PluginManager& BALL::PluginManager::instance | ( | ) | [static] |
Use this method to obtain the PluginManager instance.
This method is thread safe.
BALLPlugin* BALL::PluginManager::loadPlugin | ( | const QString & | plugin_name | ) |
Loads the plugin specified by plugin_name.
plugin_name | The path to the plugin to load |
const PluginManager& BALL::PluginManager::operator= | ( | const PluginManager & | ) | [protected] |
void BALL::PluginManager::registerHandler | ( | PluginHandler * | h | ) |
Register a new PluginHandler. This handler will then be available for starting new plugins.
bool BALL::PluginManager::removePluginDirectory | ( | const QString & | dir | ) |
Tries to unload all plugins (files named like: pluginMyPlugin.$LIBRARY_SUFFIX) located in the specified directoy dir.
dir | the directory to search for plugins to remove. |
Overload this in derived classes!
Implements BALL::PreferencesObject.
bool BALL::PluginManager::startPlugin | ( | const QString & | plugin | ) |
bool BALL::PluginManager::startPlugin | ( | BALLPlugin * | plugin | ) |
Starts the specified plugin through a applicable PluginHandler
plugin | A pointer to the plugin to be started |
bool BALL::PluginManager::startPlugin | ( | int | plugin | ) |
bool BALL::PluginManager::stopPlugin | ( | int | plugin | ) |
bool BALL::PluginManager::stopPlugin | ( | const QString & | plugin | ) |
bool BALL::PluginManager::stopPlugin | ( | BALLPlugin * | plugin | ) |
Stops the specified plugin by letting all PluginHandlers stop it.
plugin | A pointer to the plugin to be stopped |
void BALL::PluginManager::unloadAllPlugins | ( | ) |
Unload all registered plugins.
bool BALL::PluginManager::unloadPlugin | ( | const QString & | plugin | ) |
Unloads the plugin specified by plugin_name.
plugin_name | The name of the plugin to unload |
const char* BALL::PluginManager::BETWEEN_PLUGINDIR_SEPERATOR [static, protected] |
QReadWriteLock BALL::PluginManager::handler_mutex_ [mutable, protected] |
std::list<PluginHandler*> BALL::PluginManager::handlers_ [protected] |
std::map<QString, vector<BALLPlugin*> > BALL::PluginManager::loaded_plugin_dirs_ [protected] |
QReadWriteLock BALL::PluginManager::loader_mutex_ [mutable, protected] |
QHash<QString, QPluginLoader*> BALL::PluginManager::loaders_ [protected] |
boost::shared_ptr<PluginManager> BALL::PluginManager::manager_ [static, protected] |
QMutex BALL::PluginManager::mutex_ [static, protected] |