| @@ -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: | |||
| @@ -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; | |||
| @@ -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(); | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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) | |||
| { | |||
| @@ -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 | |||
| @@ -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; | |||
| @@ -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), | |||
| @@ -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(); } | |||
| @@ -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(); } | |||
| @@ -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); | |||
| @@ -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); | |||
| @@ -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); | |||