| @@ -25,7 +25,34 @@ | |||
| #ifndef JUCER_COMMONHEADERS_H_INCLUDED | |||
| #define JUCER_COMMONHEADERS_H_INCLUDED | |||
| //============================================================================== | |||
| struct TargetOS | |||
| { | |||
| enum OS | |||
| { | |||
| windows = 0, | |||
| osx, | |||
| linux, | |||
| unknown | |||
| }; | |||
| static OS getThisOS() noexcept | |||
| { | |||
| #if JUCE_WINDOWS | |||
| return windows; | |||
| #elif JUCE_MAC | |||
| return osx; | |||
| #elif JUCE_LINUX | |||
| return linux; | |||
| #else | |||
| return unknown; | |||
| #endif | |||
| } | |||
| }; | |||
| typedef TargetOS::OS DependencyPathOS; | |||
| //============================================================================== | |||
| #include "../Utility/jucer_StoredSettings.h" | |||
| #include "../Utility/jucer_Icons.h" | |||
| #include "../Utility/jucer_MiscUtilities.h" | |||
| @@ -29,28 +29,22 @@ public: | |||
| }; | |||
| //============================================================================== | |||
| namespace PathSettingsHelpers | |||
| { | |||
| bool checkSdkPathContainsFile (const String& path, const String& fileToCheckFor) | |||
| { | |||
| return File::getCurrentWorkingDirectory().getChildFile( path + "/" + fileToCheckFor).existsAsFile(); | |||
| } | |||
| } | |||
| PathSettingsTab::PathSettingsTab (DependencyPathOS os) | |||
| { | |||
| const int maxChars = 1024; | |||
| vst2PathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::vst2KeyName, os), "VST SDK", maxChars, false)); | |||
| vst3PathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::vst3KeyName, os), "VST3 SDK", maxChars, false)); | |||
| StoredSettings& settings = getAppSettings(); | |||
| vst2PathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::vst2Path, os), "VST SDK", maxChars, false)); | |||
| vst3PathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::vst3Path, os), "VST3 SDK", maxChars, false)); | |||
| #if ! JUCE_LINUX | |||
| rtasPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::rtasKeyName, os), "RTAS SDK", maxChars, false)); | |||
| aaxPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::aaxKeyName, os), "AAX SDK", maxChars, false)); | |||
| rtasPathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::rtasPath, os), "RTAS SDK", maxChars, false)); | |||
| aaxPathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::aaxPath, os), "AAX SDK", maxChars, false)); | |||
| #endif | |||
| androidSdkPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::androidSdkKeyName, os), "Android SDK", maxChars, false)); | |||
| androidNdkPathComponent = pathComponents.add (new TextPropertyComponent (getPathByKey (DependencyPath::androidNdkKeyName, os), "Android NDK", maxChars, false)); | |||
| androidSdkPathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::androidSDKPath, os), "Android SDK", maxChars, false)); | |||
| androidNdkPathComponent = pathComponents.add (new TextPropertyComponent (settings.getGlobalPath (Ids::androidNDKPath, os), "Android NDK", maxChars, false)); | |||
| for (TextPropertyComponent** component = pathComponents.begin(); component != pathComponents.end(); ++component) | |||
| { | |||
| @@ -66,20 +60,23 @@ PathSettingsTab::~PathSettingsTab() | |||
| void PathSettingsTab::textPropertyComponentChanged (TextPropertyComponent* textPropertyComponent) | |||
| { | |||
| String keyName = getKeyForPropertyComponent (textPropertyComponent); | |||
| Identifier keyName = getKeyForPropertyComponent (textPropertyComponent); | |||
| Colour textColour = getAppSettings().isGlobalPathValid (keyName, textPropertyComponent->getText()) | |||
| ? Colours::black | |||
| : Colours::red; | |||
| Colour textColour = checkPathByKey (keyName, textPropertyComponent->getText()) ? Colours::black : Colours::red; | |||
| textPropertyComponent->setColour (TextPropertyComponent::textColourId, textColour); | |||
| } | |||
| String PathSettingsTab::getKeyForPropertyComponent (TextPropertyComponent* component) const | |||
| Identifier PathSettingsTab::getKeyForPropertyComponent (TextPropertyComponent* component) const | |||
| { | |||
| if (component == vst2PathComponent) return DependencyPath::vst2KeyName; | |||
| if (component == vst3PathComponent) return DependencyPath::vst3KeyName; | |||
| if (component == rtasPathComponent) return DependencyPath::rtasKeyName; | |||
| if (component == aaxPathComponent) return DependencyPath::aaxKeyName; | |||
| if (component == androidSdkPathComponent) return DependencyPath::androidSdkKeyName; | |||
| if (component == androidNdkPathComponent) return DependencyPath::androidNdkKeyName; | |||
| if (component == vst2PathComponent) return Ids::vst2Path; | |||
| if (component == vst3PathComponent) return Ids::vst3Path; | |||
| if (component == rtasPathComponent) return Ids::rtasPath; | |||
| if (component == aaxPathComponent) return Ids::aaxPath; | |||
| if (component == androidSdkPathComponent) return Ids::androidSDKPath; | |||
| if (component == androidNdkPathComponent) return Ids::androidNDKPath; | |||
| // this property component does not have a key associated to it! | |||
| jassertfalse; | |||
| @@ -107,104 +104,6 @@ void PathSettingsTab::resized() | |||
| } | |||
| } | |||
| //============================================================================== | |||
| Value& PathSettingsTab::getPathByKey (const String& key, DependencyPathOS os) | |||
| { | |||
| getAppSettings().pathValues[key].referTo (getAppSettings().projectDefaults.getPropertyAsValue (key, nullptr)); | |||
| Value& value = getAppSettings().pathValues[key]; | |||
| if (value.toString().isEmpty()) | |||
| value = getFallbackPathByKey (key, os); | |||
| return value; | |||
| } | |||
| //============================================================================== | |||
| String PathSettingsTab::getFallbackPathByKey (const String& key, DependencyPathOS os) | |||
| { | |||
| if (key == DependencyPath::vst2KeyName || key == DependencyPath::vst3KeyName) | |||
| return os == DependencyPath::windows ? "c:\\SDKs\\VST3 SDK" | |||
| : "~/SDKs/VST3 SDK"; | |||
| if (key == DependencyPath::rtasKeyName) | |||
| { | |||
| if (os == DependencyPath::windows) return "c:\\SDKs\\PT_80_SDK"; | |||
| if (os == DependencyPath::osx) return "~/SDKs/PT_80_SDK"; | |||
| // no RTAS on this OS! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| if (key == DependencyPath::aaxKeyName) | |||
| { | |||
| if (os == DependencyPath::windows) return "c:\\SDKs\\AAX"; | |||
| if (os == DependencyPath::osx) return "~/SDKs/AAX" ; | |||
| // no RTAS on this OS! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| if (key == DependencyPath::androidSdkKeyName) | |||
| return os == DependencyPath::windows ? "c:\\SDKs\\android-sdk" | |||
| : "~/Library/Android/sdk"; | |||
| if (key == DependencyPath::androidNdkKeyName) | |||
| return os == DependencyPath::windows ? "c:\\SDKs\\android-ndk" | |||
| : "~/Library/Android/ndk"; | |||
| // didn't recognise the key provided! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| //============================================================================== | |||
| bool PathSettingsTab::checkPathByKey (const String& key, const String& path) | |||
| { | |||
| String fileToCheckFor; | |||
| if (key == DependencyPath::vst2KeyName) | |||
| { | |||
| fileToCheckFor = "public.sdk/source/vst2.x/audioeffectx.h"; | |||
| } | |||
| else if (key == DependencyPath::vst3KeyName) | |||
| { | |||
| fileToCheckFor = "base/source/baseiids.cpp"; | |||
| } | |||
| else if (key == DependencyPath::rtasKeyName) | |||
| { | |||
| fileToCheckFor = "AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses/CEffectProcessMIDI.cpp"; | |||
| } | |||
| else if (key == DependencyPath::aaxKeyName) | |||
| { | |||
| fileToCheckFor = "Interfaces/AAX_Exports.cpp"; | |||
| } | |||
| else if (key == DependencyPath::androidSdkKeyName) | |||
| { | |||
| #if JUCE_WINDOWS | |||
| fileToCheckFor = "platform-tools/adb.exe"; | |||
| #else | |||
| fileToCheckFor = "platform-tools/adb"; | |||
| #endif | |||
| } | |||
| else if (key == DependencyPath::androidNdkKeyName) | |||
| { | |||
| #if JUCE_WINDOWS | |||
| fileToCheckFor = "ndk-depends.exe"; | |||
| #else | |||
| fileToCheckFor = "ndk-depends"; | |||
| #endif | |||
| } | |||
| else | |||
| { | |||
| // didn't recognise the key provided! | |||
| jassertfalse; | |||
| return false; | |||
| } | |||
| return PathSettingsHelpers::checkSdkPathContainsFile (path, fileToCheckFor); | |||
| } | |||
| //============================================================================== | |||
| struct AppearanceEditor | |||
| @@ -469,7 +368,7 @@ String AppearanceSettingsTab::getName() const noexcept | |||
| GlobalPreferencesComponent::GlobalPreferencesComponent() | |||
| : TabbedComponent (TabbedButtonBar::TabsAtTop) | |||
| { | |||
| preferenceTabs.add (new PathSettingsTab (DependencyPath::getThisOS())); | |||
| preferenceTabs.add (new PathSettingsTab (TargetOS::getThisOS())); | |||
| preferenceTabs.add (new AppearanceSettingsTab); | |||
| for (GlobalPreferencesTab** tab = preferenceTabs.begin(); tab != preferenceTabs.end(); ++tab) | |||
| @@ -43,14 +43,10 @@ public: | |||
| void resized() override; | |||
| static Value& getPathByKey (const String& key, DependencyPathOS); | |||
| static String getFallbackPathByKey (const String& key, DependencyPathOS); | |||
| static bool checkPathByKey (const String& key, const String& path); | |||
| private: | |||
| void textPropertyComponentChanged (TextPropertyComponent*) override; | |||
| String getKeyForPropertyComponent (TextPropertyComponent*) const; | |||
| Identifier getKeyForPropertyComponent (TextPropertyComponent*) const; | |||
| OwnedArray<TextPropertyComponent> pathComponents; | |||
| @@ -753,17 +753,13 @@ private: | |||
| void initialiseDependencyPathValues() | |||
| { | |||
| sdkPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::androidSDKPath), | |||
| DependencyPath::androidSdkKeyName, | |||
| DependencyPath::getThisOS() | |||
| ))); | |||
| ndkPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::androidNDKPath), | |||
| DependencyPath::androidNdkKeyName, | |||
| DependencyPath::getThisOS() | |||
| ))); | |||
| sdkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidSDKPath), | |||
| Ids::androidSDKPath, | |||
| TargetOS::getThisOS()))); | |||
| ndkPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::androidNDKPath), | |||
| Ids::androidNDKPath, | |||
| TargetOS::getThisOS()))); | |||
| } | |||
| //============================================================================== | |||
| @@ -405,33 +405,16 @@ private: | |||
| void initialiseDependencyPathValues() | |||
| { | |||
| DependencyPathOS pathOS = isLinux() ? DependencyPath::linux : DependencyPath::windows; | |||
| DependencyPathOS pathOS = isLinux() ? TargetOS::linux | |||
| : TargetOS::windows; | |||
| vst2Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vstFolder), | |||
| DependencyPath::vst2KeyName, | |||
| pathOS | |||
| ))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vst3Folder), | |||
| DependencyPath::vst3KeyName, | |||
| pathOS | |||
| ))); | |||
| vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), Ids::vst2Path, pathOS))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), Ids::vst3Path, pathOS))); | |||
| if (! isLinux()) | |||
| { | |||
| aaxPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::aaxFolder), | |||
| DependencyPath::aaxKeyName, | |||
| pathOS | |||
| ))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::rtasFolder), | |||
| DependencyPath::rtasKeyName, | |||
| pathOS | |||
| ))); | |||
| aaxPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::aaxFolder), Ids::aaxPath, pathOS))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::rtasFolder), Ids::rtasPath, pathOS))); | |||
| } | |||
| } | |||
| @@ -559,29 +559,21 @@ protected: | |||
| void initialiseDependencyPathValues() | |||
| { | |||
| vst2Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vstFolder), | |||
| DependencyPath::vst2KeyName, | |||
| DependencyPath::windows | |||
| ))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vst3Folder), | |||
| DependencyPath::vst3KeyName, | |||
| DependencyPath::windows | |||
| ))); | |||
| aaxPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::aaxFolder), | |||
| DependencyPath::aaxKeyName, | |||
| DependencyPath::windows | |||
| ))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::rtasFolder), | |||
| DependencyPath::rtasKeyName, | |||
| DependencyPath::windows | |||
| ))); | |||
| vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), | |||
| Ids::vst2Path, | |||
| TargetOS::windows))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), | |||
| Ids::vst3Path, | |||
| TargetOS::windows))); | |||
| aaxPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::aaxFolder), | |||
| Ids::aaxPath, | |||
| TargetOS::windows))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::rtasFolder), | |||
| Ids::rtasPath, | |||
| TargetOS::windows))); | |||
| } | |||
| JUCE_DECLARE_NON_COPYABLE (MSVCProjectExporterBase) | |||
| @@ -350,17 +350,13 @@ private: | |||
| void initialiseDependencyPathValues() | |||
| { | |||
| vst2Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vstFolder), | |||
| DependencyPath::vst2KeyName, | |||
| DependencyPath::linux | |||
| ))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vst3Folder), | |||
| DependencyPath::vst3KeyName, | |||
| DependencyPath::linux | |||
| ))); | |||
| vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), | |||
| Ids::vst2Path, | |||
| TargetOS::linux))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), | |||
| Ids::vst3Path, | |||
| TargetOS::linux))); | |||
| } | |||
| JUCE_DECLARE_NON_COPYABLE (MakefileProjectExporter) | |||
| @@ -1504,28 +1504,16 @@ private: | |||
| void initialiseDependencyPathValues() | |||
| { | |||
| vst2Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vstFolder), | |||
| DependencyPath::vst2KeyName, | |||
| DependencyPath::osx | |||
| ))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::vst3Folder), | |||
| DependencyPath::vst3KeyName, | |||
| DependencyPath::osx | |||
| ))); | |||
| aaxPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::aaxFolder), | |||
| DependencyPath::aaxKeyName, | |||
| DependencyPath::osx | |||
| ))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource ( | |||
| getSetting (Ids::rtasFolder), | |||
| DependencyPath::rtasKeyName, | |||
| DependencyPath::osx | |||
| ))); | |||
| vst2Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vstFolder), | |||
| Ids::vst2Path, TargetOS::osx))); | |||
| vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), | |||
| Ids::vst3Path, TargetOS::osx))); | |||
| aaxPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::aaxFolder), | |||
| Ids::aaxPath, TargetOS::osx))); | |||
| rtasPath.referTo (Value (new DependencyPathValueSource (getSetting (Ids::rtasFolder), | |||
| Ids::rtasPath, TargetOS::osx))); | |||
| } | |||
| }; | |||
| @@ -12,24 +12,16 @@ | |||
| #include "jucer_DependencyPathPropertyComponent.h" | |||
| #include "../Application/jucer_GlobalPreferences.h" | |||
| //============================================================================== | |||
| const String DependencyPath::vst2KeyName = "vst2Path"; | |||
| const String DependencyPath::vst3KeyName = "vst3Path"; | |||
| const String DependencyPath::rtasKeyName = "rtasPath"; | |||
| const String DependencyPath::aaxKeyName = "aaxPath"; | |||
| const String DependencyPath::androidSdkKeyName = "androidSdkPath"; | |||
| const String DependencyPath::androidNdkKeyName = "androidNdkPath"; | |||
| //============================================================================== | |||
| DependencyPathValueSource::DependencyPathValueSource (const Value& projectSettingsPath, | |||
| String globalSettingsKey, | |||
| Identifier globalSettingsKey, | |||
| DependencyPathOS osThisSettingAppliesTo) | |||
| : projectSettingsValue (projectSettingsPath), | |||
| globalKey (globalSettingsKey), | |||
| os (osThisSettingAppliesTo), | |||
| globalSettingsValue (PathSettingsTab::getPathByKey (globalKey, os)), | |||
| fallbackValue (PathSettingsTab::getFallbackPathByKey (globalKey, os)) | |||
| globalSettingsValue (getAppSettings().getGlobalPath (globalKey, os)), | |||
| fallbackValue (getAppSettings().getFallbackPath (globalKey, os)) | |||
| { | |||
| globalSettingsValue.addListener (this); | |||
| } | |||
| @@ -41,7 +33,7 @@ bool DependencyPathValueSource::isValidPath() const | |||
| if (! appliesToThisOS()) | |||
| return true; | |||
| return PathSettingsTab::checkPathByKey (globalKey, getValue().toString()); | |||
| return getAppSettings().isGlobalPathValid (globalKey, getValue().toString()); | |||
| } | |||
| //============================================================================== | |||
| @@ -11,36 +11,6 @@ | |||
| #ifndef JUCER_DEPENDENCYPATHPROPERTYCOMPONENT_H_INCLUDED | |||
| #define JUCER_DEPENDENCYPATHPROPERTYCOMPONENT_H_INCLUDED | |||
| //============================================================================== | |||
| class DependencyPath | |||
| { | |||
| public: | |||
| enum OS | |||
| { | |||
| windows = 0, | |||
| osx, | |||
| linux, | |||
| unknown | |||
| }; | |||
| static OS getThisOS() | |||
| { | |||
| #if JUCE_WINDOWS | |||
| return DependencyPath::windows; | |||
| #elif JUCE_MAC | |||
| return DependencyPath::osx; | |||
| #elif JUCE_LINUX | |||
| return DependencyPath::linux; | |||
| #else | |||
| return DependencyPath::unknown; | |||
| #endif | |||
| } | |||
| const static String vst2KeyName, vst3KeyName, rtasKeyName, aaxKeyName, | |||
| androidSdkKeyName, androidNdkKeyName; | |||
| }; | |||
| typedef DependencyPath::OS DependencyPathOS; | |||
| //============================================================================== | |||
| /** This ValueSource type implements the fallback logic required for dependency | |||
| @@ -54,7 +24,7 @@ class DependencyPathValueSource : public Value::ValueSource, | |||
| { | |||
| public: | |||
| DependencyPathValueSource (const Value& projectSettingsPath, | |||
| String globalSettingsKey, | |||
| Identifier globalSettingsKey, | |||
| DependencyPathOS osThisSettingAppliesTo); | |||
| /** This gets the currently used value, which may be either | |||
| @@ -95,7 +65,7 @@ public: | |||
| bool appliesToThisOS() const | |||
| { | |||
| return os == DependencyPath::getThisOS(); | |||
| return os == TargetOS::getThisOS(); | |||
| } | |||
| bool isValidPath() const; | |||
| @@ -124,9 +94,9 @@ private: | |||
| { | |||
| // only use the global settings if they are set on the same OS | |||
| // that this setting is for! | |||
| DependencyPathOS thisOS = DependencyPath::getThisOS(); | |||
| DependencyPathOS thisOS = TargetOS::getThisOS(); | |||
| return thisOS == DependencyPath::unknown ? false : os == thisOS; | |||
| return thisOS == TargetOS::unknown ? false : os == thisOS; | |||
| } | |||
| /** the dependency path setting as set in this Introjucer project. */ | |||
| @@ -134,7 +104,7 @@ private: | |||
| /** the global key used in the application settings for the global setting value. | |||
| needed for checking whether the path is valid. */ | |||
| String globalKey; | |||
| Identifier globalKey; | |||
| /** on what operating system should this dependency path be used? | |||
| note that this is *not* the os that is targeted by the project, | |||
| @@ -55,6 +55,10 @@ namespace Ids | |||
| DECLARE_ID (vst3Folder); | |||
| DECLARE_ID (rtasFolder); | |||
| DECLARE_ID (auFolder); | |||
| DECLARE_ID (vst2Path); | |||
| DECLARE_ID (vst3Path); | |||
| DECLARE_ID (rtasPath); | |||
| DECLARE_ID (aaxPath); | |||
| DECLARE_ID (flags); | |||
| DECLARE_ID (line); | |||
| DECLARE_ID (index); | |||
| @@ -216,3 +216,104 @@ void StoredSettings::ColourSelectorWithSwatches::setSwatchColour (int index, con | |||
| { | |||
| getAppSettings().swatchColours.set (index, newColour); | |||
| } | |||
| //============================================================================== | |||
| static bool doesSDKPathContainFile (const String& path, const String& fileToCheckFor) | |||
| { | |||
| return File::getCurrentWorkingDirectory().getChildFile( path + "/" + fileToCheckFor).existsAsFile(); | |||
| } | |||
| Value StoredSettings::getGlobalPath (const Identifier& key, DependencyPathOS os) | |||
| { | |||
| Value v (projectDefaults.getPropertyAsValue (key, nullptr)); | |||
| if (v.toString().isEmpty()) | |||
| v = getFallbackPath (key, os); | |||
| return v; | |||
| } | |||
| String StoredSettings::getFallbackPath (const Identifier& key, DependencyPathOS os) | |||
| { | |||
| if (key == Ids::vst2Path || key == Ids::vst3Path) | |||
| return os == TargetOS::windows ? "c:\\SDKs\\VST3 SDK" | |||
| : "~/SDKs/VST3 SDK"; | |||
| if (key == Ids::rtasPath) | |||
| { | |||
| if (os == TargetOS::windows) return "c:\\SDKs\\PT_80_SDK"; | |||
| if (os == TargetOS::osx) return "~/SDKs/PT_80_SDK"; | |||
| // no RTAS on this OS! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| if (key == Ids::aaxPath) | |||
| { | |||
| if (os == TargetOS::windows) return "c:\\SDKs\\AAX"; | |||
| if (os == TargetOS::osx) return "~/SDKs/AAX" ; | |||
| // no AAX on this OS! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| if (key == Ids::androidSDKPath) | |||
| return os == TargetOS::windows ? "c:\\SDKs\\android-sdk" | |||
| : "~/Library/Android/sdk"; | |||
| if (key == Ids::androidNDKPath) | |||
| return os == TargetOS::windows ? "c:\\SDKs\\android-ndk" | |||
| : "~/Library/Android/ndk"; | |||
| // didn't recognise the key provided! | |||
| jassertfalse; | |||
| return String(); | |||
| } | |||
| bool StoredSettings::isGlobalPathValid (const Identifier& key, const String& path) | |||
| { | |||
| String fileToCheckFor; | |||
| if (key == Ids::vst2Path) | |||
| { | |||
| fileToCheckFor = "public.sdk/source/vst2.x/audioeffectx.h"; | |||
| } | |||
| else if (key == Ids::vst3Path) | |||
| { | |||
| fileToCheckFor = "base/source/baseiids.cpp"; | |||
| } | |||
| else if (key == Ids::rtasPath) | |||
| { | |||
| fileToCheckFor = "AlturaPorts/TDMPlugIns/PlugInLibrary/EffectClasses/CEffectProcessMIDI.cpp"; | |||
| } | |||
| else if (key == Ids::aaxPath) | |||
| { | |||
| fileToCheckFor = "Interfaces/AAX_Exports.cpp"; | |||
| } | |||
| else if (key == Ids::androidSDKPath) | |||
| { | |||
| #if JUCE_WINDOWS | |||
| fileToCheckFor = "platform-tools/adb.exe"; | |||
| #else | |||
| fileToCheckFor = "platform-tools/adb"; | |||
| #endif | |||
| } | |||
| else if (key == Ids::androidNDKPath) | |||
| { | |||
| #if JUCE_WINDOWS | |||
| fileToCheckFor = "ndk-depends.exe"; | |||
| #else | |||
| fileToCheckFor = "ndk-depends"; | |||
| #endif | |||
| } | |||
| else | |||
| { | |||
| // didn't recognise the key provided! | |||
| jassertfalse; | |||
| return false; | |||
| } | |||
| return doesSDKPathContainFile (path, fileToCheckFor); | |||
| } | |||
| @@ -41,13 +41,6 @@ public: | |||
| void flush(); | |||
| void reload(); | |||
| //============================================================================== | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) override { changed(); } | |||
| void valueTreeChildAdded (ValueTree&, ValueTree&) override { changed(); } | |||
| void valueTreeChildRemoved (ValueTree&, ValueTree&, int) override { changed(); } | |||
| void valueTreeChildOrderChanged (ValueTree&, int, int) override { changed(); } | |||
| void valueTreeParentChanged (ValueTree&) override { changed(); } | |||
| //============================================================================== | |||
| RecentlyOpenedFilesList recentFiles; | |||
| @@ -71,11 +64,14 @@ public: | |||
| StringArray monospacedFontNames; | |||
| ValueTree projectDefaults; | |||
| std::map<String, Value> pathValues; | |||
| //============================================================================== | |||
| Value getGlobalPath (const Identifier& key, DependencyPathOS); | |||
| String getFallbackPath (const Identifier& key, DependencyPathOS); | |||
| bool isGlobalPathValid (const Identifier& key, const String& path); | |||
| private: | |||
| OwnedArray<PropertiesFile> propertyFiles; | |||
| ValueTree projectDefaults; | |||
| void changed() | |||
| { | |||
| @@ -91,6 +87,13 @@ private: | |||
| void loadSwatchColours(); | |||
| void saveSwatchColours(); | |||
| //============================================================================== | |||
| void valueTreePropertyChanged (ValueTree&, const Identifier&) override { changed(); } | |||
| void valueTreeChildAdded (ValueTree&, ValueTree&) override { changed(); } | |||
| void valueTreeChildRemoved (ValueTree&, ValueTree&, int) override { changed(); } | |||
| void valueTreeChildOrderChanged (ValueTree&, int, int) override { changed(); } | |||
| void valueTreeParentChanged (ValueTree&) override { changed(); } | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StoredSettings) | |||
| }; | |||