void EditorFileDialog::_favorite_toggled(bool p_toggle) { bool res = access==ACCESS_RESOURCES; String cd = get_current_dir(); Vector<String> favorited = EditorSettings::get_singleton()->get_favorite_dirs(); bool found = false; for(int i=0;i<favorited.size();i++) { bool cres = favorited[i].begins_with("res://"); if (cres!=res) continue; if (favorited[i]==cd) { found=true; break; } } if (found) { favorited.erase(cd); favorite->set_pressed(false); } else { favorited.push_back(cd); favorite->set_pressed(true); } EditorSettings::get_singleton()->set_favorite_dirs(favorited); _update_favorites(); }
void EditorFileDialog::_post_popup() { ConfirmationDialog::_post_popup(); if (invalidated) { update_file_list(); invalidated=false; } if (mode==MODE_SAVE_FILE) file->grab_focus(); else item_list->grab_focus(); if (is_visible() && get_current_file()!="") _request_single_thumbnail(get_current_dir().plus_file(get_current_file())); if (is_visible()) { Ref<Texture> folder = get_icon("folder","FileDialog"); recent->clear(); bool res = access==ACCESS_RESOURCES; Vector<String> recentd = EditorSettings::get_singleton()->get_recent_dirs(); for(int i=0;i<recentd.size();i++) { bool cres = recentd[i].begins_with("res://"); if (cres!=res) continue; String name = recentd[i]; if (res && name=="res://") { name="/"; } else { name=name.get_file()+"/"; } //print_line("file: "+name); recent->add_item(name,folder); recent->set_item_metadata( recent->get_item_count()-1,recentd[i]); } local_history.clear(); local_history_pos=-1; _push_history(); _update_favorites(); } set_process_unhandled_input(true); }
void EditorFileDialog::_favorite_move_down() { int current = favorites->get_current(); if (current >= 0 && current < favorites->get_item_count() - 1) { Vector<String> favorited = EditorSettings::get_singleton()->get_favorite_dirs(); int a_idx = favorited.find(String(favorites->get_item_metadata(current + 1))); int b_idx = favorited.find(String(favorites->get_item_metadata(current))); if (a_idx == -1 || b_idx == -1) return; SWAP(favorited[a_idx], favorited[b_idx]); EditorSettings::get_singleton()->set_favorite_dirs(favorited); _update_favorites(); update_file_list(); } }