1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-02 03:20:06 +00:00

Projucer: The Projucer now adds a unique suffix to the target project folder of duplicate exporters and the 'selected exporter' drop-down now defaults to the first exporter that can launch the project if none were previously selected

This commit is contained in:
ed 2017-05-15 09:29:15 +01:00
parent 41bc46fd0b
commit 1a266e822b
7 changed files with 124 additions and 8 deletions

View file

@ -1413,8 +1413,11 @@ void Project::addNewExporter (const String& exporterName)
{
ScopedPointer<ProjectExporter> exp (ProjectExporter::createNewExporter (*this, exporterName));
ValueTree exporters (getExporters());
exporters.addChild (exp->settings, -1, getUndoManagerFor (exporters));
exp->getTargetLocationValue() = exp->getTargetLocationString()
+ getUniqueTargetFolderSuffixForExporter (exp->getName(), exp->getTargetLocationString());
auto exportersTree = getExporters();
exportersTree.addChild (exp->settings, -1, getUndoManagerFor (exportersTree));
}
void Project::createExporterForCurrentPlatform()
@ -1422,6 +1425,38 @@ void Project::createExporterForCurrentPlatform()
addNewExporter (ProjectExporter::getCurrentPlatformExporterName());
}
String Project::getUniqueTargetFolderSuffixForExporter (const String& exporterName, const String& base)
{
StringArray buildFolders;
auto exportersTree = getExporters();
auto type = ProjectExporter::getValueTreeNameForExporter (exporterName);
for (int i = 0; i < exportersTree.getNumChildren(); ++i)
{
auto exporterNode = exportersTree.getChild (i);
if (exporterNode.getType() == Identifier (type))
buildFolders.add (exporterNode.getProperty ("targetFolder").toString());
}
if (buildFolders.size() == 0 || ! buildFolders.contains (base))
return {};
buildFolders.remove (buildFolders.indexOf (base));
auto num = 1;
for (auto f : buildFolders)
{
if (! f.endsWith ("_" + String (num)))
break;
++num;
}
return "_" + String (num);
}
//==============================================================================
String Project::getFileTemplate (const String& templateName)
{