From a94f25738172c4c42a280b8a638b3eeb6edc31b6 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 29 May 2015 09:03:44 -0700 Subject: [PATCH] Working on plugin library --- interface/src/plugins/Plugin.h | 6 +++++- libraries/plugins/CMakeLists.txt | 12 ++++++++++++ libraries/plugins/src/Plugin.h | 20 ++++++++++++++++++++ libraries/plugins/src/PluginContainer.h | 7 +++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 libraries/plugins/CMakeLists.txt create mode 100644 libraries/plugins/src/Plugin.h create mode 100644 libraries/plugins/src/PluginContainer.h diff --git a/interface/src/plugins/Plugin.h b/interface/src/plugins/Plugin.h index a49c7487b8..ff91a6e1e2 100644 --- a/interface/src/plugins/Plugin.h +++ b/interface/src/plugins/Plugin.h @@ -3,6 +3,10 @@ #include #include +class PluginContainer { + virtual void addMenuItem(const QString& path, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0; +}; + class Plugin : public QObject { public: virtual const QString & getName() = 0; @@ -11,7 +15,7 @@ public: virtual void init() {} virtual void deinit() {} - virtual void activate() {} + virtual void activate(PluginContainer * container) {} virtual void deactivate() {} virtual void idle() {} diff --git a/libraries/plugins/CMakeLists.txt b/libraries/plugins/CMakeLists.txt new file mode 100644 index 0000000000..9401f73174 --- /dev/null +++ b/libraries/plugins/CMakeLists.txt @@ -0,0 +1,12 @@ +set(TARGET_NAME plugins) + +# use setup_hifi_library macro to setup our project and link appropriate Qt modules +setup_hifi_library(OpenGL Network Qml Quick Script XmlPatterns) + +link_hifi_libraries(shared) + +add_dependency_external_projects(glm) +find_package(GLM REQUIRED) +target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) + + diff --git a/libraries/plugins/src/Plugin.h b/libraries/plugins/src/Plugin.h new file mode 100644 index 0000000000..db01aa74ca --- /dev/null +++ b/libraries/plugins/src/Plugin.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +class PluginContainer; + +class Plugin : public QObject { +public: + virtual const QString& getName() = 0; + virtual bool isSupported() const { return true; } + + virtual void init() {} + virtual void deinit() {} + + virtual void activate(PluginContainer * container) {} + virtual void deactivate() {} + + virtual void idle() {} +}; diff --git a/libraries/plugins/src/PluginContainer.h b/libraries/plugins/src/PluginContainer.h new file mode 100644 index 0000000000..d0a21f0cdd --- /dev/null +++ b/libraries/plugins/src/PluginContainer.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +class PluginContainer { + virtual void addMenuItem(const QString& path, std::function onClicked, bool checkable = false, bool checked = false, const QString& groupName = "") = 0; +};