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
This commit is contained in:
parent
6e3f47983c
commit
2bae31a4df
@ -738,6 +738,18 @@ void EditorNode::_on_plugin_ready(Object *p_script, const String &p_activate_nam
|
|||||||
push_item(script.operator->());
|
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) {
|
void EditorNode::_resources_changed(const Vector<String> &p_resources) {
|
||||||
List<Ref<Resource>> changed;
|
List<Ref<Resource>> changed;
|
||||||
|
|
||||||
@ -3120,16 +3132,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
|
|||||||
Ref<ConfigFile> cf;
|
Ref<ConfigFile> cf;
|
||||||
cf.instance();
|
cf.instance();
|
||||||
if (!DirAccess::exists(p_addon.get_base_dir())) {
|
if (!DirAccess::exists(p_addon.get_base_dir())) {
|
||||||
ProjectSettings *ps = ProjectSettings::get_singleton();
|
_remove_plugin_from_enabled(p_addon);
|
||||||
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();
|
|
||||||
WARN_PRINT("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins.");
|
WARN_PRINT("Addon '" + p_addon + "' failed to load. No directory found. Removing from enabled plugins.");
|
||||||
return;
|
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.
|
// Errors in the script cause the base_type to be an empty string.
|
||||||
if (String(script->get_instance_base_type()) == "") {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -460,6 +460,7 @@ private:
|
|||||||
void _update_file_menu_closed();
|
void _update_file_menu_closed();
|
||||||
|
|
||||||
void _on_plugin_ready(Object *p_script, const String &p_activate_name);
|
void _on_plugin_ready(Object *p_script, const String &p_activate_name);
|
||||||
|
void _remove_plugin_from_enabled(const String &p_name);
|
||||||
|
|
||||||
void _fs_changed();
|
void _fs_changed();
|
||||||
void _resources_reimported(const Vector<String> &p_resources);
|
void _resources_reimported(const Vector<String> &p_resources);
|
||||||
|
Loading…
Reference in New Issue
Block a user