From f8c90cebe4c0e12dd0331c3c46b6af66ece6d6fe Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 27 Oct 2015 12:50:52 +0000 Subject: [PATCH] Introjucer: Improved error messages when module paths are invalid --- .../Project Saving/jucer_ProjectSaver.h | 33 ++++++++++++++++--- .../Source/Project/jucer_Module.cpp | 7 +--- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h index 5c705a9b10..bbb99de1c0 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h @@ -83,11 +83,13 @@ public: OwnedArray modules; project.getModules().createRequiredModules (modules); - if (errors.size() == 0) writeAppConfigFile (modules, appConfigUserContent); - if (errors.size() == 0) writeBinaryDataFiles(); - if (errors.size() == 0) writeAppHeader (modules); - if (errors.size() == 0) writeProjects (modules); - if (errors.size() == 0) writeAppConfigFile (modules, appConfigUserContent); // (this is repeated in case the projects added anything to it) + checkModuleValidity (modules); + + if (errors.size() == 0) writeAppConfigFile (modules, appConfigUserContent); + if (errors.size() == 0) writeBinaryDataFiles(); + if (errors.size() == 0) writeAppHeader (modules); + if (errors.size() == 0) writeProjects (modules); + if (errors.size() == 0) writeAppConfigFile (modules, appConfigUserContent); // (this is repeated in case the projects added anything to it) if (errors.size() == 0 && generatedCodeFolder.exists()) writeReadmeFile(); @@ -327,6 +329,27 @@ private: return userContent.joinIntoString (newLine) + newLine; } + void checkModuleValidity (OwnedArray& modules) + { + for (LibraryModule** moduleIter = modules.begin(); moduleIter != modules.end(); ++moduleIter) + { + if (const LibraryModule* const module = *moduleIter) + { + if (! module->isValid()) + { + addError ("At least one of your JUCE module paths is invalid!\n" + "Please go to Config -> Modules and ensure each path points to the correct JUCE modules folder."); + return; + } + } + else + { + // this should never happen! + jassertfalse; + } + } + } + void writeAppConfig (OutputStream& out, const OwnedArray& modules, const String& userContent) { writeAutoGenWarningComment (out); diff --git a/extras/Introjucer/Source/Project/jucer_Module.cpp b/extras/Introjucer/Source/Project/jucer_Module.cpp index ee76ef0b62..fdc5217420 100644 --- a/extras/Introjucer/Source/Project/jucer_Module.cpp +++ b/extras/Introjucer/Source/Project/jucer_Module.cpp @@ -763,12 +763,7 @@ void EnabledModuleList::removeModule (String moduleID) // must be pass-by-value, void EnabledModuleList::createRequiredModules (OwnedArray& modules) { for (int i = 0; i < getNumModules(); ++i) - { - ModuleDescription info (getModuleInfo (getModuleID (i))); - - if (info.isValid()) - modules.add (new LibraryModule (info)); - } + modules.add (new LibraryModule (getModuleInfo (getModuleID (i)))); } StringArray EnabledModuleList::getAllModules() const