1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-21 01:24:21 +00:00

Introjucer: more AAX support and some clean-ups.

This commit is contained in:
jules 2012-06-26 15:30:48 +01:00
parent 165bed1fbf
commit 9074f68da8
14 changed files with 86 additions and 23 deletions

View file

@ -20,6 +20,7 @@ static const unsigned char temp_43731c40[] =
"copyAU=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'AudioUnit' | wc -l`\r\n"
"copyVST=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'VSTPlugin' | wc -l`\r\n"
"copyRTAS=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'CProcess' | wc -l`\r\n"
"copyAAX=`nm -g \"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH\" | grep -i 'GetEffectDescriptions' | wc -l`\r\n"
"\r\n"
"if [ $copyAU -gt 0 ]; then\r\n"
" echo \"Copying to AudioUnit folder...\"\r\n"
@ -53,6 +54,30 @@ static const unsigned char temp_43731c40[] =
" fi\r\n"
"\r\n"
" cp -r \"$original\" \"$RTAS\"\r\n"
"fi\r\n"
"\r\n"
"if [ $copyAAX -gt 0 ]; then\r\n"
" echo \"Copying to AAX folder...\"\r\n"
"\r\n"
" if [ -d \"/Applications/ProTools_3PDev/Plug-Ins\" ]; then\r\n"
" AAX1=\"/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\r\n"
"\r\n"
" if [ -d \"$AAX1\" ]; then\r\n"
" rm -r \"$AAX1\"\r\n"
" fi\r\n"
"\r\n"
" cp -r \"$original\" \"$AAX1\"\r\n"
" fi\r\n"
"\r\n"
" if [ -d \"/Library/Application Support/Avid/Audio/Plug-Ins\" ]; then\r\n"
" AAX2=\"/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin\"\r\n"
"\r\n"
" if [ -d \"$AAX2\" ]; then\r\n"
" rm -r \"$AAX2\"\r\n"
" fi\r\n"
"\r\n"
" cp -r \"$original\" \"$AAX2\"\r\n"
" fi\r\n"
"fi\r\n";
const char* AudioPluginXCodeScript_txt = (const char*) temp_43731c40;
@ -1137,7 +1162,7 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) throw
switch (hash)
{
case 0x44be9398:
case 0x2981a553: numBytes = 1449; return AudioPluginXCodeScript_txt;
case 0x2981a553: numBytes = 2112; return AudioPluginXCodeScript_txt;
case 0x950fd7dd:
case 0xa6cfe0e2: numBytes = 14724; return brushed_aluminium_png;
case 0xabd76fe2:

View file

@ -8,7 +8,7 @@
namespace BinaryData
{
extern const char* AudioPluginXCodeScript_txt;
const int AudioPluginXCodeScript_txtSize = 1449;
const int AudioPluginXCodeScript_txtSize = 2112;
extern const char* brushed_aluminium_png;
const int brushed_aluminium_pngSize = 14724;

View file

@ -231,7 +231,7 @@ namespace
}
std::cout << "Project file: " << projectFile.getFullPathName() << std::endl
<< "Name: " << proj.getProjectName().toString() << std::endl
<< "Name: " << proj.getTitle() << std::endl
<< "UID: " << proj.getProjectUID() << std::endl;
const int numModules = proj.getNumModules();

View file

@ -8,6 +8,7 @@ original=$CONFIGURATION_BUILD_DIR/$FULL_PRODUCT_NAME
copyAU=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'AudioUnit' | wc -l`
copyVST=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'VSTPlugin' | wc -l`
copyRTAS=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'CProcess' | wc -l`
copyAAX=`nm -g "$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH" | grep -i 'GetEffectDescriptions' | wc -l`
if [ $copyAU -gt 0 ]; then
echo "Copying to AudioUnit folder..."
@ -42,3 +43,27 @@ if [ $copyRTAS -gt 0 ]; then
cp -r "$original" "$RTAS"
fi
if [ $copyAAX -gt 0 ]; then
echo "Copying to AAX folder..."
if [ -d "/Applications/ProTools_3PDev/Plug-Ins" ]; then
AAX1="/Applications/ProTools_3PDev/Plug-Ins/$PRODUCT_NAME.aaxplugin"
if [ -d "$AAX1" ]; then
rm -r "$AAX1"
fi
cp -r "$original" "$AAX1"
fi
if [ -d "/Library/Application Support/Avid/Audio/Plug-Ins" ]; then
AAX2="/Library/Application Support/Avid/Audio/Plug-Ins/$PRODUCT_NAME.aaxplugin"
if [ -d "$AAX2" ]; then
rm -r "$AAX2"
fi
cp -r "$original" "$AAX2"
fi
fi

View file

@ -73,6 +73,7 @@ protected:
File getProjectFile (const String& extension) const { return getTargetFolder().getChildFile (project.getProjectFilenameRoot()).withFileExtension (extension); }
Value getLibraryType() { return getSetting (Ids::libraryType); }
String getLibraryString() const { return getSettingString (Ids::libraryType); }
bool isLibraryDLL() const { return msvcIsDLL || (projectType.isLibrary() && (int) settings [Ids::libraryType] == 2); }
static String prependIfNotAbsolute (const String& file, const char* prefix)
@ -89,7 +90,7 @@ protected:
void updateOldSettings()
{
{
const String oldStylePrebuildCommand (getSetting (Ids::prebuildCommand).toString());
const String oldStylePrebuildCommand (getSettingString (Ids::prebuildCommand));
settings.removeProperty (Ids::prebuildCommand, nullptr);
if (oldStylePrebuildCommand.isNotEmpty())
@ -98,7 +99,7 @@ protected:
}
{
const String oldStyleLibName (getSetting ("libraryName_Debug").toString());
const String oldStyleLibName (getSettingString ("libraryName_Debug"));
settings.removeProperty ("libraryName_Debug", nullptr);
if (oldStyleLibName.isNotEmpty())
@ -108,7 +109,7 @@ protected:
}
{
const String oldStyleLibName (getSetting ("libraryName_Release").toString());
const String oldStyleLibName (getSettingString ("libraryName_Release"));
settings.removeProperty ("libraryName_Release", nullptr);
if (oldStyleLibName.isNotEmpty())
@ -451,9 +452,9 @@ protected:
<< " BEGIN" << newLine;
writeRCValue (mo, "CompanyName", project.getCompanyName().toString());
writeRCValue (mo, "FileDescription", project.getProjectName().toString());
writeRCValue (mo, "FileDescription", project.getTitle());
writeRCValue (mo, "FileVersion", version);
writeRCValue (mo, "ProductName", project.getProjectName().toString());
writeRCValue (mo, "ProductName", project.getTitle());
writeRCValue (mo, "ProductVersion", version);
mo << " END" << newLine

View file

@ -136,7 +136,7 @@ ProjectExporter::ProjectExporter (Project& project_, const ValueTree& settings_)
settings (settings_),
project (project_),
projectType (project_.getProjectType()),
projectName (project_.getProjectName().toString()),
projectName (project_.getTitle()),
projectFolder (project_.getFile().getParentDirectory()),
modulesGroup (nullptr)
{

View file

@ -416,7 +416,7 @@ private:
<< newLine
<< "namespace ProjectInfo" << newLine
<< "{" << newLine
<< " const char* const projectName = " << CodeHelpers::addEscapeChars (project.getProjectName().toString()).quoted() << ";" << newLine
<< " const char* const projectName = " << CodeHelpers::addEscapeChars (project.getTitle()).quoted() << ";" << newLine
<< " const char* const versionString = " << CodeHelpers::addEscapeChars (project.getVersionString()).quoted() << ";" << newLine
<< " const int versionNumber = " << project.getVersionAsHex() << ";" << newLine
<< "}" << newLine

View file

@ -51,6 +51,7 @@ namespace
Value getPluginAUCocoaViewClassName (Project& project) { return project.getProjectValue ("pluginAUViewClass"); }
Value getPluginAUMainType (Project& project) { return project.getProjectValue ("pluginAUMainType"); }
Value getPluginRTASCategory (Project& project) { return project.getProjectValue ("pluginRTASCategory"); }
Value getPluginAAXCategory (Project& project) { return project.getProjectValue ("pluginAAXCategory"); }
String getPluginRTASCategoryCode (Project& project)
{
@ -135,7 +136,7 @@ namespace
flags.set ("JucePlugin_AAXManufacturerCode", "JucePlugin_ManufacturerCode");
flags.set ("JucePlugin_AAXProductId", "JucePlugin_PluginCode");
flags.set ("JucePlugin_AAXPluginId", "JucePlugin_PluginCode");
flags.set ("JucePlugin_AAXCategory", "AAX_ePlugInCategory_None");
flags.set ("JucePlugin_AAXCategory", getPluginAAXCategory (project).toString());
MemoryOutputStream mem;

View file

@ -78,9 +78,14 @@ void Project::setTitle (const String& newTitle)
getMainGroup().getNameValue() = newTitle;
}
String Project::getTitle() const
{
return projectRoot.getChildWithName (Tags::projectMainGroup) [Ids::name];
}
String Project::getDocumentTitle()
{
return getProjectName().toString();
return getTitle();
}
void Project::updateProjectSettings()
@ -337,7 +342,7 @@ const ProjectType& Project::getProjectType() const
//==============================================================================
void Project::createPropertyEditors (PropertyListBuilder& props)
{
props.add (new TextPropertyComponent (getProjectName(), "Project Name", 256, false),
props.add (new TextPropertyComponent (getProjectNameValue(), "Project Name", 256, false),
"The name of the project.");
props.add (new TextPropertyComponent (getVersionValue(), "Project Version", 16, false),

View file

@ -55,7 +55,8 @@ public:
//==============================================================================
ValueTree getProjectRoot() const { return projectRoot; }
Value getProjectName() { return getMainGroup().getNameValue(); }
String getTitle() const;
Value getProjectNameValue() { return getMainGroup().getNameValue(); }
String getProjectFilenameRoot() { return File::createLegalFileName (getDocumentTitle()); }
String getProjectUID() const { return projectRoot [ComponentBuilder::idProperty]; }
@ -84,7 +85,7 @@ public:
String getVersionAsHex() const;
Value getBundleIdentifier() { return getProjectValue (Ids::bundleIdentifier); }
String getDefaultBundleIdentifier() { return "com.yourcompany." + CodeHelpers::makeValidIdentifier (getProjectName().toString(), false, true, false); }
String getDefaultBundleIdentifier() { return "com.yourcompany." + CodeHelpers::makeValidIdentifier (getTitle(), false, true, false); }
Value getAAXIdentifier() { return getProjectValue (Ids::aaxIdentifier); }
String getDefaultAAXIdentifier() { return getDefaultBundleIdentifier(); }

View file

@ -898,7 +898,7 @@ struct ProjectSettingsTreeClasses
bool isRoot() const { return true; }
String getRenamingName() const { return getDisplayName(); }
String getDisplayName() const { return project.getProjectName().toString(); }
String getDisplayName() const { return project.getTitle(); }
void setName (const String&) {}
bool isMissing() { return false; }
const Drawable* getIcon() const { return project.getMainGroup().getIcon(); }

View file

@ -173,13 +173,13 @@ public:
void setMissingProjectProperties (Project& project) const
{
const String sanitisedProjectName (CodeHelpers::makeValidIdentifier (project.getProjectName().toString(), false, true, false));
const String sanitisedProjectName (CodeHelpers::makeValidIdentifier (project.getTitle(), false, true, false));
setValueIfVoid (shouldBuildVST (project), true);
setValueIfVoid (shouldBuildAU (project), true);
setValueIfVoid (getPluginName (project), project.getProjectName().toString());
setValueIfVoid (getPluginDesc (project), project.getProjectName().toString());
setValueIfVoid (getPluginName (project), project.getTitle());
setValueIfVoid (getPluginDesc (project), project.getTitle());
setValueIfVoid (getPluginManufacturer (project), "yourcompany");
setValueIfVoid (getPluginManufacturerCode (project), "Manu");
setValueIfVoid (getPluginCode (project), "Plug");
@ -195,6 +195,7 @@ public:
setValueIfVoid (getPluginRTASCategory (project), String::empty);
setValueIfVoid (project.getBundleIdentifier(), project.getDefaultBundleIdentifier());
setValueIfVoid (project.getAAXIdentifier(), project.getDefaultAAXIdentifier());
setValueIfVoid (getPluginAAXCategory (project), "AAX_ePlugInCategory_Dynamics");
}
void createPropertyEditors (Project& project, PropertyListBuilder& props) const
@ -205,8 +206,8 @@ public:
"Whether the project should produce an AudioUnit plugin.");
props.add (new BooleanPropertyComponent (shouldBuildRTAS (project), "Build RTAS", "Enabled"),
"Whether the project should produce an RTAS plugin.");
// props.add (new BooleanPropertyComponent (shouldBuildAAX (project), "Build AAX", "Enabled"),
// "Whether the project should produce an AAX plugin.");
props.add (new BooleanPropertyComponent (shouldBuildAAX (project), "Build AAX", "Enabled"),
"Whether the project should produce an AAX plugin.");
props.add (new TextPropertyComponent (getPluginName (project), "Plugin Name", 128, false),
"The name of your plugin (keep it short!)");
@ -258,6 +259,9 @@ public:
"ePlugInCategory_PitchShift, ePlugInCategory_Reverb, ePlugInCategory_Delay, "
"ePlugInCategory_Modulation, ePlugInCategory_Harmonic, ePlugInCategory_NoiseReduction, "
"ePlugInCategory_Dither, ePlugInCategory_SoundField");
props.add (new TextPropertyComponent (getPluginAAXCategory (project), "Plugin AAX Category", 64, false),
"This is one of the RTAS categories from the AAX_EPlugInCategory enum");
}
void prepareExporter (ProjectExporter& exporter) const
@ -315,7 +319,7 @@ public:
d->createNewChildElement ("array")
->createNewChildElement ("string")->setText (exeName);
d->createNewChildElement ("key")->setText ("WebPluginTypeDescription");
d->createNewChildElement ("string")->setText (exporter.getProject().getProjectName().toString());
d->createNewChildElement ("string")->setText (exporter.getProject().getTitle());
exporter.xcodeExtraPListEntries.add (mimeTypesKey);
exporter.xcodeExtraPListEntries.add (mimeTypesEntry);

View file

@ -79,6 +79,7 @@ namespace Ids
DECLARE_ID (buildVST);
DECLARE_ID (bundleIdentifier);
DECLARE_ID (aaxIdentifier);
DECLARE_ID (aaxCategory);
DECLARE_ID (aaxFolder);
DECLARE_ID (compile);
DECLARE_ID (noWarnings);

View file

@ -573,7 +573,7 @@ public:
Graphics g (icon);
g.fillAll (Colours::lightblue);
g.setColour (Colours::black);
g.setFont ((float) icon.getHeight(), Font::bold);
g.setFont (Font ((float) icon.getHeight(), Font::bold));
g.drawText ("j", 0, 0, icon.getWidth(), icon.getHeight(), Justification::centred, false);
setIconImage (icon);