You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-10 13:00:37 +00:00
Extract editor dock manager
This commit is contained in:
@@ -3665,6 +3665,70 @@ void FileSystemDock::_bind_methods() {
|
||||
ADD_SIGNAL(MethodInfo("display_mode_changed"));
|
||||
}
|
||||
|
||||
void FileSystemDock::save_layout_to_config(Ref<ConfigFile> p_layout, const String &p_section) const {
|
||||
p_layout->set_value(p_section, "dock_filesystem_h_split_offset", get_h_split_offset());
|
||||
p_layout->set_value(p_section, "dock_filesystem_v_split_offset", get_v_split_offset());
|
||||
p_layout->set_value(p_section, "dock_filesystem_display_mode", get_display_mode());
|
||||
p_layout->set_value(p_section, "dock_filesystem_file_sort", get_file_sort());
|
||||
p_layout->set_value(p_section, "dock_filesystem_file_list_display_mode", get_file_list_display_mode());
|
||||
PackedStringArray selected_files = get_selected_paths();
|
||||
p_layout->set_value(p_section, "dock_filesystem_selected_paths", selected_files);
|
||||
Vector<String> uncollapsed_paths = get_uncollapsed_paths();
|
||||
p_layout->set_value(p_section, "dock_filesystem_uncollapsed_paths", uncollapsed_paths);
|
||||
}
|
||||
|
||||
void FileSystemDock::load_layout_from_config(Ref<ConfigFile> p_layout, const String &p_section) {
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_h_split_offset")) {
|
||||
int fs_h_split_ofs = p_layout->get_value(p_section, "dock_filesystem_h_split_offset");
|
||||
set_h_split_offset(fs_h_split_ofs);
|
||||
}
|
||||
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_v_split_offset")) {
|
||||
int fs_v_split_ofs = p_layout->get_value(p_section, "dock_filesystem_v_split_offset");
|
||||
set_v_split_offset(fs_v_split_ofs);
|
||||
}
|
||||
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_display_mode")) {
|
||||
DisplayMode dock_filesystem_display_mode = DisplayMode(int(p_layout->get_value(p_section, "dock_filesystem_display_mode")));
|
||||
set_display_mode(dock_filesystem_display_mode);
|
||||
}
|
||||
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_file_sort")) {
|
||||
FileSortOption dock_filesystem_file_sort = FileSortOption(int(p_layout->get_value(p_section, "dock_filesystem_file_sort")));
|
||||
set_file_sort(dock_filesystem_file_sort);
|
||||
}
|
||||
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_file_list_display_mode")) {
|
||||
FileListDisplayMode dock_filesystem_file_list_display_mode = FileListDisplayMode(int(p_layout->get_value(p_section, "dock_filesystem_file_list_display_mode")));
|
||||
set_file_list_display_mode(dock_filesystem_file_list_display_mode);
|
||||
}
|
||||
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_selected_paths")) {
|
||||
PackedStringArray dock_filesystem_selected_paths = p_layout->get_value(p_section, "dock_filesystem_selected_paths");
|
||||
for (int i = 0; i < dock_filesystem_selected_paths.size(); i++) {
|
||||
select_file(dock_filesystem_selected_paths[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Restore collapsed state.
|
||||
PackedStringArray uncollapsed_tis;
|
||||
if (p_layout->has_section_key(p_section, "dock_filesystem_uncollapsed_paths")) {
|
||||
uncollapsed_tis = p_layout->get_value(p_section, "dock_filesystem_uncollapsed_paths");
|
||||
} else {
|
||||
uncollapsed_tis = { "res://" };
|
||||
}
|
||||
|
||||
if (!uncollapsed_tis.is_empty()) {
|
||||
for (int i = 0; i < uncollapsed_tis.size(); i++) {
|
||||
TreeItem *uncollapsed_ti = get_tree_control()->get_item_with_metadata(uncollapsed_tis[i], 0);
|
||||
if (uncollapsed_ti) {
|
||||
uncollapsed_ti->set_collapsed(false);
|
||||
}
|
||||
}
|
||||
get_tree_control()->queue_redraw();
|
||||
}
|
||||
}
|
||||
|
||||
FileSystemDock::FileSystemDock() {
|
||||
singleton = this;
|
||||
set_name("FileSystem");
|
||||
|
||||
Reference in New Issue
Block a user