From f77c995b4d03a7dae62ea9e31637d227cd8f8934 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 23 Aug 2018 14:15:28 +0100 Subject: [PATCH] Projucer: Refactored module scanning code and added AvailableModuleList class for asynchronous scanning --- .../jucer_GlobalPathsWindowComponent.h | 30 +- .../Source/Application/jucer_Application.cpp | 38 +- .../Source/Application/jucer_Application.h | 9 + .../Source/Application/jucer_CommandLine.cpp | 2 +- .../jucer_CompileEngineClient.cpp | 12 +- .../UI/Sidebar/jucer_ModuleTreeItems.h | 188 +++++----- .../UI/jucer_ModulesInformationComponent.h | 22 +- .../Projucer/Source/Project/jucer_Module.cpp | 350 +++++++----------- extras/Projucer/Source/Project/jucer_Module.h | 68 ++-- .../Projucer/Source/Project/jucer_Project.cpp | 144 +++++-- .../Projucer/Source/Project/jucer_Project.h | 11 +- .../jucer_ProjectExport_Android.h | 2 +- .../jucer_ProjectExport_CodeBlocks.h | 2 +- .../ProjectSaving/jucer_ProjectExport_Make.h | 4 +- .../ProjectSaving/jucer_ProjectExport_Xcode.h | 2 +- .../ProjectSaving/jucer_ProjectExporter.cpp | 30 +- .../Source/ProjectSaving/jucer_ProjectSaver.h | 6 +- .../Helpers/jucer_TranslationHelpers.h | 2 +- .../Source/Wizards/jucer_NewProjectWizard.h | 12 +- 19 files changed, 502 insertions(+), 432 deletions(-) diff --git a/extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h b/extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h index 6346b80cdc..12da6958ae 100644 --- a/extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h +++ b/extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h @@ -59,6 +59,12 @@ public: else if (os == TargetOS::windows) osSelector.setSelectedId (2); else if (os == TargetOS::linux) osSelector.setSelectedId (3); + addChildComponent (rescanJUCEPathButton); + rescanJUCEPathButton.onClick = [] { ProjucerApplication::getApp().rescanJUCEPathModules(); }; + + addChildComponent (rescanUserPathButton); + rescanUserPathButton.onClick = [] { ProjucerApplication::getApp().rescanUserPathModules(); }; + updateFilePathPropertyComponents(); } @@ -85,6 +91,7 @@ public: int labelIndex = 0; bool isFirst = true; + bool showRescanButtons = (rescanJUCEPathButton.isVisible() && rescanUserPathButton.isVisible()); for (auto* pathComp : pathPropertyComponents) { @@ -99,7 +106,20 @@ public: if (isFirst) b.removeFromTop (20); - pathComp->setBounds (b.removeFromTop (pathComp->getPreferredHeight())); + auto compBounds = b.removeFromTop (pathComp->getPreferredHeight()); + + if (showRescanButtons) + { + auto propName = pathComp->getName(); + + if (propName == "JUCE Modules") + rescanJUCEPathButton.setBounds (compBounds.removeFromRight (75).reduced (5, 0)); + else if (propName == "User Modules") + rescanUserPathButton.setBounds (compBounds.removeFromRight (75).reduced (5, 0)); + } + + + pathComp->setBounds (compBounds); b.removeFromTop (5); } @@ -124,6 +144,8 @@ public: private: OwnedArray