36 return list.getNumTypes() +
list.getBlacklistedFiles().size();
60 bool isBlacklisted =
row >=
list.getNumTypes();
67 text =
TRANS(
"Deactivated after failing to initialise correctly");
71 auto desc =
list.getTypes()[
row];
77 case categoryCol:
text = desc.category.isNotEmpty() ? desc.category :
"-";
break;
85 if (
text.isNotEmpty())
89 : columnId ==
nameCol ? defaultTextColour
96 void cellClicked (
int rowNumber,
int columnId,
const juce::MouseEvent&
e)
override
100 if (rowNumber >= 0 && rowNumber <
getNumRows() &&
e.mods.isPopupMenu())
106 owner.removeSelectedPlugins();
111 switch (newSortColumnId)
145 bool allowPluginsWhichRequireAsynchronousInstantiation)
151 allowAsync (allowPluginsWhichRequireAsynchronousInstantiation),
164 table.setHeaderHeight (22);
165 table.setRowHeight (20);
167 table.setMultipleSelectionEnabled (
true);
174 .withDeletionCheck (*
this)
181 list.addChangeListener (
this);
183 table.getHeader().reSortTable();
191 list.removeChangeListener (
this);
219 r.removeFromBottom (3);
227 table.getHeader().reSortTable();
233 table.updateContent();
239 auto selected =
table.getSelectedRows();
241 for (
int i =
table.getNumRows(); --
i >= 0;)
242 if (selected.contains (
i))
248 table.setModel (
nullptr);
252 table.getHeader().reSortTable();
253 table.updateContent();
270 auto types =
list.getTypes();
272 for (
int i = types.size(); --
i >= 0;)
274 auto type = types.getUnchecked (
i);
283 if (index <
list.getNumTypes())
284 list.removeType (
list.getTypes()[index]);
286 list.removeFromBlacklist (
list.getBlacklistedFiles() [index -
list.getNumTypes()]);
293 .setAction ([
this] {
list.clear(); }));
298 if (
format->canScanForPlugins())
303 for (auto& pd : list.getTypesForFormat (*format))
304 list.removeType (pd);
311 .setAction ([
this] { removeSelectedPlugins(); }));
318 auto selectedRow =
table.getSelectedRow();
327 if (
format->canScanForPlugins())
338 if (rowNumber >= 0 && rowNumber < tableModel->getNumRows())
364 auto key =
"lastPluginScanPath_" +
format.getName();
375 auto key =
"lastPluginScanPath_" +
format.getName();
397 allowAsync (allowPluginsWhichRequireAsynchronousInstantiation)
399 const auto blacklisted =
owner.list.getBlacklistedFiles();
438 pool->removeAllJobs (
true, 60000);
448 std::unique_ptr<PluginDirectoryScanner>
scanner;
456 std::unique_ptr<ThreadPool>
pool;
461 if (alert !=
nullptr &&
scanner !=
nullptr)
464 scanner->warnUserAboutStupidPaths();
473 for (
int i = 0;
i <
pathList.getPath().getNumPaths(); ++
i)
480 TRANS(
"Plugin Scanning"),
481 TRANS(
"If you choose to scan folders that contain non-plugin files, "
482 "then scanning may take a long time, and can cause crashes when "
483 "attempting to load unsuitable files.")
485 +
TRANS (
"Are you sure you want to scan the folder \"XYZ\"?")
486 .replace (
"XYZ",
f.getFullPathName()),
516 for (
auto location : pathsThatWouldBeStupidToScan)
520 if (
f == sillyFolder || sillyFolder.isAChildOf (
f))
569 const auto blacklisted =
owner.list.getBlacklistedFiles();
570 std::set<String> allBlacklistedFiles (blacklisted.begin(), blacklisted.end());
572 std::vector<String> newBlacklistedFiles;
573 std::set_difference (allBlacklistedFiles.begin(), allBlacklistedFiles.end(),
575 std::back_inserter (newBlacklistedFiles));
578 newBlacklistedFiles);
652 const std::vector<String>& newBlacklistedFiles)
656 const auto addWarningText = [&warnings] (
const auto& range,
const auto& prefix)
658 if (range.size() == 0)
663 for (
auto&
f : range)
669 addWarningText (newBlacklistedFiles,
TRANS (
"The following files encountered fatal errors during validation"));
670 addWarningText (failedFiles,
TRANS (
"The following files appeared to be plugin files, but failed to load correctly"));
676 TRANS(
"Scan complete"),
#define noexcept
Definition DistrhoDefines.h:72
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static File createFileWithoutCheckingPath(const String &absolutePath) noexcept
Definition File.cpp:65
static File getSpecialLocation(const SpecialLocationType type)
Definition File.cpp:1642
Definition juce_AlertWindow.h:45
static bool JUCE_CALLTYPE showOkCancelBox(MessageBoxIconType iconType, const String &title, const String &message, const String &button1Text, const String &button2Text, Component *associatedComponent, ModalComponentManager::Callback *callback)
Definition juce_AlertWindow.cpp:752
static void JUCE_CALLTYPE showMessageBoxAsync(MessageBoxIconType iconType, const String &title, const String &message, const String &buttonText=String(), Component *associatedComponent=nullptr, ModalComponentManager::Callback *callback=nullptr)
Definition juce_AlertWindow.cpp:712
Definition juce_Array.h:56
bool contains(ParameterType elementToLookFor) const
Definition juce_Array.h:400
Definition juce_ChangeBroadcaster.h:35
NamedValueSet properties
Definition juce_Component.h:2549
void addAndMakeVisible(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1554
void setEnabled(bool shouldBeEnabled)
Definition juce_Component.cpp:3110
void setSize(int newWidth, int newHeight)
Definition juce_Component.cpp:1262
Rectangle< int > getLocalBounds() const noexcept
Definition juce_Component.cpp:2283
Definition juce_File.h:45
void revealToUser() const
Definition juce_linux_Files.cpp:246
SpecialLocationType
Definition juce_File.h:861
@ userMoviesDirectory
Definition juce_File.h:878
@ userMusicDirectory
Definition juce_File.h:875
@ tempDirectory
Definition juce_File.h:913
@ globalApplicationsDirectory
Definition juce_File.h:957
@ userDocumentsDirectory
Definition juce_File.h:869
@ userPicturesDirectory
Definition juce_File.h:881
@ userDesktopDirectory
Definition juce_File.h:872
@ userHomeDirectory
Definition juce_File.h:863
static void findFileSystemRoots(Array< File > &results)
Definition juce_linux_CommonFile.cpp:48
static File createFileWithoutCheckingPath(const String &absolutePath) noexcept
Definition juce_File.cpp:31
bool exists() const
Definition juce_posix_SharedCode.h:246
Definition juce_FileSearchPath.h:35
String toString() const
Definition juce_FileSearchPath.cpp:69
int getNumPaths() const
Definition juce_FileSearchPath.cpp:59
Definition juce_FileSearchPathListComponent.h:42
Definition juce_Font.h:42
@ bold
Definition juce_Font.h:51
Definition juce_GraphicsContext.h:45
@ centredLeft
Definition juce_Justification.h:143
Definition juce_KeyPress.h:40
static const int escapeKey
Definition juce_KeyPress.h:190
static const int returnKey
Definition juce_KeyPress.h:191
Definition juce_KnownPluginList.h:41
@ sortByFormat
Definition juce_KnownPluginList.h:134
@ sortAlphabetically
Definition juce_KnownPluginList.h:131
@ sortByManufacturer
Definition juce_KnownPluginList.h:133
@ sortByCategory
Definition juce_KnownPluginList.h:132
@ textColourId
Definition juce_ListBox.h:498
@ backgroundColourId
Definition juce_ListBox.h:494
static ModalComponentManager::Callback * create(CallbackFn &&fn)
Definition juce_ModalComponentManager.h:174
static ModalComponentManager::Callback * forComponent(void(*functionToCall)(int, ComponentType *), ComponentType *component)
Definition juce_ModalComponentManager.h:276
Definition juce_OwnedArray.h:51
Definition juce_PluginDescription.h:43
String version
Definition juce_PluginDescription.h:74
String name
Definition juce_PluginDescription.h:56
String descriptiveName
Definition juce_PluginDescription.h:62
Definition juce_PluginDirectoryScanner.h:39
static void applyBlacklistingsFromDeadMansPedal(KnownPluginList &listToApplyTo, const File &deadMansPedalFile)
Definition juce_PluginDirectoryScanner.cpp:131
Definition juce_PluginListComponent.cpp:385
const int numThreads
Definition juce_PluginListComponent.cpp:453
double progress
Definition juce_PluginListComponent.cpp:452
String pluginBeingScanned
Definition juce_PluginListComponent.cpp:451
std::atomic< bool > finished
Definition juce_PluginListComponent.cpp:455
void finishedScan()
Definition juce_PluginListComponent.cpp:567
std::unique_ptr< PluginDirectoryScanner > scanner
Definition juce_PluginListComponent.cpp:448
bool allowAsync
Definition juce_PluginListComponent.cpp:454
void timerCallback() override
Definition juce_PluginListComponent.cpp:581
static void startScanCallback(int result, AlertWindow *alert, Scanner *scanner)
Definition juce_PluginListComponent.cpp:459
StringArray filesOrIdentifiersToScan
Definition juce_PluginListComponent.cpp:446
bool timerReentrancyCheck
Definition juce_PluginListComponent.cpp:454
static void warnAboutStupidPathsCallback(int result, Scanner *scanner)
Definition juce_PluginListComponent.cpp:527
void startScan()
Definition juce_PluginListComponent.cpp:535
void warnUserAboutStupidPaths()
Definition juce_PluginListComponent.cpp:471
AudioPluginFormat & formatToScan
Definition juce_PluginListComponent.cpp:445
FileSearchPathListComponent pathList
Definition juce_PluginListComponent.cpp:450
PluginListComponent & owner
Definition juce_PluginListComponent.cpp:444
~Scanner() override
Definition juce_PluginListComponent.cpp:434
static bool isStupidPath(const File &f)
Definition juce_PluginListComponent.cpp:498
std::set< String > initiallyBlacklistedFiles
Definition juce_PluginListComponent.cpp:457
PropertiesFile * propertiesToUse
Definition juce_PluginListComponent.cpp:447
AlertWindow progressWindow
Definition juce_PluginListComponent.cpp:449
AlertWindow pathChooserWindow
Definition juce_PluginListComponent.cpp:449
std::unique_ptr< ThreadPool > pool
Definition juce_PluginListComponent.cpp:456
Scanner(PluginListComponent &plc, AudioPluginFormat &format, const StringArray &filesOrIdentifiers, PropertiesFile *properties, bool allowPluginsWhichRequireAsynchronousInstantiation, int threads, const String &title, const String &text)
Definition juce_PluginListComponent.cpp:387
bool doNextScan()
Definition juce_PluginListComponent.cpp:605
Definition juce_PluginListComponent.cpp:30
static String getPluginDescription(const PluginDescription &desc)
Definition juce_PluginListComponent.cpp:123
@ categoryCol
Definition juce_PluginListComponent.cpp:52
@ descCol
Definition juce_PluginListComponent.cpp:54
@ nameCol
Definition juce_PluginListComponent.cpp:50
@ typeCol
Definition juce_PluginListComponent.cpp:51
@ manufacturerCol
Definition juce_PluginListComponent.cpp:53
int getNumRows() override
Definition juce_PluginListComponent.cpp:34
void cellClicked(int rowNumber, int columnId, const juce::MouseEvent &e) override
Definition juce_PluginListComponent.cpp:96
void deleteKeyPressed(int) override
Definition juce_PluginListComponent.cpp:104
void sortOrderChanged(int newSortColumnId, bool isForwards) override
Definition juce_PluginListComponent.cpp:109
void paintCell(Graphics &g, int row, int columnId, int width, int height, bool) override
Definition juce_PluginListComponent.cpp:57
PluginListComponent & owner
Definition juce_PluginListComponent.cpp:136
KnownPluginList & list
Definition juce_PluginListComponent.cpp:137
void paintRowBackground(Graphics &g, int, int, int, bool rowIsSelected) override
Definition juce_PluginListComponent.cpp:39
TableModel(PluginListComponent &c, KnownPluginList &l)
Definition juce_PluginListComponent.cpp:32
static FileSearchPath getLastSearchPath(PropertiesFile &, AudioPluginFormat &)
Definition juce_PluginListComponent.cpp:362
std::unique_ptr< Scanner > currentScanner
Definition juce_PluginListComponent.h:131
bool isInterestedInFileDrag(const StringArray &) override
Definition juce_PluginListComponent.cpp:351
KnownPluginList & list
Definition juce_PluginListComponent.h:118
void setTableModel(TableListBoxModel *)
Definition juce_PluginListComponent.cpp:246
void filesDropped(const StringArray &, int, int) override
Definition juce_PluginListComponent.cpp:356
String dialogText
Definition juce_PluginListComponent.h:123
~PluginListComponent() override
Definition juce_PluginListComponent.cpp:189
bool allowAsync
Definition juce_PluginListComponent.h:124
bool isScanning() const noexcept
Definition juce_PluginListComponent.cpp:646
void changeListenerCallback(ChangeBroadcaster *) override
Definition juce_PluginListComponent.cpp:225
PopupMenu createOptionsMenu()
Definition juce_PluginListComponent.cpp:289
String dialogTitle
Definition juce_PluginListComponent.h:123
void resized() override
Definition juce_PluginListComponent.cpp:211
void updateList()
Definition juce_PluginListComponent.cpp:231
void removeSelectedPlugins()
Definition juce_PluginListComponent.cpp:237
PopupMenu createMenuForRow(int rowNumber)
Definition juce_PluginListComponent.cpp:334
File deadMansPedalFile
Definition juce_PluginListComponent.h:119
TableListBox table
Definition juce_PluginListComponent.h:120
AudioPluginFormatManager & formatManager
Definition juce_PluginListComponent.h:117
void setNumberOfThreadsForScanning(int numThreads)
Definition juce_PluginListComponent.cpp:206
static void setLastSearchPath(PropertiesFile &, AudioPluginFormat &, const FileSearchPath &)
Definition juce_PluginListComponent.cpp:372
int numThreads
Definition juce_PluginListComponent.h:125
PropertiesFile * propertiesToUse
Definition juce_PluginListComponent.h:122
void removePluginItem(int index)
Definition juce_PluginListComponent.cpp:281
void setOptionsButtonText(const String &newText)
Definition juce_PluginListComponent.cpp:194
PluginListComponent(AudioPluginFormatManager &formatManager, KnownPluginList &listToRepresent, const File &deadMansPedalFile, PropertiesFile *propertiesToUse, bool allowPluginsWhichRequireAsynchronousInstantiation=false)
Definition juce_PluginListComponent.cpp:143
TextButton optionsButton
Definition juce_PluginListComponent.h:121
void scanFinished(const StringArray &, const std::vector< String > &)
Definition juce_PluginListComponent.cpp:651
void removeMissingPlugins()
Definition juce_PluginListComponent.cpp:268
void scanFor(AudioPluginFormat &)
Definition juce_PluginListComponent.cpp:634
void setScanDialogText(const String &textForProgressWindowTitle, const String &textForProgressWindowDescription)
Definition juce_PluginListComponent.cpp:200
std::unique_ptr< TableListBoxModel > tableModel
Definition juce_PluginListComponent.h:128
Definition juce_PropertiesFile.h:48
Definition juce_ScopedValueSetter.h:55
Definition juce_StringArray.h:35
String joinIntoString(StringRef separatorString, int startIndex=0, int numberOfElements=-1) const
Definition juce_StringArray.cpp:289
void removeEmptyStrings(bool removeWhitespaceStrings=true)
Definition juce_StringArray.cpp:250
void add(String stringToAdd)
Definition juce_StringArray.cpp:136
bool isEmpty() const noexcept
Definition juce_StringArray.h:139
Definition juce_String.h:53
Definition juce_TableListBox.h:41
virtual void cellClicked(int rowNumber, int columnId, const MouseEvent &)
Definition juce_TableListBox.cpp:598
TableListBoxModel()=default
Definition juce_ThreadPool.h:156
JobStatus
Definition juce_ThreadPool.h:71
@ jobHasFinished
Definition juce_ThreadPool.h:72
bool shouldExit() const noexcept
Definition juce_ThreadPool.h:107
ThreadPoolJob(const String &name)
Definition juce_ThreadPool.cpp:47
Timer() noexcept
Definition juce_Timer.cpp:316
void startTimer(int intervalInMilliseconds) noexcept
Definition juce_Timer.cpp:332
* e
Definition inflate.c:1404
int * l
Definition inflate.c:1579
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
static const char * title
Definition pugl.h:1747
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
#define TRANS(stringLiteral)
Definition juce_LocalisedStrings.h:208
static char ** files
Definition misc.c:28
const Colour transparentBlack
Definition juce_Colours.h:40
const Colour red
Definition juce_Colours.h:157
Definition carla_juce.cpp:31
NewLine newLine
Definition juce_String.cpp:28
static bool canShowFolderForPlugin(KnownPluginList &list, int index)
Definition juce_PluginListComponent.cpp:257
static void showFolderForPlugin(KnownPluginList &list, int index)
Definition juce_PluginListComponent.cpp:262
MessageBoxIconType
Definition juce_MessageBoxOptions.h:31
@ WarningIcon
Definition juce_MessageBoxOptions.h:35
@ NoIcon
Definition juce_MessageBoxOptions.h:32
@ InfoIcon
Definition juce_MessageBoxOptions.h:37
@ list
Definition juce_AccessibilityRole.h:56
@ row
Definition juce_AccessibilityRole.h:53
Definition juce_PluginListComponent.cpp:615
JobStatus runJob()
Definition juce_PluginListComponent.cpp:618
ScanJob(Scanner &s)
Definition juce_PluginListComponent.cpp:616
Scanner & scanner
Definition juce_PluginListComponent.cpp:626
const char * text
Definition swell-functions.h:167
return c
Definition crypt.c:175
ZCONST char * key
Definition crypt.c:587
int r
Definition crypt.c:458
int result
Definition process.c:1455
_WDL_CSTRING_PREFIX void INT_PTR const char * format
Definition wdlcstring.h:263
#define const
Definition zconf.h:137