diff --git a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp index 71acb69382..a54d9d0d94 100644 --- a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp +++ b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp @@ -74,14 +74,14 @@ void AudioPluginFormatManager::addDefaultFormats() #endif } -int AudioPluginFormatManager::getNumFormats() -{ - return formats.size(); -} +int AudioPluginFormatManager::getNumFormats() const { return formats.size(); } +AudioPluginFormat* AudioPluginFormatManager::getFormat (int index) const { return formats[index]; } -AudioPluginFormat* AudioPluginFormatManager::getFormat (int index) +Array AudioPluginFormatManager::getFormats() const { - return formats[index]; + Array a; + a.addArray (formats); + return a; } void AudioPluginFormatManager::addFormat (AudioPluginFormat* format) diff --git a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h index 816ec16c42..3b7d8d3116 100644 --- a/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h +++ b/modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h @@ -52,12 +52,15 @@ public: /** Returns the number of types of format that are available. Use getFormat() to get one of them. */ - int getNumFormats(); + int getNumFormats() const; /** Returns one of the available formats. @see getNumFormats */ - AudioPluginFormat* getFormat (int index); + AudioPluginFormat* getFormat (int index) const; + + /** Returns a list of all the registered formats. */ + Array getFormats() const; //============================================================================== /** Adds a format to the list. diff --git a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h index 34ff650e57..7ac90dcdc7 100644 --- a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h +++ b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h @@ -43,7 +43,8 @@ public: ~AudioUnitPluginFormat() override; //============================================================================== - String getName() const override { return "AudioUnit"; } + static String getFormatName() { return "AudioUnit"; } + String getName() const override { return getFormatName(); } bool canScanForPlugins() const override { return true; } bool isTrivialToScan() const override { return false; } diff --git a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h index c1f8741ddb..58feefc4cb 100644 --- a/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h +++ b/modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h @@ -42,7 +42,8 @@ public: ~LADSPAPluginFormat() override; //============================================================================== - String getName() const override { return "LADSPA"; } + static String getFormatName() { return "LADSPA"; } + String getName() const override { return getFormatName(); } bool canScanForPlugins() const override { return true; } bool isTrivialToScan() const override { return false; } diff --git a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h index ebb78f1724..ddbd41e7c6 100644 --- a/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h +++ b/modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h @@ -51,7 +51,8 @@ public: static bool setStateFromVSTPresetFile (AudioPluginInstance*, const MemoryBlock&); //============================================================================== - String getName() const override { return "VST3"; } + static String getFormatName() { return "VST3"; } + String getName() const override { return getFormatName(); } bool canScanForPlugins() const override { return true; } bool isTrivialToScan() const override { return false; } diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h index 39519399de..90e606a4d6 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h @@ -98,7 +98,8 @@ public: static AudioPluginInstance* getPluginInstanceFromVstEffectInterface (void* aEffect); //============================================================================== - String getName() const override { return "VST"; } + static String getFormatName() { return "VST"; } + String getName() const override { return getFormatName(); } bool canScanForPlugins() const override { return true; } bool isTrivialToScan() const override { return false; } diff --git a/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp b/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp index 331803cae6..f5cfdb258d 100644 --- a/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp +++ b/modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp @@ -211,10 +211,8 @@ void KnownPluginList::scanAndAddDragAndDroppedFiles (AudioPluginFormatManager& f { bool found = false; - for (int j = 0; j < formatManager.getNumFormats(); ++j) + for (auto format : formatManager.getFormats()) { - auto* format = formatManager.getFormat (j); - if (format->fileMightContainThisPluginType (filenameOrID) && scanAndAddFile (filenameOrID, true, typesFound, *format)) { diff --git a/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp b/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp index 7b3f2d345d..9e76edc23b 100644 --- a/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp +++ b/modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp @@ -295,23 +295,15 @@ PopupMenu PluginListComponent::createOptionsMenu() menu.addSeparator(); - for (int i = 0; i < formatManager.getNumFormats(); ++i) - { - if (auto format = formatManager.getFormat(i)) - { - if (format->canScanForPlugins()) - { - menu.addItem (PopupMenu::Item ("Remove all " + format->getName() + " plug-ins") - .setEnabled (! list.getTypesForFormat (*format).isEmpty()) - .setAction ([this, i] - { - if (auto f = formatManager.getFormat (i)) - for (auto& pd : list.getTypesForFormat (*f)) - list.removeType (pd); - })); - } - } - } + for (auto format : formatManager.getFormats()) + if (format->canScanForPlugins()) + menu.addItem (PopupMenu::Item ("Remove all " + format->getName() + " plug-ins") + .setEnabled (! list.getTypesForFormat (*format).isEmpty()) + .setAction ([this, format] + { + for (auto& pd : list.getTypesForFormat (*format)) + list.removeType (pd); + })); menu.addSeparator(); @@ -332,17 +324,10 @@ PopupMenu PluginListComponent::createOptionsMenu() menu.addSeparator(); - for (int i = 0; i < formatManager.getNumFormats(); ++i) - { - if (auto format = formatManager.getFormat(i)) - if (format->canScanForPlugins()) - menu.addItem (PopupMenu::Item ("Scan for new or updated " + format->getName() + " plug-ins") - .setAction ([this, i] - { - if (auto f = formatManager.getFormat (i)) - scanFor (*f); - })); - } + for (auto format : formatManager.getFormats()) + if (format->canScanForPlugins()) + menu.addItem (PopupMenu::Item ("Scan for new or updated " + format->getName() + " plug-ins") + .setAction ([this, format] { scanFor (*format); })); return menu; }