diff --git a/extras/Introjucer/JuceLibraryCode/BinaryData.cpp b/extras/Introjucer/JuceLibraryCode/BinaryData.cpp index e493b7b1d0..1d078c6dcd 100644 --- a/extras/Introjucer/JuceLibraryCode/BinaryData.cpp +++ b/extras/Introjucer/JuceLibraryCode/BinaryData.cpp @@ -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: diff --git a/extras/Introjucer/JuceLibraryCode/BinaryData.h b/extras/Introjucer/JuceLibraryCode/BinaryData.h index 72d7c192c9..166ccd4e0e 100644 --- a/extras/Introjucer/JuceLibraryCode/BinaryData.h +++ b/extras/Introjucer/JuceLibraryCode/BinaryData.h @@ -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; diff --git a/extras/Introjucer/Source/Application/jucer_CommandLine.cpp b/extras/Introjucer/Source/Application/jucer_CommandLine.cpp index 6e7d1d1081..774c392b29 100644 --- a/extras/Introjucer/Source/Application/jucer_CommandLine.cpp +++ b/extras/Introjucer/Source/Application/jucer_CommandLine.cpp @@ -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(); diff --git a/extras/Introjucer/Source/BinaryData/AudioPluginXCodeScript.txt b/extras/Introjucer/Source/BinaryData/AudioPluginXCodeScript.txt index 316bd11527..9b4c31e4c0 100644 --- a/extras/Introjucer/Source/BinaryData/AudioPluginXCodeScript.txt +++ b/extras/Introjucer/Source/BinaryData/AudioPluginXCodeScript.txt @@ -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 diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h index 2ad75672bc..404f53c651 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExport_MSVC.h @@ -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 diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp index ac2df6798d..19f3499521 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectExporter.cpp @@ -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) { diff --git a/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h b/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h index 9a42be3cdd..d3d89fb3f7 100644 --- a/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h +++ b/extras/Introjucer/Source/Project Saving/jucer_ProjectSaver.h @@ -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 diff --git a/extras/Introjucer/Source/Project/jucer_AudioPluginModule.h b/extras/Introjucer/Source/Project/jucer_AudioPluginModule.h index cc6215038b..058e7ebb67 100644 --- a/extras/Introjucer/Source/Project/jucer_AudioPluginModule.h +++ b/extras/Introjucer/Source/Project/jucer_AudioPluginModule.h @@ -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; diff --git a/extras/Introjucer/Source/Project/jucer_Project.cpp b/extras/Introjucer/Source/Project/jucer_Project.cpp index 06831b68d2..70e2751c06 100644 --- a/extras/Introjucer/Source/Project/jucer_Project.cpp +++ b/extras/Introjucer/Source/Project/jucer_Project.cpp @@ -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), diff --git a/extras/Introjucer/Source/Project/jucer_Project.h b/extras/Introjucer/Source/Project/jucer_Project.h index 994e128344..84a2b6630a 100644 --- a/extras/Introjucer/Source/Project/jucer_Project.h +++ b/extras/Introjucer/Source/Project/jucer_Project.h @@ -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(); } diff --git a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp index 6382b42612..74552237a2 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectInformationComponent.cpp @@ -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(); } diff --git a/extras/Introjucer/Source/Project/jucer_ProjectType.cpp b/extras/Introjucer/Source/Project/jucer_ProjectType.cpp index 74fdd5c973..64ece0972b 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectType.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectType.cpp @@ -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); diff --git a/extras/Introjucer/Source/Utility/jucer_PresetIDs.h b/extras/Introjucer/Source/Utility/jucer_PresetIDs.h index a47063e41e..7f20b914c0 100644 --- a/extras/Introjucer/Source/Utility/jucer_PresetIDs.h +++ b/extras/Introjucer/Source/Utility/jucer_PresetIDs.h @@ -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); diff --git a/extras/JuceDemo/Source/MainDemoWindow.cpp b/extras/JuceDemo/Source/MainDemoWindow.cpp index e638215ed0..3742ea2388 100644 --- a/extras/JuceDemo/Source/MainDemoWindow.cpp +++ b/extras/JuceDemo/Source/MainDemoWindow.cpp @@ -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);