1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-07 04:10:08 +00:00

First check-in of the "jucequake": a major re-organisation of the library to break it up into modules. For more details about this, see the website forum..

This commit is contained in:
Julian Storer 2011-08-12 10:04:52 +01:00
parent 1a21c89755
commit b70e0a28d2
1527 changed files with 90380 additions and 396643 deletions

View file

@ -2,7 +2,7 @@
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
Copyright 2004-11 by Raw Material Software Ltd.
------------------------------------------------------------------------------
@ -50,6 +50,16 @@ StringArray ProjectExporter::getExporterNames()
return s;
}
StringArray ProjectExporter::getDefaultExporters()
{
StringArray s;
s.add (XCodeProjectExporter::getNameMac());
s.add (MSVCProjectExporterVC2008::getName());
s.add (MSVCProjectExporterVC2010::getName());
s.add (MakefileProjectExporter::getNameLinux());
return s;
}
ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int index)
{
ProjectExporter* exp = nullptr;
@ -75,10 +85,14 @@ ProjectExporter* ProjectExporter::createNewExporter (Project& project, const int
else
exp->getJuceFolder() = juceFolder.getFullPathName();
exp->createLibraryModules();
return exp;
}
ProjectExporter* ProjectExporter::createNewExporter (Project& project, const String& name)
{
return createNewExporter (project, getExporterNames().indexOf (name));
}
ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueTree& settings)
{
ProjectExporter* exp = MSVCProjectExporterVC6::createForSettings (project, settings);
@ -90,7 +104,6 @@ ProjectExporter* ProjectExporter::createExporter (Project& project, const ValueT
if (exp == nullptr) exp = AndroidProjectExporter::createForSettings (project, settings);
jassert (exp != nullptr);
exp->createLibraryModules();
return exp;
}
@ -128,7 +141,8 @@ ProjectExporter::ProjectExporter (Project& project_, const ValueTree& settings_)
projectType (project_.getProjectType()),
projectName (project_.getProjectName().toString()),
projectFolder (project_.getFile().getParentDirectory()),
settings (settings_)
settings (settings_),
modulesGroup (nullptr)
{
for (int i = 0; i < jmax (1, project.getNumConfigurations()); ++i)
configs.add (project.getConfiguration (i));
@ -140,12 +154,6 @@ ProjectExporter::~ProjectExporter()
{
}
void ProjectExporter::createLibraryModules()
{
libraryModules.clear();
project.getProjectType().createRequiredModules (project, libraryModules);
}
File ProjectExporter::getTargetFolder() const
{
return project.resolveFilename (getTargetLocation().toString());
@ -198,11 +206,13 @@ void ProjectExporter::createPropertyEditors (Array <PropertyComponent*>& props)
props.add (new TextPropertyComponent (getTargetLocation(), "Target Project Folder", 1024, false));
props.getLast()->setTooltip ("The location of the folder in which the " + name + " project will be created. This path can be absolute, but it's much more sensible to make it relative to the jucer project directory.");
props.add (new TextPropertyComponent (getJuceFolder(), "Juce Location", 1024, false));
props.add (new TextPropertyComponent (getJuceFolder(), "Local JUCE folder", 1024, false));
props.getLast()->setTooltip ("The location of the Juce library folder that the " + name + " project will use to when compiling. This can be an absolute path, or relative to the jucer project folder, but it must be valid on the filesystem of the machine you use to actually do the compiling.");
for (int i = 0; i < libraryModules.size(); ++i)
libraryModules.getUnchecked(i)->createPropertyEditors (*this, props);
OwnedArray<LibraryModule> modules;
project.getProjectType().createRequiredModules (project, ModuleList::getInstance(), modules);
for (int i = 0; i < modules.size(); ++i)
modules.getUnchecked(i)->createPropertyEditors (*this, props);
props.add (new TextPropertyComponent (getExporterPreprocessorDefs(), "Extra Preprocessor Definitions", 32768, false));
props.getLast()->setTooltip ("Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace or commas to separate the items - to include a space or comma in a definition, precede it with a backslash.");
@ -269,3 +279,14 @@ Image ProjectExporter::getBestIconForSize (int size, bool returnNullIfNothingBig
RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false);
return newIm;
}
Project::Item& ProjectExporter::getModulesGroup()
{
if (modulesGroup == nullptr)
{
groups.add (Project::Item::createGroup (project, "Juce Modules", "__modulesgroup__"));
modulesGroup = &(groups.getReference (groups.size() - 1));
}
return *modulesGroup;
}