Replace the favorite button by a RMB menu entry
This commit is contained in:
parent
796418aa11
commit
bc5dfdde78
2 changed files with 54 additions and 77 deletions
|
@ -249,7 +249,6 @@ void FileSystemDock::_notification(int p_what) {
|
||||||
|
|
||||||
String ei = "EditorIcons";
|
String ei = "EditorIcons";
|
||||||
button_reload->set_icon(get_icon("Reload", ei));
|
button_reload->set_icon(get_icon("Reload", ei));
|
||||||
button_favorite->set_icon(get_icon("Favorites", ei));
|
|
||||||
//button_instance->set_icon(get_icon("Add", ei));
|
//button_instance->set_icon(get_icon("Add", ei));
|
||||||
//button_open->set_icon(get_icon("Folder", ei));
|
//button_open->set_icon(get_icon("Folder", ei));
|
||||||
button_tree->set_icon(get_icon("Filesystem", ei));
|
button_tree->set_icon(get_icon("Filesystem", ei));
|
||||||
|
@ -311,7 +310,6 @@ void FileSystemDock::_notification(int p_what) {
|
||||||
// Update icons
|
// Update icons
|
||||||
String ei = "EditorIcons";
|
String ei = "EditorIcons";
|
||||||
button_reload->set_icon(get_icon("Reload", ei));
|
button_reload->set_icon(get_icon("Reload", ei));
|
||||||
button_favorite->set_icon(get_icon("Favorites", ei));
|
|
||||||
button_tree->set_icon(get_icon("Filesystem", ei));
|
button_tree->set_icon(get_icon("Filesystem", ei));
|
||||||
button_hist_next->set_icon(get_icon("Forward", ei));
|
button_hist_next->set_icon(get_icon("Forward", ei));
|
||||||
button_hist_prev->set_icon(get_icon("Back", ei));
|
button_hist_prev->set_icon(get_icon("Back", ei));
|
||||||
|
@ -350,26 +348,6 @@ void FileSystemDock::_notification(int p_what) {
|
||||||
|
|
||||||
void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_selected) {
|
void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_selected) {
|
||||||
|
|
||||||
// Check if items are all in favorites
|
|
||||||
bool all_favorites = true;
|
|
||||||
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
|
||||||
Vector<String> selected = _tree_get_selected();
|
|
||||||
for (int i = 0; i < selected.size(); i++) {
|
|
||||||
int found = -1;
|
|
||||||
for (int j = 0; j < favorites.size(); j++) {
|
|
||||||
if (favorites[j] == selected[i]) {
|
|
||||||
found = j;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (found < 0) {
|
|
||||||
all_favorites = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
button_favorite->set_pressed(all_favorites);
|
|
||||||
|
|
||||||
// Return if we don't select something new
|
// Return if we don't select something new
|
||||||
if (!p_selected)
|
if (!p_selected)
|
||||||
return;
|
return;
|
||||||
|
@ -390,49 +368,6 @@ void FileSystemDock::_tree_multi_selected(Object *p_item, int p_column, bool p_s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSystemDock::_favorites_pressed() {
|
|
||||||
|
|
||||||
// Check items in favorites
|
|
||||||
Vector<String> selected = _tree_get_selected(false);
|
|
||||||
if (selected.empty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Check if items are all in favorites
|
|
||||||
bool all_favorites = true;
|
|
||||||
Vector<String> to_add;
|
|
||||||
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
|
||||||
for (int i = 0; i < selected.size(); i++) {
|
|
||||||
int found = -1;
|
|
||||||
for (int j = 0; j < favorites.size(); j++) {
|
|
||||||
if (favorites[j] == selected[i]) {
|
|
||||||
found = j;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (found < 0) {
|
|
||||||
to_add.push_back(selected[i]);
|
|
||||||
all_favorites = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (all_favorites) {
|
|
||||||
// Remove all selected
|
|
||||||
for (int i = 0; i < selected.size(); i++) {
|
|
||||||
favorites.erase(selected[i]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Add missing ones
|
|
||||||
for (int i = 0; i < to_add.size(); i++) {
|
|
||||||
favorites.push_back(to_add[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace favorites
|
|
||||||
EditorSettings::get_singleton()->set_favorite_dirs(favorites);
|
|
||||||
_update_tree(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FileSystemDock::_show_current_scene_file() {
|
void FileSystemDock::_show_current_scene_file() {
|
||||||
|
|
||||||
int index = EditorNode::get_editor_data().get_edited_scene();
|
int index = EditorNode::get_editor_data().get_edited_scene();
|
||||||
|
@ -1409,6 +1344,28 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> p_selected)
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case FILE_ADD_FAVORITE: {
|
||||||
|
// Add the files from favorites
|
||||||
|
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
||||||
|
for (int i = 0; i < p_selected.size(); i++) {
|
||||||
|
if (favorites.find(p_selected[i]) == -1) {
|
||||||
|
favorites.push_back(p_selected[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EditorSettings::get_singleton()->set_favorite_dirs(favorites);
|
||||||
|
_update_tree(true);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FILE_REMOVE_FAVORITE: {
|
||||||
|
// Remove the files from favorites
|
||||||
|
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
||||||
|
for (int i = 0; i < p_selected.size(); i++) {
|
||||||
|
favorites.erase(p_selected[i]);
|
||||||
|
}
|
||||||
|
EditorSettings::get_singleton()->set_favorite_dirs(favorites);
|
||||||
|
_update_tree(true);
|
||||||
|
} break;
|
||||||
|
|
||||||
case FILE_DEPENDENCIES: {
|
case FILE_DEPENDENCIES: {
|
||||||
// Checkout the file dependencies
|
// Checkout the file dependencies
|
||||||
if (!p_selected.empty()) {
|
if (!p_selected.empty()) {
|
||||||
|
@ -1593,7 +1550,6 @@ void FileSystemDock::focus_on_filter() {
|
||||||
// Tree mode, switch to files list with search box
|
// Tree mode, switch to files list with search box
|
||||||
tree->hide();
|
tree->hide();
|
||||||
file_list_vb->show();
|
file_list_vb->show();
|
||||||
button_favorite->hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
search_box->grab_focus();
|
search_box->grab_focus();
|
||||||
|
@ -1840,9 +1796,13 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, Vector<Str
|
||||||
Vector<String> filenames;
|
Vector<String> filenames;
|
||||||
Vector<String> foldernames;
|
Vector<String> foldernames;
|
||||||
|
|
||||||
|
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
||||||
|
|
||||||
bool all_files = true;
|
bool all_files = true;
|
||||||
bool all_files_scenes = true;
|
bool all_files_scenes = true;
|
||||||
bool all_folders = true;
|
bool all_folders = true;
|
||||||
|
bool all_favorites = true;
|
||||||
|
bool all_not_favorites = true;
|
||||||
for (int i = 0; i < p_paths.size(); i++) {
|
for (int i = 0; i < p_paths.size(); i++) {
|
||||||
String fpath = p_paths[i];
|
String fpath = p_paths[i];
|
||||||
if (fpath.ends_with("/")) {
|
if (fpath.ends_with("/")) {
|
||||||
|
@ -1853,6 +1813,20 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, Vector<Str
|
||||||
all_folders = false;
|
all_folders = false;
|
||||||
all_files_scenes &= (EditorFileSystem::get_singleton()->get_file_type(fpath) == "PackedScene");
|
all_files_scenes &= (EditorFileSystem::get_singleton()->get_file_type(fpath) == "PackedScene");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if in favorites
|
||||||
|
bool found = false;
|
||||||
|
for (int j = 0; j < favorites.size(); j++) {
|
||||||
|
if (favorites[j] == fpath) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
all_not_favorites = false;
|
||||||
|
} else {
|
||||||
|
all_favorites = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (all_files) {
|
if (all_files) {
|
||||||
|
@ -1867,7 +1841,19 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, Vector<Str
|
||||||
p_popup->add_item(TTR("Open"), FILE_OPEN);
|
p_popup->add_item(TTR("Open"), FILE_OPEN);
|
||||||
p_popup->add_separator();
|
p_popup->add_separator();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p_paths.size() >= 1) {
|
||||||
|
if (!all_favorites) {
|
||||||
|
p_popup->add_item(TTR("Add to favorites"), FILE_ADD_FAVORITE);
|
||||||
|
}
|
||||||
|
if (!all_not_favorites) {
|
||||||
|
p_popup->add_item(TTR("Remove from favorites"), FILE_REMOVE_FAVORITE);
|
||||||
|
}
|
||||||
|
p_popup->add_separator();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (all_files) {
|
||||||
if (filenames.size() == 1) {
|
if (filenames.size() == 1) {
|
||||||
p_popup->add_item(TTR("Edit Dependencies..."), FILE_DEPENDENCIES);
|
p_popup->add_item(TTR("Edit Dependencies..."), FILE_DEPENDENCIES);
|
||||||
p_popup->add_item(TTR("View Owners..."), FILE_OWNERS);
|
p_popup->add_item(TTR("View Owners..."), FILE_OWNERS);
|
||||||
|
@ -2075,7 +2061,6 @@ void FileSystemDock::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("_update_tree"), &FileSystemDock::_update_tree);
|
ClassDB::bind_method(D_METHOD("_update_tree"), &FileSystemDock::_update_tree);
|
||||||
ClassDB::bind_method(D_METHOD("_rescan"), &FileSystemDock::_rescan);
|
ClassDB::bind_method(D_METHOD("_rescan"), &FileSystemDock::_rescan);
|
||||||
ClassDB::bind_method(D_METHOD("_favorites_pressed"), &FileSystemDock::_favorites_pressed);
|
|
||||||
ClassDB::bind_method(D_METHOD("_show_current_scene_file"), &FileSystemDock::_show_current_scene_file);
|
ClassDB::bind_method(D_METHOD("_show_current_scene_file"), &FileSystemDock::_show_current_scene_file);
|
||||||
//ClassDB::bind_method(D_METHOD("_instance_pressed"),&ScenesDock::_instance_pressed);
|
//ClassDB::bind_method(D_METHOD("_instance_pressed"),&ScenesDock::_instance_pressed);
|
||||||
|
|
||||||
|
@ -2160,14 +2145,6 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
|
||||||
|
|
||||||
//toolbar_hbc->add_spacer();
|
//toolbar_hbc->add_spacer();
|
||||||
|
|
||||||
button_favorite = memnew(Button);
|
|
||||||
button_favorite->set_flat(true);
|
|
||||||
button_favorite->set_toggle_mode(true);
|
|
||||||
button_favorite->connect("pressed", this, "_favorites_pressed");
|
|
||||||
button_favorite->set_tooltip(TTR("Toggle folder status as Favorite."));
|
|
||||||
button_favorite->set_focus_mode(FOCUS_NONE);
|
|
||||||
toolbar_hbc->add_child(button_favorite);
|
|
||||||
|
|
||||||
button_show = memnew(Button);
|
button_show = memnew(Button);
|
||||||
button_show->set_flat(true);
|
button_show->set_flat(true);
|
||||||
button_show->connect("pressed", this, "_show_current_scene_file");
|
button_show->connect("pressed", this, "_show_current_scene_file");
|
||||||
|
|
|
@ -80,6 +80,8 @@ private:
|
||||||
enum FileMenu {
|
enum FileMenu {
|
||||||
FILE_OPEN,
|
FILE_OPEN,
|
||||||
FILE_INSTANCE,
|
FILE_INSTANCE,
|
||||||
|
FILE_ADD_FAVORITE,
|
||||||
|
FILE_REMOVE_FAVORITE,
|
||||||
FILE_DEPENDENCIES,
|
FILE_DEPENDENCIES,
|
||||||
FILE_OWNERS,
|
FILE_OWNERS,
|
||||||
FILE_MOVE,
|
FILE_MOVE,
|
||||||
|
@ -106,7 +108,6 @@ private:
|
||||||
Set<String> favorites;
|
Set<String> favorites;
|
||||||
|
|
||||||
Button *button_reload;
|
Button *button_reload;
|
||||||
Button *button_favorite;
|
|
||||||
Button *button_tree;
|
Button *button_tree;
|
||||||
Button *button_file_list_display_mode;
|
Button *button_file_list_display_mode;
|
||||||
Button *button_hist_next;
|
Button *button_hist_next;
|
||||||
|
@ -226,7 +227,6 @@ private:
|
||||||
void _set_scanning_mode();
|
void _set_scanning_mode();
|
||||||
void _rescan();
|
void _rescan();
|
||||||
|
|
||||||
void _favorites_pressed();
|
|
||||||
void _show_current_scene_file();
|
void _show_current_scene_file();
|
||||||
void _search_changed(const String &p_text);
|
void _search_changed(const String &p_text);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue