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";
|
||||
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_open->set_icon(get_icon("Folder", ei));
|
||||
button_tree->set_icon(get_icon("Filesystem", ei));
|
||||
|
@ -311,7 +310,6 @@ void FileSystemDock::_notification(int p_what) {
|
|||
// Update icons
|
||||
String ei = "EditorIcons";
|
||||
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_hist_next->set_icon(get_icon("Forward", 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) {
|
||||
|
||||
// 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
|
||||
if (!p_selected)
|
||||
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() {
|
||||
|
||||
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;
|
||||
|
||||
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: {
|
||||
// Checkout the file dependencies
|
||||
if (!p_selected.empty()) {
|
||||
|
@ -1593,7 +1550,6 @@ void FileSystemDock::focus_on_filter() {
|
|||
// Tree mode, switch to files list with search box
|
||||
tree->hide();
|
||||
file_list_vb->show();
|
||||
button_favorite->hide();
|
||||
}
|
||||
|
||||
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> foldernames;
|
||||
|
||||
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
|
||||
|
||||
bool all_files = true;
|
||||
bool all_files_scenes = true;
|
||||
bool all_folders = true;
|
||||
bool all_favorites = true;
|
||||
bool all_not_favorites = true;
|
||||
for (int i = 0; i < p_paths.size(); i++) {
|
||||
String fpath = p_paths[i];
|
||||
if (fpath.ends_with("/")) {
|
||||
|
@ -1853,6 +1813,20 @@ void FileSystemDock::_file_and_folders_fill_popup(PopupMenu *p_popup, Vector<Str
|
|||
all_folders = false;
|
||||
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) {
|
||||
|
@ -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_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) {
|
||||
p_popup->add_item(TTR("Edit Dependencies..."), FILE_DEPENDENCIES);
|
||||
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("_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("_instance_pressed"),&ScenesDock::_instance_pressed);
|
||||
|
||||
|
@ -2160,14 +2145,6 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
|
|||
|
||||
//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->set_flat(true);
|
||||
button_show->connect("pressed", this, "_show_current_scene_file");
|
||||
|
|
|
@ -80,6 +80,8 @@ private:
|
|||
enum FileMenu {
|
||||
FILE_OPEN,
|
||||
FILE_INSTANCE,
|
||||
FILE_ADD_FAVORITE,
|
||||
FILE_REMOVE_FAVORITE,
|
||||
FILE_DEPENDENCIES,
|
||||
FILE_OWNERS,
|
||||
FILE_MOVE,
|
||||
|
@ -106,7 +108,6 @@ private:
|
|||
Set<String> favorites;
|
||||
|
||||
Button *button_reload;
|
||||
Button *button_favorite;
|
||||
Button *button_tree;
|
||||
Button *button_file_list_display_mode;
|
||||
Button *button_hist_next;
|
||||
|
@ -226,7 +227,6 @@ private:
|
|||
void _set_scanning_mode();
|
||||
void _rescan();
|
||||
|
||||
void _favorites_pressed();
|
||||
void _show_current_scene_file();
|
||||
void _search_changed(const String &p_text);
|
||||
|
||||
|
|
Loading…
Reference in a new issue