diff --git a/src/plugin/Plugin.cpp b/src/plugin/Plugin.cpp index 4c6fc44b..0a2ae415 100644 --- a/src/plugin/Plugin.cpp +++ b/src/plugin/Plugin.cpp @@ -4,9 +4,12 @@ #ifdef ENABLE_PLUGINS -Plugin::Plugin() +Plugin::Plugin(string path) + : path(path) { XOJ_INIT_TYPE(Plugin); + + } Plugin::~Plugin() diff --git a/src/plugin/Plugin.h b/src/plugin/Plugin.h index 8e3b74cd..2e7636dd 100644 --- a/src/plugin/Plugin.h +++ b/src/plugin/Plugin.h @@ -16,9 +16,14 @@ class Plugin { public: - Plugin(); + Plugin(string path); virtual ~Plugin(); private: XOJ_TYPE_ATTRIB; + + /** + * Plugin root path + */ + string path; }; diff --git a/src/plugin/PluginController.cpp b/src/plugin/PluginController.cpp index 1e30c277..8de2bdd7 100644 --- a/src/plugin/PluginController.cpp +++ b/src/plugin/PluginController.cpp @@ -1,4 +1,5 @@ #include "PluginController.h" +#include "Plugin.h" #include "control/Control.h" #include "gui/GladeSearchpath.h" @@ -19,6 +20,14 @@ PluginController::PluginController(Control* control) PluginController::~PluginController() { XOJ_CHECK_TYPE(PluginController); + + for (Plugin* p : this->plugins) + { + delete p; + } + + this->plugins.clear(); + XOJ_RELEASE_TYPE(PluginController); } @@ -48,7 +57,14 @@ void PluginController::loadPluginsFrom(string path) pluginFolder += "/"; pluginFolder += file; - printf("->%s\n", pluginFolder.c_str()); + Plugin* p = new Plugin(pluginFolder); + if (!p->isValid()) + { + delete p; + continue; + } + + this->plugins.push_back(p); } g_dir_close(dir); #endif diff --git a/src/plugin/PluginController.h b/src/plugin/PluginController.h index a828fdf4..d47bf01d 100644 --- a/src/plugin/PluginController.h +++ b/src/plugin/PluginController.h @@ -14,6 +14,7 @@ #include class Control; +class Plugin; class PluginController { @@ -36,4 +37,9 @@ private: * The main controller */ Control* control; + + /** + * All loaded Plugins + */ + vector plugins; };