Projucer: Remove user login and license check code
|
|
@ -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 = "<group>";
|
||||
};
|
||||
9D43579A76E23FBCE6B36333 /* UserAccount */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F30DF63DBEFA4BEEF7C369FC,
|
||||
2F0A7CA808B2FCCC9ED68992,
|
||||
94146B40B41BF0AACF4359DD,
|
||||
B6444A4A8DFD6828FF6BD1CB,
|
||||
);
|
||||
name = UserAccount;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
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 = "<group>";
|
||||
|
|
|
|||
|
|
@ -1912,10 +1912,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_NewProjectWizard.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_EditorColourSchemeWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_FloatingToolWindow.h"/>
|
||||
|
|
@ -2035,7 +2031,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ModulesInformationComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectContentComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_Android.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_CodeBlocks.h"/>
|
||||
|
|
@ -2884,7 +2879,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_linux.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_visualStudio.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AnimatedApp.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AudioApp.svg"/>
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
<Filter Include="Projucer\Application\StartPage">
|
||||
<UniqueIdentifier>{1E1D2D75-0ADA-6E9E-105F-2F87632B55AF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\UserAccount">
|
||||
<UniqueIdentifier>{DA27985D-8427-CE70-CA06-EAF7009CCC60}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\Windows">
|
||||
<UniqueIdentifier>{DC7E18A5-E854-3D99-627F-AAA88246B712}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -2403,18 +2400,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h">
|
||||
<Filter>Projucer\Application\StartPage</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h">
|
||||
<Filter>Projucer\Application\Windows</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2772,9 +2757,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h">
|
||||
<Filter>Projucer\Project</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -5315,9 +5297,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
|
@ -1912,10 +1912,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_NewProjectWizard.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_EditorColourSchemeWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_FloatingToolWindow.h"/>
|
||||
|
|
@ -2035,7 +2031,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ModulesInformationComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectContentComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_Android.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_CodeBlocks.h"/>
|
||||
|
|
@ -2884,7 +2879,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_linux.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_visualStudio.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AnimatedApp.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AudioApp.svg"/>
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
<Filter Include="Projucer\Application\StartPage">
|
||||
<UniqueIdentifier>{1E1D2D75-0ADA-6E9E-105F-2F87632B55AF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\UserAccount">
|
||||
<UniqueIdentifier>{DA27985D-8427-CE70-CA06-EAF7009CCC60}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\Windows">
|
||||
<UniqueIdentifier>{DC7E18A5-E854-3D99-627F-AAA88246B712}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -2403,18 +2400,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h">
|
||||
<Filter>Projucer\Application\StartPage</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h">
|
||||
<Filter>Projucer\Application\Windows</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2772,9 +2757,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h">
|
||||
<Filter>Projucer\Project</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -5315,9 +5297,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
|
@ -1912,10 +1912,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_NewProjectWizard.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_EditorColourSchemeWindowComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_FloatingToolWindow.h"/>
|
||||
|
|
@ -2035,7 +2031,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ModulesInformationComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectContentComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h"/>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_Android.h"/>
|
||||
<ClInclude Include="..\..\Source\ProjectSaving\jucer_ProjectExport_CodeBlocks.h"/>
|
||||
|
|
@ -2884,7 +2879,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_linux.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_visualStudio.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AnimatedApp.svg"/>
|
||||
<None Include="..\..\Source\BinaryData\Icons\wizard_AudioApp.svg"/>
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
<Filter Include="Projucer\Application\StartPage">
|
||||
<UniqueIdentifier>{1E1D2D75-0ADA-6E9E-105F-2F87632B55AF}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\UserAccount">
|
||||
<UniqueIdentifier>{DA27985D-8427-CE70-CA06-EAF7009CCC60}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Projucer\Application\Windows">
|
||||
<UniqueIdentifier>{DC7E18A5-E854-3D99-627F-AAA88246B712}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -2403,18 +2400,6 @@
|
|||
<ClInclude Include="..\..\Source\Application\StartPage\jucer_StartPageTreeHolder.h">
|
||||
<Filter>Projucer\Application\StartPage</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseController.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseQueryThread.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LicenseState.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\UserAccount\jucer_LoginFormComponent.h">
|
||||
<Filter>Projucer\Application\UserAccount</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Application\Windows\jucer_AboutWindowComponent.h">
|
||||
<Filter>Projucer\Application\Windows</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2772,9 +2757,6 @@
|
|||
<ClInclude Include="..\..\Source\Project\UI\jucer_ProjectMessagesComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\UI\jucer_UserAvatarComponent.h">
|
||||
<Filter>Projucer\Project\UI</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\Source\Project\jucer_Project.h">
|
||||
<Filter>Projucer\Project</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -5315,9 +5297,6 @@
|
|||
<None Include="..\..\Source\BinaryData\Icons\export_xcode.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\agplv3_logo.svg">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
<None Include="..\..\Source\BinaryData\Icons\juce_icon.png">
|
||||
<Filter>Projucer\BinaryData\Icons</Filter>
|
||||
</None>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Created with Inkscape (http://www.inkscape.org/) -->\n"
|
||||
"\n"
|
||||
"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"864\" height=\"358\" version=\"1.1\">\n"
|
||||
" <g id=\"g1\" transform=\"translate(-88.247957,-1761.1929)\">\n"
|
||||
" <g id=\"g2\" transform=\"scale(2.5964,2.5964)\">\n"
|
||||
" <path id=\"path1\" style=\"fill:#663366\" d=\"m 62.777261,682.66638 c 0,0 -22.84339,99.66531 -22.84339,99.66531 0.0066,0 60.091419,0 60.104559,0 26.42484,0 105.67884,0 105.67884,0 1.2e-4,0 54.96371,0 54.96371,0 -6.54796,-0.57145 -11.71765,-2.87"
|
||||
"011 -14.79791,-7.06027 -0.57133,-0.77509 -1.04346,-1.60999 -1.45715,-2.48348 -0.26277,-0.64359 -0.5098,-1.293 -0.75945,-1.94971 -0.65682,-2.08863 -0.91869,-4.40613 -0.80043,-6.87568 0.32842,-6.883 3.5581,-15.07028 9.15381,-23.64386 5.94375,-9.11134 1"
|
||||
"4.55819,-18.66102 25.22417,-27.52283 2.39067,-1.98475 4.86262,-3.94473 7.45021,-5.84947 3.19852,-2.35311 6.4217,-4.52039 9.64637,-6.54715 11.881,-7.48001 23.73254,-12.71397 34.23437,-15.37255 -10.03552,3.27397 -21.3098,8.83212 -32.4487,16.39877 -0.40"
|
||||
"067,0.27054 -0.79632,0.5477 -1.19049,0.82098 -6.18016,4.28216 -11.77917,8.82996 -16.66554,13.42273 -15.72323,14.78398 -24.0338,30.10322 -20.25732,39.07804 0.26928,0.61733 0.59027,1.20681 0.96458,1.76513 4.05888,5.97 14.11814,7.00193 26.86612,3.7969 0"
|
||||
".86698,-0.21666 1.73396,-0.4622 2.62708,-0.71835 4.07201,-1.17554 8.39527,-2.76338 12.8482,-4.72051 1.07052,-0.47293 2.15256,-0.95887 3.24282,-1.4778 0.11164,-0.0525 0.21666,-0.10502 0.3283,-0.16415 14.05501,-6.98345 24.85648,-15.01891 27.19453,-19.8"
|
||||
"4684 0.51232,-1.05019 0.63548,-1.94559 0.28732,-2.64763 -1.66821,-3.38242 -13.34145,-1.09733 -27.48185,5.02838 -1.13615,0.49267 -2.28554,0.99951 -3.44806,1.53933 0.94574,-0.87805 1.93019,-1.75953 2.93495,-2.62708 1.60257,-1.38055 3.26176,-2.73051 5.0"
|
||||
"2848,-4.0638 2.76498,-2.09376 5.56032,-3.98662 8.31229,-5.66465 12.88587,-9.72159 19.40027,-18.91764 18.04072,-22.33031 -0.25615,-0.64301 -0.80122,-1.08524 -1.64195,-1.35464 -2.68621,-0.85442 -7.58902,0.16541 -13.5459,2.60665 -4.91274,2.01501 -10.555"
|
||||
"24,5.00338 -16.27572,8.72277 0,0 -0.77988,0.51312 -0.77988,0.51312 0,0 -0.14372,0.0821 -0.14372,0.0821 0,0 -2.75013,1.82665 -2.75013,1.82665 0,0 1.58031,-2.89385 1.58031,-2.89385 2.34467,-4.2921 6.16384,-8.77026 10.91882,-12.93028 3.48744,-3.04157 7."
|
||||
"47167,-5.90734 11.76034,-8.41491 1.6222,-0.94974 3.24201,-1.83178 4.86422,-2.62708 1.6617,-0.81184 3.32409,-1.53328 4.9463,-2.17561 4.71308,-1.86387 9.89054,-4.21767 13.81404,-4.52565 -0.3573,0 -11.69996,1.22131 -11.69996,1.22131 0,0 -37.14877,0 -37."
|
||||
"14877,0 0,0 -163.80326,0 -163.80326,0 0,0 -73.075879,0 -73.075879,0 z m 177.933719,0.14371 c -0.64359,9.82331 1.26103,24.21153 5.58258,40.18623 0.76846,2.84249 1.60497,5.73531 2.52446,8.66124 0.57144,1.80679 1.16092,3.58527 1.76512,5.33624 -0.35467,0"
|
||||
".52145 -0.71173,1.03969 -1.04677,1.55988 -5.39206,8.26343 -8.54378,16.07287 -9.3385,22.86386 -2.27904,-7.63171 -3.99473,-15.99091 -4.96685,-24.85477 -0.27579,-2.53965 -0.49165,-5.05098 -0.63616,-7.53229 -1.06401,-18.02383 1.28888,-34.36245 6.11612,-4"
|
||||
"6.22039 z m -107.60809,12.78645 c 0.12294,-0.003 0.24417,0 0.3694,0 0,0 24.28013,0 24.28013,0 2.07539,0 3.68036,0.38903 4.82313,1.16994 1.13615,0.78548 1.56228,1.80154 1.29299,3.03757 0,0 -2.89385,13.07388 -2.89385,13.07388 0,0 -8.55862,0 -8.55862,0 "
|
||||
"0,0 2.81178,-12.72492 2.81178,-12.72492 0,0 -21.42715,0 -21.42715,0 0,0 -7.73764,34.97305 -7.73764,34.97305 0,0 -2.79135,12.6635 -2.79135,12.6635 0,0 21.40671,0 21.40671,0 0,0 0.0206,-0.0821 0.0206,-0.0821 0,0 4.28958,-19.37493 4.28958,-19.37493 0,0 "
|
||||
"-10.05685,0 -10.05685,0 0,0 0.96469,-4.37155 0.96469,-4.37155 0,-1.1e-4 18.61537,0 18.61537,0 0,-1.1e-4 -5.33624,24.1774 -5.33624,24.1774 -0.0723,0.34417 -0.19874,0.65592 -0.36951,0.9647 -0.44006,0.80122 -1.20761,1.4875 -2.27812,2.05244 -1.48431,0.78"
|
||||
"148 -3.26085,1.16982 -5.33636,1.16982 0,0 -24.25947,0 -24.25947,0 -2.07539,0 -3.68036,-0.38834 -4.82324,-1.16982 -1.13615,-0.7816 -1.56884,-1.77974 -1.29299,-3.01714 0,0 10.69314,-48.33436 10.69314,-48.33436 0.27579,-1.23603 1.13615,-2.25209 2.62696,"
|
||||
"-3.03757 0.0526,-0.0283 0.11176,-0.0347 0.16427,-0.0615 1.3608,-0.6816 2.95778,-1.0648 4.80269,-1.10841 z m 38.05183,0 c -1.2e-4,0 30.5604,0 30.5604,0 2.04913,0 3.65981,0.38903 4.8027,1.16994 1.14927,0.78548 1.58933,1.80154 1.31354,3.03757 0,0 -5.705"
|
||||
"75,25.77837 -5.70575,25.77837 -0.26928,1.22816 -1.15019,2.23018 -2.64763,3.01703 -1.49744,0.78947 -3.26005,1.19037 -5.31581,1.19037 0,0 -22.20714,0 -22.20714,0 0,0 -4.28947,19.35427 -4.28947,19.35427 0,0 -0.69781,3.18128 -0.69781,3.18128 0,0 -8.37392"
|
||||
",0 -8.37392,0 0,0 0.63628,-2.87342 0.63628,-2.87342 0,0 11.92461,-53.85541 11.92461,-53.85541 z m 42.21812,0 c 0,0 8.37381,0 8.37381,0 0,0 -9.48211,42.83397 -9.48211,42.83397 0,0 -2.07299,9.35905 -2.07299,9.35905 0,0 20.03165,0 20.03165,0 0.21015,1.5"
|
||||
"3614 0.45557,3.045 0.71835,4.53581 0,0 -30.12948,0 -30.12948,0 0,0 2.38074,-10.75466 2.38074,-10.75466 0,0 10.18003,-45.97417 10.18003,-45.97417 z m -34.84999,4.55647 c 0,0 -5.56214,25.08045 -5.56214,25.08045 0,0 20.87316,0 20.87316,0 0,0 5.54149,-25"
|
||||
".08045 5.54149,-25.08045 0,0 -20.85251,0 -20.85251,0 z m -44.50903,59.19428 c 0.082,-0.003 0.16381,0 0.24634,0 0.972,0 1.82094,0.17065 2.50391,0.49256 0.72909,0.34154 1.25042,0.84883 1.53934,1.51879 0.28241,0.6502 0.35626,1.38819 0.20524,2.19604 0,0 "
|
||||
"-0.0615,0.30787 -0.0615,0.30787 0,0 -2.40129,0 -2.40129,0 -1.1e-4,0 0.0204,-0.28732 0.0204,-0.28732 0.0621,-0.56448 -0.008,-1.0083 -0.22567,-1.31354 -0.0284,-0.0382 -0.0696,-0.0888 -0.10274,-0.12317 -0.0541,-0.0554 -0.1355,-0.11849 -0.20513,-0.16415 "
|
||||
"-0.33606,-0.21175 -0.86161,-0.32841 -1.53933,-0.32841 -0.89986,0 -1.57221,0.15673 -2.0319,0.47201 -0.44667,0.30867 -0.72908,0.65352 -0.82098,1.06732 -0.092,0.4203 0.059,0.64119 0.16415,0.75933 0.003,0.003 0.0166,0.0169 0.0205,0.0205 0.1331,0.11335 0."
|
||||
"59519,0.37933 2.0319,0.71836 1.30041,0.31528 2.16157,0.59849 2.64763,0.84152 0.73559,0.3743 1.2495,0.85956 1.51878,1.45714 0.26929,0.5912 0.32842,1.28318 0.16415,2.0319 -0.16415,0.72909 -0.53605,1.40144 -1.08775,2.0319 -0.54507,0.63046 -1.23877,1.129"
|
||||
"64 -2.07299,1.4778 -0.82748,0.34154 -1.73544,0.53355 -2.66806,0.53355 -1.18227,0 -2.13132,-0.17888 -2.87342,-0.53355 -0.77498,-0.36779 -1.33409,-0.94825 -1.66239,-1.70359 -0.31529,-0.73548 -0.38263,-1.5705 -0.20536,-2.48337 0,0 0.0616,-0.28732 0.0616"
|
||||
",-0.28732 0,0 2.36031,0 2.36031,0 0,0 -0.0205,0.28732 -0.0205,0.28732 -0.0591,0.54507 -8e-4,0.98513 0.1436,1.31354 0.13801,0.31529 0.40067,0.57635 0.82098,0.77988 0.44667,0.21678 1.00487,0.32842 1.64195,0.32842 0.57144,0 1.09357,-0.096 1.55988,-0.266"
|
||||
"77 0.45969,-0.16427 0.82509,-0.38093 1.08775,-0.65683 0.25616,-0.27579 0.40638,-0.56733 0.47202,-0.88251 0.0657,-0.28241 0.0501,-0.52133 -0.0615,-0.71835 -0.12477,-0.21015 -0.37191,-0.39656 -0.75945,-0.55409 0,-1.2e-4 -2.01135,-0.5953 -2.01135,-0.595"
|
||||
"3 -1.12302,-0.28241 -1.87916,-0.5517 -2.31921,-0.82098 -0.5977,-0.35456 -1.02862,-0.80945 -1.25202,-1.35452 -0.22328,-0.53857 -0.24702,-1.13547 -0.10251,-1.78567 0.15103,-0.69621 0.48675,-1.35863 1.00568,-1.94971 0.52544,-0.5977 1.2035,-1.06652 2.011"
|
||||
"35,-1.37518 0.71424,-0.2678 1.46582,-0.42488 2.25757,-0.45147 z m 21.55043,0.041 c 0.1299,-0.01 0.25205,0 0.38994,0 0,0 1.47769,0.16415 1.47769,0.16415 0,0 0.49257,0.0411 0.49257,0.0411 1.1e-4,0 -0.71825,1.82665 -0.71825,1.82665 0,0 -0.14371,0.28732 "
|
||||
"-0.14371,0.28732 0,0 -1.12885,-0.10262 -1.12885,-0.10262 -0.33332,0 -0.57817,0.0515 -0.7389,0.16427 -0.0106,0.008 -0.0312,0.0324 -0.041,0.041 -0.0216,0.0189 -0.0578,0.0518 -0.0821,0.0822 -0.0989,0.12957 -0.21917,0.36118 -0.30787,0.77989 0,0 -0.0427,0"
|
||||
".17727 -0.0821,0.32841 0.51881,0 1.76501,0 1.76501,0 0,0 -0.45147,2.0319 -0.45147,2.0319 0,0 -1.2906,0 -1.72403,0 -0.13139,0.59107 -1.74458,7.8196 -1.74458,7.8196 0,0 -2.38086,0 -2.38086,0 0,0 1.54755,-6.94612 1.74458,-7.8196 -0.40067,0 -1.37507,0 -1"
|
||||
".37507,0 0,0 0.45147,-2.0319 0.45147,-2.0319 0,0 0.98022,0 1.35464,0 0.0656,-0.28241 0.16414,-0.63628 0.16414,-0.63628 0.14452,-0.65683 0.29554,-1.12884 0.49257,-1.45726 0.2694,-0.45318 0.64941,-0.83239 1.12884,-1.10829 0.39497,-0.22945 0.89438,-0.36"
|
||||
"666 1.45726,-0.41049 z m 5.6852,0.10262 c 0,0 -0.62235,2.80036 -0.77988,3.5097 0.45969,0 1.53922,0 1.53922,0 0,0 -0.45147,2.0319 -0.45147,2.0319 0,0 -1.13216,0 -1.53934,0 -0.12476,0.5647 -1.10829,4.9463 -1.10829,4.9463 0,0 -0.0821,0.52623 -0.0821,0.6"
|
||||
"7726 1.2e-4,0.005 -4.5e-4,0.0168 0,0.0205 3.4e-4,0.002 -4.5e-4,0.0192 0,0.0205 5.7e-4,10e-4 0.0196,-8e-4 0.0204,0 0,0 0.24633,0.0204 0.24633,0.0204 0,0 1.12885,-0.0821 1.12885,-0.0821 0,0 -0.12317,1.82665 -0.12317,1.82665 0,0 0.0205,0.32841 0.0205,0."
|
||||
"32841 0,0 -1.62141,0.1847 -1.62141,0.1847 -0.64359,0 -1.11572,-0.10502 -1.45726,-0.32841 -0.36117,-0.23641 -0.57133,-0.54998 -0.65671,-0.94404 -0.0131,-0.0723 -0.0411,-0.17739 -0.0411,-0.32841 0,-0.29554 0.0558,-0.79552 0.24634,-1.6625 0,0 0.86276,-3"
|
||||
".86506 1.04666,-4.67941 -0.30867,0 -1.12873,0 -1.12873,0 0,0 0.45147,-2.0319 0.45147,-2.0319 0,0 0.80043,0 1.12884,0 0.10513,-0.47293 0.47202,-2.09354 0.47202,-2.09354 0,0 1.90884,-1.00567 1.90884,-1.00567 0,0 0.77988,-0.41049 0.77988,-0.41049 z m -7"
|
||||
"5.631539,0.0821 c 0,0 9.23587,0 9.23587,0 0,0 -0.5131,2.29879 -0.5131,2.29879 0,0 -6.16135,0 -6.75245,0 -0.10506,0.46631 -0.52622,2.35449 -0.67728,3.03757 0.85381,0 5.84937,0 5.84937,0 0,0 -0.51311,2.29867 -0.51311,2.29867 0,0 -5.25827,0 -5.84937,0 -"
|
||||
"0.12479,0.57144 -1.25198,5.6441 -1.25198,5.6441 0,0 -2.48343,0 -2.48343,0 0,0 2.95548,-13.27913 2.95548,-13.27913 z m 12.37608,3.24293 c 0.09266,-0.0114 0.19392,0 0.28731,0 0.5911,0 1.13707,0.17979 1.66248,0.5541 0,0 0.328389,0.22579 0.328389,0.22579"
|
||||
" 0,0 -1.272509,2.09342 -1.272509,2.09342 0,0 -0.34892,-0.24634 -0.34892,-0.24634 -0.25612,-0.16415 -0.53196,-0.24622 -0.82095,-0.24622 -0.24958,0 -0.4819,0.0887 -0.71834,0.24622 -0.24958,0.16427 -0.45811,0.38184 -0.61571,0.67738 -0.27585,0.50569 -0.4"
|
||||
"7783,1.07211 -0.61575,1.68293 0,0 -1.10832,5.04892 -1.10832,5.04892 0,0 -2.38079,0 -2.38079,0 0,0 2.19611,-9.8515 2.19611,-9.8515 0,0 2.2166,0 2.2166,0 0,0 -0.07638,0.29874 -0.10264,0.41038 0.10511,-0.0788 0.21591,-0.1871 0.30789,-0.24623 0.3181,-0.1"
|
||||
"8983 0.65411,-0.30832 0.98515,-0.34885 z m 7.060299,0 c 0.14335,-0.0109 0.28446,0 0.43102,0 1.3398,0 2.35368,0.46951 3.01703,1.39562 0.41377,0.59758 0.63628,1.33649 0.63628,2.21659 0,0.48595 -0.0599,1.00899 -0.18472,1.58032 0,0 -0.18472,0.71835 -0.18"
|
||||
"472,0.71835 0,0 -6.02097,0 -6.6909,0 -0.0131,0.1379 -0.0205,0.28572 -0.0205,0.41049 0,0.51231 0.10511,0.91538 0.32838,1.21092 0.10612,0.14451 0.22914,0.27465 0.36944,0.36939 0.26454,0.1726 0.60601,0.26689 1.00572,0.26689 0.48599,0 0.9129,-0.1339 1.31"
|
||||
"353,-0.38994 0.38091,-0.24303 0.74543,-0.63137 1.06726,-1.16994 0,0 2.54499,0 2.54499,0 0,0 -0.22574,0.49256 -0.22574,0.49256 -0.48603,0.98524 -1.16417,1.7536 -2.01139,2.29879 -0.84722,0.54507 -1.85948,0.84141 -2.97601,0.84141 -1.45145,0 -2.53185,-0."
|
||||
"46951 -3.20175,-1.39562 -0.663349,-0.90636 -0.806199,-2.15917 -0.451559,-3.73538 0.354699,-1.60257 1.062339,-2.88324 2.093469,-3.77647 0.92422,-0.80135 1.97295,-1.24585 3.14021,-1.33398 z m 10.69313,0 c 0.14326,-0.0109 0.28446,0 0.43092,0 1.33991,0 2"
|
||||
".3538,0.46951 3.01714,1.39562 0.41379,0.59758 0.63616,1.33649 0.63616,2.21659 0,0.47944 -0.0599,0.99495 -0.1847,1.55977 0,0 -0.18469,0.7389 -0.18469,0.7389 0,0 -6.02097,0 -6.69087,0 -0.007,0.092 -0.014,0.17488 -0.0205,0.26677 -0.005,0.0345 0.002,0.08"
|
||||
"69 0,0.12317 -1.9e-4,0.006 0,0.0148 0,0.0205 0,0.0985 0.0139,0.19543 0.0205,0.28732 0.0328,0.37442 0.13054,0.68719 0.30786,0.9236 0.0338,0.046 0.0655,0.10274 0.1026,0.14372 0.30081,0.32179 0.72656,0.49256 1.27251,0.49256 0.48602,0 0.91945,-0.1339 1.3"
|
||||
"135,-0.38994 0.38104,-0.24303 0.74552,-0.63137 1.06732,-1.16994 0,0 2.56544,0 2.56544,0 0,0 -0.24623,0.49256 -0.24623,0.49256 -0.48606,0.98524 -1.16412,1.7536 -2.01135,2.29879 -0.84723,0.54507 -1.85953,0.84141 -2.976,0.84141 -1.45149,0 -2.53189,-0.46"
|
||||
"951 -3.20178,-1.39562 -0.43346,-0.59108 -0.63624,-1.34391 -0.63624,-2.23714 0,-0.1379 0.007,-0.28652 0.0205,-0.43104 0.0263,-0.34142 0.0788,-0.68628 0.16419,-1.0672 0.35465,-1.59595 1.0418,-2.88324 2.07293,-3.77647 0.92419,-0.80135 1.99344,-1.24585 3"
|
||||
".16076,-1.33398 z m 29.12369,0 c 0.14669,-0.0113 0.28161,0 0.43104,0 1.36616,0 2.41613,0.46209 3.0991,1.37507 0.67657,0.91287 0.84072,2.14434 0.49267,3.69429 -0.26928,1.20852 -0.65842,2.18463 -1.19048,2.89397 -0.53195,0.70933 -1.21001,1.28888 -2.0113"
|
||||
"5,1.68293 -0.79461,0.39405 -1.63614,0.59519 -2.48337,0.59519 -1.39242,0 -2.42925,-0.47613 -3.09921,-1.39562 -0.43343,-0.58457 -0.65671,-1.33728 -0.65671,-2.23714 0,-0.48594 0.0533,-1.00236 0.18469,-1.58031 0.39405,-1.76022 1.19859,-3.10081 2.38075,-3"
|
||||
".96117 0.86778,-0.62647 1.82619,-0.98833 2.85287,-1.06721 z m 36.06102,0 c 0.17317,-0.0107 0.33344,0 0.51311,0 0.82749,0 1.47769,0.0837 1.97026,0.28732 0.52544,0.21016 0.89814,0.50729 1.10829,0.86196 0.20365,0.33492 0.30787,0.74632 0.30787,1.25201 0,"
|
||||
"0 -0.24622,1.49824 -0.24622,1.49824 0,0 -0.45159,2.0319 -0.45159,2.0319 -0.38754,1.73385 -0.47281,2.38405 -0.49256,2.62708 -0.0197,0.32841 0.0106,0.6485 0.10262,0.94415 0,0 0.16415,0.53354 0.16415,0.53354 0,0 -2.42184,0 -2.42184,0 0,0 -0.10262,-0.307"
|
||||
"86 -0.10262,-0.30786 -0.0394,-0.14441 -0.0279,-0.3283 -0.041,-0.49257 -0.4598,0.28241 -0.92029,0.53286 -1.33409,0.67726 -0.61082,0.21027 -1.24459,0.32842 -1.88829,0.32842 -1.1164,0 -1.9432,-0.29063 -2.44239,-0.86196 -0.38081,-0.42031 -0.55409,-0.9342"
|
||||
"2 -0.55409,-1.51879 0,-0.22328 0.0296,-0.45478 0.0821,-0.6978 0.11164,-0.49919 0.31449,-0.96139 0.63628,-1.37519 0.31528,-0.40718 0.68799,-0.7421 1.10829,-0.98513 0.40718,-0.24302 0.86116,-0.41539 1.33409,-0.53365 0,0 1.45726,-0.24623 1.45726,-0.2462"
|
||||
"3 1.12302,-0.13139 1.96124,-0.29474 2.56544,-0.47213 0.0131,-0.0656 0.0411,-0.1436 0.0411,-0.1436 0.0952,-0.42259 0.0833,-0.74027 -0.0205,-0.90305 -0.008,-0.0105 -0.0324,-0.0321 -0.0411,-0.0411 -0.0221,-0.0236 -0.0562,-0.0607 -0.0821,-0.0821 -0.24702"
|
||||
",-0.19543 -0.66824,-0.28732 -1.23147,-0.28732 -0.63708,0 -1.10829,0.10422 -1.43659,0.30786 -0.32191,0.20354 -0.61985,0.57624 -0.88262,1.1083 0,0 -2.48337,0 -2.48337,0 0,0 0.22568,-0.49256 0.22568,-0.49256 0.29554,-0.68308 0.64781,-1.24962 1.08786,-1."
|
||||
"68305 0.44006,-0.43343 1.03444,-0.76927 1.72403,-1.00568 0.52841,-0.17442 1.10556,-0.29017 1.72403,-0.3283 z m 10.40571,0 c 0.0927,-0.0114 0.19394,0 0.28732,0 0.5977,0 1.15761,0.17979 1.68305,0.5541 0,0 0.30786,0.22579 0.30786,0.22579 0,0 -1.27256,2."
|
||||
"09342 -1.27256,2.09342 0,0 -0.34884,-0.24634 -0.34884,-0.24634 -0.25616,-0.16415 -0.51814,-0.24622 -0.80043,-0.24622 -0.24965,0 -0.49599,0.0887 -0.73891,0.24622 -0.24965,0.16427 -0.43103,0.38184 -0.59518,0.67738 -0.26929,0.50569 -0.47784,1.07211 -0.6"
|
||||
"1574,1.68293 0,0 -1.12884,5.04892 -1.12884,5.04892 0,0 -2.38086,0 -2.38086,0 0,0 2.19616,-9.8515 2.19616,-9.8515 0,0 2.2166,0 2.2166,0 0,0 -0.0558,0.29874 -0.0821,0.41038 0.10502,-0.0788 0.20936,-0.1871 0.30787,-0.24623 0.313,-0.18983 0.63377,-0.3083"
|
||||
"2 0.96458,-0.34885 z m 7.03983,0 c 0.14315,-0.0109 0.28447,0 0.43093,0 1.33991,0 2.36031,0.46951 3.01713,1.39562 0.42031,0.59758 0.63617,1.33649 0.63617,2.21659 0,0.48595 -0.0804,1.00899 -0.20524,1.58032 0,0 -0.16415,0.71835 -0.16415,0.71835 0,0 -6.0"
|
||||
"2754,0 -6.69088,0 -0.0131,0.1379 -0.0411,0.28572 -0.0411,0.41049 0,0.51231 0.11175,0.91538 0.32841,1.21092 0.0338,0.046 0.086,0.10274 0.12317,0.14372 0.0216,0.0229 0.0594,0.0607 0.0821,0.0821 0.2936,0.26689 0.69325,0.41049 1.19038,0.41049 0.48605,0 0"
|
||||
".91298,-0.1339 1.31354,-0.38994 0.38104,-0.24303 0.7389,-0.63137 1.06731,-1.16994 0,0 2.56556,0 2.56556,0 0,0 -0.24634,0.49256 -0.24634,0.49256 -0.48606,0.98524 -1.17074,1.7536 -2.01135,2.29879 -0.85385,0.54507 -1.85291,0.84141 -2.97604,0.84141 -1.45"
|
||||
"144,0 -2.51134,-0.46951 -3.18118,-1.39562 -0.66333,-0.90636 -0.82017,-2.15917 -0.47213,-3.73538 0.35467,-1.60257 1.04186,-2.88324 2.07299,-3.77647 0.93,-0.80135 1.99457,-1.24585 3.16074,-1.33398 z m -35.93785,0.1847 c 0,0 2.44239,0 2.44239,0 0,0 0.30"
|
||||
"124,5.84604 0.30786,5.93143 0.0985,-0.20936 0.175,-0.38549 0.1847,-0.41049 0,0 2.68872,-5.52094 2.68872,-5.52094 0,0 2.23714,0 2.23714,0 0,0 0.20525,5.77538 0.20525,5.80826 0.0656,-0.11815 3.058,-5.80826 3.058,-5.80826 0,0 2.42184,0 2.42184,0 0,0 -5."
|
||||
"33624,9.8515 -5.33624,9.8515 0,0 -2.19604,0 -2.19604,0 0,0 -0.21267,-5.34194 -0.2258,-5.6441 -0.90636,1.85872 -2.75025,5.6441 -2.75025,5.6441 0,0 -2.25769,0 -2.25769,0 0,0 -0.77988,-9.8515 -0.77988,-9.8515 z m -57.34448,1.86763 c -0.56575,0.0239 -1.0"
|
||||
"7959,0.22785 -1.55984,0.61574 -0.38091,0.30216 -0.63789,0.71675 -0.84148,1.16982 0,1.2e-4 4.04324,0 4.04324,0 0.007,-0.0721 0.0205,-0.16004 0.0205,-0.22568 0,-0.37441 -0.0665,-0.66504 -0.18472,-0.86207 -0.28894,-0.47281 -0.7175,-0.69781 -1.35459,-0.6"
|
||||
"9781 -0.0382,0 -0.0854,-0.002 -0.12313,0 z m 10.69306,0 c -0.56574,0.0239 -1.07953,0.22785 -1.55983,0.61574 -0.38091,0.30216 -0.6313,0.71675 -0.84148,1.16982 0,1.2e-4 4.04326,0 4.04326,0 0.007,-0.0721 0.0206,-0.16004 0.0206,-0.22568 0,-0.37441 -0.059"
|
||||
"9,-0.66504 -0.1847,-0.86207 -0.0574,-0.096 -0.13504,-0.19154 -0.20524,-0.26677 -0.27431,-0.28332 -0.65169,-0.43104 -1.14939,-0.43104 -0.0382,0 -0.0854,-0.002 -0.12317,0 z m 82.71244,0 c -0.58183,0.0179 -1.12519,0.21495 -1.62152,0.61574 -0.3743,0.3021"
|
||||
"6 -0.63126,0.71675 -0.84141,1.16982 0,1.2e-4 4.0227,0 4.0227,0 0.007,-0.0721 0.0206,-0.16004 0.0206,-0.22568 0,-0.37441 -0.0599,-0.66504 -0.1847,-0.86207 -0.28241,-0.46631 -0.71756,-0.69119 -1.35464,-0.69781 -0.0188,2.3e-4 -0.0223,-5.7e-4 -0.041,0 z "
|
||||
"m -53.77333,0.0411 c -0.54291,0.0644 -1.0478,0.3122 -1.51879,0.73879 -0.56482,0.51231 -0.97451,1.31685 -1.21092,2.38085 -0.0985,0.44656 -0.14371,0.8284 -0.14371,1.16983 0,0.46631 0.0895,0.8325 0.26688,1.10829 0.0471,0.0709 0.10982,0.14566 0.16415,0.2"
|
||||
"0525 0.292,0.31003 0.69964,0.47213 1.21092,0.47213 0.66334,0 1.24791,-0.24714 1.80611,-0.75945 0.56482,-0.51882 0.96789,-1.33158 1.21092,-2.42184 0.22328,-0.99825 0.19211,-1.74366 -0.12317,-2.21659 -0.30205,-0.45969 -0.74381,-0.67726 -1.35453,-0.6772"
|
||||
"6 -0.10364,0 -0.20729,-0.012 -0.30786,0 z m 37.08713,3.59166 c -0.5582,0.15114 -1.18387,0.2783 -2.01135,0.39006 -0.61733,0.0919 -1.05739,0.1888 -1.31354,0.28731 -0.22328,0.0919 -0.40307,0.21918 -0.55421,0.38995 -0.1444,0.16415 -0.24131,0.33651 -0.287"
|
||||
"32,0.53365 -0.0131,0.0788 -0.0205,0.16004 -0.0205,0.22568 0,0.005 -1.2e-4,0.0153 0,0.0205 6.8e-4,0.0156 -0.002,0.0465 0,0.0616 0.004,0.0297 0.0124,0.0748 0.0205,0.10251 0.003,0.009 0.0171,0.0322 0.0205,0.0411 0.007,0.0177 0.0116,0.0448 0.0206,0.0616 "
|
||||
"0.009,0.0166 0.03,0.0455 0.041,0.0615 0.0172,0.0236 0.0406,0.0599 0.0616,0.0821 0.16415,0.1839 0.49176,0.26677 0.96458,0.26677 0.51893,0 1.018,-0.0985 1.4778,-0.3283 0.45319,-0.22339 0.81847,-0.55672 1.08775,-0.94415 0.19703,-0.27579 0.35467,-0.70032"
|
||||
" 0.49257,-1.25201 z m -125.364659,-16.45612 55.082599,-56.87199 8.99518,0 -13.2998,56.87199 -7.398629,0 3.776339,-16.37106 -23.091518,0 -15.692032,16.37106 -8.372139,0 m 29.675679,-22.22896 18.88598,0 3.48449,-14.27618 c 1.40629,-5.66388 2.75996,-10."
|
||||
"38381 4.06102,-14.1598 -2.60007,3.25873 -6.04001,7.1252 -10.31982,11.59939 L 86.12566,729.8159\" />\n"
|
||||
" <path id=\"path2\" style=\"fill:none;stroke:#663366;stroke-width:3.28386545;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;\" d=\"m 242.27371,772.00406 c 0.26666,0.68537 0.5332,1.3697 0.81093,2.03897 0.42773,0.90933 0.922,1.77974"
|
||||
" 1.51639,2.59227 3.21051,4.36413 8.58716,6.75366 15.41353,7.34862 0,0 7.34302,0 7.34302,0 2.32173,-0.18116 4.75464,-0.51882 7.27636,-1.01207 4.34906,-0.85043 8.95929,-2.15678 13.74726,-3.90261 3.62705,-1.32245 7.3541,-2.88712 11.13662,-4.70567 8.2372"
|
||||
"9,-3.94873 16.74671,-9.04148 25.09506,-15.18751 2.74946,-2.02242 5.38772,-4.09758 7.92063,-6.20767 2.32173,-1.93179 4.54905,-3.89371 6.67649,-5.8772 5.93759,-5.72219 10.42009,-11.53376 12.95848,-16.63667 2.64386,-5.31398 3.17158,-9.85744 1.00533,-12."
|
||||
"71967 -1.32747,-1.7569 -3.54931,-2.69843 -6.40983,-2.91999 12.88633,-9.6692 20.3959,-21.3985 17.70204,-28.79369 -0.85545,-2.36008 -2.73838,-4.12086 -5.43784,-5.09458 -1.19973,-0.43149 -2.54946,-0.70488 -4.02144,-0.82931 0,0 -3.96585,0 -3.96585,0 -5.5"
|
||||
"3772,0.39942 -13.59076,2.38234 -20.42273,5.73052\" />\n"
|
||||
" </g>\n"
|
||||
" <g id=\"g3\" style=\"fill:#663366\" transform=\"matrix(1.705222,0,0,1.705222,858.2003,2786.4508)\">\n"
|
||||
" <path id=\"path3\" transform=\"translate(-451.3678,-427.5077)\" d=\"m 0,36 c 0,0 7.46,0 7.46,0 0,0 3.35,-14 3.35,-14 0,0 12.12,0 12.12,0 0,0 1.56,-6 1.56,-6 0,0 -12.17,0 -12.17,0 0,0 2.02,-9 2.02,-9 0,0 12.95,0 12.95,0 0,0 1.56,-7 1.56,-7 C 28."
|
||||
"85,0 8.4,0 8.4,0 8.4,0 0,36 0,36 z\" />\n"
|
||||
" <path id=\"path4\" transform=\"translate(-425.4178,-417.5077)\" d=\"m 7.51,26 c 0,0 2.24,-9.4 2.24,-9.4 1.18,-5.09 3.67,-9.6 8.38,-9.6 0.42,0 0.83,0.21 1.14,0.26 0,0 1.82,-7.21 1.82,-7.21 -0.42,0 -0.88,-0.05 -1.4,-0.05 -3.47,0 -6.38,2.44 -8.32,"
|
||||
"5.94 0,0 -0.2,0 -0.2,0 C 11.46,4.23 11.71,2.61 11.9,1 11.9,1 5.47,1 5.47,1 5.1,3.08 4.53,7.15 3.66,10.82 3.66,10.82 0,26 0,26 c 0,0 7.51,0 7.51,0 z\" />\n"
|
||||
" <path id=\"path5\" transform=\"translate(-404.7878,-417.5077)\" d=\"M 20.06,19.25 C 17.99,20.26 15.63,20 12.88,20 10.71,20 9.03,19.62 8.11,18.88 7.63,18.07 7.43,16.81 7.47,16 17.6,16.27 23.99,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.73,0 0."
|
||||
"73,8.08 0.34,15.86 0,22.65 3.52,26 10.78,26 c 2.79,0 6.49,-0.32 9.52,-1.23 0,0 -0.24,-5.52 -0.24,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.47,10 9.1,7.91 11.22,6 14.69,6 c 1.71,0 2.69,0.65 2.63,1.53 z\" />\n"
|
||||
" <path id=\"path6\" transform=\"translate(-378.2678,-417.5077)\" d=\"M 20.05,19.25 C 17.98,20.26 15.62,20 12.88,20 10.7,20 9.03,19.62 8.11,18.88 7.63,18.07 7.42,16.81 7.46,16 17.6,16.27 23.98,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.72,0 0.7"
|
||||
"2,8.08 0.33,15.86 0,22.65 3.52,26 10.77,26 c 2.8,0 6.5,-0.32 9.53,-1.23 0,0 -0.25,-5.52 -0.25,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.46,10 9.1,7.91 11.21,6 14.68,6 c 1.71,0 2.7,0.65 2.64,1.53 z\" />\n"
|
||||
" <path id=\"path7\" transform=\"translate(-342.3578,-417.5077)\" d=\"M 22.74,26 C 22.8,22.83 23.56,17.85 24.35,14.58 24.35,14.58 27.56,1 27.56,1 25.52,0.31 22.34,0 19.28,0 6.86,0 0.7,9.2 0.27,17.82 0,23.23 2.93,26 7.49,26 c 2.95,0 6.28,-1.43 8.8"
|
||||
"7,-5.73 0,0 0.11,0 0.11,0 -0.2,2.07 -0.44,4.08 -0.57,5.73 0,0 6.84,0 6.84,0 z M 17.61,11.72 C 16.15,18.08 13.17,20 10.95,20 8.88,20 7.98,18.53 8.1,16.39 8.34,11.56 12.16,6 16.98,6 c 0.78,0 1.39,-0.14 1.96,-0.28 0,0 -1.33,6 -1.33,6 z\" />\n"
|
||||
" <path id=\"path8\" transform=\"translate(-314.7278,-417.5077)\" d=\"m 0,24.82 c 1.44,1.12 4.46,1.13 7.61,1.18 6.73,0.05 11.81,-2.89 12.11,-8.29 0.17,-3.6 -2.62,-5.73 -5.35,-7.16 C 12.4,9.6 11.41,8.69 11.46,7.63 11.53,6.2 12.87,6 14.84,6 c 2.22,"
|
||||
"0 4,0.27 5.02,0.47 0,0 2.02,-5.42 2.02,-5.42 C 20.73,0.36 18.43,0 15.48,0 8.95,0 4.17,3.45 3.9,8.69 c -0.16,3.24 2.17,5.42 4.99,6.9 2.28,1.17 3.06,2.07 3,3.34 C 11.82,20.21 10.68,20 8.61,20 6.18,20 3.49,19.68 2.07,19.46 2.07,19.46 0,24.82 0,24.82 z\""
|
||||
" />\n"
|
||||
" <path id=\"path9\" transform=\"translate(-282.2778,-428.5077)\" d=\"m 7.45,37 c 0,0 6.05,-25 6.05,-25 0,0 -7.41,0 -7.41,0 0,0 -6.09,25 -6.09,25 0,0 7.45,0 7.45,0 z M 10.92,9 C 13.46,9 15.72,6.9 15.86,3.3 15.98,0.86 14.4,0 12.07,0 9.64,0 7.42,1."
|
||||
"58 7.29,3.94 7.17,6.32 8.75,9 10.92,9 z\" />\n"
|
||||
" <path id=\"path10\" transform=\"translate(-267.9878,-416.8177)\" d=\"m 7.46,25.31 c 0,0 2.64,-11.26 2.64,-11.26 1.37,-5.73 4.32,-7.74 6.75,-7.74 1.92,0 2.48,0.82 2.39,2.01 -0.05,0.96 -0.2,1.97 -0.4,2.87 0,0 -3.36,14.12 -3.36,14.12 0,0 7.46,0 7."
|
||||
"46,0 0,0 3.54,-14.81 3.54,-14.81 C 26.75,9.22 27.05,7.31 27.11,6.15 27.33,1.64 25.08,0 20.94,0 c -3.32,0 -6.55,1.54 -9.1,4.88 0,0 -0.1,0 -0.1,0 0,0 0.68,-4.57 0.68,-4.57 0,0 -6.58,0 -6.58,0 C 5.41,2.45 4.86,5.04 4.08,8.06 4.08,8.06 0,25.31 0,25.31 c "
|
||||
"0,0 7.46,0 7.46,0 z\" />\n"
|
||||
" <path id=\"path11\" transform=\"translate(-228.4278,-427.5077)\" d=\"m 0,36 c 0,0 7.46,0 7.46,0 0,0 3.36,-14 3.36,-14 0,0 12.11,0 12.11,0 0,0 1.56,-6 1.56,-6 0,0 -12.17,0 -12.17,0 0,0 2.02,-9 2.02,-9 0,0 12.95,0 12.95,0 0,0 1.56,-7 1.56,-7 C 28"
|
||||
".85,0 8.4,0 8.4,0 8.4,0 0,36 0,36 z\" />\n"
|
||||
" <path id=\"path12\" transform=\"translate(-202.4778,-417.5077)\" d=\"m 7.51,26 c 0,0 2.24,-9.4 2.24,-9.4 1.18,-5.09 3.67,-9.6 8.38,-9.6 0.42,0 0.83,0.21 1.14,0.26 0,0 1.82,-7.21 1.82,-7.21 -0.42,0 -0.88,-0.05 -1.4,-0.05 -3.47,0 -6.38,2.44 -8.32"
|
||||
",5.94 0,0 -0.2,0 -0.2,0 C 11.46,4.23 11.71,2.61 11.9,1 11.9,1 5.47,1 5.47,1 5.11,3.08 4.53,7.15 3.66,10.82 3.66,10.82 0,26 0,26 c 0,0 7.51,0 7.51,0 z\" />\n"
|
||||
" <path id=\"path13\" transform=\"translate(-181.8478,-417.5077)\" d=\"M 20.06,19.25 C 17.99,20.26 15.63,20 12.88,20 10.71,20 9.03,19.62 8.11,18.88 7.63,18.07 7.43,16.81 7.47,16 17.6,16.27 23.99,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.73,0 0"
|
||||
".73,8.08 0.34,15.86 0,22.65 3.53,26 10.78,26 c 2.79,0 6.5,-0.32 9.52,-1.23 0,0 -0.24,-5.52 -0.24,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.47,10 9.1,7.91 11.22,6 14.69,6 c 1.71,0 2.69,0.65 2.63,1.53 z\" />\n"
|
||||
" <path id=\"path14\" transform=\"translate(-155.3278,-417.5077)\" d=\"M 20.05,19.25 C 17.98,20.26 15.62,20 12.88,20 10.7,20 9.03,19.62 8.11,18.88 7.63,18.07 7.42,16.81 7.46,16 17.6,16.27 23.98,13.93 24.31,7.53 24.55,2.7 21.02,0 15.89,0 6.72,0 0."
|
||||
"72,8.08 0.33,15.86 0,22.65 3.52,26 10.77,26 c 2.8,0 6.5,-0.32 9.53,-1.23 0,0 -0.25,-5.52 -0.25,-5.52 z M 17.32,7.53 C 17.2,9.91 14.26,10.05 8.46,10 9.1,7.91 11.21,6 14.68,6 c 1.71,0 2.7,0.65 2.64,1.53 z\" />\n"
|
||||
" <path id=\"path15\" transform=\"translate(-128.9478,-428.5077)\" d=\"M 23.31,0 C 23.31,0 20.5,11.36 20.5,11.36 19.48,10.94 18.15,11 17.11,11 7.53,11 0.75,19.2 0.3,28.08 0,34.34 3.34,37 7.64,37 c 3.01,0 6.18,-1.33 8.58,-4.77 0,0 0.1,0 0.1,0 0,0 "
|
||||
"-0.57,4.77 -0.57,4.77 0,0 6.78,0 6.78,0 0.31,-3 0.96,-6.57 1.69,-9.83 0,0 6.49,-27.17 6.49,-27.17 0,0 -7.4,0 -7.4,0 z M 17.47,24.42 C 16.3,29.35 13.54,31 11.36,31 9.19,31 7.98,29.49 8.13,26.8 8.38,21.82 11.8,17 16.25,17 c 1.25,0 2.32,0.19 2.91,0.47 0"
|
||||
",0 -1.69,6.95 -1.69,6.95 z\" />\n"
|
||||
" <path id=\"path16\" transform=\"translate(-99.2378,-417.5077)\" d=\"M 10.61,26 C 19.31,26 26.02,19.41 26.49,10.44 26.78,4.5 23.08,0 16.25,0 7.23,0 0.76,7.3 0.31,16.12 0,22.54 4.14,26 10.61,26 z m 1.17,-6 C 9.24,20 7.84,18.38 7.99,15.96 8.19,11."
|
||||
"93 10.68,6 14.97,6 c 2.96,0 3.87,2.27 3.75,4.5 -0.22,4.4 -2.9,9.5 -6.94,9.5 z\" />\n"
|
||||
" <path id=\"path17\" transform=\"translate(-70.6778,-417.5077)\" d=\"M 7.2,26 C 7.2,26 9.9,14.58 9.9,14.58 11.03,9.49 13.85,6 16.38,6 c 1.82,0 2.32,1.33 2.23,3.07 -0.05,0.9 -0.25,1.91 -0.46,2.91 0,0 -3.34,14.02 -3.34,14.02 0,0 7.2,0 7.2,0 0,0 2."
|
||||
"7,-11.47 2.7,-11.47 C 25.95,9.28 28.61,6 31.09,6 c 1.71,0 2.42,1.22 2.34,2.96 -0.05,1.01 -0.26,2.12 -0.52,3.13 0,0 -3.24,13.91 -3.24,13.91 0,0 7.25,0 7.25,0 0,0 3.49,-14.81 3.49,-14.81 0.27,-1.33 0.58,-3.4 0.63,-4.46 C 41.26,2.33 39.11,0 35.23,0 31.9"
|
||||
"1,0 28.68,1.5 26.23,4.66 26.14,2.38 24.51,0 20.47,0 17.2,0 14.08,1.48 11.58,4.83 c 0,0 -0.1,0 -0.1,0 0,0 0.67,-3.83 0.67,-3.83 0,0 -6.42,0 -6.42,0 C 5.31,3.14 4.8,5.73 4.02,8.75 4.02,8.75 0,26 0,26 c 0,0 7.2,0 7.2,0 z\" />\n"
|
||||
" </g>\n"
|
||||
" </g>\n"
|
||||
"</svg>\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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -3768,10 +3638,10 @@ static const unsigned char temp_binary_data_20[] =
|
|||
" id=\"line44\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:0.94117647\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -4525,10 +4395,10 @@ static const unsigned char temp_binary_data_21[] =
|
|||
" id=\"line131\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\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\" /></g></g></g></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\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\" /></g></g></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -5748,10 +5618,10 @@ static const unsigned char temp_binary_data_24[] =
|
|||
" id=\"path54\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -5921,10 +5791,10 @@ static const unsigned char temp_binary_data_25[] =
|
|||
" id=\"path47\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -5974,10 +5844,10 @@ static const unsigned char temp_binary_data_26[] =
|
|||
" id=\"path3\"\n"
|
||||
" style=\"fill:#a45c94;fill-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -6029,10 +5899,10 @@ static const unsigned char temp_binary_data_27[] =
|
|||
" id=\"path3\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -6160,10 +6030,10 @@ static const unsigned char temp_binary_data_28[] =
|
|||
" id=\"path23\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
|
||||
"<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n"
|
||||
"\n"
|
||||
|
|
@ -6434,10 +6304,10 @@ static const unsigned char temp_binary_data_29[] =
|
|||
" id=\"path54\"\n"
|
||||
" style=\"stroke:#a45c94;stroke-opacity:1\" /></svg>";
|
||||
|
||||
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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
|
||||
"\r\n"
|
||||
"<COLOUR_SCHEME font=\"<Monospaced>; 13.0\">\r\n"
|
||||
|
|
@ -8555,10 +8425,10 @@ static const unsigned char temp_binary_data_66[] =
|
|||
" <COLOUR name=\"Error\" colour=\"FFE60000\"/>\r\n"
|
||||
"</COLOUR_SCHEME>\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[] =
|
||||
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"
|
||||
"\r\n"
|
||||
"<COLOUR_SCHEME font=\"<Monospaced>; 13.0\">\r\n"
|
||||
|
|
@ -8583,10 +8453,10 @@ static const unsigned char temp_binary_data_67[] =
|
|||
" <COLOUR name=\"Error\" colour=\"ffcc0000\"/>\r\n"
|
||||
"</COLOUR_SCHEME>\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",
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<JUCERPROJECT id="M70qfTRRk" name="Projucer" projectType="guiapp" juceFolder="../../juce"
|
||||
version="8.0.0" bundleIdentifier="com.juce.theprojucer"
|
||||
companyName="Raw Material Software Limited"
|
||||
version="8.0.0" bundleIdentifier="com.juce.theprojucer" companyName="Raw Material Software Limited"
|
||||
companyCopyright="Raw Material Software Limited" useAppConfig="0"
|
||||
addUsingNamespaceToJuceHeader="1" jucerFormatVersion="1">
|
||||
<EXPORTFORMATS>
|
||||
|
|
@ -116,16 +115,6 @@
|
|||
<FILE id="dsxevB" name="jucer_StartPageTreeHolder.h" compile="0" resource="0"
|
||||
file="Source/Application/StartPage/jucer_StartPageTreeHolder.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{70333C48-4F84-A180-24E1-0EC9EF223F3B}" name="UserAccount">
|
||||
<FILE id="Rw7w0l" name="jucer_LicenseController.h" compile="0" resource="0"
|
||||
file="Source/Application/UserAccount/jucer_LicenseController.h"/>
|
||||
<FILE id="rUtPud" name="jucer_LicenseQueryThread.h" compile="0" resource="0"
|
||||
file="Source/Application/UserAccount/jucer_LicenseQueryThread.h"/>
|
||||
<FILE id="Dwndl3" name="jucer_LicenseState.h" compile="0" resource="0"
|
||||
file="Source/Application/UserAccount/jucer_LicenseState.h"/>
|
||||
<FILE id="d5kWEN" name="jucer_LoginFormComponent.h" compile="0" resource="0"
|
||||
file="Source/Application/UserAccount/jucer_LoginFormComponent.h"/>
|
||||
</GROUP>
|
||||
<GROUP id="{2F08ABDF-C7BB-5F54-55F5-0C2E27983930}" name="Windows">
|
||||
<FILE id="w1XB4w" name="jucer_AboutWindowComponent.h" compile="0" resource="0"
|
||||
file="Source/Application/Windows/jucer_AboutWindowComponent.h"/>
|
||||
|
|
@ -204,7 +193,6 @@
|
|||
file="Source/BinaryData/Icons/export_visualStudio.svg"/>
|
||||
<FILE id="G0oYd6" name="export_xcode.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/Icons/export_xcode.svg"/>
|
||||
<FILE id="CfDTJ0" name="agplv3_logo.svg" compile="0" resource="1" file="Source/BinaryData/Icons/agplv3_logo.svg"/>
|
||||
<FILE id="Zrx1Gl" name="juce_icon.png" compile="0" resource="1" file="Source/BinaryData/Icons/juce_icon.png"/>
|
||||
<FILE id="iPYmG9" name="wizard_AnimatedApp.svg" compile="0" resource="1"
|
||||
file="Source/BinaryData/Icons/wizard_AnimatedApp.svg"/>
|
||||
|
|
@ -550,8 +538,6 @@
|
|||
resource="0" file="Source/Project/UI/jucer_ProjectContentComponent.h"/>
|
||||
<FILE id="itkVli" name="jucer_ProjectMessagesComponent.h" compile="0"
|
||||
resource="0" file="Source/Project/UI/jucer_ProjectMessagesComponent.h"/>
|
||||
<FILE id="UUlUDF" name="jucer_UserAvatarComponent.h" compile="0" resource="0"
|
||||
file="Source/Project/UI/jucer_UserAvatarComponent.h"/>
|
||||
</GROUP>
|
||||
<FILE id="JT1rMJ" name="jucer_Project.cpp" compile="1" resource="0"
|
||||
file="Source/Project/jucer_Project.cpp"/>
|
||||
|
|
|
|||
|
|
@ -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<void (const String&)> 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<LicenseStateListener> stateListeners;
|
||||
LicenseQueryThread licenseQueryThread;
|
||||
bool hasRetriedLicenseCheck = false;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseController)
|
||||
};
|
||||
|
|
@ -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<int, LicenseState::Type>;
|
||||
|
||||
inline LicenseVersionAndType findBestLicense (std::vector<LicenseVersionAndType>&& 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<String, ErrorType>;
|
||||
using LicenseQueryCallback = std::function<void (ErrorMessageAndType, LicenseState)>;
|
||||
|
||||
//==============================================================================
|
||||
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<UserLicenseQuery> (state.authToken), updatedState);
|
||||
|
||||
WeakReference<LicenseQueryThread> 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<UserLogin> (email, password), state);
|
||||
|
||||
if (result == ErrorMessageAndType())
|
||||
result = runTask (std::make_unique<UserLicenseQuery> (state.authToken), state);
|
||||
|
||||
if (result != ErrorMessageAndType())
|
||||
state = {};
|
||||
|
||||
WeakReference<LicenseQueryThread> 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<LicenseHelpers::LicenseVersionAndType> 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<AccountEnquiryBase> 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)
|
||||
};
|
||||
|
|
@ -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;
|
||||
};
|
||||
|
|
@ -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<LoginFormComponent> { 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)
|
||||
};
|
||||
|
|
@ -161,7 +161,6 @@ void ProjucerApplication::handleAsyncUpdate()
|
|||
|
||||
void ProjucerApplication::doBasicApplicationSetup()
|
||||
{
|
||||
licenseController = std::make_unique<LicenseController>();
|
||||
LookAndFeel::setDefaultLookAndFeel (&lookAndFeel);
|
||||
initCommandManager();
|
||||
icons = std::make_unique<Icons>();
|
||||
|
|
@ -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 <CommandID>& 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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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> licenseController;
|
||||
|
||||
std::unique_ptr<TooltipWindow> tooltipWindow;
|
||||
AvailableModulesList jucePathModulesList, userPathsModulesList;
|
||||
|
||||
|
|
|
|||
|
|
@ -95,8 +95,6 @@ namespace CommandIDs
|
|||
zoomNormal = 0x300073,
|
||||
spaceBarDrag = 0x300074,
|
||||
|
||||
loginLogout = 0x300090,
|
||||
|
||||
showForum = 0x300100,
|
||||
showAPIModules = 0x300101,
|
||||
showAPIClasses = 0x300102,
|
||||
|
|
|
|||
|
|
@ -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<BlurOverlayWithComponent> (*this, std::make_unique<LoginFormComponent> (*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 = [&]
|
||||
|
|
|
|||
|
|
@ -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<Component> 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();
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 26 KiB |
|
|
@ -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 "<notLoggedIn>";
|
||||
case Type::noLicenseChosenYet: return "<noLicenseChosenYet>";
|
||||
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 "<unknown>";
|
||||
}
|
||||
}
|
||||
|
||||
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<String, String>& result)
|
||||
{
|
||||
ensureLicenseWebviewIsOpenWithPage (startURL);
|
||||
|
||||
licenseWebview->setPageCallback ([this,valueToQuery,&result] (const String& cmd, const HashMap<String, String>& params)
|
||||
{
|
||||
if (valueToQuery.isEmpty() || cmd == valueToQuery)
|
||||
{
|
||||
result.clear();
|
||||
|
||||
for (HashMap<String, String>::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();
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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() };
|
||||
|
|
|
|||
|
|
@ -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<AccessibilityHandler> createAccessibilityHandler() override
|
||||
{
|
||||
return interactive ? std::make_unique<AccessibilityHandler> (*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;
|
||||
};
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||