Browse Source

Projucer: Try to get path from compatible exporters first when getting module folder

tags/2021-05-28
ed 7 years ago
parent
commit
07ddc94d51
2 changed files with 49 additions and 22 deletions
  1. +49
    -21
      extras/Projucer/Source/Project/jucer_Module.cpp
  2. +0
    -1
      extras/Projucer/Source/Project/jucer_Module.h

+ 49
- 21
extras/Projucer/Source/Project/jucer_Module.cpp View File

@@ -201,6 +201,48 @@ Result ModuleList::addAllModulesInSubfoldersRecursively (const File& path, int d
return Result::ok(); return Result::ok();
} }
static File getModuleFolderFromPathIfItExists (const String& path, const String& moduleID, const Project& project)
{
if (path.isNotEmpty())
{
auto moduleFolder = project.resolveFilename (path);
if (moduleFolder.exists())
{
if (ModuleDescription (moduleFolder).getID() == moduleID)
return moduleFolder;
auto f = moduleFolder.getChildFile (moduleID);
if (ModuleDescription (f).getID() == moduleID)
return f;
}
}
return {};
}
static File getPathToSpecifiedModule (Project& project, StringRef moduleID)
{
auto& modules = project.getModules();
if (! modules.shouldUseGlobalPath (moduleID))
{
for (Project::ExporterIterator exporter (project); exporter.next();)
{
if (! exporter->mayCompileOnCurrentOS())
continue;
auto path = getModuleFolderFromPathIfItExists (exporter->getPathForModuleString (moduleID), moduleID, project);
if (path != File())
return path;
}
}
return {};
}
static Array<File> getAllPossibleModulePathsFromExporters (Project& project) static Array<File> getAllPossibleModulePathsFromExporters (Project& project)
{ {
StringArray paths; StringArray paths;
@@ -661,27 +703,6 @@ Value EnabledModuleList::shouldShowAllModuleFilesInProject (const String& module
.getPropertyAsValue (Ids::showAllCode, getUndoManager()); .getPropertyAsValue (Ids::showAllCode, getUndoManager());
} }
File EnabledModuleList::getModuleFolderFromPathIfItExists (const String& path, const String& moduleID, const Project& project)
{
if (path.isNotEmpty())
{
auto moduleFolder = project.resolveFilename (path);
if (moduleFolder.exists())
{
if (ModuleDescription (moduleFolder).getID() == moduleID)
return moduleFolder;
auto f = moduleFolder.getChildFile (moduleID);
if (ModuleDescription (f).getID() == moduleID)
return f;
}
}
return {};
}
File EnabledModuleList::findUserModuleFolder (const String& possiblePaths, const String& moduleID) File EnabledModuleList::findUserModuleFolder (const String& possiblePaths, const String& moduleID)
{ {
auto paths = StringArray::fromTokens (possiblePaths, ";", {}); auto paths = StringArray::fromTokens (possiblePaths, ";", {});
@@ -710,6 +731,13 @@ File EnabledModuleList::getModuleFolder (const String& moduleID)
return findUserModuleFolder (getAppSettings().getStoredPath (Ids::defaultUserModulePath).toString(), moduleID); return findUserModuleFolder (getAppSettings().getStoredPath (Ids::defaultUserModulePath).toString(), moduleID);
} }
{
auto path = getPathToSpecifiedModule (project, moduleID);
if (path != File())
return path;
}
auto paths = getAllPossibleModulePathsFromExporters (project); auto paths = getAllPossibleModulePathsFromExporters (project);
for (auto p : paths) for (auto p : paths)
{ {


+ 0
- 1
extras/Projucer/Source/Project/jucer_Module.h View File

@@ -182,7 +182,6 @@ public:
private: private:
UndoManager* getUndoManager() const { return project.getUndoManagerFor (state); } UndoManager* getUndoManager() const { return project.getUndoManagerFor (state); }
static File getModuleFolderFromPathIfItExists (const String& path, const String& moduleID, const Project&);
File findUserModuleFolder (const String& possiblePaths, const String& moduleID); File findUserModuleFolder (const String& possiblePaths, const String& moduleID);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EnabledModuleList) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EnabledModuleList)


Loading…
Cancel
Save