diff options
author | Daniel Lungaro <chunk_77@hotmail.com> | 2021-05-09 05:17:15 -0700 |
---|---|---|
committer | Daniel Lungaro <chunk_77@hotmail.com> | 2021-05-09 13:51:09 -0700 |
commit | 2bae31a4df783de9fa3f6869f79bfe823c9d2664 (patch) | |
tree | 62a519b2b51cdfa1249ed03bd1c3ea24f129c9bb /editor/editor_node.cpp | |
parent | 6e3f47983cabb5f162eaec075d810f717985beda (diff) |
Remove plugin from enabled if there's an error
inform user in warning message
Co-authored-by: RĂ©mi Verschelde <rverschelde@gmail.com>
Refactor remove plugin from enabled
Diffstat (limited to 'editor/editor_node.cpp')
-rw-r--r-- | editor/editor_node.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 7aed5b2b7f..77c06dc5d5 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -738,6 +738,18 @@ void EditorNode::_on_plugin_ready(Object *p_script, const String &p_activate_nam push_item(script.operator->()); } +void EditorNode::_remove_plugin_from_enabled(const String &p_name) { + ProjectSettings *ps = ProjectSettings::get_singleton(); + PackedStringArray enabled_plugins = ps->get("editor_plugins/enabled"); + for (int i = 0; i < enabled_plugins.size(); ++i) { + if (enabled_plugins.get(i) == p_name) { + enabled_plugins.remove(i); + break; + } + } + ps->set("editor_plugins/enabled", enabled_plugins); +} + void EditorNode::_resources_changed(const Vector<String> &p_resources) { List<Ref<Resource>> changed; @@ -3120,16 +3132,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, Ref<ConfigFile> cf; cf.instance(); if (!DirAccess::exists(p_addon.get_base_dir())) { - ProjectSettings *ps = ProjectSettings::get_singleton(); - PackedStringArray enabled_plugins = ps->get("editor_plugins/enabled"); - for (int i = 0; i < enabled_plugins.size(); ++i) { - if (enabled_plugins.get(i) == p_addon) { - enabled_plugins.remove(i); - break; - } - } - ps->set("editor_plugins/enabled", enabled_plugins); - ps->save(); + _remove_plugin_from_enabled(p_addon); WARN_PRINT("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins."); return; } @@ -3159,7 +3162,8 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, // Errors in the script cause the base_type to be an empty string. if (String(script->get_instance_base_type()) == "") { - show_warning(vformat(TTR("Unable to load addon script from path: '%s' There seems to be an error in the code, please check the syntax."), script_path)); + show_warning(vformat(TTR("Unable to load addon script from path: '%s'. This might be due to a code error in that script. \nDisabling the addon at '%s' to prevent further errors."), script_path, p_addon)); + _remove_plugin_from_enabled(p_addon); return; } |