From 0a75a38db4bb8bd7784c410b5edab4877b9332db Mon Sep 17 00:00:00 2001 From: George Marques Date: Tue, 30 Jan 2018 20:11:07 -0200 Subject: [PATCH] Add interface for plugins to enable/disable other plugins (cherry picked from commit 87be0bc1101d7cf52ca40c5b3b7fc87b785edfb1) --- doc/classes/EditorInterface.xml | 20 ++++++++++++++++++++ editor/editor_plugin.cpp | 11 +++++++++++ editor/editor_plugin.h | 3 +++ 3 files changed, 34 insertions(+) diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index 4d3b31ae351..61c93becdeb 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -100,6 +100,15 @@ Shows the given property on the given [code]object[/code] in the Editor's Inspector dock. + + + + + + + Returns the enabled status of a plugin. The plugin name is the same as its directory name. + + @@ -155,6 +164,17 @@ + + + + + + + + + Sets the enabled status of a plugin. The plugin name is the same as its directory name. + + diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index 9dd8a7232f3..b1a0efaea60 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -235,6 +235,14 @@ Control *EditorInterface::get_base_control() { return EditorNode::get_singleton()->get_gui_base(); } +void EditorInterface::set_plugin_enabled(const String &p_plugin, bool p_enabled) { + EditorNode::get_singleton()->set_addon_plugin_enabled(p_plugin, p_enabled); +} + +bool EditorInterface::is_plugin_enabled(const String &p_plugin) const { + return EditorNode::get_singleton()->is_addon_plugin_enabled(p_plugin); +} + Error EditorInterface::save_scene() { if (!get_edited_scene_root()) return ERR_CANT_CREATE; @@ -271,6 +279,9 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("select_file", "p_file"), &EditorInterface::select_file); ClassDB::bind_method(D_METHOD("get_selected_path"), &EditorInterface::get_selected_path); + ClassDB::bind_method(D_METHOD("set_plugin_enabled", "plugin", "enabled"), &EditorInterface::set_plugin_enabled); + ClassDB::bind_method(D_METHOD("is_plugin_enabled", "plugin"), &EditorInterface::is_plugin_enabled); + ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene); ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true)); } diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 145dccc2d57..3d585120c0a 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -90,6 +90,9 @@ public: Control *get_base_control(); + void set_plugin_enabled(const String &p_plugin, bool p_enabled); + bool is_plugin_enabled(const String &p_plugin) const; + Error save_scene(); void save_scene_as(const String &p_scene, bool p_with_preview = true);