Rework DependencyRemoveDialog for deleting folders

DependencyRemoveDialog now takes two lists (files and folders) to delete.
Sort the folders above files in DependencyRemoveDialog & use some more icons.
Stop files which will be deleted from also being listed as having broken dependencies.
Add right-click option for removing folder to filesystem folder tree.
This commit is contained in:
MillionOstrich
2017-10-01 23:24:49 +01:00
parent 716e5b2943
commit 40d1866b05
4 changed files with 151 additions and 72 deletions

View File

@ -84,14 +84,33 @@ class DependencyRemoveDialog : public ConfirmationDialog {
Label *text;
Tree *owners;
bool exist;
Map<String, TreeItem *> files;
void _fill_owners(EditorFileSystemDirectory *efsd);
Map<String, String> all_remove_files;
Vector<String> to_delete;
struct RemovedDependency {
String file;
String file_type;
String dependency;
String dependency_folder;
bool operator<(const RemovedDependency &p_other) const {
if (dependency_folder.empty() != p_other.dependency_folder.empty()) {
return p_other.dependency_folder.empty();
} else {
return dependency < p_other.dependency;
}
}
};
void _find_files_in_removed_folder(EditorFileSystemDirectory *efsd, const String &p_folder);
void _find_all_removed_dependencies(EditorFileSystemDirectory *efsd, Vector<RemovedDependency> &p_removed);
void _build_removed_dependency_tree(const Vector<RemovedDependency> &p_removed);
void ok_pressed();
public:
void show(const Vector<String> &to_erase);
void show(const Vector<String> &p_folders, const Vector<String> &p_files);
DependencyRemoveDialog();
};