From fad8d0526e25814c4f61f52421bdde47028edb6b Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 20 Apr 2016 11:34:14 +0100 Subject: [PATCH] Projucer: improved the set of browsable files that are added to target projects for each module --- .../Project Saving/jucer_ProjectSaver.h | 10 +--------- .../Projucer/Source/Project/jucer_Module.cpp | 19 +++++-------------- extras/Projucer/Source/Project/jucer_Module.h | 2 +- .../Projucer/Source/Project/jucer_Project.cpp | 8 ++++++-- .../Projucer/Source/Project/jucer_Project.h | 2 +- .../Source/Project/jucer_ProjectTree_Group.h | 4 ++-- .../Source/Utility/jucer_FileHelpers.h | 1 + 7 files changed, 17 insertions(+), 29 deletions(-) diff --git a/extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h b/extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h index 9d9fb8d400..4d5307ebac 100644 --- a/extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h +++ b/extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h @@ -604,14 +604,6 @@ private: replaceFileIfDifferent (generatedCodeFolder.getChildFile ("ReadMe.txt"), out); } - static void sortGroupRecursively (Project::Item group) - { - group.sortAlphabetically (true); - - for (int i = group.getNumChildren(); --i >= 0;) - sortGroupRecursively (group.getChild(i)); - } - void addError (const String& message) { const ScopedLock sl (errorLock); @@ -645,7 +637,7 @@ private: if (project.getProjectType().isAudioPlugin()) writePluginCharacteristicsFile(); - sortGroupRecursively (generatedFilesGroup); + generatedFilesGroup.sortAlphabetically (true, true); exporter->getAllGroups().add (generatedFilesGroup); threadPool.addJob (new ExporterJob (*this, exporter.exporter.release(), modules), true); diff --git a/extras/Projucer/Source/Project/jucer_Module.cpp b/extras/Projucer/Source/Project/jucer_Module.cpp index bf707ac01b..cf5b978928 100644 --- a/extras/Projucer/Source/Project/jucer_Module.cpp +++ b/extras/Projucer/Source/Project/jucer_Module.cpp @@ -496,29 +496,19 @@ static void addFileWithGroups (Project::Item& group, const RelativePath& file, c } } -static void findWildcardMatches (const File& folder, Array& result) +void LibraryModule::findBrowseableFiles (const File& folder, Array& filesFound) const { Array tempList; FileSorter sorter; - DirectoryIterator iter (folder, false, "*"); + DirectoryIterator iter (folder, true, "*", File::findFiles); bool isHiddenFile; while (iter.next (nullptr, &isHiddenFile, nullptr, nullptr, nullptr, nullptr)) - if (! isHiddenFile) + if (! isHiddenFile && iter.getFile().hasFileExtension (browseableFileExtensions)) tempList.addSorted (sorter, iter.getFile()); - result.addArray (tempList); -} - -void LibraryModule::findBrowseableFiles (const File& localModuleFolder, Array& filesFound) const -{ - DirectoryIterator iter (localModuleFolder, true, "*", File::findDirectories); - bool isHiddenFile; - - while (iter.next (nullptr, &isHiddenFile, nullptr, nullptr, nullptr, nullptr)) - if (! isHiddenFile) - findWildcardMatches (iter.getFile(), filesFound); + filesFound.addArray (tempList); } void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array& compiled, const File& localModuleFolder) const @@ -542,6 +532,7 @@ void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array= 0;) + getChild(i).sortAlphabetically (keepGroupsAtStart, true); } Project::Item Project::Item::getOrCreateSubGroup (const String& name) @@ -995,7 +999,7 @@ bool Project::Item::addFileRetainingSortOrder (const File& file, bool shouldComp return false; if (wasSortedGroupsNotFirst || wasSortedGroupsFirst) - sortAlphabetically (wasSortedGroupsFirst); + sortAlphabetically (wasSortedGroupsFirst, false); return true; } diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 4fa42e7779..f923408c8b 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -226,7 +226,7 @@ public: void addFileUnchecked (const File& file, int insertIndex, bool shouldCompile); bool addRelativeFile (const RelativePath& file, int insertIndex, bool shouldCompile); void removeItemFromProject(); - void sortAlphabetically (bool keepGroupsAtStart); + void sortAlphabetically (bool keepGroupsAtStart, bool recursive); Item findItemForFile (const File& file) const; bool containsChildForFile (const RelativePath& file) const; diff --git a/extras/Projucer/Source/Project/jucer_ProjectTree_Group.h b/extras/Projucer/Source/Project/jucer_ProjectTree_Group.h index 1cf764a34d..fefd83d537 100644 --- a/extras/Projucer/Source/Project/jucer_ProjectTree_Group.h +++ b/extras/Projucer/Source/Project/jucer_ProjectTree_Group.h @@ -146,8 +146,8 @@ public: case 2: openOrCloseAllSubGroups (*this, true); break; case 3: setFilesToCompile (item, true); break; case 4: setFilesToCompile (item, false); break; - case 5: item.sortAlphabetically (false); break; - case 6: item.sortAlphabetically (true); break; + case 5: item.sortAlphabetically (false, false); break; + case 6: item.sortAlphabetically (true, false); break; case 7: triggerAsyncRename (item); break; case 8: deleteAllSelectedItems(); break; default: processCreateFileMenuItem (resultCode); break; diff --git a/extras/Projucer/Source/Utility/jucer_FileHelpers.h b/extras/Projucer/Source/Utility/jucer_FileHelpers.h index da3792f181..a35876f315 100644 --- a/extras/Projucer/Source/Utility/jucer_FileHelpers.h +++ b/extras/Projucer/Source/Utility/jucer_FileHelpers.h @@ -61,6 +61,7 @@ const char* const cppFileExtensions = "cpp;cc;cxx"; const char* const objCFileExtensions = "mm;m"; const char* const asmFileExtensions = "s;S;asm"; const char* const sourceOrHeaderFileExtensions = "cpp;mm;m;c;cc;cxx;swift;s;S;asm;h;hpp;hxx;hh;inl"; +const char* const browseableFileExtensions = "cpp;mm;m;c;cc;cxx;swift;s;S;asm;h;hpp;hxx;hh;inl;txt;md;rtf"; const char* const fileTypesToCompileByDefault = "cpp;mm;c;m;cc;cxx;swift;s;S;asm;r"; //==============================================================================