diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index 77331256f36..b845eba66b4 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -162,6 +162,7 @@ EditorExportPlugin::EditorExportPlugin() { ///////////////////////////////////////////////////////////////////////////////////////////////////// + static void _add_to_list(EditorFileSystemDirectory *p_efsd,Set& r_list) { for(int i=0;iget_subdir_count();i++) { @@ -170,13 +171,11 @@ static void _add_to_list(EditorFileSystemDirectory *p_efsd,Set& r_li } for(int i=0;iget_file_count();i++) { - r_list.insert(p_efsd->get_file_path(i)); } } - struct __EESortDepCmp { _FORCE_INLINE_ bool operator()(const StringName& p_l,const StringName& p_r) const { @@ -187,7 +186,7 @@ struct __EESortDepCmp { -static void _add_files_with_filter(DirAccess *da,const List& p_filters,Set& r_list) { +static void _edit_files_with_filter(DirAccess *da,const List& p_filters,Set& r_list,bool exclude) { List files; @@ -218,8 +217,17 @@ static void _add_files_with_filter(DirAccess *da,const List& p_filters,S for(const List::Element *F=p_filters.front();F;F=F->next()) { if (fullpath.matchn(F->get())) { - r_list.insert(fullpath); - print_line("Added: "+fullpath); + String act = "Added: "; + + if (!exclude) { + r_list.insert(fullpath); + } else { + act = "Removed: "; + r_list.erase(fullpath); + } + + + print_line(act+fullpath); } } } @@ -230,13 +238,13 @@ static void _add_files_with_filter(DirAccess *da,const List& p_filters,S if (E->get().begins_with(".")) continue; da->change_dir(E->get()); - _add_files_with_filter(da,p_filters,r_list); + _edit_files_with_filter(da,p_filters,r_list,exclude); da->change_dir(".."); } } -static void _add_filter_to_list(Set& r_list,const String& p_filter) { +static void _edit_filter_list(Set& r_list,const String& p_filter,bool exclude) { if (p_filter=="") return; @@ -250,11 +258,16 @@ static void _add_filter_to_list(Set& r_list,const String& p_filter) } DirAccess *da = DirAccess::open("res://"); - _add_files_with_filter(da,filters,r_list); + _edit_files_with_filter(da,filters,r_list,exclude); memdelete(da); +} +static void _add_filter_to_list(Set& r_list,const String& p_filter) { + _edit_filter_list(r_list,p_filter,false); +} - +static void _remove_filter_from_list(Set& r_list,const String& p_filter) { + _edit_filter_list(r_list,p_filter,true); } Vector EditorExportPlatform::get_exported_file_default(String& p_fname) const { @@ -307,6 +320,8 @@ Vector EditorExportPlatform::get_dependencies(bool p_bundles) const cf+="*.flags"; _add_filter_to_list(exported,cf); + cf = EditorImportExport::get_singleton()->get_export_custom_filter_exclude(); + _remove_filter_from_list(exported,cf); } @@ -380,6 +395,9 @@ Vector EditorExportPlatform::get_dependencies(bool p_bundles) const cf+="*.flags"; _add_filter_to_list(exported,cf); + cf = EditorImportExport::get_singleton()->get_export_custom_filter_exclude(); + _remove_filter_from_list(exported,cf); + } @@ -1530,13 +1548,17 @@ EditorImportExport::ExportFilter EditorImportExport::get_export_filter() const{ } void EditorImportExport::set_export_custom_filter(const String& p_custom_filter){ - export_custom_filter=p_custom_filter; } +void EditorImportExport::set_export_custom_filter_exclude(const String& p_custom_filter){ + export_custom_filter_exclude=p_custom_filter; +} String EditorImportExport::get_export_custom_filter() const{ - return export_custom_filter; } +String EditorImportExport::get_export_custom_filter_exclude() const{ + return export_custom_filter_exclude; +} void EditorImportExport::set_export_image_action(ImageAction p_action) { @@ -1699,6 +1721,7 @@ void EditorImportExport::load_config() { export_custom_filter=cf->get_value("export_filter","filter"); + export_custom_filter_exclude=cf->get_value("export_filter","filter_exclude"); String t=cf->get_value("export_filter","type"); if (t=="selected") export_filter=EXPORT_SELECTED; @@ -1888,6 +1911,7 @@ void EditorImportExport::save_config() { } cf->set_value("export_filter","filter",export_custom_filter); + cf->set_value("export_filter", "filter_exclude",export_custom_filter_exclude); String file_action_section = "export_filter_files"; diff --git a/tools/editor/editor_import_export.h b/tools/editor/editor_import_export.h index 272464d9b03..60b7f919d86 100644 --- a/tools/editor/editor_import_export.h +++ b/tools/editor/editor_import_export.h @@ -285,7 +285,7 @@ protected: Set image_formats; ExportFilter export_filter; - String export_custom_filter; + String export_custom_filter, export_custom_filter_exclude; Map files; Map > exporters; Map image_groups; @@ -332,7 +332,9 @@ public: ExportFilter get_export_filter() const; void set_export_custom_filter(const String& p_custom_filter); + void set_export_custom_filter_exclude(const String& p_custom_filter); String get_export_custom_filter() const; + String get_export_custom_filter_exclude() const; void set_export_image_action(ImageAction p_action); ImageAction get_export_image_action() const; diff --git a/tools/editor/project_export.cpp b/tools/editor/project_export.cpp index 164443d001a..b5e7715d931 100644 --- a/tools/editor/project_export.cpp +++ b/tools/editor/project_export.cpp @@ -217,6 +217,11 @@ void ProjectExportDialog::_filters_edited(String what) { _save_export_cfg(); } +void ProjectExportDialog::_filters_exclude_edited(String what) { + EditorImportExport::get_singleton()->set_export_custom_filter_exclude(what); + _save_export_cfg(); +} + void ProjectExportDialog::_quality_edited(float what) { EditorImportExport::get_singleton()->set_export_image_quality(what); @@ -314,6 +319,7 @@ void ProjectExportDialog::_notification(int p_what) { export_mode->select( EditorImportExport::get_singleton()->get_export_filter() ); convert_text_scenes->set_pressed( EditorImportExport::get_singleton()->get_convert_text_scenes() ); filters->set_text( EditorImportExport::get_singleton()->get_export_custom_filter() ); + filters_exclude->set_text( EditorImportExport::get_singleton()->get_export_custom_filter_exclude() ); if (EditorImportExport::get_singleton()->get_export_filter()!=EditorImportExport::EXPORT_SELECTED) tree_vb->hide(); else @@ -1083,6 +1089,7 @@ void ProjectExportDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_prop_edited"),&ProjectExportDialog::_prop_edited); 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_exclude_edited"),&ProjectExportDialog::_filters_exclude_edited); ObjectTypeDB::bind_method(_MD("_export_action"),&ProjectExportDialog::_export_action); ObjectTypeDB::bind_method(_MD("_export_action_pck"),&ProjectExportDialog::_export_action_pck); ObjectTypeDB::bind_method(_MD("_quality_edited"),&ProjectExportDialog::_quality_edited); @@ -1195,8 +1202,11 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) { tree->set_column_min_width(1,90); filters = memnew( LineEdit ); - vb->add_margin_child("Filters to export non-resource files (Comma Separated, ie: *.json, *.txt):",filters); + vb->add_margin_child("Filters to export non-resource files (Comma Separated, eg: *.json, *.txt):",filters); filters->connect("text_changed",this,"_filters_edited"); + filters_exclude = memnew( LineEdit ); + vb->add_margin_child("Filters to exclude from export (Comma Separated, eg: *.json, *.txt):",filters_exclude); + filters_exclude->connect("text_changed",this,"_filters_exclude_edited"); convert_text_scenes = memnew( CheckButton ); convert_text_scenes->set_text("Convert text scenes to binary on export"); diff --git a/tools/editor/project_export.h b/tools/editor/project_export.h index b9e49489e3e..dc076ce2019 100644 --- a/tools/editor/project_export.h +++ b/tools/editor/project_export.h @@ -75,7 +75,7 @@ private: ConfirmationDialog *confirm; Button *button_reload; - LineEdit *filters; + LineEdit *filters, *filters_exclude; HBoxContainer *plat_errors; Label *platform_error_string; @@ -155,6 +155,7 @@ private: void _platform_selected(); void _filters_edited(String what); + void _filters_exclude_edited(String what); void _update_group_tree(); void _image_filter_changed(String);