You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-12 13:20:55 +00:00
Merge pull request #97415 from YeldhamDev/i_love_all_my_properties_equally
Make possible to favorite properties in the inspector
This commit is contained in:
@@ -1496,10 +1496,26 @@ void EditorSettings::set_favorites(const Vector<String> &p_favorites) {
|
||||
}
|
||||
}
|
||||
|
||||
void EditorSettings::set_favorite_properties(const HashMap<String, PackedStringArray> &p_favorite_properties) {
|
||||
favorite_properties = p_favorite_properties;
|
||||
String favorite_properties_file = EditorPaths::get_singleton()->get_project_settings_dir().path_join("favorite_properties");
|
||||
|
||||
Ref<ConfigFile> cf;
|
||||
cf.instantiate();
|
||||
for (const KeyValue<String, PackedStringArray> &kv : p_favorite_properties) {
|
||||
cf->set_value(kv.key, "properties", kv.value);
|
||||
}
|
||||
cf->save(favorite_properties_file);
|
||||
}
|
||||
|
||||
Vector<String> EditorSettings::get_favorites() const {
|
||||
return favorites;
|
||||
}
|
||||
|
||||
HashMap<String, PackedStringArray> EditorSettings::get_favorite_properties() const {
|
||||
return favorite_properties;
|
||||
}
|
||||
|
||||
void EditorSettings::set_recent_dirs(const Vector<String> &p_recent_dirs) {
|
||||
recent_dirs = p_recent_dirs;
|
||||
String recent_dirs_file;
|
||||
@@ -1522,23 +1538,51 @@ Vector<String> EditorSettings::get_recent_dirs() const {
|
||||
|
||||
void EditorSettings::load_favorites_and_recent_dirs() {
|
||||
String favorites_file;
|
||||
String favorite_properties_file;
|
||||
String recent_dirs_file;
|
||||
if (Engine::get_singleton()->is_project_manager_hint()) {
|
||||
favorites_file = EditorPaths::get_singleton()->get_config_dir().path_join("favorite_dirs");
|
||||
favorite_properties_file = EditorPaths::get_singleton()->get_config_dir().path_join("favorite_properties");
|
||||
recent_dirs_file = EditorPaths::get_singleton()->get_config_dir().path_join("recent_dirs");
|
||||
} else {
|
||||
favorites_file = EditorPaths::get_singleton()->get_project_settings_dir().path_join("favorites");
|
||||
favorite_properties_file = EditorPaths::get_singleton()->get_project_settings_dir().path_join("favorite_properties");
|
||||
recent_dirs_file = EditorPaths::get_singleton()->get_project_settings_dir().path_join("recent_dirs");
|
||||
}
|
||||
|
||||
/// File Favorites
|
||||
|
||||
Ref<FileAccess> f = FileAccess::open(favorites_file, FileAccess::READ);
|
||||
if (f.is_valid()) {
|
||||
String line = f->get_line().strip_edges();
|
||||
while (!line.is_empty()) {
|
||||
favorites.push_back(line);
|
||||
favorites.append(line);
|
||||
line = f->get_line().strip_edges();
|
||||
}
|
||||
}
|
||||
|
||||
/// Inspector Favorites
|
||||
|
||||
Ref<ConfigFile> cf;
|
||||
cf.instantiate();
|
||||
if (cf->load(favorite_properties_file) == OK) {
|
||||
List<String> secs;
|
||||
cf->get_sections(&secs);
|
||||
|
||||
for (String &E : secs) {
|
||||
PackedStringArray properties = PackedStringArray(cf->get_value(E, "properties"));
|
||||
if (EditorNode::get_editor_data().is_type_recognized(E) || ResourceLoader::exists(E, "Script")) {
|
||||
for (const String &property : properties) {
|
||||
if (!favorite_properties[E].has(property)) {
|
||||
favorite_properties[E].push_back(property);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Recent Directories
|
||||
|
||||
f = FileAccess::open(recent_dirs_file, FileAccess::READ);
|
||||
if (f.is_valid()) {
|
||||
String line = f->get_line().strip_edges();
|
||||
|
||||
Reference in New Issue
Block a user