LMMS
Loading...
Searching...
No Matches
juce_KnownPluginList.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
41{
42public:
43 //==============================================================================
46
48 ~KnownPluginList() override;
49
50 //==============================================================================
52 void clear();
53
55 bool addType (const PluginDescription& type);
56
58 void removeType (const PluginDescription& type);
59
61 int getNumTypes() const noexcept;
62
65
68
70 std::unique_ptr<PluginDescription> getTypeForFile (const String& fileOrIdentifier) const;
71
77 std::unique_ptr<PluginDescription> getTypeForIdentifierString (const String& identifierString) const;
78
91 bool scanAndAddFile (const String& possiblePluginFileOrIdentifier,
92 bool dontRescanIfAlreadyInList,
94 AudioPluginFormat& formatToUse);
95
97 void scanFinished();
98
102 bool isListingUpToDate (const String& possiblePluginFileOrIdentifier,
103 AudioPluginFormat& formatToUse) const;
104
109 const StringArray& filenames,
111
112 //==============================================================================
114 const StringArray& getBlacklistedFiles() const;
115
117 void addToBlacklist (const String& pluginID);
118
120 void removeFromBlacklist (const String& pluginID);
121
124
125 //==============================================================================
138
139 //==============================================================================
147 static void addToMenu (PopupMenu& menu, const Array<PluginDescription>& types,
148 SortMethod sortMethod, const String& currentlyTickedPluginID = {});
149
154 static int getIndexChosenByMenu (const Array<PluginDescription>& types, int menuResultCode);
155
156 //==============================================================================
158 void sort (SortMethod method, bool forwards);
159
160 //==============================================================================
162 std::unique_ptr<XmlElement> createXml() const;
163
165 void recreateFromXml (const XmlElement& xml);
166
167 //==============================================================================
177
179 static std::unique_ptr<PluginTree> createTree (const Array<PluginDescription>& types, SortMethod sortMethod);
180
181 //==============================================================================
184 {
185 public:
187 virtual ~CustomScanner();
188
194 const String& fileOrIdentifier) = 0;
195
197 virtual void scanFinished();
198
204 };
205
209 void setCustomScanner (std::unique_ptr<CustomScanner> newScanner);
210
211 //==============================================================================
212 #ifndef DOXYGEN
213 // These methods have been deprecated! When getting the list of plugin types you should instead use
214 // the getTypes() method which returns a copy of the internal PluginDescription array and can be accessed
215 // in a thread-safe way.
216 [[deprecated]] PluginDescription* getType (int index) noexcept { return &types.getReference (index); }
217 [[deprecated]] const PluginDescription* getType (int index) const noexcept { return &types.getReference (index); }
218 [[deprecated]] PluginDescription** begin() noexcept { jassertfalse; return nullptr; }
219 [[deprecated]] PluginDescription* const* begin() const noexcept { jassertfalse; return nullptr; }
220 [[deprecated]] PluginDescription** end() noexcept { jassertfalse; return nullptr; }
221 [[deprecated]] PluginDescription* const* end() const noexcept { jassertfalse; return nullptr; }
222
223 // These methods have been deprecated in favour of their static counterparts. You should call getTypes()
224 // to store the plug-in list at a point in time and use it when calling these methods.
225 [[deprecated]] void addToMenu (PopupMenu& menu, SortMethod sortMethod, const String& currentlyTickedPluginID = {}) const;
226 [[deprecated]] int getIndexChosenByMenu (int menuResultCode) const;
227 [[deprecated]] std::unique_ptr<PluginTree> createTree (const SortMethod sortMethod) const;
228 #endif
229
230private:
231 //==============================================================================
234 std::unique_ptr<CustomScanner> scanner;
236
238};
239
240} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition Array.h:57
Definition XmlElement.h:145
Definition juce_Array.h:56
Definition juce_AudioPluginFormat.h:38
Definition juce_AudioPluginFormatManager.h:38
ChangeBroadcaster() noexcept
Definition juce_ChangeBroadcaster.cpp:26
Definition juce_CriticalSection.h:43
bool shouldExit() const noexcept
Definition juce_KnownPluginList.cpp:617
CustomScanner()
Definition juce_KnownPluginList.cpp:612
virtual void scanFinished()
Definition juce_KnownPluginList.cpp:615
virtual bool findPluginTypesFor(AudioPluginFormat &format, OwnedArray< PluginDescription > &result, const String &fileOrIdentifier)=0
PluginDescription *const * begin() const noexcept
Definition juce_KnownPluginList.h:219
bool isListingUpToDate(const String &possiblePluginFileOrIdentifier, AudioPluginFormat &formatToUse) const
Definition juce_KnownPluginList.cpp:126
void clearBlacklistedFiles()
Definition juce_KnownPluginList.cpp:278
std::unique_ptr< PluginDescription > getTypeForIdentifierString(const String &identifierString) const
Definition juce_KnownPluginList.cpp:77
PluginDescription ** begin() noexcept
Definition juce_KnownPluginList.h:218
SortMethod
Definition juce_KnownPluginList.h:129
@ sortByFormat
Definition juce_KnownPluginList.h:134
@ defaultOrder
Definition juce_KnownPluginList.h:130
@ sortAlphabetically
Definition juce_KnownPluginList.h:131
@ sortByFileSystemLocation
Definition juce_KnownPluginList.h:135
@ sortByManufacturer
Definition juce_KnownPluginList.h:133
@ sortByCategory
Definition juce_KnownPluginList.h:132
@ sortByInfoUpdateTime
Definition juce_KnownPluginList.h:136
CriticalSection scanLock
Definition juce_KnownPluginList.h:235
const PluginDescription * getType(int index) const noexcept
Definition juce_KnownPluginList.h:217
void clear()
Definition juce_KnownPluginList.cpp:32
int getNumTypes() const noexcept
Definition juce_KnownPluginList.cpp:43
bool scanAndAddFile(const String &possiblePluginFileOrIdentifier, bool dontRescanIfAlreadyInList, OwnedArray< PluginDescription > &typesFound, AudioPluginFormat &formatToUse)
Definition juce_KnownPluginList.cpp:147
std::unique_ptr< PluginDescription > getTypeForFile(const String &fileOrIdentifier) const
Definition juce_KnownPluginList.cpp:66
void removeType(const PluginDescription &type)
Definition juce_KnownPluginList.cpp:113
const StringArray & getBlacklistedFiles() const
Definition juce_KnownPluginList.cpp:253
void removeFromBlacklist(const String &pluginID)
Definition juce_KnownPluginList.cpp:267
std::unique_ptr< CustomScanner > scanner
Definition juce_KnownPluginList.h:234
CriticalSection typesArrayLock
Definition juce_KnownPluginList.h:235
void scanAndAddDragAndDroppedFiles(AudioPluginFormatManager &formatManager, const StringArray &filenames, OwnedArray< PluginDescription > &typesFound)
Definition juce_KnownPluginList.cpp:210
Array< PluginDescription > getTypesForFormat(AudioPluginFormat &) const
Definition juce_KnownPluginList.cpp:55
void scanFinished()
Definition juce_KnownPluginList.cpp:247
void addToBlacklist(const String &pluginID)
Definition juce_KnownPluginList.cpp:258
KnownPluginList()
Definition juce_KnownPluginList.cpp:29
PluginDescription * getType(int index) noexcept
Definition juce_KnownPluginList.h:216
static std::unique_ptr< PluginTree > createTree(const Array< PluginDescription > &types, SortMethod sortMethod)
Definition juce_KnownPluginList.cpp:571
PluginDescription ** end() noexcept
Definition juce_KnownPluginList.h:220
bool addType(const PluginDescription &type)
Definition juce_KnownPluginList.cpp:88
Array< PluginDescription > getTypes() const
Definition juce_KnownPluginList.cpp:49
Array< PluginDescription > types
Definition juce_KnownPluginList.h:232
StringArray blacklist
Definition juce_KnownPluginList.h:233
PluginDescription *const * end() const noexcept
Definition juce_KnownPluginList.h:221
void setCustomScanner(std::unique_ptr< CustomScanner > newScanner)
Definition juce_KnownPluginList.cpp:141
Definition juce_OwnedArray.h:51
Definition juce_PluginDescription.h:43
Definition juce_PopupMenu.h:80
Definition juce_StringArray.h:35
Definition juce_String.h:53
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define jassertfalse
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_Uuid.h:141
Definition juce_KnownPluginList.h:172
Array< PluginDescription > plugins
Definition juce_KnownPluginList.h:175
String folder
Definition juce_KnownPluginList.h:173
OwnedArray< PluginTree > subFolders
Definition juce_KnownPluginList.h:174
int result
Definition process.c:1455
static ZCONST char Far * method[NUM_METHODS]
Definition zipinfo.c:1008
_WDL_CSTRING_PREFIX void INT_PTR const char * format
Definition wdlcstring.h:263
#define const
Definition zconf.h:137