Allow loading custom ProjectSettings instance
This commit is contained in:
parent
11d3768132
commit
4324d01c8e
|
@ -1017,7 +1017,7 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Check for the existence of a csproj file.
|
// Check for the existence of a csproj file.
|
||||||
if (_csproj_exists(get_resource_path())) {
|
if (_csproj_exists(p_path.get_base_dir())) {
|
||||||
// If there is a csproj file, add the C# feature if it doesn't already exist.
|
// If there is a csproj file, add the C# feature if it doesn't already exist.
|
||||||
if (!project_features.has("C#")) {
|
if (!project_features.has("C#")) {
|
||||||
project_features.append("C#");
|
project_features.append("C#");
|
||||||
|
@ -1568,6 +1568,14 @@ ProjectSettings::ProjectSettings() {
|
||||||
ProjectSettings::get_singleton()->add_hidden_prefix("input/");
|
ProjectSettings::get_singleton()->add_hidden_prefix("input/");
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectSettings::~ProjectSettings() {
|
ProjectSettings::ProjectSettings(const String &p_path) {
|
||||||
singleton = nullptr;
|
if (load_custom(p_path) == OK) {
|
||||||
|
project_loaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ProjectSettings::~ProjectSettings() {
|
||||||
|
if (singleton == this) {
|
||||||
|
singleton = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,6 +224,7 @@ public:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ProjectSettings();
|
ProjectSettings();
|
||||||
|
ProjectSettings(const String &p_path);
|
||||||
~ProjectSettings();
|
~ProjectSettings();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -802,18 +802,20 @@ void ProjectManager::_apply_project_tags() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigFile cfg;
|
|
||||||
const String project_godot = project_list->get_selected_projects()[0].path.path_join("project.godot");
|
const String project_godot = project_list->get_selected_projects()[0].path.path_join("project.godot");
|
||||||
Error err = cfg.load(project_godot);
|
ProjectSettings *cfg = memnew(ProjectSettings(project_godot));
|
||||||
if (err != OK) {
|
if (!cfg->is_project_loaded()) {
|
||||||
tag_edit_error->set_text(vformat(TTR("Couldn't load project at '%s' (error %d). It may be missing or corrupted."), project_godot, err));
|
memdelete(cfg);
|
||||||
|
tag_edit_error->set_text(vformat(TTR("Couldn't load project at '%s'. It may be missing or corrupted."), project_godot));
|
||||||
tag_edit_error->show();
|
tag_edit_error->show();
|
||||||
callable_mp((Window *)tag_manage_dialog, &Window::show).call_deferred(); // Make sure the dialog does not disappear.
|
callable_mp((Window *)tag_manage_dialog, &Window::show).call_deferred(); // Make sure the dialog does not disappear.
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
tags.sort();
|
tags.sort();
|
||||||
cfg.set_value("application", "config/tags", tags);
|
cfg->set("application/config/tags", tags);
|
||||||
err = cfg.save(project_godot);
|
Error err = cfg->save_custom(project_godot);
|
||||||
|
memdelete(cfg);
|
||||||
|
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
tag_edit_error->set_text(vformat(TTR("Couldn't save project at '%s' (error %d)."), project_godot, err));
|
tag_edit_error->set_text(vformat(TTR("Couldn't save project at '%s' (error %d)."), project_godot, err));
|
||||||
tag_edit_error->show();
|
tag_edit_error->show();
|
||||||
|
|
Loading…
Reference in New Issue