diff --git a/extras/Projucer/Builds/MacOSX/Icon.icns b/extras/Projucer/Builds/MacOSX/Icon.icns index cab8a1da4f..605a3371a2 100644 Binary files a/extras/Projucer/Builds/MacOSX/Icon.icns and b/extras/Projucer/Builds/MacOSX/Icon.icns differ diff --git a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj index 36213fff48..eba8f4807e 100644 --- a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj +++ b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj @@ -122,7 +122,6 @@ 23A8DE16C0CDB8EED18B008B /* jucer_CommandIDs.h */ /* jucer_CommandIDs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandIDs.h; path = ../../Source/Application/jucer_CommandIDs.h; sourceTree = SOURCE_ROOT; }; 23D79A22569BEDF63B57DD36 /* jucer_CodeHelpers.h */ /* jucer_CodeHelpers.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CodeHelpers.h; path = ../../Source/Utility/Helpers/jucer_CodeHelpers.h; sourceTree = SOURCE_ROOT; }; 2407B8BCEAB78AE0FE6C1594 /* jucer_AudioPluginARAEditorTemplate.cpp */ /* jucer_AudioPluginARAEditorTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARAEditorTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.cpp; sourceTree = SOURCE_ROOT; }; - 247768B490B9D759DDA79359 /* jucer_UserAvatarComponent.h */ /* jucer_UserAvatarComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UserAvatarComponent.h; path = ../../Source/Project/UI/jucer_UserAvatarComponent.h; sourceTree = SOURCE_ROOT; }; 24EB4C2412821B8019D6F754 /* jucer_TestComponent.cpp */ /* jucer_TestComponent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_TestComponent.cpp; path = ../../Source/ComponentEditor/UI/jucer_TestComponent.cpp; sourceTree = SOURCE_ROOT; }; 25BE1265FE6C6EA3473A3A0A /* jucer_ResourceFile.h */ /* jucer_ResourceFile.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ResourceFile.h; path = ../../Source/ProjectSaving/jucer_ResourceFile.h; sourceTree = SOURCE_ROOT; }; 269A454F1FF081DA67FFD578 /* jucer_JucerDocument.cpp */ /* jucer_JucerDocument.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_JucerDocument.cpp; path = ../../Source/ComponentEditor/jucer_JucerDocument.cpp; sourceTree = SOURCE_ROOT; }; @@ -130,7 +129,6 @@ 2CD34A70B4032C0426F7AA10 /* jucer_MainWindow.h */ /* jucer_MainWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MainWindow.h; path = ../../Source/Application/jucer_MainWindow.h; sourceTree = SOURCE_ROOT; }; 2E9CF857DCF1EFEA997B4D5B /* jucer_AudioPluginARAPlaybackRendererTemplate.h */ /* jucer_AudioPluginARAPlaybackRendererTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAPlaybackRendererTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h; sourceTree = SOURCE_ROOT; }; 2EEB1C074162F363C6599282 /* jucer_CommandLine.h */ /* jucer_CommandLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CommandLine.h; path = ../../Source/Application/jucer_CommandLine.h; sourceTree = SOURCE_ROOT; }; - 2F0A7CA808B2FCCC9ED68992 /* jucer_LicenseQueryThread.h */ /* jucer_LicenseQueryThread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseQueryThread.h; path = ../../Source/Application/UserAccount/jucer_LicenseQueryThread.h; sourceTree = SOURCE_ROOT; }; 2F373F97E30AC1A0BFC1FC61 /* jucer_FilePropertyComponent.h */ /* jucer_FilePropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FilePropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_FilePropertyComponent.h; sourceTree = SOURCE_ROOT; }; 32C4B61AD995877956B7FA66 /* jucer_InlineComponentTemplate.h */ /* jucer_InlineComponentTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_InlineComponentTemplate.h; path = ../../Source/BinaryData/Templates/jucer_InlineComponentTemplate.h; sourceTree = SOURCE_ROOT; }; 32ECBC08D903418CA0825870 /* jucer_ContentViewComponents.h */ /* jucer_ContentViewComponents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ContentViewComponents.h; path = ../../Source/Project/UI/jucer_ContentViewComponents.h; sourceTree = SOURCE_ROOT; }; @@ -214,7 +212,6 @@ 77EA01E7D04BF889930BFF54 /* jucer_PaintElementRoundedRectangle.h */ /* jucer_PaintElementRoundedRectangle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementRoundedRectangle.h; path = ../../Source/ComponentEditor/PaintElements/jucer_PaintElementRoundedRectangle.h; sourceTree = SOURCE_ROOT; }; 78D0DBC4798FF040FDB90F6D /* jucer_GeneratedCode.cpp */ /* jucer_GeneratedCode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_GeneratedCode.cpp; path = ../../Source/ComponentEditor/jucer_GeneratedCode.cpp; sourceTree = SOURCE_ROOT; }; 7AB7640968FAAC73072FBD10 /* juce_gui_basics */ /* juce_gui_basics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_basics; path = ../../../../modules/juce_gui_basics; sourceTree = SOURCE_ROOT; }; - 7B975D9F6EDB528AADE8831F /* agplv3_logo.svg */ /* agplv3_logo.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = agplv3_logo.svg; path = ../../Source/BinaryData/Icons/agplv3_logo.svg; sourceTree = SOURCE_ROOT; }; 7CA44FF0BA319517C6E39651 /* jucer_Application.cpp */ /* jucer_Application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Application.cpp; path = ../../Source/Application/jucer_Application.cpp; sourceTree = SOURCE_ROOT; }; 7E2013F425E231C6D865DDD0 /* jucer_ComponentChoiceProperty.h */ /* jucer_ComponentChoiceProperty.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentChoiceProperty.h; path = ../../Source/ComponentEditor/Properties/jucer_ComponentChoiceProperty.h; sourceTree = SOURCE_ROOT; }; 7F0A5319912991615FC57945 /* jucer_ColourPropertyComponent.h */ /* jucer_ColourPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ColourPropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_ColourPropertyComponent.h; sourceTree = SOURCE_ROOT; }; @@ -241,7 +238,6 @@ 921D263A2EAFD96C8D389693 /* JuceLV2Defines.h.in */ /* JuceLV2Defines.h.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = JuceLV2Defines.h.in; path = ../../../Build/CMake/JuceLV2Defines.h.in; sourceTree = SOURCE_ROOT; }; 92926A4D3CC4BB2A9D35EB0B /* jucer_UTF8WindowComponent.h */ /* jucer_UTF8WindowComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_UTF8WindowComponent.h; path = ../../Source/Application/Windows/jucer_UTF8WindowComponent.h; sourceTree = SOURCE_ROOT; }; 92A66A8BD87F98EB6B4FB6D0 /* jucer_ProjectContentComponent.h */ /* jucer_ProjectContentComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectContentComponent.h; path = ../../Source/Project/UI/jucer_ProjectContentComponent.h; sourceTree = SOURCE_ROOT; }; - 94146B40B41BF0AACF4359DD /* jucer_LicenseState.h */ /* jucer_LicenseState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseState.h; path = ../../Source/Application/UserAccount/jucer_LicenseState.h; sourceTree = SOURCE_ROOT; }; 951128CA33CCDEF570436B1C /* Icon.icns */ /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = file.icns; name = Icon.icns; path = Icon.icns; sourceTree = SOURCE_ROOT; }; 96A1EC6B50DBD2C526C60338 /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ /* jucer_AudioPluginARADocumentControllerTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARADocumentControllerTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp; sourceTree = SOURCE_ROOT; }; 983CFBA01CA8811F30FA7F4C /* jucer_MiscUtilities.h */ /* jucer_MiscUtilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_MiscUtilities.h; path = ../../Source/Utility/Helpers/jucer_MiscUtilities.h; sourceTree = SOURCE_ROOT; }; @@ -277,7 +273,6 @@ B3528C08B84CBC950252EA69 /* jucer_ModulesInformationComponent.h */ /* jucer_ModulesInformationComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ModulesInformationComponent.h; path = ../../Source/Project/UI/jucer_ModulesInformationComponent.h; sourceTree = SOURCE_ROOT; }; B403AF75EAF361ED74EE476E /* jucer_FileHelpers.cpp */ /* jucer_FileHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_FileHelpers.cpp; path = ../../Source/Utility/Helpers/jucer_FileHelpers.cpp; sourceTree = SOURCE_ROOT; }; B542D78F431A52AF07F4113B /* jucer_AudioPluginARAFilterTemplate.h */ /* jucer_AudioPluginARAFilterTemplate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginARAFilterTemplate.h; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAFilterTemplate.h; sourceTree = SOURCE_ROOT; }; - B6444A4A8DFD6828FF6BD1CB /* jucer_LoginFormComponent.h */ /* jucer_LoginFormComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LoginFormComponent.h; path = ../../Source/Application/UserAccount/jucer_LoginFormComponent.h; sourceTree = SOURCE_ROOT; }; B6F2905330EA5C560D527209 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; }; B83C9BD89F31EA9E5E12A3C6 /* juce_icon.png */ /* juce_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = juce_icon.png; path = ../../Source/BinaryData/Icons/juce_icon.png; sourceTree = SOURCE_ROOT; }; B97D60D2531CFD0D8555BA5C /* jucer_PaintElementText.h */ /* jucer_PaintElementText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementText.h; path = ../../Source/ComponentEditor/PaintElements/jucer_PaintElementText.h; sourceTree = SOURCE_ROOT; }; @@ -350,7 +345,6 @@ F073B54B36D845915CD6D2C1 /* jucer_PaintElementEllipse.h */ /* jucer_PaintElementEllipse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_PaintElementEllipse.h; path = ../../Source/ComponentEditor/PaintElements/jucer_PaintElementEllipse.h; sourceTree = SOURCE_ROOT; }; F159C1B99ACF1D91E12D978E /* jucer_MainTemplate_NoWindow.cpp */ /* jucer_MainTemplate_NoWindow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainTemplate_NoWindow.cpp; path = ../../Source/BinaryData/Templates/jucer_MainTemplate_NoWindow.cpp; sourceTree = SOURCE_ROOT; }; F2E4998FB2C7221587A79F8B /* jucer_CodeHelpers.cpp */ /* jucer_CodeHelpers.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_CodeHelpers.cpp; path = ../../Source/Utility/Helpers/jucer_CodeHelpers.cpp; sourceTree = SOURCE_ROOT; }; - F30DF63DBEFA4BEEF7C369FC /* jucer_LicenseController.h */ /* jucer_LicenseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_LicenseController.h; path = ../../Source/Application/UserAccount/jucer_LicenseController.h; sourceTree = SOURCE_ROOT; }; F313EE01ECE306DB2CFE011D /* UnityPluginGUIScript.cs.in */ /* UnityPluginGUIScript.cs.in */ = {isa = PBXFileReference; lastKnownFileType = file.in; name = UnityPluginGUIScript.cs.in; path = ../../../Build/CMake/UnityPluginGUIScript.cs.in; sourceTree = SOURCE_ROOT; }; F3CC8F26ECCDA6DCD8A284D2 /* jucer_GradientPointComponent.h */ /* jucer_GradientPointComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_GradientPointComponent.h; path = ../../Source/ComponentEditor/PaintElements/jucer_GradientPointComponent.h; sourceTree = SOURCE_ROOT; }; F3CCA5545AB7B4B603D0BFEB /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ /* jucer_AudioPluginARAPlaybackRendererTemplate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginARAPlaybackRendererTemplate.cpp; path = ../../Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp; sourceTree = SOURCE_ROOT; }; @@ -711,17 +705,6 @@ name = Products; sourceTree = ""; }; - 9D43579A76E23FBCE6B36333 /* UserAccount */ = { - isa = PBXGroup; - children = ( - F30DF63DBEFA4BEEF7C369FC, - 2F0A7CA808B2FCCC9ED68992, - 94146B40B41BF0AACF4359DD, - B6444A4A8DFD6828FF6BD1CB, - ); - name = UserAccount; - sourceTree = ""; - }; A734ACA659C8B85D24B27673 /* StartPage */ = { isa = PBXGroup; children = ( @@ -770,7 +753,6 @@ isa = PBXGroup; children = ( A734ACA659C8B85D24B27673, - 9D43579A76E23FBCE6B36333, EB1D55A76652399EB81CC1F0, 7CA44FF0BA319517C6E39651, EE690110171E1648FF2118B8, @@ -797,7 +779,6 @@ 69B478C992FA0B8C885946A6, EAC1731150A7F79D59BAA0B6, 8F4D281E98808204E2846A7D, - 7B975D9F6EDB528AADE8831F, B83C9BD89F31EA9E5E12A3C6, 8FEF6F5EA676B824C021EB6F, 8FF26BF72A522FBEAAFDDF54, @@ -895,7 +876,6 @@ 1B0F18E1D96F727C062B05FA, 92A66A8BD87F98EB6B4FB6D0, F63F46CA0A51C679867855A7, - 247768B490B9D759DDA79359, ); name = UI; sourceTree = ""; diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index dd5de082fb..848d2acf28 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -1912,10 +1912,6 @@ - - - - @@ -2035,7 +2031,6 @@ - @@ -2884,7 +2879,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 74c967e1cd..7cb7d214ff 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -5,9 +5,6 @@ {1E1D2D75-0ADA-6E9E-105F-2F87632B55AF} - - {DA27985D-8427-CE70-CA06-EAF7009CCC60} - {DC7E18A5-E854-3D99-627F-AAA88246B712} @@ -2403,18 +2400,6 @@ Projucer\Application\StartPage - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - Projucer\Application\Windows @@ -2772,9 +2757,6 @@ Projucer\Project\UI - - Projucer\Project\UI - Projucer\Project @@ -5315,9 +5297,6 @@ Projucer\BinaryData\Icons - - Projucer\BinaryData\Icons - Projucer\BinaryData\Icons diff --git a/extras/Projucer/Builds/VisualStudio2017/icon.ico b/extras/Projucer/Builds/VisualStudio2017/icon.ico index 66ef92d6e8..da2cd9fc79 100644 Binary files a/extras/Projucer/Builds/VisualStudio2017/icon.ico and b/extras/Projucer/Builds/VisualStudio2017/icon.ico differ diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index 0e06e774dc..3819b7cd9e 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -1912,10 +1912,6 @@ - - - - @@ -2035,7 +2031,6 @@ - @@ -2884,7 +2879,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index a540859219..f735b7b891 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -5,9 +5,6 @@ {1E1D2D75-0ADA-6E9E-105F-2F87632B55AF} - - {DA27985D-8427-CE70-CA06-EAF7009CCC60} - {DC7E18A5-E854-3D99-627F-AAA88246B712} @@ -2403,18 +2400,6 @@ Projucer\Application\StartPage - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - Projucer\Application\Windows @@ -2772,9 +2757,6 @@ Projucer\Project\UI - - Projucer\Project\UI - Projucer\Project @@ -5315,9 +5297,6 @@ Projucer\BinaryData\Icons - - Projucer\BinaryData\Icons - Projucer\BinaryData\Icons diff --git a/extras/Projucer/Builds/VisualStudio2019/icon.ico b/extras/Projucer/Builds/VisualStudio2019/icon.ico index 66ef92d6e8..da2cd9fc79 100644 Binary files a/extras/Projucer/Builds/VisualStudio2019/icon.ico and b/extras/Projucer/Builds/VisualStudio2019/icon.ico differ diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index dda77aa0f4..3b5d8663d9 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -1912,10 +1912,6 @@ - - - - @@ -2035,7 +2031,6 @@ - @@ -2884,7 +2879,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index 0d5b955b19..ec226bda55 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -5,9 +5,6 @@ {1E1D2D75-0ADA-6E9E-105F-2F87632B55AF} - - {DA27985D-8427-CE70-CA06-EAF7009CCC60} - {DC7E18A5-E854-3D99-627F-AAA88246B712} @@ -2403,18 +2400,6 @@ Projucer\Application\StartPage - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - - - Projucer\Application\UserAccount - Projucer\Application\Windows @@ -2772,9 +2757,6 @@ Projucer\Project\UI - - Projucer\Project\UI - Projucer\Project @@ -5315,9 +5297,6 @@ Projucer\BinaryData\Icons - - Projucer\BinaryData\Icons - Projucer\BinaryData\Icons diff --git a/extras/Projucer/Builds/VisualStudio2022/icon.ico b/extras/Projucer/Builds/VisualStudio2022/icon.ico index 66ef92d6e8..da2cd9fc79 100644 Binary files a/extras/Projucer/Builds/VisualStudio2022/icon.ico and b/extras/Projucer/Builds/VisualStudio2022/icon.ico differ diff --git a/extras/Projucer/CMakeLists.txt b/extras/Projucer/CMakeLists.txt index 921c20dccf..35448e7b55 100644 --- a/extras/Projucer/CMakeLists.txt +++ b/extras/Projucer/CMakeLists.txt @@ -109,7 +109,6 @@ juce_add_binary_data(ProjucerData SOURCES Source/BinaryData/Icons/export_linux.svg Source/BinaryData/Icons/export_visualStudio.svg Source/BinaryData/Icons/export_xcode.svg - Source/BinaryData/Icons/agplv3_logo.svg Source/BinaryData/Icons/juce_icon.png Source/BinaryData/Icons/wizard_AnimatedApp.svg Source/BinaryData/Icons/wizard_AudioApp.svg diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.cpp b/extras/Projucer/JuceLibraryCode/BinaryData.cpp index 084e3510c6..d0bbd58279 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.cpp +++ b/extras/Projucer/JuceLibraryCode/BinaryData.cpp @@ -1962,138 +1962,8 @@ static const unsigned char temp_binary_data_17[] = const char* export_xcode_svg = (const char*) temp_binary_data_17; -//================== agplv3_logo.svg ================== -static const unsigned char temp_binary_data_18[] = -"\n" -"\n" -"\n" -"\n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -"\n"; - -const char* agplv3_logo_svg = (const char*) temp_binary_data_18; - //================== juce_icon.png ================== -static const unsigned char temp_binary_data_19[] = +static const unsigned char temp_binary_data_18[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,0,0,0,2,0,8,6,0,0,0,244,120,212,250,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,132,101,88,73,102,77,77,0,42,0,0,0,8,0,5,1,18,0,3,0,0,0,1,0,1,0,0,1,26,0,5,0,0,0,1,0,0,0,74,1,27,0,5,0,0,0,1,0,0,0,82, 1,40,0,3,0,0,0,1,0,2,0,0,135,105,0,4,0,0,0,1,0,0,0,90,0,0,0,0,0,0,0,144,0,0,0,1,0,0,0,144,0,0,0,1,0,3,160,1,0,3,0,0,0,1,0,1,0,0,160,2,0,4,0,0,0,1,0,0,2,0,160,3,0,4,0,0,0,1,0,0,2,0,0,0,0,0,25,192,84,16,0,0,0,9,112,72,89,115,0,0,22,37,0,0,22,37,1,73,82, 36,240,0,0,1,89,105,84,88,116,88,77,76,58,99,111,109,46,97,100,111,98,101,46,120,109,112,0,0,0,0,0,60,120,58,120,109,112,109,101,116,97,32,120,109,108,110,115,58,120,61,34,97,100,111,98,101,58,110,115,58,109,101,116,97,47,34,32,120,58,120,109,112,116, @@ -3588,10 +3458,10 @@ static const unsigned char temp_binary_data_19[] = 246,44,212,239,33,44,75,155,114,119,199,74,182,59,225,163,230,56,187,0,203,253,163,244,158,144,61,194,134,54,75,89,109,30,70,120,118,29,207,206,219,205,104,221,216,184,128,155,196,214,68,235,181,92,180,4,225,231,230,249,31,56,76,178,107,226,240,74,169, 60,174,167,167,149,58,7,146,87,83,147,170,92,246,47,193,107,255,83,221,119,125,168,20,16,4,4,1,245,55,199,228,93,104,231,183,98,169,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; -const char* juce_icon_png = (const char*) temp_binary_data_19; +const char* juce_icon_png = (const char*) temp_binary_data_18; //================== wizard_AnimatedApp.svg ================== -static const unsigned char temp_binary_data_20[] = +static const unsigned char temp_binary_data_19[] = "\n" "\n" "\n" @@ -3768,10 +3638,10 @@ static const unsigned char temp_binary_data_20[] = " id=\"line44\"\n" " style=\"stroke:#a45c94;stroke-opacity:0.94117647\" />"; -const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_20; +const char* wizard_AnimatedApp_svg = (const char*) temp_binary_data_19; //================== wizard_AudioApp.svg ================== -static const unsigned char temp_binary_data_21[] = +static const unsigned char temp_binary_data_20[] = "\n" "\n" "\n" @@ -4525,10 +4395,10 @@ static const unsigned char temp_binary_data_21[] = " id=\"line131\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_AudioApp_svg = (const char*) temp_binary_data_21; +const char* wizard_AudioApp_svg = (const char*) temp_binary_data_20; //================== wizard_AudioPlugin.svg ================== -static const unsigned char temp_binary_data_22[] = +static const unsigned char temp_binary_data_21[] = "\n" "\n" "\n" @@ -5384,10 +5254,10 @@ static const unsigned char temp_binary_data_22[] = " id=\"circle175\"\n" " style=\"stroke:#a45c94;stroke-opacity:1;fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_22; +const char* wizard_AudioPlugin_svg = (const char*) temp_binary_data_21; //================== wizard_ConsoleApp.svg ================== -static const unsigned char temp_binary_data_23[] = +static const unsigned char temp_binary_data_22[] = "\n" "\n" "\n" @@ -5474,10 +5344,10 @@ static const unsigned char temp_binary_data_23[] = " id=\"path19\"\n" " style=\"stroke:#a45c94;stroke-opacity:1;fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_23; +const char* wizard_ConsoleApp_svg = (const char*) temp_binary_data_22; //================== wizard_DLL.svg ================== -static const unsigned char temp_binary_data_24[] = +static const unsigned char temp_binary_data_23[] = "\n" "\n" "\n" @@ -5748,10 +5618,10 @@ static const unsigned char temp_binary_data_24[] = " id=\"path54\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_DLL_svg = (const char*) temp_binary_data_24; +const char* wizard_DLL_svg = (const char*) temp_binary_data_23; //================== wizard_GUI.svg ================== -static const unsigned char temp_binary_data_25[] = +static const unsigned char temp_binary_data_24[] = "\n" "\n" "\n" @@ -5921,10 +5791,10 @@ static const unsigned char temp_binary_data_25[] = " id=\"path47\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_GUI_svg = (const char*) temp_binary_data_25; +const char* wizard_GUI_svg = (const char*) temp_binary_data_24; //================== wizard_Highlight.svg ================== -static const unsigned char temp_binary_data_26[] = +static const unsigned char temp_binary_data_25[] = "\n" "\n" "\n" @@ -5974,10 +5844,10 @@ static const unsigned char temp_binary_data_26[] = " id=\"path3\"\n" " style=\"fill:#a45c94;fill-opacity:1\" />"; -const char* wizard_Highlight_svg = (const char*) temp_binary_data_26; +const char* wizard_Highlight_svg = (const char*) temp_binary_data_25; //================== wizard_Openfile.svg ================== -static const unsigned char temp_binary_data_27[] = +static const unsigned char temp_binary_data_26[] = "\n" "\n" "\n" @@ -6029,10 +5899,10 @@ static const unsigned char temp_binary_data_27[] = " id=\"path3\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_Openfile_svg = (const char*) temp_binary_data_27; +const char* wizard_Openfile_svg = (const char*) temp_binary_data_26; //================== wizard_OpenGL.svg ================== -static const unsigned char temp_binary_data_28[] = +static const unsigned char temp_binary_data_27[] = "\n" "\n" "\n" @@ -6160,10 +6030,10 @@ static const unsigned char temp_binary_data_28[] = " id=\"path23\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_OpenGL_svg = (const char*) temp_binary_data_28; +const char* wizard_OpenGL_svg = (const char*) temp_binary_data_27; //================== wizard_StaticLibrary.svg ================== -static const unsigned char temp_binary_data_29[] = +static const unsigned char temp_binary_data_28[] = "\n" "\n" "\n" @@ -6434,10 +6304,10 @@ static const unsigned char temp_binary_data_29[] = " id=\"path54\"\n" " style=\"stroke:#a45c94;stroke-opacity:1\" />"; -const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_29; +const char* wizard_StaticLibrary_svg = (const char*) temp_binary_data_28; //================== jucer_AnimatedComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_30[] = +static const unsigned char temp_binary_data_29[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6495,10 +6365,10 @@ static const unsigned char temp_binary_data_30[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AnimatedComponentSimpleTemplate_h = (const char*) temp_binary_data_30; +const char* jucer_AnimatedComponentSimpleTemplate_h = (const char*) temp_binary_data_29; //================== jucer_AnimatedComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_31[] = +static const unsigned char temp_binary_data_30[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -6537,10 +6407,10 @@ static const unsigned char temp_binary_data_31[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_AnimatedComponentTemplate_cpp = (const char*) temp_binary_data_31; +const char* jucer_AnimatedComponentTemplate_cpp = (const char*) temp_binary_data_30; //================== jucer_AnimatedComponentTemplate.h ================== -static const unsigned char temp_binary_data_32[] = +static const unsigned char temp_binary_data_31[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6572,10 +6442,10 @@ static const unsigned char temp_binary_data_32[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AnimatedComponentTemplate_h = (const char*) temp_binary_data_32; +const char* jucer_AnimatedComponentTemplate_h = (const char*) temp_binary_data_31; //================== jucer_AudioComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_33[] = +static const unsigned char temp_binary_data_32[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6671,10 +6541,10 @@ static const unsigned char temp_binary_data_33[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AudioComponentSimpleTemplate_h = (const char*) temp_binary_data_33; +const char* jucer_AudioComponentSimpleTemplate_h = (const char*) temp_binary_data_32; //================== jucer_AudioComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_34[] = +static const unsigned char temp_binary_data_33[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -6751,10 +6621,10 @@ static const unsigned char temp_binary_data_34[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_AudioComponentTemplate_cpp = (const char*) temp_binary_data_34; +const char* jucer_AudioComponentTemplate_cpp = (const char*) temp_binary_data_33; //================== jucer_AudioComponentTemplate.h ================== -static const unsigned char temp_binary_data_35[] = +static const unsigned char temp_binary_data_34[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -6788,10 +6658,10 @@ static const unsigned char temp_binary_data_35[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_35; +const char* jucer_AudioComponentTemplate_h = (const char*) temp_binary_data_34; //================== jucer_AudioPluginARADocumentControllerTemplate.cpp ================== -static const unsigned char temp_binary_data_36[] = +static const unsigned char temp_binary_data_35[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6835,10 +6705,10 @@ static const unsigned char temp_binary_data_36[] = " return juce::ARADocumentControllerSpecialisation::createARAFactory<%%aradocumentcontroller_class_name%%>();\r\n" "}\r\n"; -const char* jucer_AudioPluginARADocumentControllerTemplate_cpp = (const char*) temp_binary_data_36; +const char* jucer_AudioPluginARADocumentControllerTemplate_cpp = (const char*) temp_binary_data_35; //================== jucer_AudioPluginARADocumentControllerTemplate.h ================== -static const unsigned char temp_binary_data_37[] = +static const unsigned char temp_binary_data_36[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6876,10 +6746,10 @@ static const unsigned char temp_binary_data_37[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%aradocumentcontroller_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginARADocumentControllerTemplate_h = (const char*) temp_binary_data_37; +const char* jucer_AudioPluginARADocumentControllerTemplate_h = (const char*) temp_binary_data_36; //================== jucer_AudioPluginARAEditorTemplate.cpp ================== -static const unsigned char temp_binary_data_38[] = +static const unsigned char temp_binary_data_37[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6929,10 +6799,10 @@ static const unsigned char temp_binary_data_38[] = " // subcomponents in your editor..\r\n" "}\r\n"; -const char* jucer_AudioPluginARAEditorTemplate_cpp = (const char*) temp_binary_data_38; +const char* jucer_AudioPluginARAEditorTemplate_cpp = (const char*) temp_binary_data_37; //================== jucer_AudioPluginARAEditorTemplate.h ================== -static const unsigned char temp_binary_data_39[] = +static const unsigned char temp_binary_data_38[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -6969,10 +6839,10 @@ static const unsigned char temp_binary_data_39[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginARAEditorTemplate_h = (const char*) temp_binary_data_39; +const char* jucer_AudioPluginARAEditorTemplate_h = (const char*) temp_binary_data_38; //================== jucer_AudioPluginARAFilterTemplate.h ================== -static const unsigned char temp_binary_data_40[] = +static const unsigned char temp_binary_data_39[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7036,10 +6906,10 @@ static const unsigned char temp_binary_data_40[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginARAFilterTemplate_h = (const char*) temp_binary_data_40; +const char* jucer_AudioPluginARAFilterTemplate_h = (const char*) temp_binary_data_39; //================== jucer_AudioPluginARAPlaybackRendererTemplate.cpp ================== -static const unsigned char temp_binary_data_41[] = +static const unsigned char temp_binary_data_40[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7155,10 +7025,10 @@ static const unsigned char temp_binary_data_41[] = " return success;\r\n" "}\r\n"; -const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp = (const char*) temp_binary_data_41; +const char* jucer_AudioPluginARAPlaybackRendererTemplate_cpp = (const char*) temp_binary_data_40; //================== jucer_AudioPluginARAPlaybackRendererTemplate.h ================== -static const unsigned char temp_binary_data_42[] = +static const unsigned char temp_binary_data_41[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7205,10 +7075,10 @@ static const unsigned char temp_binary_data_42[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%araplaybackrenderer_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginARAPlaybackRendererTemplate_h = (const char*) temp_binary_data_42; +const char* jucer_AudioPluginARAPlaybackRendererTemplate_h = (const char*) temp_binary_data_41; //================== jucer_AudioPluginEditorTemplate.cpp ================== -static const unsigned char temp_binary_data_43[] = +static const unsigned char temp_binary_data_42[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7249,10 +7119,10 @@ static const unsigned char temp_binary_data_43[] = " // subcomponents in your editor..\r\n" "}\r\n"; -const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_43; +const char* jucer_AudioPluginEditorTemplate_cpp = (const char*) temp_binary_data_42; //================== jucer_AudioPluginEditorTemplate.h ================== -static const unsigned char temp_binary_data_44[] = +static const unsigned char temp_binary_data_43[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7286,10 +7156,10 @@ static const unsigned char temp_binary_data_44[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%editor_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_44; +const char* jucer_AudioPluginEditorTemplate_h = (const char*) temp_binary_data_43; //================== jucer_AudioPluginFilterTemplate.cpp ================== -static const unsigned char temp_binary_data_45[] = +static const unsigned char temp_binary_data_44[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7481,10 +7351,10 @@ static const unsigned char temp_binary_data_45[] = " return new %%filter_class_name%%();\r\n" "}\r\n"; -const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_45; +const char* jucer_AudioPluginFilterTemplate_cpp = (const char*) temp_binary_data_44; //================== jucer_AudioPluginFilterTemplate.h ================== -static const unsigned char temp_binary_data_46[] = +static const unsigned char temp_binary_data_45[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7545,10 +7415,10 @@ static const unsigned char temp_binary_data_46[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%filter_class_name%%)\r\n" "};\r\n"; -const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_46; +const char* jucer_AudioPluginFilterTemplate_h = (const char*) temp_binary_data_45; //================== jucer_ComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_47[] = +static const unsigned char temp_binary_data_46[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7624,10 +7494,10 @@ static const unsigned char temp_binary_data_47[] = "//[EndFile] You can add extra defines here...\r\n" "//[/EndFile]\r\n"; -const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_47; +const char* jucer_ComponentTemplate_cpp = (const char*) temp_binary_data_46; //================== jucer_ComponentTemplate.h ================== -static const unsigned char temp_binary_data_48[] = +static const unsigned char temp_binary_data_47[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7690,10 +7560,10 @@ static const unsigned char temp_binary_data_48[] = "//[EndFile] You can add extra defines here...\r\n" "//[/EndFile]\r\n"; -const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_48; +const char* jucer_ComponentTemplate_h = (const char*) temp_binary_data_47; //================== jucer_ContentCompSimpleTemplate.h ================== -static const unsigned char temp_binary_data_49[] = +static const unsigned char temp_binary_data_48[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7743,10 +7613,10 @@ static const unsigned char temp_binary_data_49[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_49; +const char* jucer_ContentCompSimpleTemplate_h = (const char*) temp_binary_data_48; //================== jucer_ContentCompTemplate.cpp ================== -static const unsigned char temp_binary_data_50[] = +static const unsigned char temp_binary_data_49[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -7777,10 +7647,10 @@ static const unsigned char temp_binary_data_50[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_50; +const char* jucer_ContentCompTemplate_cpp = (const char*) temp_binary_data_49; //================== jucer_ContentCompTemplate.h ================== -static const unsigned char temp_binary_data_51[] = +static const unsigned char temp_binary_data_50[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -7809,10 +7679,10 @@ static const unsigned char temp_binary_data_51[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_51; +const char* jucer_ContentCompTemplate_h = (const char*) temp_binary_data_50; //================== jucer_InlineComponentTemplate.h ================== -static const unsigned char temp_binary_data_52[] = +static const unsigned char temp_binary_data_51[] = "//==============================================================================\r\n" "class %%component_class%% : public juce::Component\r\n" "{\r\n" @@ -7854,10 +7724,10 @@ static const unsigned char temp_binary_data_52[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_52; +const char* jucer_InlineComponentTemplate_h = (const char*) temp_binary_data_51; //================== jucer_MainConsoleAppTemplate.cpp ================== -static const unsigned char temp_binary_data_53[] = +static const unsigned char temp_binary_data_52[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7878,10 +7748,10 @@ static const unsigned char temp_binary_data_53[] = " return 0;\r\n" "}\r\n"; -const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_53; +const char* jucer_MainConsoleAppTemplate_cpp = (const char*) temp_binary_data_52; //================== jucer_MainTemplate_NoWindow.cpp ================== -static const unsigned char temp_binary_data_54[] = +static const unsigned char temp_binary_data_53[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -7934,10 +7804,10 @@ static const unsigned char temp_binary_data_54[] = "// This macro generates the main() routine that launches the app.\r\n" "START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; -const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_54; +const char* jucer_MainTemplate_NoWindow_cpp = (const char*) temp_binary_data_53; //================== jucer_MainTemplate_Window.cpp ================== -static const unsigned char temp_binary_data_55[] = +static const unsigned char temp_binary_data_54[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8043,10 +7913,10 @@ static const unsigned char temp_binary_data_55[] = "// This macro generates the main() routine that launches the app.\r\n" "START_JUCE_APPLICATION (%%app_class_name%%)\r\n"; -const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_55; +const char* jucer_MainTemplate_Window_cpp = (const char*) temp_binary_data_54; //================== jucer_NewComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_56[] = +static const unsigned char temp_binary_data_55[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8099,10 +7969,10 @@ static const unsigned char temp_binary_data_56[] = "\r\n" "}\r\n"; -const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_56; +const char* jucer_NewComponentTemplate_cpp = (const char*) temp_binary_data_55; //================== jucer_NewComponentTemplate.h ================== -static const unsigned char temp_binary_data_57[] = +static const unsigned char temp_binary_data_56[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8133,10 +8003,10 @@ static const unsigned char temp_binary_data_57[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_57; +const char* jucer_NewComponentTemplate_h = (const char*) temp_binary_data_56; //================== jucer_NewCppFileTemplate.cpp ================== -static const unsigned char temp_binary_data_58[] = +static const unsigned char temp_binary_data_57[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8149,10 +8019,10 @@ static const unsigned char temp_binary_data_58[] = "\r\n" "%%include_corresponding_header%%\r\n"; -const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_58; +const char* jucer_NewCppFileTemplate_cpp = (const char*) temp_binary_data_57; //================== jucer_NewCppFileTemplate.h ================== -static const unsigned char temp_binary_data_59[] = +static const unsigned char temp_binary_data_58[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8165,10 +8035,10 @@ static const unsigned char temp_binary_data_59[] = "\r\n" "#pragma once\r\n"; -const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_59; +const char* jucer_NewCppFileTemplate_h = (const char*) temp_binary_data_58; //================== jucer_NewInlineComponentTemplate.h ================== -static const unsigned char temp_binary_data_60[] = +static const unsigned char temp_binary_data_59[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8231,10 +8101,10 @@ static const unsigned char temp_binary_data_60[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%component_class%%)\r\n" "};\r\n"; -const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_60; +const char* jucer_NewInlineComponentTemplate_h = (const char*) temp_binary_data_59; //================== jucer_OpenGLComponentSimpleTemplate.h ================== -static const unsigned char temp_binary_data_61[] = +static const unsigned char temp_binary_data_60[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -8303,10 +8173,10 @@ static const unsigned char temp_binary_data_61[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_61; +const char* jucer_OpenGLComponentSimpleTemplate_h = (const char*) temp_binary_data_60; //================== jucer_OpenGLComponentTemplate.cpp ================== -static const unsigned char temp_binary_data_62[] = +static const unsigned char temp_binary_data_61[] = "%%include_corresponding_header%%\r\n" "\r\n" "//==============================================================================\r\n" @@ -8356,10 +8226,10 @@ static const unsigned char temp_binary_data_62[] = " // update their positions.\r\n" "}\r\n"; -const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_62; +const char* jucer_OpenGLComponentTemplate_cpp = (const char*) temp_binary_data_61; //================== jucer_OpenGLComponentTemplate.h ================== -static const unsigned char temp_binary_data_63[] = +static const unsigned char temp_binary_data_62[] = "#pragma once\r\n" "\r\n" "%%include_juce%%\r\n" @@ -8393,10 +8263,10 @@ static const unsigned char temp_binary_data_63[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%content_component_class%%)\r\n" "};\r\n"; -const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_63; +const char* jucer_OpenGLComponentTemplate_h = (const char*) temp_binary_data_62; //================== jucer_PIPAudioProcessorTemplate.h ================== -static const unsigned char temp_binary_data_64[] = +static const unsigned char temp_binary_data_63[] = "class %%class_name%% : public juce::AudioProcessor\r\n" "{\r\n" "public:\r\n" @@ -8505,10 +8375,10 @@ static const unsigned char temp_binary_data_64[] = " JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (%%class_name%%)\r\n" "};\r\n"; -const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_64; +const char* jucer_PIPAudioProcessorTemplate_h = (const char*) temp_binary_data_63; //================== jucer_PIPTemplate.h ================== -static const unsigned char temp_binary_data_65[] = +static const unsigned char temp_binary_data_64[] = "/*******************************************************************************\r\n" " The block below describes the properties of this PIP. A PIP is a short snippet\r\n" " of code that can be read by the Projucer and used to generate a JUCE project.\r\n" @@ -8527,10 +8397,10 @@ static const unsigned char temp_binary_data_65[] = "//==============================================================================\r\n" "%%pip_code%%\r\n"; -const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_65; +const char* jucer_PIPTemplate_h = (const char*) temp_binary_data_64; //================== colourscheme_dark.xml ================== -static const unsigned char temp_binary_data_66[] = +static const unsigned char temp_binary_data_65[] = "\r\n" "\r\n" "\r\n" @@ -8555,10 +8425,10 @@ static const unsigned char temp_binary_data_66[] = " \r\n" "\r\n"; -const char* colourscheme_dark_xml = (const char*) temp_binary_data_66; +const char* colourscheme_dark_xml = (const char*) temp_binary_data_65; //================== colourscheme_light.xml ================== -static const unsigned char temp_binary_data_67[] = +static const unsigned char temp_binary_data_66[] = "\r\n" "\r\n" "\r\n" @@ -8583,10 +8453,10 @@ static const unsigned char temp_binary_data_67[] = " \r\n" "\r\n"; -const char* colourscheme_light_xml = (const char*) temp_binary_data_67; +const char* colourscheme_light_xml = (const char*) temp_binary_data_66; //================== juce_runtime_arch_detection.cpp ================== -static const unsigned char temp_binary_data_68[] = +static const unsigned char temp_binary_data_67[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8681,10 +8551,10 @@ static const unsigned char temp_binary_data_68[] = "\r\n" "#endif\r\n"; -const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_68; +const char* juce_runtime_arch_detection_cpp = (const char*) temp_binary_data_67; //================== juce_LinuxSubprocessHelper.cpp ================== -static const unsigned char temp_binary_data_69[] = +static const unsigned char temp_binary_data_68[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -8731,10 +8601,10 @@ static const unsigned char temp_binary_data_69[] = " return 1;\r\n" "}\r\n"; -const char* juce_LinuxSubprocessHelper_cpp = (const char*) temp_binary_data_69; +const char* juce_LinuxSubprocessHelper_cpp = (const char*) temp_binary_data_68; //================== juce_SimpleBinaryBuilder.cpp ================== -static const unsigned char temp_binary_data_70[] = +static const unsigned char temp_binary_data_69[] = "/*\r\n" " ==============================================================================\r\n" "\r\n" @@ -9126,7 +8996,7 @@ static const unsigned char temp_binary_data_70[] = " return 0;\r\n" "}\r\n"; -const char* juce_SimpleBinaryBuilder_cpp = (const char*) temp_binary_data_70; +const char* juce_SimpleBinaryBuilder_cpp = (const char*) temp_binary_data_69; const char* getNamedResource (const char* resourceNameUTF8, int& numBytes); @@ -9158,7 +9028,6 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) case 0x96d2a1ce: numBytes = 28184; return export_linux_svg; case 0x2505bd06: numBytes = 1706; return export_visualStudio_svg; case 0x3198e2bf: numBytes = 12295; return export_xcode_svg; - case 0x4ef40370: numBytes = 26610; return agplv3_logo_svg; case 0x154a7275: numBytes = 105697; return juce_icon_png; case 0x1f3b6d2f: numBytes = 5978; return wizard_AnimatedApp_svg; case 0x60296d04: numBytes = 17791; return wizard_AudioApp_svg; @@ -9238,7 +9107,6 @@ const char* namedResourceList[] = "export_linux_svg", "export_visualStudio_svg", "export_xcode_svg", - "agplv3_logo_svg", "juce_icon_png", "wizard_AnimatedApp_svg", "wizard_AudioApp_svg", @@ -9313,7 +9181,6 @@ const char* originalFilenames[] = "export_linux.svg", "export_visualStudio.svg", "export_xcode.svg", - "agplv3_logo.svg", "juce_icon.png", "wizard_AnimatedApp.svg", "wizard_AudioApp.svg", diff --git a/extras/Projucer/JuceLibraryCode/BinaryData.h b/extras/Projucer/JuceLibraryCode/BinaryData.h index 006e8f09f9..de1d62dd16 100644 --- a/extras/Projucer/JuceLibraryCode/BinaryData.h +++ b/extras/Projucer/JuceLibraryCode/BinaryData.h @@ -62,9 +62,6 @@ namespace BinaryData extern const char* export_xcode_svg; const int export_xcode_svgSize = 12295; - extern const char* agplv3_logo_svg; - const int agplv3_logo_svgSize = 26610; - extern const char* juce_icon_png; const int juce_icon_pngSize = 105697; @@ -222,7 +219,7 @@ namespace BinaryData const int juce_SimpleBinaryBuilder_cppSize = 12997; // Number of elements in the namedResourceList and originalFileNames arrays. - const int namedResourceListSize = 71; + const int namedResourceListSize = 70; // Points to the start of a list of resource names. extern const char* namedResourceList[]; diff --git a/extras/Projucer/Projucer.jucer b/extras/Projucer/Projucer.jucer index b6969e7a8f..7a2c1f77ac 100644 --- a/extras/Projucer/Projucer.jucer +++ b/extras/Projucer/Projucer.jucer @@ -1,8 +1,7 @@ @@ -116,16 +115,6 @@ - - - - - - @@ -204,7 +193,6 @@ file="Source/BinaryData/Icons/export_visualStudio.svg"/> - @@ -550,8 +538,6 @@ resource="0" file="Source/Project/UI/jucer_ProjectContentComponent.h"/> - diff --git a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseController.h b/extras/Projucer/Source/Application/UserAccount/jucer_LicenseController.h deleted file mode 100644 index a0b6815094..0000000000 --- a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseController.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ - -#pragma once - -#include "jucer_LicenseState.h" -#include "jucer_LicenseQueryThread.h" - -//============================================================================== -class LicenseController final : private Timer -{ -public: - LicenseController() - { - checkLicense(); - } - - //============================================================================== - static LicenseState getAGPLState() - { - return { LicenseState::Type::agplv3, projucerMajorVersion, {}, {} }; - } - - LicenseState getCurrentState() const noexcept - { - return state; - } - - void setState (const LicenseState& newState) - { - if (state != newState) - { - state = newState; - licenseStateToSettings (state, getGlobalProperties()); - - stateListeners.call ([] (LicenseStateListener& l) { l.licenseStateChanged(); }); - } - } - - void resetState() - { - setState ({}); - } - - void signIn (const String& email, const String& password, - std::function completionCallback) - { - licenseQueryThread.doSignIn (email, password, - [this, completionCallback] (LicenseQueryThread::ErrorMessageAndType error, - LicenseState newState) - { - completionCallback (error.first); - setState (newState); - }); - } - - void cancelSignIn() - { - licenseQueryThread.cancelRunningJobs(); - } - - //============================================================================== - struct LicenseStateListener - { - virtual ~LicenseStateListener() = default; - virtual void licenseStateChanged() = 0; - }; - - void addListener (LicenseStateListener* listenerToAdd) - { - stateListeners.add (listenerToAdd); - } - - void removeListener (LicenseStateListener* listenerToRemove) - { - stateListeners.remove (listenerToRemove); - } - -private: - //============================================================================== - static const char* getLicenseStateValue (LicenseState::Type type) - { - switch (type) - { - case LicenseState::Type::agplv3: return "AGPLv3"; - case LicenseState::Type::personal: return "personal"; - case LicenseState::Type::educational: return "edu"; - case LicenseState::Type::indie: return "indie"; - case LicenseState::Type::pro: return "pro"; - case LicenseState::Type::none: - default: break; - } - - return nullptr; - } - - static LicenseState::Type getLicenseTypeFromValue (const String& d) - { - if (d == getLicenseStateValue (LicenseState::Type::agplv3)) return LicenseState::Type::agplv3; - if (d == getLicenseStateValue (LicenseState::Type::personal)) return LicenseState::Type::personal; - if (d == getLicenseStateValue (LicenseState::Type::educational)) return LicenseState::Type::educational; - if (d == getLicenseStateValue (LicenseState::Type::indie)) return LicenseState::Type::indie; - if (d == getLicenseStateValue (LicenseState::Type::pro)) return LicenseState::Type::pro; - return LicenseState::Type::none; - } - - static LicenseState licenseStateFromSettings (PropertiesFile& props) - { - if (auto licenseXml = props.getXmlValue ("license")) - { - // this is here for backwards compatibility with old-style settings files using XML text elements - if (licenseXml->getChildElementAllSubText ("type", {}).isNotEmpty()) - { - auto stateFromOldSettings = [&licenseXml]() -> LicenseState - { - return { getLicenseTypeFromValue (licenseXml->getChildElementAllSubText ("type", {})), - licenseXml->getChildElementAllSubText ("version", "-1").getIntValue(), - licenseXml->getChildElementAllSubText ("username", {}), - licenseXml->getChildElementAllSubText ("authToken", {}) }; - }(); - - licenseStateToSettings (stateFromOldSettings, props); - - return stateFromOldSettings; - } - - return { getLicenseTypeFromValue (licenseXml->getStringAttribute ("type", {})), - licenseXml->getIntAttribute ("version", -1), - licenseXml->getStringAttribute ("username", {}), - licenseXml->getStringAttribute ("authToken", {}) }; - } - - return {}; - } - - static void licenseStateToSettings (const LicenseState& state, PropertiesFile& props) - { - props.removeValue ("license"); - - if (state.isSignedIn()) - { - XmlElement licenseXml ("license"); - - if (auto* typeString = getLicenseStateValue (state.type)) - licenseXml.setAttribute ("type", typeString); - - licenseXml.setAttribute ("version", state.version); - licenseXml.setAttribute ("username", state.username); - licenseXml.setAttribute ("authToken", state.authToken); - - props.setValue ("license", &licenseXml); - } - - props.saveIfNeeded(); - } - - //============================================================================== - void checkLicense() - { - if (state.authToken.isNotEmpty() && ! state.isAGPL()) - { - auto completionCallback = [this] (LicenseQueryThread::ErrorMessageAndType error, - LicenseState updatedState) - { - if (error == LicenseQueryThread::ErrorMessageAndType()) - { - setState (updatedState); - } - else if ((error.second == LicenseQueryThread::ErrorType::busy - || error.second == LicenseQueryThread::ErrorType::cancelled - || error.second == LicenseQueryThread::ErrorType::connectionError) - && ! hasRetriedLicenseCheck) - { - hasRetriedLicenseCheck = true; - startTimer (10000); - } - }; - - licenseQueryThread.checkLicenseValidity (state, std::move (completionCallback)); - } - } - - void timerCallback() override - { - stopTimer(); - checkLicense(); - } - - //============================================================================== - LicenseState state = licenseStateFromSettings (getGlobalProperties()); - - ListenerList stateListeners; - LicenseQueryThread licenseQueryThread; - bool hasRetriedLicenseCheck = false; - - //============================================================================== - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseController) -}; diff --git a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseQueryThread.h b/extras/Projucer/Source/Application/UserAccount/jucer_LicenseQueryThread.h deleted file mode 100644 index 455ff9c20f..0000000000 --- a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseQueryThread.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ - -#pragma once - -//============================================================================== -namespace LicenseHelpers -{ - inline LicenseState::Type licenseTypeForString (const String& licenseString) - { - if (licenseString == "juce-pro") return LicenseState::Type::pro; - if (licenseString == "juce-indie") return LicenseState::Type::indie; - if (licenseString == "juce-edu") return LicenseState::Type::educational; - if (licenseString == "juce-personal") return LicenseState::Type::personal; - - jassertfalse; // unknown type - return LicenseState::Type::none; - } - - using LicenseVersionAndType = std::pair; - - inline LicenseVersionAndType findBestLicense (std::vector&& licenses) - { - if (licenses.size() == 1) - return licenses[0]; - - auto getValueForLicenceType = [] (LicenseState::Type type) - { - switch (type) - { - case LicenseState::Type::pro: return 4; - case LicenseState::Type::indie: return 3; - case LicenseState::Type::educational: return 2; - case LicenseState::Type::personal: return 1; - case LicenseState::Type::agplv3: - case LicenseState::Type::none: - default: return -1; - } - }; - - std::sort (licenses.begin(), licenses.end(), - [getValueForLicenceType] (const LicenseVersionAndType& l1, const LicenseVersionAndType& l2) - { - if (l1.first > l2.first) - return true; - - if (l1.first == l2.first) - return getValueForLicenceType (l1.second) > getValueForLicenceType (l2.second); - - return false; - }); - - auto findFirstLicense = [&licenses] (bool isPaid) - { - auto iter = std::find_if (licenses.begin(), licenses.end(), - [isPaid] (const LicenseVersionAndType& l) - { - auto proOrIndie = (l.second == LicenseState::Type::pro || l.second == LicenseState::Type::indie); - return isPaid ? proOrIndie : ! proOrIndie; - }); - - return iter != licenses.end() ? *iter - : LicenseVersionAndType(); - }; - - auto newestPaid = findFirstLicense (true); - auto newestFree = findFirstLicense (false); - - if (newestPaid.first >= projucerMajorVersion || newestPaid.first >= newestFree.first) - return newestPaid; - - return newestFree; - } -} - -//============================================================================== -class LicenseQueryThread -{ -public: - enum class ErrorType - { - busy, - cancelled, - connectionError, - webResponseError - }; - - using ErrorMessageAndType = std::pair; - using LicenseQueryCallback = std::function; - - //============================================================================== - LicenseQueryThread() = default; - - void checkLicenseValidity (const LicenseState& state, LicenseQueryCallback completionCallback) - { - if (jobPool.getNumJobs() > 0) - { - completionCallback ({ {}, ErrorType::busy }, {}); - return; - } - - jobPool.addJob ([this, state, completionCallback] - { - auto updatedState = state; - - auto result = runTask (std::make_unique (state.authToken), updatedState); - - WeakReference weakThis (this); - MessageManager::callAsync ([weakThis, result, updatedState, completionCallback] - { - if (weakThis != nullptr) - completionCallback (result, updatedState); - }); - }); - } - - void doSignIn (const String& email, const String& password, LicenseQueryCallback completionCallback) - { - cancelRunningJobs(); - - jobPool.addJob ([this, email, password, completionCallback] - { - LicenseState state; - - auto result = runTask (std::make_unique (email, password), state); - - if (result == ErrorMessageAndType()) - result = runTask (std::make_unique (state.authToken), state); - - if (result != ErrorMessageAndType()) - state = {}; - - WeakReference weakThis (this); - MessageManager::callAsync ([weakThis, result, state, completionCallback] - { - if (weakThis != nullptr) - completionCallback (result, state); - }); - }); - } - - void cancelRunningJobs() - { - jobPool.removeAllJobs (true, 500); - } - -private: - //============================================================================== - struct AccountEnquiryBase - { - virtual ~AccountEnquiryBase() = default; - - virtual bool isPOSTLikeRequest() const = 0; - virtual String getEndpointURLSuffix() const = 0; - virtual StringPairArray getParameterNamesAndValues() const = 0; - virtual String getExtraHeaders() const = 0; - virtual int getSuccessCode() const = 0; - virtual String errorCodeToString (int) const = 0; - virtual bool parseServerResponse (const String&, LicenseState&) = 0; - }; - - struct UserLogin final : public AccountEnquiryBase - { - UserLogin (const String& e, const String& p) - : userEmail (e), userPassword (p) - { - } - - bool isPOSTLikeRequest() const override { return true; } - String getEndpointURLSuffix() const override { return "/authenticate/projucer"; } - int getSuccessCode() const override { return 200; } - - StringPairArray getParameterNamesAndValues() const override - { - StringPairArray namesAndValues; - namesAndValues.set ("email", userEmail); - namesAndValues.set ("password", userPassword); - - return namesAndValues; - } - - String getExtraHeaders() const override - { - return "Content-Type: application/json"; - } - - String errorCodeToString (int errorCode) const override - { - switch (errorCode) - { - case 400: return "Please enter your email and password to sign in."; - case 401: return "Your email and password are incorrect."; - case 451: return "Access denied."; - default: return "Something went wrong, please try again."; - } - } - - bool parseServerResponse (const String& serverResponse, LicenseState& licenseState) override - { - auto json = JSON::parse (serverResponse); - - licenseState.authToken = json.getProperty ("token", {}).toString(); - licenseState.username = json.getProperty ("user", {}).getProperty ("username", {}).toString(); - - return (licenseState.authToken.isNotEmpty() && licenseState.username.isNotEmpty()); - } - - String userEmail, userPassword; - }; - - struct UserLicenseQuery final : public AccountEnquiryBase - { - UserLicenseQuery (const String& authToken) - : userAuthToken (authToken) - { - } - - bool isPOSTLikeRequest() const override { return false; } - String getEndpointURLSuffix() const override { return "/user/licences/projucer"; } - int getSuccessCode() const override { return 200; } - - StringPairArray getParameterNamesAndValues() const override - { - return {}; - } - - String getExtraHeaders() const override - { - return "x-access-token: " + userAuthToken; - } - - String errorCodeToString (int errorCode) const override - { - switch (errorCode) - { - case 401: return "User not found or could not be verified."; - default: return "User licenses info fetch failed (unknown error)."; - } - } - - bool parseServerResponse (const String& serverResponse, LicenseState& licenseState) override - { - auto json = JSON::parse (serverResponse); - - if (auto* licensesJson = json.getArray()) - { - std::vector licenses; - - for (auto& license : *licensesJson) - { - auto version = license.getProperty ("product_version", {}).toString().trim(); - auto type = license.getProperty ("licence_type", {}).toString(); - auto status = license.getProperty ("status", {}).toString(); - - if (status == "active" && type.isNotEmpty() && version.isNotEmpty()) - licenses.push_back ({ version.getIntValue(), LicenseHelpers::licenseTypeForString (type) }); - } - - if (! licenses.empty()) - { - auto bestLicense = LicenseHelpers::findBestLicense (std::move (licenses)); - - licenseState.version = bestLicense.first; - licenseState.type = bestLicense.second; - } - - return true; - } - - return false; - } - - String userAuthToken; - }; - - //============================================================================== - static String postDataStringAsJSON (const StringPairArray& parameters) - { - DynamicObject::Ptr d (new DynamicObject()); - - for (auto& key : parameters.getAllKeys()) - d->setProperty (key, parameters[key]); - - return JSON::toString (var (d.get())); - } - - static ErrorMessageAndType runTask (std::unique_ptr accountEnquiryTask, LicenseState& state) - { - const ErrorMessageAndType cancelledError ("Cancelled.", ErrorType::cancelled); - const String endpointURL ("https://api.juce.com/api/v1"); - - URL url (endpointURL + accountEnquiryTask->getEndpointURLSuffix()); - - auto isPOST = accountEnquiryTask->isPOSTLikeRequest(); - - if (isPOST) - url = url.withPOSTData (postDataStringAsJSON (accountEnquiryTask->getParameterNamesAndValues())); - - if (ThreadPoolJob::getCurrentThreadPoolJob()->shouldExit()) - return cancelledError; - - int statusCode = 0; - auto urlStream = url.createInputStream (URL::InputStreamOptions (isPOST ? URL::ParameterHandling::inPostData - : URL::ParameterHandling::inAddress) - .withExtraHeaders (accountEnquiryTask->getExtraHeaders()) - .withConnectionTimeoutMs (5000) - .withStatusCode (&statusCode)); - - if (urlStream == nullptr) - return { "Failed to connect to the web server.", ErrorType::connectionError }; - - if (statusCode != accountEnquiryTask->getSuccessCode()) - return { accountEnquiryTask->errorCodeToString (statusCode), ErrorType::webResponseError }; - - if (ThreadPoolJob::getCurrentThreadPoolJob()->shouldExit()) - return cancelledError; - - String response; - - for (;;) - { - char buffer [8192] = ""; - auto num = urlStream->read (buffer, sizeof (buffer)); - - if (ThreadPoolJob::getCurrentThreadPoolJob()->shouldExit()) - return cancelledError; - - if (num <= 0) - break; - - response += buffer; - } - - if (ThreadPoolJob::getCurrentThreadPoolJob()->shouldExit()) - return cancelledError; - - if (! accountEnquiryTask->parseServerResponse (response, state)) - return { "Failed to parse server response.", ErrorType::webResponseError }; - - return {}; - } - - //============================================================================== - ThreadPool jobPool { ThreadPoolOptions{}.withNumberOfThreads (1) }; - - //============================================================================== - JUCE_DECLARE_WEAK_REFERENCEABLE (LicenseQueryThread) - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseQueryThread) -}; diff --git a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseState.h b/extras/Projucer/Source/Application/UserAccount/jucer_LicenseState.h deleted file mode 100644 index ebf58a2a34..0000000000 --- a/extras/Projucer/Source/Application/UserAccount/jucer_LicenseState.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ - -#pragma once - - -//============================================================================== -struct LicenseState -{ - enum class Type - { - none, - agplv3, - personal, - educational, - indie, - pro - }; - - LicenseState() = default; - - LicenseState (Type t, int v, String user, String token) - : type (t), version (v), username (user), authToken (token) - { - } - - bool operator== (const LicenseState& other) const noexcept - { - return type == other.type - && version == other.version - && username == other.username - && authToken == other.authToken; - } - - bool operator != (const LicenseState& other) const noexcept - { - return ! operator== (other); - } - - bool isSignedIn() const noexcept { return isAGPL() || (version > 0 && username.isNotEmpty()); } - bool isOldLicense() const noexcept { return isSignedIn() && version < projucerMajorVersion; } - bool isAGPL() const noexcept { return type == Type::agplv3; } - bool isPersonalOrNone() const noexcept { return type == Type::none || type == Type::personal; } - - String getLicenseTypeString() const - { - switch (type) - { - case Type::none: return "No license"; - case Type::agplv3: return "AGPLv3"; - case Type::personal: return "Personal"; - case Type::educational: return "Educational"; - case Type::indie: return "Indie"; - case Type::pro: return "Pro"; - default: break; - }; - - jassertfalse; - return {}; - } - - Type type = Type::none; - int version = -1; - String username, authToken; -}; diff --git a/extras/Projucer/Source/Application/UserAccount/jucer_LoginFormComponent.h b/extras/Projucer/Source/Application/UserAccount/jucer_LoginFormComponent.h deleted file mode 100644 index 2efec07dbe..0000000000 --- a/extras/Projucer/Source/Application/UserAccount/jucer_LoginFormComponent.h +++ /dev/null @@ -1,297 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ - -#pragma once - - -#include "../../Project/UI/jucer_UserAvatarComponent.h" - -//============================================================================== -class LoginFormComponent final : public Component -{ -public: - LoginFormComponent (MainWindow& window) - : mainWindow (window) - { - setTitle ("Login"); - setFocusContainerType (FocusContainerType::focusContainer); - - addAndMakeVisible (emailBox); - emailBox.setTextToShowWhenEmpty ("Email", Colours::black.withAlpha (0.2f)); - emailBox.setJustification (Justification::centredLeft); - emailBox.onReturnKey = [this] { submitDetails(); }; - emailBox.setTitle ("Email"); - - addAndMakeVisible (passwordBox); - passwordBox.setTextToShowWhenEmpty ("Password", Colours::black.withAlpha (0.2f)); - passwordBox.setPasswordCharacter ((juce_wchar) 0x2022); - passwordBox.setJustification (Justification::centredLeft); - passwordBox.onReturnKey = [this] { submitDetails(); }; - passwordBox.setTitle ("Password"); - - addAndMakeVisible (logInButton); - logInButton.onClick = [this] { submitDetails(); }; - - addAndMakeVisible (enableAGPLButton); - enableAGPLButton.onClick = [this] - { - ProjucerApplication::getApp().getLicenseController().setState (LicenseController::getAGPLState()); - mainWindow.hideLoginFormOverlay(); - }; - - addAndMakeVisible (userAvatar); - - addAndMakeVisible (createAccountLabel); - createAccountLabel.setFont (FontOptions (14.0f, Font::underlined)); - createAccountLabel.addMouseListener (this, false); - createAccountLabel.setMouseCursor (MouseCursor::PointingHandCursor); - - addAndMakeVisible (errorMessageLabel); - errorMessageLabel.setMinimumHorizontalScale (1.0f); - errorMessageLabel.setFont (FontOptions { 12.0f }); - errorMessageLabel.setColour (Label::textColourId, Colours::red); - errorMessageLabel.setVisible (false); - - dismissButton.setShape (getLookAndFeel().getCrossShape (1.0f), false, true, false); - addAndMakeVisible (dismissButton); - dismissButton.onClick = [this] { mainWindow.hideLoginFormOverlay(); }; - dismissButton.setTitle ("Dismiss"); - - setWantsKeyboardFocus (true); - setOpaque (true); - - updateLookAndFeel(); - - setSize (300, 350); - } - - ~LoginFormComponent() override - { - ProjucerApplication::getApp().getLicenseController().cancelSignIn(); - } - - void resized() override - { - auto bounds = getLocalBounds().reduced (20); - auto spacing = bounds.getHeight() / 20; - - userAvatar.setBounds (bounds.removeFromTop (iconHeight).reduced ((bounds.getWidth() / 2) - (iconHeight / 2), 0)); - - errorMessageLabel.setBounds (bounds.removeFromTop (spacing)); - bounds.removeFromTop (spacing / 2); - - auto textEditorHeight = bounds.getHeight() / 5; - - emailBox.setBounds (bounds.removeFromTop (textEditorHeight)); - bounds.removeFromTop (spacing); - - passwordBox.setBounds (bounds.removeFromTop (textEditorHeight)); - bounds.removeFromTop (spacing * 2); - - emailBox.setFont (FontOptions ((float) textEditorHeight / 2.5f)); - passwordBox.setFont (FontOptions ((float) textEditorHeight / 2.5f)); - - logInButton.setBounds (bounds.removeFromTop (textEditorHeight)); - - auto slice = bounds.removeFromTop (textEditorHeight); - createAccountLabel.setBounds (slice.removeFromLeft (createAccountLabel.getFont().getStringWidth (createAccountLabel.getText()) + 5)); - slice.removeFromLeft (15); - enableAGPLButton.setBounds (slice.reduced (0, 5)); - - dismissButton.setBounds (getLocalBounds().reduced (10).removeFromTop (20).removeFromRight (20)); - } - - void paint (Graphics& g) override - { - g.fillAll (findColour (secondaryBackgroundColourId).contrasting (0.1f)); - } - - void mouseUp (const MouseEvent& event) override - { - if (event.eventComponent == &createAccountLabel) - URL ("https://juce.com/verification/register").launchInDefaultBrowser(); - } - - void updateLookAndFeel() - { - enableAGPLButton.setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId)); - } - - void lookAndFeelChanged() override - { - updateLookAndFeel(); - } - -private: - class ProgressButton final : public TextButton, - private Timer - { - public: - ProgressButton (const String& buttonName) - : TextButton (buttonName), text (buttonName) - { - } - - void setBusy (bool shouldBeBusy) - { - isInProgress = shouldBeBusy; - - if (isInProgress) - { - setEnabled (false); - setButtonText ({}); - startTimerHz (30); - } - else - { - setEnabled (true); - setButtonText (text); - stopTimer(); - } - } - - void paint (Graphics& g) override - { - TextButton::paint (g); - - if (isInProgress) - { - auto size = getHeight() - 10; - auto halfSize = size / 2; - - getLookAndFeel().drawSpinningWaitAnimation (g, Colours::white, - (getWidth() / 2) - halfSize, (getHeight() / 2) - halfSize, - size, size); - } - } - - private: - void timerCallback() override - { - repaint(); - } - - String text; - bool isInProgress = false; - }; - - //============================================================================== - void updateLoginButtonStates (bool isLoggingIn) - { - logInButton.setBusy (isLoggingIn); - - emailBox.setEnabled (! isLoggingIn); - passwordBox.setEnabled (! isLoggingIn); - } - - void submitDetails() - { - auto loginFormError = checkLoginFormsAreValid(); - - if (loginFormError.isNotEmpty()) - { - showErrorMessage (loginFormError); - return; - } - - updateLoginButtonStates (true); - - auto completionCallback = [weakThis = SafePointer { this }] (const String& errorMessage) - { - if (weakThis == nullptr) - return; - - weakThis->updateLoginButtonStates (false); - - if (errorMessage.isNotEmpty()) - { - weakThis->showErrorMessage (errorMessage); - } - else - { - weakThis->hideErrorMessage(); - weakThis->mainWindow.hideLoginFormOverlay(); - ProjucerApplication::getApp().getCommandManager().commandStatusChanged(); - } - }; - - ProjucerApplication::getApp().getLicenseController().signIn (emailBox.getText(), passwordBox.getText(), - std::move (completionCallback)); - } - - String checkLoginFormsAreValid() const - { - auto email = emailBox.getText(); - - if (email.isEmpty() || email.indexOfChar ('@') < 0) - return "Please enter a valid email."; - - auto password = passwordBox.getText(); - - if (password.isEmpty() || password.length() < 8) - return "Please enter a valid password."; - - return {}; - } - - void showErrorMessage (const String& errorMessage) - { - errorMessageLabel.setText (errorMessage, dontSendNotification); - errorMessageLabel.setVisible (true); - } - - void hideErrorMessage() - { - errorMessageLabel.setText ({}, dontSendNotification); - errorMessageLabel.setVisible (false); - } - - //============================================================================== - static constexpr int iconHeight = 50; - - MainWindow& mainWindow; - - TextEditor emailBox, passwordBox; - ProgressButton logInButton { "Sign In" }; - TextButton enableAGPLButton { "Enable AGPLv3 Mode" }; - ShapeButton dismissButton { {}, - findColour (treeIconColourId), - findColour (treeIconColourId).overlaidWith (findColour (defaultHighlightedTextColourId).withAlpha (0.2f)), - findColour (treeIconColourId).overlaidWith (findColour (defaultHighlightedTextColourId).withAlpha (0.4f)) }; - UserAvatarComponent userAvatar { false }; - Label createAccountLabel { {}, "Create an account" }, - errorMessageLabel { {}, {} }; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LoginFormComponent) -}; diff --git a/extras/Projucer/Source/Application/jucer_Application.cpp b/extras/Projucer/Source/Application/jucer_Application.cpp index 5430295d77..13c619cc84 100644 --- a/extras/Projucer/Source/Application/jucer_Application.cpp +++ b/extras/Projucer/Source/Application/jucer_Application.cpp @@ -161,7 +161,6 @@ void ProjucerApplication::handleAsyncUpdate() void ProjucerApplication::doBasicApplicationSetup() { - licenseController = std::make_unique(); LookAndFeel::setDefaultLookAndFeel (&lookAndFeel); initCommandManager(); icons = std::make_unique(); @@ -373,8 +372,6 @@ PopupMenu ProjucerApplication::createFileMenu() menu.addSeparator(); menu.addCommandItem (commandManager.get(), CommandIDs::openInIDE); menu.addCommandItem (commandManager.get(), CommandIDs::saveAndOpenInIDE); - menu.addSeparator(); - menu.addCommandItem (commandManager.get(), CommandIDs::loginLogout); #if ! JUCE_MAC menu.addCommandItem (commandManager.get(), CommandIDs::showAboutWindow); @@ -924,8 +921,7 @@ void ProjucerApplication::getAllCommands (Array & commands) CommandIDs::showForum, CommandIDs::showAPIModules, CommandIDs::showAPIClasses, - CommandIDs::showTutorials, - CommandIDs::loginLogout }; + CommandIDs::showTutorials }; commands.addArray (ids, numElementsInArray (ids)); } @@ -1031,19 +1027,6 @@ void ProjucerApplication::getCommandInfo (CommandID commandID, ApplicationComman result.setInfo ("JUCE Tutorials", "Shows the JUCE tutorials in a browser", CommandCategories::general, 0); break; - case CommandIDs::loginLogout: - { - auto licenseState = licenseController->getCurrentState(); - - if (licenseState.isAGPL()) - result.setInfo ("Disable AGPLv3 mode", "Disables AGPLv3 mode", CommandCategories::general, 0); - else - result.setInfo (licenseState.isSignedIn() ? String ("Sign out ") + licenseState.username + "..." : String ("Sign in..."), - "Sign out of your JUCE account", - CommandCategories::general, 0); - break; - } - default: JUCEApplication::getCommandInfo (commandID, result); break; @@ -1074,7 +1057,6 @@ bool ProjucerApplication::perform (const InvocationInfo& info) case CommandIDs::showAPIModules: launchModulesBrowser(); break; case CommandIDs::showAPIClasses: launchClassesBrowser(); break; case CommandIDs::showTutorials: launchTutorialsBrowser(); break; - case CommandIDs::loginLogout: doLoginOrLogout(); break; default: return JUCEApplication::perform (info); } @@ -1307,26 +1289,6 @@ void ProjucerApplication::launchTutorialsBrowser() tutorialsLink.launchInDefaultBrowser(); } -void ProjucerApplication::doLoginOrLogout() -{ - if (licenseController->getCurrentState().isSignedIn()) - { - licenseController->resetState(); - } - else - { - if (auto* window = mainWindowList.getMainWindowWithLoginFormOpen()) - { - window->toFront (true); - } - else - { - mainWindowList.createWindowIfNoneAreOpen(); - mainWindowList.getFrontmostWindow()->showLoginFormOverlay(); - } - } -} - //============================================================================== struct FileWithTime { diff --git a/extras/Projucer/Source/Application/jucer_Application.h b/extras/Projucer/Source/Application/jucer_Application.h index 2a4c8695ea..9373e38a3f 100644 --- a/extras/Projucer/Source/Application/jucer_Application.h +++ b/extras/Projucer/Source/Application/jucer_Application.h @@ -34,7 +34,6 @@ #pragma once -#include "UserAccount/jucer_LicenseController.h" #include "jucer_MainWindow.h" #include "../Project/Modules/jucer_Modules.h" #include "jucer_AutoUpdater.h" @@ -87,8 +86,6 @@ public: AvailableModulesList& getJUCEPathModulesList() { return jucePathModulesList; } AvailableModulesList& getUserPathsModulesList() { return userPathsModulesList; } - LicenseController& getLicenseController() { return *licenseController; } - bool isAutomaticVersionCheckingEnabled() const; void setAutomaticVersionCheckingEnabled (bool shouldBeEnabled); @@ -169,9 +166,6 @@ private: void launchClassesBrowser(); void launchTutorialsBrowser(); - void doLoginOrLogout(); - void showLoginForm(); - void enableOrDisableGUIEditor(); //============================================================================== @@ -208,8 +202,6 @@ private: #endif //============================================================================== - std::unique_ptr licenseController; - std::unique_ptr tooltipWindow; AvailableModulesList jucePathModulesList, userPathsModulesList; diff --git a/extras/Projucer/Source/Application/jucer_CommandIDs.h b/extras/Projucer/Source/Application/jucer_CommandIDs.h index 8d1b8a8dee..af02a1e609 100644 --- a/extras/Projucer/Source/Application/jucer_CommandIDs.h +++ b/extras/Projucer/Source/Application/jucer_CommandIDs.h @@ -95,8 +95,6 @@ namespace CommandIDs zoomNormal = 0x300073, spaceBarDrag = 0x300074, - loginLogout = 0x300090, - showForum = 0x300100, showAPIModules = 0x300101, showAPIClasses = 0x300102, diff --git a/extras/Projucer/Source/Application/jucer_MainWindow.cpp b/extras/Projucer/Source/Application/jucer_MainWindow.cpp index 7c3d3f7f6c..261a821d03 100644 --- a/extras/Projucer/Source/Application/jucer_MainWindow.cpp +++ b/extras/Projucer/Source/Application/jucer_MainWindow.cpp @@ -38,7 +38,6 @@ #include "StartPage/jucer_StartPageComponent.h" #include "../Utility/UI/jucer_JucerTreeViewBase.h" #include "../ProjectSaving/jucer_ProjectSaver.h" -#include "UserAccount/jucer_LoginFormComponent.h" #include "../Project/UI/jucer_ProjectContentComponent.h" //============================================================================== @@ -78,11 +77,6 @@ public: g.drawImage (componentImage, getLocalBounds().toFloat()); } - void inputAttemptWhenModal() override - { - mainWindow.hideLoginFormOverlay(); - } - private: void componentPeerChanged() override {} @@ -96,12 +90,6 @@ private: void handleAsyncUpdate() override { resized(); } - void mouseUp (const MouseEvent& event) override - { - if (event.eventComponent == this) - mainWindow.hideLoginFormOverlay(); - } - void lookAndFeelChanged() override { refreshBackgroundImage(); @@ -624,18 +612,6 @@ void MainWindow::showStartPage() getContentComponent()->grabKeyboardFocus(); } -void MainWindow::showLoginFormOverlay() -{ - blurOverlayComponent = std::make_unique (*this, std::make_unique (*this)); - loginFormOpen = true; -} - -void MainWindow::hideLoginFormOverlay() -{ - blurOverlayComponent.reset(); - loginFormOpen = false; -} - //============================================================================== ApplicationCommandTarget* MainWindow::getNextCommandTarget() { @@ -954,15 +930,6 @@ MainWindow* MainWindowList::getMainWindowForFile (const File& file) return nullptr; } -MainWindow* MainWindowList::getMainWindowWithLoginFormOpen() -{ - for (auto* window : windows) - if (window->isShowingLoginForm()) - return window; - - return nullptr; -} - void MainWindowList::checkWindowBounds (MainWindow& windowToCheck) { auto avoidSuperimposedWindows = [&] diff --git a/extras/Projucer/Source/Application/jucer_MainWindow.h b/extras/Projucer/Source/Application/jucer_MainWindow.h index 9f9ba99a0a..5ca00be26f 100644 --- a/extras/Projucer/Source/Application/jucer_MainWindow.h +++ b/extras/Projucer/Source/Application/jucer_MainWindow.h @@ -76,10 +76,6 @@ public: void showStartPage(); - void showLoginFormOverlay(); - void hideLoginFormOverlay(); - bool isShowingLoginForm() const noexcept { return loginFormOpen; } - bool isInterestedInFileDrag (const StringArray& files) override; void filesDropped (const StringArray& filenames, int mouseX, int mouseY) override; @@ -111,7 +107,6 @@ private: Value projectNameValue; std::unique_ptr blurOverlayComponent; - bool loginFormOpen = false; ScopedMessageBox messageBox; @@ -138,7 +133,6 @@ public: MainWindow* getFrontmostWindow (bool createIfNotFound = true); MainWindow* getOrCreateEmptyWindow(); MainWindow* getMainWindowForFile (const File&); - MainWindow* getMainWindowWithLoginFormOpen(); Project* getFrontmostProject(); diff --git a/extras/Projucer/Source/BinaryData/Icons/agplv3_logo.svg b/extras/Projucer/Source/BinaryData/Icons/agplv3_logo.svg deleted file mode 100644 index 75e5c4c6c2..0000000000 --- a/extras/Projucer/Source/BinaryData/Icons/agplv3_logo.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/extras/Projucer/Source/Licenses/jucer_LicenseController.cpp b/extras/Projucer/Source/Licenses/jucer_LicenseController.cpp deleted file mode 100644 index ed94cc123c..0000000000 --- a/extras/Projucer/Source/Licenses/jucer_LicenseController.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ -#include "../Application/jucer_Headers.h" -#include "../Application/jucer_Application.h" -#include "../ProjectSaving/jucer_ProjectExporter.h" -#include "../Project/UI/jucer_HeaderComponent.h" -#include "jucer_LicenseController.h" -#include "jucer_LicenseWebview.h" -#include "jucer_LicenseThread.h" - -//============================================================================== -const char* LicenseState::licenseTypeToString (LicenseState::Type type) -{ - switch (type) - { - case Type::notLoggedIn: return ""; - case Type::noLicenseChosenYet: return ""; - case Type::agplv3: return "AGPLv3"; - case Type::personal: return "JUCE Personal"; - case Type::edu: return "JUCE Education"; - case Type::indie: return "JUCE Indie"; - case Type::pro: return "JUCE Pro"; - default: return ""; - } -} - -static const char* getLicenseStateValue (LicenseState::Type type) -{ - switch (type) - { - case LicenseState::Type::agplv3: return "agplv3"; - case LicenseState::Type::personal: return "personal"; - case LicenseState::Type::edu: return "edu"; - case LicenseState::Type::indie: return "indie"; - case LicenseState::Type::pro: return "pro"; - case LicenseState::Type::notLoggedIn: - case LicenseState::Type::noLicenseChosenYet: - default: return nullptr; - } -} - -static LicenseState::Type getLicenseTypeFromValue (const String& d) -{ - if (d == getLicenseStateValue (LicenseState::Type::agplv3)) return LicenseState::Type::agplv3; - if (d == getLicenseStateValue (LicenseState::Type::personal)) return LicenseState::Type::personal; - if (d == getLicenseStateValue (LicenseState::Type::edu)) return LicenseState::Type::edu; - if (d == getLicenseStateValue (LicenseState::Type::indie)) return LicenseState::Type::indie; - if (d == getLicenseStateValue (LicenseState::Type::pro)) return LicenseState::Type::pro; - return LicenseState::Type::noLicenseChosenYet; -} - -struct LicenseController::ModalCompletionCallback final : ModalComponentManager::Callback -{ - ModalCompletionCallback (LicenseController& controller) : owner (controller) {} - void modalStateFinished (int returnValue) override { owner.modalStateFinished (returnValue); } - LicenseController& owner; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModalCompletionCallback) -}; - -//============================================================================== -LicenseController::LicenseController() - : state (licenseStateFromSettings (ProjucerApplication::getApp().settings->getGlobalProperties())) -{ -} - -LicenseController::~LicenseController() -{ - thread.reset(); - closeWebview (-1); -} - -LicenseState LicenseController::getState() const noexcept -{ - LicenseState projucerState = state; - - // if the user has never logged in before and the user is running from command line - // then we have no way to ask the user to log in, so fallback to AGPLv3 mode - if (guiNotInitialisedYet - && (state.type == LicenseState::Type::notLoggedIn - || state.type == LicenseState::Type::noLicenseChosenYet)) - { - projucerState.type = LicenseState::Type::agplv3; - projucerState.username = "AGPLv3 mode"; - } - - return projucerState; -} - -void LicenseController::startWebviewIfNeeded() -{ - if (guiNotInitialisedYet) - { - guiNotInitialisedYet = false; - auto stateParam = getState(); - listeners.call ([&] (StateChangedCallback& l) { l.licenseStateChanged (stateParam); }); - } - - if (thread == nullptr) - thread.reset (new LicenseThread (*this, false)); -} - -void LicenseController::logout() -{ - JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED - - thread.reset(); - updateState ({}); - - #if ! (JUCE_LINUX || JUCE_BSD) - WebBrowserComponent::clearCookies(); - #endif - - thread.reset (new LicenseThread (*this, false)); -} - -void LicenseController::chooseNewLicense() -{ - JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED - - thread.reset(); - thread.reset (new LicenseThread (*this, true)); -} - -//============================================================================== -void LicenseController::closeWebview (int result) -{ - if (licenseWebview != nullptr) - licenseWebview->exitModalState (result); -} - -void LicenseController::modalStateFinished (int result) -{ - licenseWebview = nullptr; - - if (result == -1 && (state.type == LicenseState::Type::notLoggedIn - || state.type == LicenseState::Type::noLicenseChosenYet)) - JUCEApplication::getInstance()->systemRequestedQuit(); -} - -void LicenseController::ensureLicenseWebviewIsOpenWithPage (const String& param) -{ - if (licenseWebview != nullptr) - { - licenseWebview->goToURL (param); - licenseWebview->toFront (true); - } - else - { - #if ! (JUCE_LINUX || JUCE_BSD) - WebBrowserComponent::clearCookies(); - #endif - - licenseWebview = new LicenseWebview (new ModalCompletionCallback (*this), param); - } -} - -void LicenseController::queryWebview (const String& startURL, const String& valueToQuery, - HashMap& result) -{ - ensureLicenseWebviewIsOpenWithPage (startURL); - - licenseWebview->setPageCallback ([this,valueToQuery,&result] (const String& cmd, const HashMap& params) - { - if (valueToQuery.isEmpty() || cmd == valueToQuery) - { - result.clear(); - - for (HashMap::Iterator it = params.begin(); it != params.end(); ++it) - result.set (it.getKey(), it.getValue()); - - if (thread != nullptr && ! thread->threadShouldExit()) - thread->finished.signal(); - } - }); - - licenseWebview->setNewWindowCallback ([this, &result] (const String& url) - { - if (url.endsWith ("get-juce/indie") || url.endsWith ("get-juce/pro")) - { - result.clear(); - result.set ("page-redirect", url); - - if (thread != nullptr && ! thread->threadShouldExit()) - thread->finished.signal(); - } - }); -} - -void LicenseController::updateState (const LicenseState& newState) -{ - auto& props = ProjucerApplication::getApp().settings->getGlobalProperties(); - - state = newState; - licenseStateToSettings (state, props); - auto stateParam = getState(); - listeners.call ([&] (StateChangedCallback& l) { l.licenseStateChanged (stateParam); }); -} - -LicenseState LicenseController::licenseStateFromOldSettings (XmlElement* licenseXml) -{ - LicenseState result; - result.type = getLicenseTypeFromValue (licenseXml->getChildElementAllSubText ("type", {})); - result.username = licenseXml->getChildElementAllSubText ("username", {}); - result.email = licenseXml->getChildElementAllSubText ("email", {}); - result.authToken = licenseXml->getChildElementAllSubText ("authToken", {}); - - MemoryOutputStream imageData; - Base64::convertFromBase64 (imageData, licenseXml->getChildElementAllSubText ("avatar", {})); - result.avatar = ImageFileFormat::loadFrom (imageData.getData(), imageData.getDataSize()); - - return result; -} - -LicenseState LicenseController::licenseStateFromSettings (PropertiesFile& props) -{ - if (auto licenseXml = props.getXmlValue ("license")) - { - // this is here for backwards compatibility with old-style settings files using XML text elements - if (licenseXml->getChildElementAllSubText ("type", {}) != String()) - { - auto stateFromOldSettings = licenseStateFromOldSettings (licenseXml.get()); - - licenseStateToSettings (stateFromOldSettings, props); - - return stateFromOldSettings; - } - - LicenseState result; - result.type = getLicenseTypeFromValue (licenseXml->getStringAttribute ("type", {})); - result.username = licenseXml->getStringAttribute ("username", {}); - result.email = licenseXml->getStringAttribute ("email", {}); - result.authToken = licenseXml->getStringAttribute ("authToken", {}); - - MemoryOutputStream imageData; - Base64::convertFromBase64 (imageData, licenseXml->getStringAttribute ("avatar", {})); - result.avatar = ImageFileFormat::loadFrom (imageData.getData(), imageData.getDataSize()); - - return result; - } - - return {}; -} - -void LicenseController::licenseStateToSettings (const LicenseState& state, PropertiesFile& props) -{ - props.removeValue ("license"); - - if (state.type != LicenseState::Type::notLoggedIn && state.username.isNotEmpty()) - { - XmlElement licenseXml ("license"); - - if (auto* typeString = getLicenseStateValue (state.type)) - licenseXml.setAttribute ("type", typeString); - - licenseXml.setAttribute ("username", state.username); - licenseXml.setAttribute ("email", state.email); - licenseXml.setAttribute ("authToken", state.authToken); - - MemoryOutputStream imageData; - if (state.avatar.isValid() && PNGImageFormat().writeImageToStream (state.avatar, imageData)) - licenseXml.setAttribute ("avatar", Base64::toBase64 (imageData.getData(), imageData.getDataSize())); - - props.setValue ("license", &licenseXml); - } - - props.saveIfNeeded(); -} diff --git a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp index 2ed303b537..7aea90bf9c 100644 --- a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp +++ b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp @@ -54,9 +54,6 @@ HeaderComponent::HeaderComponent (ProjectContentComponent* pcc) juceIcon.setImage (ImageCache::getFromMemory (BinaryData::juce_icon_png, BinaryData::juce_icon_pngSize), RectanglePlacement::centred); addAndMakeVisible (juceIcon); - addAndMakeVisible (userAvatar); - userAvatar.addChangeListener (this); - projectNameLabel.setText ({}, dontSendNotification); addAndMakeVisible (projectNameLabel); @@ -95,9 +92,6 @@ void HeaderComponent::resized() exporterBox.setBounds (exporterBounds.removeFromBottom (roundToInt ((float) exporterBounds.getHeight() / 1.8f))); configLabel.setBounds (exporterBounds); } - - userAvatar.setBounds (bounds.removeFromRight (userAvatar.isDisplaingAGPLLogo() ? roundToInt ((float) bounds.getHeight() * 1.9f) - : bounds.getHeight()).reduced (2)); } void HeaderComponent::paint (Graphics& g) @@ -207,13 +201,6 @@ void HeaderComponent::sidebarTabsWidthChanged (int newWidth) resized(); } -//============================================================================== -void HeaderComponent::changeListenerCallback (ChangeBroadcaster* source) -{ - if (source == &userAvatar) - resized(); -} - void HeaderComponent::valueChanged (Value&) { updateName(); diff --git a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h index 767e122bde..e6fa792ea8 100644 --- a/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h +++ b/extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h @@ -36,7 +36,6 @@ #include "../../Application/jucer_Headers.h" #include "../../Utility/UI/jucer_IconButton.h" -#include "jucer_UserAvatarComponent.h" class Project; class ProjectContentComponent; @@ -45,7 +44,6 @@ class ProjectExporter; //============================================================================== class HeaderComponent final : public Component, private ValueTree::Listener, - private ChangeListener, private Value::Listener, private Timer { @@ -67,7 +65,6 @@ public: private: //============================================================================== - void changeListenerCallback (ChangeBroadcaster* source) override; void valueChanged (Value&) override; void timerCallback() override; @@ -101,7 +98,6 @@ private: Label configLabel { "Config Label", "Selected exporter" }, projectNameLabel; ImageComponent juceIcon; - UserAvatarComponent userAvatar { true }; IconButton projectSettingsButton { "Project Settings", getIcons().settings }, saveAndOpenInIDEButton { "Save and Open in IDE", Image() }; diff --git a/extras/Projucer/Source/Project/UI/jucer_UserAvatarComponent.h b/extras/Projucer/Source/Project/UI/jucer_UserAvatarComponent.h deleted file mode 100644 index a52008e6bc..0000000000 --- a/extras/Projucer/Source/Project/UI/jucer_UserAvatarComponent.h +++ /dev/null @@ -1,179 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE framework. - Copyright (c) Raw Material Software Limited - - JUCE is an open source framework subject to commercial or open source - licensing. - - By downloading, installing, or using the JUCE framework, or combining the - JUCE framework with any other source code, object code, content or any other - copyrightable work, you agree to the terms of the JUCE End User Licence - Agreement, and all incorporated terms including the JUCE Privacy Policy and - the JUCE Website Terms of Service, as applicable, which will bind you. If you - do not agree to the terms of these agreements, we will not license the JUCE - framework to you, and you must discontinue the installation or download - process and cease use of the JUCE framework. - - JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/ - JUCE Privacy Policy: https://juce.com/juce-privacy-policy - JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/ - - Or: - - You may also use this code under the terms of the AGPLv3: - https://www.gnu.org/licenses/agpl-3.0.en.html - - THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL - WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. - - ============================================================================== -*/ - -#pragma once - -#include "../../Application/jucer_Application.h" - -//============================================================================== -class UserAvatarComponent final : public Component, - public SettableTooltipClient, - public ChangeBroadcaster, - private LicenseController::LicenseStateListener -{ -public: - UserAvatarComponent (bool isInteractive) - : interactive (isInteractive) - { - ProjucerApplication::getApp().getLicenseController().addListener (this); - lookAndFeelChanged(); - } - - ~UserAvatarComponent() override - { - ProjucerApplication::getApp().getLicenseController().removeListener (this); - } - - void paint (Graphics& g) override - { - auto bounds = getLocalBounds(); - - if (! isAGPL) - { - bounds = bounds.removeFromRight (bounds.getHeight()); - - Path ellipse; - ellipse.addEllipse (bounds.toFloat()); - - g.reduceClipRegion (ellipse); - } - - g.drawImage (currentAvatar, bounds.toFloat(), RectanglePlacement::fillDestination); - } - - void mouseUp (const MouseEvent&) override - { - triggerClick(); - } - - void triggerClick() - { - if (interactive) - { - PopupMenu menu; - menu.addCommandItem (ProjucerApplication::getApp().commandManager.get(), CommandIDs::loginLogout); - - menu.showMenuAsync (PopupMenu::Options().withTargetComponent (this)); - } - } - - bool isDisplaingAGPLLogo() const noexcept { return isAGPL; } - - std::unique_ptr createAccessibilityHandler() override - { - return interactive ? std::make_unique (*this, - AccessibilityRole::button, - AccessibilityActions().addAction (AccessibilityActionType::press, - [this] { triggerClick(); })) - : nullptr; - } - -private: - //============================================================================== - static Image createAGPLAvatarImage() - { - if (auto logo = Drawable::createFromImageData (BinaryData::agplv3_logo_svg, BinaryData::agplv3_logo_svgSize)) - { - auto bounds = logo->getDrawableBounds(); - - Image image (Image::ARGB, roundToInt (bounds.getWidth()), roundToInt (bounds.getHeight()), true); - Graphics g (image); - logo->draw (g, 1.0f); - - return image; - } - - jassertfalse; - return {}; - } - - Image createStandardAvatarImage() - { - Image image (Image::ARGB, 250, 250, true); - Graphics g (image); - - g.setColour (findColour (defaultButtonBackgroundColourId)); - g.fillAll(); - - g.setColour (findColour (defaultIconColourId)); - - auto path = getIcons().user; - g.fillPath (path, RectanglePlacement (RectanglePlacement::centred) - .getTransformToFit (path.getBounds(), image.getBounds().reduced (image.getHeight() / 5).toFloat())); - - return image; - } - - //============================================================================== - void licenseStateChanged() override - { - auto state = ProjucerApplication::getApp().getLicenseController().getCurrentState(); - isAGPL = state.isAGPL(); - - if (interactive) - { - auto formattedUserString = [state]() -> String - { - if (state.isSignedIn()) - return (state.isAGPL() ? "" : (state.username + " - ")) + state.getLicenseTypeString(); - - return "Not logged in"; - }(); - - setTooltip (formattedUserString); - } - - currentAvatar = isAGPL ? agplAvatarImage - : state.isSignedIn() ? standardAvatarImage : signedOutAvatarImage; - - repaint(); - sendChangeMessage(); - } - - void lookAndFeelChanged() override - { - standardAvatarImage = createStandardAvatarImage(); - signedOutAvatarImage = createStandardAvatarImage(); - - if (interactive) - signedOutAvatarImage.multiplyAllAlphas (0.4f); - - licenseStateChanged(); - repaint(); - } - - //============================================================================== - Image standardAvatarImage, signedOutAvatarImage, agplAvatarImage { createAGPLAvatarImage() }, currentAvatar; - bool isAGPL = false, interactive = false; -}; diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index db67211129..3cac066192 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -122,9 +122,6 @@ Project::Project (const File& f) auto& app = ProjucerApplication::getApp(); - if (! app.isRunningCommandLine) - app.getLicenseController().addListener (this); - app.getJUCEPathModulesList().addListener (this); app.getUserPathsModulesList().addListener (this); @@ -144,9 +141,6 @@ Project::~Project() app.openDocumentManager.closeAllDocumentsUsingProjectWithoutSaving (*this); - if (! app.isRunningCommandLine) - app.getLicenseController().removeListener (this); - app.getJUCEPathModulesList().removeListener (this); app.getUserPathsModulesList().removeListener (this); } @@ -191,8 +185,6 @@ void Project::updateCompanyNameDependencies() pluginARAFactoryIDValue.setDefault (getDefaultARAFactoryIDString()); pluginARAArchiveIDValue.setDefault (getDefaultARADocumentArchiveID()); pluginManufacturerValue.setDefault (getDefaultPluginManufacturerString()); - - updateLicenseWarning(); } void Project::updateWebsiteDependencies() @@ -705,8 +697,6 @@ Result Project::loadDocument (const File& file) setChangedFlag (false); - updateLicenseWarning(); - return Result::ok(); } @@ -814,19 +804,6 @@ bool Project::isSaveAndExportDisabled() const && isFileModificationCheckPending(); } -void Project::updateLicenseWarning() -{ - if (ProjucerApplication::getApp().isRunningCommandLine) - return; - - auto currentLicenseState = ProjucerApplication::getApp().getLicenseController().getCurrentState(); - - if (currentLicenseState.isPersonalOrNone() || currentLicenseState.isOldLicense()) - addProjectMessage (ProjectMessages::Ids::personalLicense, {}); - else - removeProjectMessage (ProjectMessages::Ids::personalLicense); -} - void Project::updateJUCEPathWarning() { if (ProjucerApplication::getApp().shouldPromptUserAboutIncorrectJUCEPath() @@ -978,11 +955,6 @@ void Project::updateModuleNotFoundWarning (bool showWarning) removeProjectMessage (ProjectMessages::Ids::moduleNotFound); } -void Project::licenseStateChanged() -{ - updateLicenseWarning(); -} - void Project::changeListenerCallback (ChangeBroadcaster*) { updateJUCEPathWarning(); diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index 40254a768f..84fc56c563 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -34,7 +34,6 @@ #pragma once -#include "../Application/UserAccount/jucer_LicenseController.h" #include "Modules/jucer_AvailableModulesList.h" class ProjectExporter; @@ -50,7 +49,6 @@ namespace ProjectMessages DECLARE_ID (projectMessages); - DECLARE_ID (personalLicense); DECLARE_ID (cppStandard); DECLARE_ID (moduleNotFound); DECLARE_ID (jucePath); @@ -80,7 +78,7 @@ namespace ProjectMessages if (std::find (std::begin (warnings), std::end (warnings), message) != std::end (warnings)) return Ids::warning; - static Identifier notifications[] = { Ids::personalLicense, Ids::newVersionAvailable }; + static Identifier notifications[] = { Ids::newVersionAvailable }; if (std::find (std::begin (notifications), std::end (notifications), message) != std::end (notifications)) return Ids::notification; @@ -101,7 +99,6 @@ namespace ProjectMessages if (message == Ids::pluginCodeInvalid) return "Invalid Plugin Code"; if (message == Ids::manufacturerCodeInvalid) return "Invalid Manufacturer Code"; if (message == Ids::deprecatedExporter) return "Deprecated Exporter"; - if (message == Ids::personalLicense) return "Personal Licence"; jassertfalse; return {}; @@ -119,7 +116,6 @@ namespace ProjectMessages if (message == Ids::pluginCodeInvalid) return "The plugin code should be exactly four characters in length."; if (message == Ids::manufacturerCodeInvalid) return "The manufacturer code should be exactly four characters in length."; if (message == Ids::deprecatedExporter) return "The project includes a deprecated exporter."; - if (message == Ids::personalLicense) return "You are using a Personal licence. Sign in to activate a commercial licence."; jassertfalse; return {}; @@ -191,7 +187,6 @@ enum class Async { no, yes }; //============================================================================== class Project final : public FileBasedDocument, private ValueTree::Listener, - private LicenseController::LicenseStateListener, private ChangeListener, private AvailableModulesList::Listener, private MessageBoxQueue::Listener @@ -713,11 +708,9 @@ private: void updateOldModulePaths(); //============================================================================== - void licenseStateChanged() override; void changeListenerCallback (ChangeBroadcaster*) override; void availableModulesChanged (AvailableModulesList*) override; - void updateLicenseWarning(); void updateJUCEPathWarning(); void updateModuleWarnings();