Added support for exclude folders from export

This commit is contained in:
allkhor 2018-04-05 03:55:01 +06:00
parent 0b180a0732
commit cedb113ffd
4 changed files with 53 additions and 14 deletions

View file

@ -199,11 +199,29 @@ EditorExportPlugin::EditorExportPlugin() {
///////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////
static void _add_to_list(EditorFileSystemDirectory *p_efsd, Set<StringName> &r_list) { static void _split_by_comma(List<String> &p_list, const String &p_src) {
if (p_src == "")
return;
Vector<String> split = p_src.split(",");
for (int i = 0; i < split.size(); i++) {
String f = split[i].strip_edges();
if (f.empty())
continue;
p_list.push_back(f);
}
}
static void _add_to_list(EditorFileSystemDirectory *p_efsd, Set<StringName> &r_list, const String &p_filter) {
List<String> filters;
_split_by_comma(filters, p_filter);
for (int i = 0; i < p_efsd->get_subdir_count(); i++) { for (int i = 0; i < p_efsd->get_subdir_count(); i++) {
if (p_filter == "" || filters.find(p_efsd->get_subdir(i)->get_name()) == NULL)
_add_to_list(p_efsd->get_subdir(i), r_list); _add_to_list(p_efsd->get_subdir(i), r_list, p_filter);
else
print_line("Folder ignored by settings: " + p_efsd->get_subdir(i)->get_name());
} }
for (int i = 0; i < p_efsd->get_file_count(); i++) { for (int i = 0; i < p_efsd->get_file_count(); i++) {
@ -273,14 +291,8 @@ static void _edit_filter_list(Set<StringName> &r_list, const String &p_filter, b
if (p_filter == "") if (p_filter == "")
return; return;
Vector<String> split = p_filter.split(",");
List<String> filters; List<String> filters;
for (int i = 0; i < split.size(); i++) { _split_by_comma(filters, p_filter);
String f = split[i].strip_edges();
if (f.empty())
continue;
filters.push_back(f);
}
DirAccess *da = DirAccess::open("res://"); DirAccess *da = DirAccess::open("res://");
ERR_FAIL_NULL(da); ERR_FAIL_NULL(da);
@ -365,8 +377,9 @@ Vector<StringName> EditorExportPlatform::get_dependencies(bool p_bundles) const
if (EditorImportExport::get_singleton()->get_export_filter() == EditorImportExport::EXPORT_ALL) { if (EditorImportExport::get_singleton()->get_export_filter() == EditorImportExport::EXPORT_ALL) {
_add_filter_to_list(exported, "*"); _add_filter_to_list(exported, "*");
} else { } else {
_add_to_list(EditorFileSystem::get_singleton()->get_filesystem(), exported); String cf = EditorImportExport::get_singleton()->get_export_custom_filter_exclude_dir();
String cf = EditorImportExport::get_singleton()->get_export_custom_filter(); _add_to_list(EditorFileSystem::get_singleton()->get_filesystem(), exported, cf);
cf = EditorImportExport::get_singleton()->get_export_custom_filter();
if (cf != "") if (cf != "")
cf += ","; cf += ",";
cf += "*.flags"; cf += "*.flags";
@ -1550,12 +1563,18 @@ void EditorImportExport::set_export_custom_filter(const String &p_custom_filter)
void EditorImportExport::set_export_custom_filter_exclude(const String &p_custom_filter) { void EditorImportExport::set_export_custom_filter_exclude(const String &p_custom_filter) {
export_custom_filter_exclude = p_custom_filter; export_custom_filter_exclude = p_custom_filter;
} }
void EditorImportExport::set_export_custom_filter_exclude_dir(const String &p_custom_filter) {
export_custom_filter_exclude_dir = p_custom_filter;
}
String EditorImportExport::get_export_custom_filter() const { String EditorImportExport::get_export_custom_filter() const {
return export_custom_filter; return export_custom_filter;
} }
String EditorImportExport::get_export_custom_filter_exclude() const { String EditorImportExport::get_export_custom_filter_exclude() const {
return export_custom_filter_exclude; return export_custom_filter_exclude;
} }
String EditorImportExport::get_export_custom_filter_exclude_dir() const {
return export_custom_filter_exclude_dir;
}
void EditorImportExport::set_export_image_action(ImageAction p_action) { void EditorImportExport::set_export_image_action(ImageAction p_action) {
@ -1703,6 +1722,7 @@ void EditorImportExport::load_config() {
export_custom_filter = cf->get_value("export_filter", "filter"); export_custom_filter = cf->get_value("export_filter", "filter");
export_custom_filter_exclude = cf->get_value("export_filter", "filter_exclude"); export_custom_filter_exclude = cf->get_value("export_filter", "filter_exclude");
export_custom_filter_exclude_dir = cf->get_value("export_filter", "filter_exclude_dir");
String t = cf->get_value("export_filter", "type"); String t = cf->get_value("export_filter", "type");
if (t == "selected") if (t == "selected")
export_filter = EXPORT_SELECTED; export_filter = EXPORT_SELECTED;
@ -1880,6 +1900,7 @@ void EditorImportExport::save_config() {
cf->set_value("export_filter", "filter", export_custom_filter); cf->set_value("export_filter", "filter", export_custom_filter);
cf->set_value("export_filter", "filter_exclude", export_custom_filter_exclude); cf->set_value("export_filter", "filter_exclude", export_custom_filter_exclude);
cf->set_value("export_filter", "filter_exclude_dir", export_custom_filter_exclude_dir);
String file_action_section = "export_filter_files"; String file_action_section = "export_filter_files";
@ -2091,6 +2112,9 @@ void EditorImportExport::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_export_custom_filter_exclude", "filter_exclude"), &EditorImportExport::set_export_custom_filter_exclude); ObjectTypeDB::bind_method(_MD("set_export_custom_filter_exclude", "filter_exclude"), &EditorImportExport::set_export_custom_filter_exclude);
ObjectTypeDB::bind_method(_MD("get_export_custom_filter_exclude"), &EditorImportExport::get_export_custom_filter_exclude); ObjectTypeDB::bind_method(_MD("get_export_custom_filter_exclude"), &EditorImportExport::get_export_custom_filter_exclude);
ObjectTypeDB::bind_method(_MD("set_export_custom_filter_exclude_dir", "filter_exclude_dir"), &EditorImportExport::set_export_custom_filter_exclude_dir);
ObjectTypeDB::bind_method(_MD("get_export_custom_filter_exclude_dir"), &EditorImportExport::get_export_custom_filter_exclude_dir);
ObjectTypeDB::bind_method(_MD("image_export_group_create"), &EditorImportExport::image_export_group_create); ObjectTypeDB::bind_method(_MD("image_export_group_create"), &EditorImportExport::image_export_group_create);
ObjectTypeDB::bind_method(_MD("image_export_group_remove"), &EditorImportExport::image_export_group_remove); ObjectTypeDB::bind_method(_MD("image_export_group_remove"), &EditorImportExport::image_export_group_remove);
ObjectTypeDB::bind_method(_MD("image_export_group_set_image_action"), &EditorImportExport::image_export_group_set_image_action); ObjectTypeDB::bind_method(_MD("image_export_group_set_image_action"), &EditorImportExport::image_export_group_set_image_action);

View file

@ -288,7 +288,7 @@ protected:
Set<String> image_formats; Set<String> image_formats;
ExportFilter export_filter; ExportFilter export_filter;
String export_custom_filter, export_custom_filter_exclude; String export_custom_filter, export_custom_filter_exclude, export_custom_filter_exclude_dir;
Map<StringName, FileAction> files; Map<StringName, FileAction> files;
Map<StringName, Ref<EditorExportPlatform> > exporters; Map<StringName, Ref<EditorExportPlatform> > exporters;
Map<StringName, ImageGroup> image_groups; Map<StringName, ImageGroup> image_groups;
@ -340,8 +340,10 @@ public:
void set_export_custom_filter(const String &p_custom_filter); void set_export_custom_filter(const String &p_custom_filter);
void set_export_custom_filter_exclude(const String &p_custom_filter); void set_export_custom_filter_exclude(const String &p_custom_filter);
void set_export_custom_filter_exclude_dir(const String &p_custom_filter);
String get_export_custom_filter() const; String get_export_custom_filter() const;
String get_export_custom_filter_exclude() const; String get_export_custom_filter_exclude() const;
String get_export_custom_filter_exclude_dir() const;
void set_export_image_action(ImageAction p_action); void set_export_image_action(ImageAction p_action);
ImageAction get_export_image_action() const; ImageAction get_export_image_action() const;

View file

@ -202,10 +202,17 @@ void ProjectExportDialog::_filters_edited(String what) {
} }
void ProjectExportDialog::_filters_exclude_edited(String what) { void ProjectExportDialog::_filters_exclude_edited(String what) {
EditorImportExport::get_singleton()->set_export_custom_filter_exclude(what); EditorImportExport::get_singleton()->set_export_custom_filter_exclude(what);
_save_export_cfg(); _save_export_cfg();
} }
void ProjectExportDialog::_filters_exclude_dir_edited(String what) {
EditorImportExport::get_singleton()->set_export_custom_filter_exclude_dir(what);
_save_export_cfg();
}
void ProjectExportDialog::_quality_edited(float what) { void ProjectExportDialog::_quality_edited(float what) {
EditorImportExport::get_singleton()->set_export_image_quality(what); EditorImportExport::get_singleton()->set_export_image_quality(what);
@ -296,6 +303,7 @@ void ProjectExportDialog::_notification(int p_what) {
convert_text_scenes->set_pressed(EditorImportExport::get_singleton()->get_convert_text_scenes()); convert_text_scenes->set_pressed(EditorImportExport::get_singleton()->get_convert_text_scenes());
filters->set_text(EditorImportExport::get_singleton()->get_export_custom_filter()); filters->set_text(EditorImportExport::get_singleton()->get_export_custom_filter());
filters_exclude->set_text(EditorImportExport::get_singleton()->get_export_custom_filter_exclude()); filters_exclude->set_text(EditorImportExport::get_singleton()->get_export_custom_filter_exclude());
filters_exclude_dir->set_text(EditorImportExport::get_singleton()->get_export_custom_filter_exclude_dir());
if (EditorImportExport::get_singleton()->get_export_filter() != EditorImportExport::EXPORT_SELECTED) if (EditorImportExport::get_singleton()->get_export_filter() != EditorImportExport::EXPORT_SELECTED)
tree_vb->hide(); tree_vb->hide();
else else
@ -1228,6 +1236,7 @@ void ProjectExportDialog::_bind_methods() {
ObjectTypeDB::bind_method(_MD("_export_mode_changed"), &ProjectExportDialog::_export_mode_changed); ObjectTypeDB::bind_method(_MD("_export_mode_changed"), &ProjectExportDialog::_export_mode_changed);
ObjectTypeDB::bind_method(_MD("_filters_edited"), &ProjectExportDialog::_filters_edited); ObjectTypeDB::bind_method(_MD("_filters_edited"), &ProjectExportDialog::_filters_edited);
ObjectTypeDB::bind_method(_MD("_filters_exclude_edited"), &ProjectExportDialog::_filters_exclude_edited); ObjectTypeDB::bind_method(_MD("_filters_exclude_edited"), &ProjectExportDialog::_filters_exclude_edited);
ObjectTypeDB::bind_method(_MD("_filters_exclude_dir_edited"), &ProjectExportDialog::_filters_exclude_dir_edited);
ObjectTypeDB::bind_method(_MD("_export_action"), &ProjectExportDialog::_export_action); ObjectTypeDB::bind_method(_MD("_export_action"), &ProjectExportDialog::_export_action);
ObjectTypeDB::bind_method(_MD("_export_action_pck"), &ProjectExportDialog::_export_action_pck); ObjectTypeDB::bind_method(_MD("_export_action_pck"), &ProjectExportDialog::_export_action_pck);
ObjectTypeDB::bind_method(_MD("_quality_edited"), &ProjectExportDialog::_quality_edited); ObjectTypeDB::bind_method(_MD("_quality_edited"), &ProjectExportDialog::_quality_edited);
@ -1340,6 +1349,9 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) {
filters_exclude = memnew(LineEdit); filters_exclude = memnew(LineEdit);
vb->add_margin_child(TTR("Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):"), filters_exclude); vb->add_margin_child(TTR("Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):"), filters_exclude);
filters_exclude->connect("text_changed", this, "_filters_exclude_edited"); filters_exclude->connect("text_changed", this, "_filters_exclude_edited");
filters_exclude_dir = memnew(LineEdit);
vb->add_margin_child(TTR("Filters to exclude directories from export (comma-separated, e.g.: addons, devs, test):"), filters_exclude_dir);
filters_exclude_dir->connect("text_changed", this, "_filters_exclude_dir_edited");
convert_text_scenes = memnew(CheckButton); convert_text_scenes = memnew(CheckButton);
convert_text_scenes->set_text(TTR("Convert text scenes to binary on export.")); convert_text_scenes->set_text(TTR("Convert text scenes to binary on export."));

View file

@ -75,7 +75,7 @@ private:
ConfirmationDialog *confirm_keystore; ConfirmationDialog *confirm_keystore;
Button *button_reload; Button *button_reload;
LineEdit *filters, *filters_exclude; LineEdit *filters, *filters_exclude, *filters_exclude_dir;
HBoxContainer *plat_errors; HBoxContainer *plat_errors;
Label *platform_error_string; Label *platform_error_string;
@ -155,6 +155,7 @@ private:
void _filters_edited(String what); void _filters_edited(String what);
void _filters_exclude_edited(String what); void _filters_exclude_edited(String what);
void _filters_exclude_dir_edited(String what);
void _update_group_tree(); void _update_group_tree();
void _image_filter_changed(String); void _image_filter_changed(String);