@@ -35,7 +35,7 @@ ifeq ($(CONFIG),Debug) | |||
TARGET_ARCH := | |||
endif | |||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.0.0" "-DJUCE_APP_VERSION_HEX=0x60000" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_REPORT_APP_USAGE=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60000" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" $(shell pkg-config --cflags freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.0.0" "-DJUCE_APP_VERSION_HEX=0x60000" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60000" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" | |||
JUCE_TARGET_APP := Projucer | |||
@@ -56,7 +56,7 @@ ifeq ($(CONFIG),Release) | |||
TARGET_ARCH := | |||
endif | |||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.0.0" "-DJUCE_APP_VERSION_HEX=0x60000" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_REPORT_APP_USAGE=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60000" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_STANDALONE_APPLICATION=1" $(shell pkg-config --cflags freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=6.0.0" "-DJUCE_APP_VERSION_HEX=0x60000" "-DJUCE_DISPLAY_SPLASH_SCREEN=0" "-DJUCE_USE_DARK_SPLASH_SCREEN=1" "-DJUCE_PROJUCER_VERSION=0x60000" "-DJUCE_MODULE_AVAILABLE_juce_build_tools=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_LOG_ASSERTIONS=1" "-DJUCE_USE_CURL=1" "-DJUCE_LOAD_CURL_SYMBOLS_LAZILY=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_WEB_BROWSER=0" "-DJUCE_STANDALONE_APPLICATION=1" $(shell pkg-config --cflags freetype2) -pthread -I../../JuceLibraryCode -I../../../Build -I../../../../modules $(CPPFLAGS) | |||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_RTAS=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" | |||
JUCE_TARGET_APP := Projucer | |||
@@ -97,7 +97,6 @@ OBJECTS_APP := \ | |||
$(JUCE_OBJDIR)/jucer_JucerDocument_ff8afcc2.o \ | |||
$(JUCE_OBJDIR)/jucer_ObjectTypes_4406f01c.o \ | |||
$(JUCE_OBJDIR)/jucer_PaintRoutine_e1e891ee.o \ | |||
$(JUCE_OBJDIR)/jucer_LicenseController_9abff0cf.o \ | |||
$(JUCE_OBJDIR)/jucer_CompileEngineClient_aee8c99c.o \ | |||
$(JUCE_OBJDIR)/jucer_CompileEngineServer_5d8914.o \ | |||
$(JUCE_OBJDIR)/jucer_DownloadCompileEngineThread_19bb4bb3.o \ | |||
@@ -288,11 +287,6 @@ $(JUCE_OBJDIR)/jucer_PaintRoutine_e1e891ee.o: ../../Source/ComponentEditor/jucer | |||
@echo "Compiling jucer_PaintRoutine.cpp" | |||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
$(JUCE_OBJDIR)/jucer_LicenseController_9abff0cf.o: ../../Source/Licenses/jucer_LicenseController.cpp | |||
-$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
@echo "Compiling jucer_LicenseController.cpp" | |||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<" | |||
$(JUCE_OBJDIR)/jucer_CompileEngineClient_aee8c99c.o: ../../Source/LiveBuildEngine/jucer_CompileEngineClient.cpp | |||
-$(V_AT)mkdir -p $(JUCE_OBJDIR) | |||
@echo "Compiling jucer_CompileEngineClient.cpp" | |||
@@ -193,10 +193,6 @@ | |||
isa = PBXBuildFile; | |||
fileRef = C187718F7B9EBA88584B43F3; | |||
}; | |||
6FD0752A5CADCF60D79FDBB7 = { | |||
isa = PBXBuildFile; | |||
fileRef = 51CBE59779A36D1B80B26974; | |||
}; | |||
D25EBE02B55DB244BE0D5635 = { | |||
isa = PBXBuildFile; | |||
fileRef = DE3E6B2614229FAD56D50770; | |||
@@ -685,13 +681,6 @@ | |||
path = "../../Source/ComponentEditor/jucer_JucerDocument.cpp"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
28D0199327887FFABF9C3F20 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
name = "jucer_UserSettingsPopup.h"; | |||
path = "../../Source/Utility/UI/jucer_UserSettingsPopup.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
2BD9B4556479A8A41740BCAE = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
@@ -1056,13 +1045,6 @@ | |||
path = "../../Source/CodeEditor/jucer_DocumentEditorComponent.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
51CBE59779A36D1B80B26974 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.cpp.cpp; | |||
name = "jucer_LicenseController.cpp"; | |||
path = "../../Source/Licenses/jucer_LicenseController.cpp"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
5432B7B9B2CF2EAEC8B66D5C = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
@@ -1378,13 +1360,6 @@ | |||
path = "../../Source/ComponentEditor/jucer_GeneratedCode.cpp"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
790F6302B9A0620F23F8A6C1 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
name = "jucer_LicenseThread.h"; | |||
path = "../../Source/Licenses/jucer_LicenseThread.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
7AB7640968FAAC73072FBD10 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = file; | |||
@@ -1497,13 +1472,6 @@ | |||
path = "../../Source/Wizards/jucer_NewProjectWizardComponent.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
8C281F2F8EA3AD614ADF7955 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = text.html; | |||
name = offlinepage.html; | |||
path = ../../Source/BinaryData/offlinepage.html; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
8C52A3DDA62A746AA7A68535 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.cpp.cpp; | |||
@@ -1651,13 +1619,6 @@ | |||
path = "../../Source/ComponentEditor/PaintElements/jucer_PaintElementGroup.cpp"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
98E6D61BFF7D85F0E00F0FBF = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
name = "jucer_LicenseWebview.h"; | |||
path = "../../Source/Licenses/jucer_LicenseWebview.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
9914F905BFCFBE5F76619670 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
@@ -1987,13 +1948,6 @@ | |||
path = "../../Source/Project/jucer_Project.cpp"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
BB187CD608EB6368B29EC335 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.c.h; | |||
name = "jucer_LicenseController.h"; | |||
path = "../../Source/Licenses/jucer_LicenseController.h"; | |||
sourceTree = "SOURCE_ROOT"; | |||
}; | |||
BC3B310D42C489E8B8D93327 = { | |||
isa = PBXFileReference; | |||
lastKnownFileType = sourcecode.cpp.cpp; | |||
@@ -2721,7 +2675,6 @@ | |||
41105E536155E394E54BDD35, | |||
5F6584B675E30761521A9F42, | |||
59B08C7B13B8EA5137ACA77A, | |||
8C281F2F8EA3AD614ADF7955, | |||
4073A12E196BDDADE211E19F, | |||
); | |||
name = BinaryData; | |||
@@ -2875,17 +2828,6 @@ | |||
name = ComponentEditor; | |||
sourceTree = "<group>"; | |||
}; | |||
144B649D98AE8316058B8281 = { | |||
isa = PBXGroup; | |||
children = ( | |||
51CBE59779A36D1B80B26974, | |||
BB187CD608EB6368B29EC335, | |||
790F6302B9A0620F23F8A6C1, | |||
98E6D61BFF7D85F0E00F0FBF, | |||
); | |||
name = Licenses; | |||
sourceTree = "<group>"; | |||
}; | |||
9014CA5F3B8D23E883D6975E = { | |||
isa = PBXGroup; | |||
children = ( | |||
@@ -3049,7 +2991,6 @@ | |||
FE20FE5805A02A4843048200, | |||
0CECD562059DFD7FBFB37E3C, | |||
3D6FD9C0065BF16568EC0AB7, | |||
28D0199327887FFABF9C3F20, | |||
); | |||
name = UI; | |||
sourceTree = "<group>"; | |||
@@ -3095,7 +3036,6 @@ | |||
DC3A4B0AD79334BA8A7E0661, | |||
F1B44F007A02A0FAE4DC8D79, | |||
F6BD840F9A06F2DA891E2CB8, | |||
144B649D98AE8316058B8281, | |||
20B39D53B7DAAB53C7533532, | |||
89E9055A179B4C2019B4E1AE, | |||
4DCC5D64BBE8DE85360A3D57, | |||
@@ -3219,7 +3159,6 @@ | |||
"JucePlugin_Build_Standalone=0", | |||
"JucePlugin_Build_Unity=0", | |||
"JUCE_DISPLAY_SPLASH_SCREEN=0", | |||
"JUCE_REPORT_APP_USAGE=0", | |||
"JUCE_USE_DARK_SPLASH_SCREEN=1", | |||
"JUCE_PROJUCER_VERSION=0x60000", | |||
"JUCE_MODULE_AVAILABLE_juce_build_tools=1", | |||
@@ -3236,6 +3175,7 @@ | |||
"JUCE_LOAD_CURL_SYMBOLS_LAZILY=1", | |||
"JUCE_ALLOW_STATIC_NULL_VARIABLES=0", | |||
"JUCE_STRICT_REFCOUNTEDPOINTER=1", | |||
"JUCE_WEB_BROWSER=0", | |||
"JUCE_STANDALONE_APPLICATION=1", | |||
); | |||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | |||
@@ -3283,7 +3223,6 @@ | |||
"JucePlugin_Build_Standalone=0", | |||
"JucePlugin_Build_Unity=0", | |||
"JUCE_DISPLAY_SPLASH_SCREEN=0", | |||
"JUCE_REPORT_APP_USAGE=0", | |||
"JUCE_USE_DARK_SPLASH_SCREEN=1", | |||
"JUCE_PROJUCER_VERSION=0x60000", | |||
"JUCE_MODULE_AVAILABLE_juce_build_tools=1", | |||
@@ -3300,6 +3239,7 @@ | |||
"JUCE_LOAD_CURL_SYMBOLS_LAZILY=1", | |||
"JUCE_ALLOW_STATIC_NULL_VARIABLES=0", | |||
"JUCE_STRICT_REFCOUNTEDPOINTER=1", | |||
"JUCE_WEB_BROWSER=0", | |||
"JUCE_STANDALONE_APPLICATION=1", | |||
); | |||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0; | |||
@@ -3481,7 +3421,6 @@ | |||
209FCCC2155A1FCB7E11E20D, | |||
C93569F47B4AC1A8E37992ED, | |||
1B988E139004D8E2850EB656, | |||
6FD0752A5CADCF60D79FDBB7, | |||
D25EBE02B55DB244BE0D5635, | |||
85E7FCB0516EFF853FA7B380, | |||
CC6C4D351BA9B473E5F95791, | |||
@@ -64,7 +64,7 @@ | |||
<Optimization>Disabled</Optimization> | |||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -106,7 +106,7 @@ | |||
<ClCompile> | |||
<Optimization>Full</Optimization> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -211,7 +211,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_JucerDocument.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.cpp"/> | |||
@@ -1585,9 +1584,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_BuildTabStatusComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ComponentListComponent.h"/> | |||
@@ -1653,7 +1649,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_JucerTreeViewBase.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_ProjucerLookAndFeel.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizardClasses.h"/> | |||
@@ -2126,7 +2121,6 @@ | |||
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"/> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"/> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"/> | |||
<None Include="..\..\..\..\modules\juce_core\native\java\README.txt"/> | |||
<None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
@@ -41,9 +41,6 @@ | |||
<Filter Include="Projucer\ComponentEditor"> | |||
<UniqueIdentifier>{5F21E507-E5E8-0A74-F1AE-874BB67C26CC}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\Licenses"> | |||
<UniqueIdentifier>{E5D23B90-895E-EB0B-AC18-C7EBB25546AE}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\LiveBuildEngine\UI"> | |||
<UniqueIdentifier>{E880260F-D9FB-64B6-244B-6F06B70FE9EE}</UniqueIdentifier> | |||
</Filter> | |||
@@ -442,9 +439,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"> | |||
<Filter>Projucer\LiveBuildEngine</Filter> | |||
</ClCompile> | |||
@@ -2166,15 +2160,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"> | |||
<Filter>Projucer\LiveBuildEngine\UI</Filter> | |||
</ClInclude> | |||
@@ -2370,9 +2355,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"> | |||
<Filter>Projucer\Wizards</Filter> | |||
</ClInclude> | |||
@@ -3785,9 +3767,6 @@ | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
@@ -64,7 +64,7 @@ | |||
<Optimization>Disabled</Optimization> | |||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -106,7 +106,7 @@ | |||
<ClCompile> | |||
<Optimization>Full</Optimization> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -211,7 +211,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_JucerDocument.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.cpp"/> | |||
@@ -1585,9 +1584,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_BuildTabStatusComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ComponentListComponent.h"/> | |||
@@ -1653,7 +1649,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_JucerTreeViewBase.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_ProjucerLookAndFeel.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizardClasses.h"/> | |||
@@ -2126,7 +2121,6 @@ | |||
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"/> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"/> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"/> | |||
<None Include="..\..\..\..\modules\juce_core\native\java\README.txt"/> | |||
<None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
@@ -41,9 +41,6 @@ | |||
<Filter Include="Projucer\ComponentEditor"> | |||
<UniqueIdentifier>{5F21E507-E5E8-0A74-F1AE-874BB67C26CC}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\Licenses"> | |||
<UniqueIdentifier>{E5D23B90-895E-EB0B-AC18-C7EBB25546AE}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\LiveBuildEngine\UI"> | |||
<UniqueIdentifier>{E880260F-D9FB-64B6-244B-6F06B70FE9EE}</UniqueIdentifier> | |||
</Filter> | |||
@@ -442,9 +439,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"> | |||
<Filter>Projucer\LiveBuildEngine</Filter> | |||
</ClCompile> | |||
@@ -2166,15 +2160,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"> | |||
<Filter>Projucer\LiveBuildEngine\UI</Filter> | |||
</ClInclude> | |||
@@ -2370,9 +2355,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"> | |||
<Filter>Projucer\Wizards</Filter> | |||
</ClInclude> | |||
@@ -3785,9 +3767,6 @@ | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
@@ -64,7 +64,7 @@ | |||
<Optimization>Disabled</Optimization> | |||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -106,7 +106,7 @@ | |||
<ClCompile> | |||
<Optimization>Full</Optimization> | |||
<AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\Build;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_REPORT_APP_USAGE=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=6.0.0;JUCE_APP_VERSION_HEX=0x60000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JUCE_DISPLAY_SPLASH_SCREEN=0;JUCE_USE_DARK_SPLASH_SCREEN=1;JUCE_PROJUCER_VERSION=0x60000;JUCE_MODULE_AVAILABLE_juce_build_tools=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_LOG_ASSERTIONS=1;JUCE_USE_CURL=1;JUCE_LOAD_CURL_SYMBOLS_LAZILY=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_WEB_BROWSER=0;JUCE_STANDALONE_APPLICATION=1;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> | |||
<RuntimeTypeInfo>true</RuntimeTypeInfo> | |||
<PrecompiledHeader/> | |||
@@ -211,7 +211,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_JucerDocument.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.cpp"/> | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"/> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineServer.cpp"/> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_DownloadCompileEngineThread.cpp"/> | |||
@@ -1585,9 +1584,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_ObjectTypes.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.h"/> | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"/> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_BuildTabStatusComponent.h"/> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ComponentListComponent.h"/> | |||
@@ -1653,7 +1649,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_JucerTreeViewBase.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_ProjucerLookAndFeel.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"/> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizard.h"/> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewProjectWizardClasses.h"/> | |||
@@ -2126,7 +2121,6 @@ | |||
<None Include="..\..\Source\BinaryData\colourscheme_dark.xml"/> | |||
<None Include="..\..\Source\BinaryData\colourscheme_light.xml"/> | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"/> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"/> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"/> | |||
<None Include="..\..\..\..\modules\juce_core\native\java\README.txt"/> | |||
<None Include="..\..\..\..\modules\juce_graphics\image_formats\jpglib\changes to libjpeg for JUCE.txt"/> | |||
@@ -41,9 +41,6 @@ | |||
<Filter Include="Projucer\ComponentEditor"> | |||
<UniqueIdentifier>{5F21E507-E5E8-0A74-F1AE-874BB67C26CC}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\Licenses"> | |||
<UniqueIdentifier>{E5D23B90-895E-EB0B-AC18-C7EBB25546AE}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="Projucer\LiveBuildEngine\UI"> | |||
<UniqueIdentifier>{E880260F-D9FB-64B6-244B-6F06B70FE9EE}</UniqueIdentifier> | |||
</Filter> | |||
@@ -442,9 +439,6 @@ | |||
<ClCompile Include="..\..\Source\ComponentEditor\jucer_PaintRoutine.cpp"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\Licenses\jucer_LicenseController.cpp"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClCompile> | |||
<ClCompile Include="..\..\Source\LiveBuildEngine\jucer_CompileEngineClient.cpp"> | |||
<Filter>Projucer\LiveBuildEngine</Filter> | |||
</ClCompile> | |||
@@ -2166,15 +2160,6 @@ | |||
<ClInclude Include="..\..\Source\ComponentEditor\jucer_UtilityFunctions.h"> | |||
<Filter>Projucer\ComponentEditor</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseController.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseThread.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Licenses\jucer_LicenseWebview.h"> | |||
<Filter>Projucer\Licenses</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\LiveBuildEngine\UI\jucer_ActivityListComponent.h"> | |||
<Filter>Projucer\LiveBuildEngine\UI</Filter> | |||
</ClInclude> | |||
@@ -2370,9 +2355,6 @@ | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_SlidingPanelComponent.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Utility\UI\jucer_UserSettingsPopup.h"> | |||
<Filter>Projucer\Utility\UI</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\..\Source\Wizards\jucer_NewFileWizard.h"> | |||
<Filter>Projucer\Wizards</Filter> | |||
</ClInclude> | |||
@@ -3785,9 +3767,6 @@ | |||
<None Include="..\..\Source\BinaryData\nothingtoseehere.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\offlinepage.html"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
<None Include="..\..\Source\BinaryData\projucer_EULA.txt"> | |||
<Filter>Projucer\BinaryData</Filter> | |||
</None> | |||
@@ -87,7 +87,7 @@ target_compile_definitions(Projucer PRIVATE | |||
JUCE_LOG_ASSERTIONS=1 | |||
JUCE_STRICT_REFCOUNTEDPOINTER=1 | |||
JUCE_USE_CURL=1 | |||
JUCE_WEB_BROWSER=1) | |||
JUCE_WEB_BROWSER=0) | |||
juce_add_binary_data(ProjucerData SOURCES | |||
Source/BinaryData/Icons/background_logo.svg | |||
@@ -147,7 +147,6 @@ juce_add_binary_data(ProjucerData SOURCES | |||
Source/BinaryData/gradle/gradlew | |||
Source/BinaryData/gradle/gradlew.bat | |||
Source/BinaryData/nothingtoseehere.txt | |||
Source/BinaryData/offlinepage.html | |||
Source/BinaryData/projucer_EULA.txt | |||
../Build/CMake/LaunchScreen.storyboard | |||
@@ -7525,55 +7525,8 @@ static const unsigned char temp_binary_data_62[] = | |||
const char* nothingtoseehere_txt = (const char*) temp_binary_data_62; | |||
//================== offlinepage.html ================== | |||
static const unsigned char temp_binary_data_63[] = | |||
"<html>\n" | |||
" <head>\n" | |||
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\">\n" | |||
" <style>\n" | |||
" body {\n" | |||
" background-color: #f1f1f1;\n" | |||
" color: #101010;\n" | |||
" font-family: Helvetica, Arial, sans-serif;\n" | |||
" display: flex;\n" | |||
" justify-content: center;\n" | |||
" align-items: center;\n" | |||
" }\n" | |||
" .button {\n" | |||
" display: block;\n" | |||
" padding: 15px 20px 16px;\n" | |||
" width: 200px;\n" | |||
" border: 1px solid #c8c9cb;\n" | |||
" border-radius: 6px;\n" | |||
" margin: auto;\n" | |||
" cursor: pointer;\n" | |||
" font-size: 20px;\n" | |||
" margin-top: 30px;\n" | |||
" color: inherit;\n" | |||
" text-decoration: none;\n" | |||
" }\n" | |||
" #offline {\n" | |||
" display: block;\n" | |||
" text-align: center;\n" | |||
" }\n" | |||
" </style>\n" | |||
" </head>\n" | |||
" <body>\n" | |||
" <div id='offline'>\n" | |||
" <h1>No internet connection</h1>\n" | |||
"\n" | |||
" <p>You appear to be offline. An internet connection is required to login to the Projucer.</p>\n" | |||
" <p>If you want to use JUCE under the GPL without signing-in, you can enable the pre-processor macro JUCER_ENABLE_GPL_MODE=1 and recompile the Projucer yourself.</p>\n" | |||
"\n" | |||
" <a class='button' href='__URL_PLACEHOLDER__'>Try again</a>\n" | |||
" </div>\n" | |||
" </body>\n" | |||
"</html>"; | |||
const char* offlinepage_html = (const char*) temp_binary_data_63; | |||
//================== projucer_EULA.txt ================== | |||
static const unsigned char temp_binary_data_64[] = | |||
static const unsigned char temp_binary_data_63[] = | |||
"\r\n" | |||
"IMPORTANT NOTICE: PLEASE READ CAREFULLY BEFORE INSTALLING THE SOFTWARE:\r\n" | |||
"\r\n" | |||
@@ -7737,7 +7690,7 @@ static const unsigned char temp_binary_data_64[] = | |||
"\r\n" | |||
"10.6. Please note that this License, its subject matter and its formation, are governed by English law. You and we both agree to that the courts of England and Wales will have exclusive jurisdiction.\r\n"; | |||
const char* projucer_EULA_txt = (const char*) temp_binary_data_64; | |||
const char* projucer_EULA_txt = (const char*) temp_binary_data_63; | |||
const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) | |||
@@ -7813,7 +7766,6 @@ const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) | |||
case 0x763d39dc: numBytes = 1050; return colourscheme_dark_xml; | |||
case 0xe8b08520: numBytes = 1050; return colourscheme_light_xml; | |||
case 0x938e96ec: numBytes = 20; return nothingtoseehere_txt; | |||
case 0xf11580d8: numBytes = 1155; return offlinepage_html; | |||
case 0xd6bb7d1d: numBytes = 14361; return projucer_EULA_txt; | |||
default: break; | |||
} | |||
@@ -7887,7 +7839,6 @@ const char* namedResourceList[] = | |||
"colourscheme_dark_xml", | |||
"colourscheme_light_xml", | |||
"nothingtoseehere_txt", | |||
"offlinepage_html", | |||
"projucer_EULA_txt" | |||
}; | |||
@@ -7956,7 +7907,6 @@ const char* originalFilenames[] = | |||
"colourscheme_dark.xml", | |||
"colourscheme_light.xml", | |||
"nothingtoseehere.txt", | |||
"offlinepage.html", | |||
"projucer_EULA.txt" | |||
}; | |||
@@ -197,14 +197,11 @@ namespace BinaryData | |||
extern const char* nothingtoseehere_txt; | |||
const int nothingtoseehere_txtSize = 20; | |||
extern const char* offlinepage_html; | |||
const int offlinepage_htmlSize = 1155; | |||
extern const char* projucer_EULA_txt; | |||
const int projucer_EULA_txtSize = 14361; | |||
// Number of elements in the namedResourceList and originalFileNames arrays. | |||
const int namedResourceListSize = 65; | |||
const int namedResourceListSize = 64; | |||
// Points to the start of a list of resource names. | |||
extern const char* namedResourceList[]; | |||
@@ -269,8 +269,6 @@ | |||
file="Source/BinaryData/colourscheme_light.xml"/> | |||
<FILE id="lBlcfb" name="nothingtoseehere.txt" compile="0" resource="1" | |||
file="Source/BinaryData/nothingtoseehere.txt"/> | |||
<FILE id="vb8G2I" name="offlinepage.html" compile="0" resource="1" | |||
file="Source/BinaryData/offlinepage.html"/> | |||
<FILE id="tqxmy4" name="projucer_EULA.txt" compile="0" resource="1" | |||
file="Source/BinaryData/projucer_EULA.txt"/> | |||
</GROUP> | |||
@@ -476,16 +474,6 @@ | |||
<FILE id="pl4vjj" name="jucer_UtilityFunctions.h" compile="0" resource="0" | |||
file="Source/ComponentEditor/jucer_UtilityFunctions.h"/> | |||
</GROUP> | |||
<GROUP id="{025B2596-DEB8-D8EF-367D-41C8D290229A}" name="Licenses"> | |||
<FILE id="KCuLAZ" name="jucer_LicenseController.cpp" compile="1" resource="0" | |||
file="Source/Licenses/jucer_LicenseController.cpp"/> | |||
<FILE id="zrVlbi" name="jucer_LicenseController.h" compile="0" resource="0" | |||
file="Source/Licenses/jucer_LicenseController.h"/> | |||
<FILE id="S3VWFZ" name="jucer_LicenseThread.h" compile="0" resource="0" | |||
file="Source/Licenses/jucer_LicenseThread.h"/> | |||
<FILE id="lHIbn4" name="jucer_LicenseWebview.h" compile="0" resource="0" | |||
file="Source/Licenses/jucer_LicenseWebview.h"/> | |||
</GROUP> | |||
<GROUP id="{1F4F21DC-6856-2C06-EEC5-39EE3B95C206}" name="LiveBuildEngine"> | |||
<GROUP id="{A09CCB6F-E688-7D17-BF10-AE3C7916AACA}" name="UI"> | |||
<FILE id="ESpwdA" name="jucer_ActivityListComponent.h" compile="0" | |||
@@ -675,8 +663,6 @@ | |||
resource="0" file="Source/Utility/UI/jucer_SlidingPanelComponent.cpp"/> | |||
<FILE id="cbUrIP" name="jucer_SlidingPanelComponent.h" compile="0" | |||
resource="0" file="Source/Utility/UI/jucer_SlidingPanelComponent.h"/> | |||
<FILE id="xrwb6j" name="jucer_UserSettingsPopup.h" compile="0" resource="0" | |||
file="Source/Utility/UI/jucer_UserSettingsPopup.h"/> | |||
</GROUP> | |||
</GROUP> | |||
<GROUP id="{ECF14F8E-E605-CFBF-7BAD-2CE0A360EDAA}" name="Wizards"> | |||
@@ -717,7 +703,8 @@ | |||
</GROUP> | |||
</MAINGROUP> | |||
<JUCEOPTIONS JUCE_LOG_ASSERTIONS="1" JUCE_USE_CURL="1" JUCE_ALLOW_STATIC_NULL_VARIABLES="0" | |||
JUCE_STRICT_REFCOUNTEDPOINTER="1" JUCE_LOAD_CURL_SYMBOLS_LAZILY="1"/> | |||
JUCE_STRICT_REFCOUNTEDPOINTER="1" JUCE_LOAD_CURL_SYMBOLS_LAZILY="1" | |||
JUCE_WEB_BROWSER="0"/> | |||
<MODULES> | |||
<MODULE id="juce_build_tools" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/> | |||
<MODULE id="juce_core" showAllCode="1"/> | |||
@@ -25,14 +25,6 @@ class AboutWindowComponent : public Component | |||
public: | |||
AboutWindowComponent() | |||
{ | |||
bool showPurchaseButton = false; | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
showPurchaseButton = (controller->getState().type != LicenseState::Type::indie | |||
&& controller->getState().type != LicenseState::Type::pro); | |||
#endif | |||
addAndMakeVisible (titleLabel); | |||
titleLabel.setJustificationType (Justification::centred); | |||
titleLabel.setFont (Font (35.0f, Font::FontStyleFlags::bold)); | |||
@@ -51,17 +43,6 @@ public: | |||
addAndMakeVisible (aboutButton); | |||
aboutButton.setTooltip ( {} ); | |||
if (showPurchaseButton) | |||
{ | |||
addAndMakeVisible (licenseButton); | |||
licenseButton.onClick = [] | |||
{ | |||
if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
controller->chooseNewLicense(); | |||
}; | |||
} | |||
} | |||
void resized() override | |||
@@ -96,10 +77,6 @@ public: | |||
versionLabel.setBounds (centreSlice.removeFromTop (40)); | |||
centreSlice.removeFromTop (10); | |||
if (licenseButton.isShowing()) | |||
licenseButton.setBounds (centreSlice.removeFromTop (25).reduced (25, 0)); | |||
aboutButton.setBounds (centreSlice.removeFromBottom (20)); | |||
} | |||
@@ -120,7 +97,6 @@ private: | |||
copyrightLabel { "copyright", String (CharPointer_UTF8 ("\xc2\xa9")) + String (" 2017 ROLI Ltd.") }; | |||
HyperlinkButton aboutButton { "About Us", URL ("https://juce.com") }; | |||
TextButton licenseButton { "Purchase License" }; | |||
Rectangle<float> huckleberryLogoBounds, juceLogoBounds; | |||
@@ -76,7 +76,7 @@ void ProjucerApplication::initialise (const String& commandLine) | |||
isRunningCommandLine = commandLine.isNotEmpty() | |||
&& ! commandLine.startsWith ("-NSDocumentRevisionsDebugMode"); | |||
initialiseBasics(); | |||
settings = std::make_unique<StoredSettings>(); | |||
if (isRunningCommandLine) | |||
{ | |||
@@ -120,14 +120,6 @@ void ProjucerApplication::initialise (const String& commandLine) | |||
} | |||
} | |||
void ProjucerApplication::initialiseBasics() | |||
{ | |||
settings = std::make_unique<StoredSettings>(); | |||
licenseController.reset (new LicenseController); | |||
licenseController->addLicenseStatusChangedCallback (this); | |||
} | |||
bool ProjucerApplication::initialiseLogger (const char* filePrefix) | |||
{ | |||
if (logger == nullptr) | |||
@@ -147,6 +139,18 @@ bool ProjucerApplication::initialiseLogger (const char* filePrefix) | |||
return logger != nullptr; | |||
} | |||
void ProjucerApplication::initialiseWindows (const String& commandLine) | |||
{ | |||
const String commandLineWithoutNSDebug (commandLine.replace ("-NSDocumentRevisionsDebugMode YES", StringRef())); | |||
if (commandLineWithoutNSDebug.trim().isNotEmpty() && ! commandLineWithoutNSDebug.trim().startsWithChar ('-')) | |||
anotherInstanceStarted (commandLine); | |||
else | |||
mainWindowList.reopenLastProjects(); | |||
mainWindowList.createWindowIfNoneAreOpen(); | |||
} | |||
void ProjucerApplication::handleAsyncUpdate() | |||
{ | |||
LookAndFeel::setDefaultLookAndFeel (&lookAndFeel); | |||
@@ -156,9 +160,6 @@ void ProjucerApplication::handleAsyncUpdate() | |||
tooltipWindow = std::make_unique<TooltipWindow> (nullptr, 1200); | |||
if (licenseController != nullptr) | |||
licenseController->startWebviewIfNeeded(); | |||
#if JUCE_MAC | |||
PopupMenu extraAppleMenuItems; | |||
createExtraAppleMenuItems (extraAppleMenuItems); | |||
@@ -171,22 +172,12 @@ void ProjucerApplication::handleAsyncUpdate() | |||
if (getGlobalProperties().getValue (Ids::dontQueryForUpdate, {}).isEmpty()) | |||
LatestVersionCheckerAndUpdater::getInstance()->checkForNewVersion (false); | |||
initialiseWindows (getCommandLineParameters()); | |||
if (! isRunningCommandLine && settings->shouldAskUserToSetJUCEPath()) | |||
showSetJUCEPathAlert(); | |||
} | |||
void ProjucerApplication::initialiseWindows (const String& commandLine) | |||
{ | |||
const String commandLineWithoutNSDebug (commandLine.replace ("-NSDocumentRevisionsDebugMode YES", StringRef())); | |||
if (commandLineWithoutNSDebug.trim().isNotEmpty() && ! commandLineWithoutNSDebug.trim().startsWithChar ('-')) | |||
anotherInstanceStarted (commandLine); | |||
else | |||
mainWindowList.reopenLastProjects(); | |||
mainWindowList.createWindowIfNoneAreOpen(); | |||
} | |||
static void deleteTemporaryFiles() | |||
{ | |||
auto tempDirectory = File::getSpecialLocation (File::SpecialLocationType::tempDirectory).getChildFile ("PIPs"); | |||
@@ -210,12 +201,6 @@ void ProjucerApplication::shutdown() | |||
editorColourSchemeWindow.reset(); | |||
pipCreatorWindow.reset(); | |||
if (licenseController != nullptr) | |||
{ | |||
licenseController->removeLicenseStatusChangedCallback (this); | |||
licenseController.reset(); | |||
} | |||
mainWindowList.forceCloseAllWindows(); | |||
openDocumentManager.clear(); | |||
@@ -275,31 +260,6 @@ void ProjucerApplication::systemRequestedQuit() | |||
} | |||
} | |||
//============================================================================== | |||
void ProjucerApplication::licenseStateChanged (const LicenseState& state) | |||
{ | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
if (state.type != LicenseState::Type::notLoggedIn | |||
&& state.type != LicenseState::Type::noLicenseChosenYet) | |||
#else | |||
ignoreUnused (state); | |||
#endif | |||
{ | |||
initialiseWindows (getCommandLineParameters()); | |||
} | |||
} | |||
void ProjucerApplication::doLogout() | |||
{ | |||
if (licenseController != nullptr) | |||
{ | |||
const LicenseState& state = licenseController->getState(); | |||
if (state.type != LicenseState::Type::notLoggedIn && closeAllMainWindows()) | |||
licenseController->logout(); | |||
} | |||
} | |||
//============================================================================== | |||
String ProjucerApplication::getVersionDescription() const | |||
{ | |||
@@ -413,10 +373,6 @@ void ProjucerApplication::createFileMenu (PopupMenu& menu) | |||
menu.addCommandItem (commandManager.get(), CommandIDs::saveAndOpenInIDE); | |||
menu.addSeparator(); | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
menu.addCommandItem (commandManager.get(), CommandIDs::loginLogout); | |||
#endif | |||
#if ! JUCE_MAC | |||
menu.addCommandItem (commandManager.get(), CommandIDs::showAboutWindow); | |||
menu.addCommandItem (commandManager.get(), CommandIDs::checkForNewVersion); | |||
@@ -956,8 +912,7 @@ void ProjucerApplication::getAllCommands (Array <CommandID>& commands) | |||
CommandIDs::showForum, | |||
CommandIDs::showAPIModules, | |||
CommandIDs::showAPIClasses, | |||
CommandIDs::showTutorials, | |||
CommandIDs::loginLogout }; | |||
CommandIDs::showTutorials }; | |||
commands.addArray (ids, numElementsInArray (ids)); | |||
} | |||
@@ -1059,25 +1014,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: | |||
{ | |||
bool isLoggedIn = false; | |||
String username; | |||
if (licenseController != nullptr) | |||
{ | |||
const LicenseState state = licenseController->getState(); | |||
isLoggedIn = (state.type != LicenseState::Type::notLoggedIn && state.type != LicenseState::Type::GPL); | |||
username = state.username; | |||
} | |||
result.setInfo (isLoggedIn | |||
? String ("Sign out ") + username + "..." | |||
: String ("Sign in..."), | |||
"Log out of your JUCE account", CommandCategories::general, 0); | |||
} | |||
break; | |||
default: | |||
JUCEApplication::getCommandInfo (commandID, result); | |||
break; | |||
@@ -1106,7 +1042,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: doLogout(); break; | |||
default: return JUCEApplication::perform (info); | |||
} | |||
@@ -23,14 +23,12 @@ | |||
#include "jucer_AutoUpdater.h" | |||
#include "../CodeEditor/jucer_SourceCodeEditor.h" | |||
#include "../Utility/UI/jucer_ProjucerLookAndFeel.h" | |||
#include "../Licenses/jucer_LicenseController.h" | |||
struct ChildProcessCache; | |||
//============================================================================== | |||
class ProjucerApplication : public JUCEApplication, | |||
private AsyncUpdater, | |||
private LicenseController::StateChangedCallback | |||
private AsyncUpdater | |||
{ | |||
public: | |||
ProjucerApplication(); | |||
@@ -40,10 +38,6 @@ public: | |||
//============================================================================== | |||
void initialise (const String& commandLine) override; | |||
void initialiseBasics(); | |||
bool initialiseLogger (const char* filePrefix); | |||
void initialiseWindows (const String& commandLine); | |||
void shutdown() override; | |||
void systemRequestedQuit() override; | |||
void deleteLogger(); | |||
@@ -109,12 +103,6 @@ public: | |||
void updateAllBuildTabs(); | |||
//============================================================================== | |||
void licenseStateChanged (const LicenseState&) override; | |||
void doLogout(); | |||
bool isPaidOrGPL() const { return licenseController == nullptr || licenseController->getState().isPaidOrGPL(); } | |||
//============================================================================== | |||
void selectEditorColourSchemeWithName (const String& schemeName); | |||
static bool isEditorColourSchemeADefaultScheme (const StringArray& schemes, int editorColourSchemeIndex); | |||
@@ -147,13 +135,15 @@ public: | |||
bool isRunningCommandLine; | |||
std::unique_ptr<ChildProcessCache> childProcessCache; | |||
std::unique_ptr<LicenseController> licenseController; | |||
private: | |||
//============================================================================== | |||
void handleAsyncUpdate() override; | |||
void initCommandManager(); | |||
bool initialiseLogger (const char* filePrefix); | |||
void initialiseWindows (const String& commandLine); | |||
void createExamplesPopupMenu (PopupMenu&) noexcept; | |||
Array<File> getSortedExampleDirectories() noexcept; | |||
Array<File> getSortedExampleFilesInDirectory (const File&) const noexcept; | |||
@@ -91,12 +91,10 @@ namespace CommandIDs | |||
nextError = 0x300080, | |||
prevError = 0x300081, | |||
loginLogout = 0x300090, | |||
showForum = 0x300100, | |||
showAPIModules = 0x300101, | |||
showAPIClasses = 0x300102, | |||
showTutorials = 0x300103, | |||
showForum = 0x300090, | |||
showAPIModules = 0x300091, | |||
showAPIClasses = 0x300092, | |||
showTutorials = 0x300093, | |||
lastCommandIDEntry | |||
}; | |||
@@ -1,42 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="X-UA-Compatible" content="IE=11"> | |||
<style> | |||
body { | |||
background-color: #f1f1f1; | |||
color: #101010; | |||
font-family: Helvetica, Arial, sans-serif; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.button { | |||
display: block; | |||
padding: 15px 20px 16px; | |||
width: 200px; | |||
border: 1px solid #c8c9cb; | |||
border-radius: 6px; | |||
margin: auto; | |||
cursor: pointer; | |||
font-size: 20px; | |||
margin-top: 30px; | |||
color: inherit; | |||
text-decoration: none; | |||
} | |||
#offline { | |||
display: block; | |||
text-align: center; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id='offline'> | |||
<h1>No internet connection</h1> | |||
<p>You appear to be offline. An internet connection is required to login to the Projucer.</p> | |||
<p>If you want to use JUCE under the GPL without signing-in, you can enable the pre-processor macro JUCER_ENABLE_GPL_MODE=1 and recompile the Projucer yourself.</p> | |||
<a class='button' href='__URL_PLACEHOLDER__'>Try again</a> | |||
</div> | |||
</body> | |||
</html> |
@@ -1,104 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE 6 technical preview. | |||
Copyright (c) 2017 - ROLI Ltd. | |||
You may use this code under the terms of the GPL v3 | |||
(see www.gnu.org/licenses). | |||
For this technical preview, this file is not subject to commercial licensing. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
#pragma once | |||
struct LicenseThread; | |||
class LicenseWebview; | |||
//============================================================================== | |||
struct LicenseState | |||
{ | |||
enum class Type | |||
{ | |||
notLoggedIn, // only used when the webview is open and the user has not logged in yet | |||
noLicenseChosenYet, | |||
GPL, // GPL is used when the user enables the GPL compile flag | |||
personal, | |||
edu, | |||
indie, | |||
pro | |||
}; | |||
Type type = Type::notLoggedIn; | |||
String username, email, authToken; | |||
static const char* licenseTypeToString (Type licenseType); | |||
bool isPaidOrGPL() const noexcept { return (type == Type::GPL || type == Type::indie || type == Type::pro); } | |||
Image avatar; | |||
}; | |||
//============================================================================== | |||
class LicenseController | |||
{ | |||
public: | |||
//============================================================================== | |||
struct StateChangedCallback | |||
{ | |||
virtual ~StateChangedCallback() {} | |||
virtual void licenseStateChanged (const LicenseState&) = 0; | |||
}; | |||
//============================================================================== | |||
LicenseController(); | |||
~LicenseController(); | |||
void startWebviewIfNeeded(); | |||
//============================================================================== | |||
LicenseState getState() const noexcept; | |||
void logout(); | |||
void chooseNewLicense(); | |||
//============================================================================== | |||
void addLicenseStatusChangedCallback (StateChangedCallback* callback) { listeners.add (callback); } | |||
void removeLicenseStatusChangedCallback (StateChangedCallback* callback) { listeners.remove (callback); } | |||
private: | |||
//============================================================================== | |||
void updateState (const LicenseState&); | |||
static LicenseState licenseStateFromOldSettings (XmlElement*); | |||
static LicenseState licenseStateFromSettings (PropertiesFile&); | |||
static void licenseStateToSettings (const LicenseState&, PropertiesFile&); | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
//============================================================================== | |||
struct ModalCompletionCallback; | |||
friend struct LicenseThread; | |||
//============================================================================== | |||
void closeWebview (int); | |||
void modalStateFinished (int); | |||
void ensureLicenseWebviewIsOpenWithPage (const String&); | |||
void queryWebview (const String&, const String&, HashMap<String, String>&); | |||
//============================================================================== | |||
std::unique_ptr<LicenseThread> thread; | |||
LicenseWebview* licenseWebview = nullptr; | |||
#endif | |||
LicenseState state; | |||
ListenerList<LicenseController::StateChangedCallback> listeners; | |||
bool guiNotInitialisedYet = true; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseController) | |||
}; |
@@ -1,458 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE 6 technical preview. | |||
Copyright (c) 2017 - ROLI Ltd. | |||
You may use this code under the terms of the GPL v3 | |||
(see www.gnu.org/licenses). | |||
For this technical preview, this file is not subject to commercial licensing. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
#pragma once | |||
//============================================================================== | |||
struct NetWorkerThread : public Thread, | |||
private AsyncUpdater | |||
{ | |||
NetWorkerThread() : Thread ("License") {} | |||
~NetWorkerThread() override | |||
{ | |||
JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED | |||
signalThreadShouldExit(); | |||
cancelPendingUpdate(); | |||
finished.signal(); | |||
{ | |||
ScopedLock lock (weakReferenceLock); | |||
if (currentInputStream != nullptr) | |||
currentInputStream->cancel(); | |||
} | |||
waitForThreadToExit (-1); | |||
} | |||
//============================================================================== | |||
void executeOnMessageThreadAndBlock (std::function<void()> f, bool signalWhenFinished = true) | |||
{ | |||
// only call this on the worker thread | |||
jassert (Thread::getCurrentThreadId() == getThreadId()); | |||
if (! isWaiting) | |||
{ | |||
ScopedValueSetter<bool> reentrant (isWaiting, true); | |||
finished.reset(); | |||
if (! threadShouldExit()) | |||
{ | |||
functionToExecute = [signalWhenFinished, f, this] () { f(); if (signalWhenFinished) finished.signal(); }; | |||
triggerAsyncUpdate(); | |||
finished.wait (-1); | |||
} | |||
} | |||
else | |||
{ | |||
// only one task at a time | |||
jassertfalse; | |||
return; | |||
} | |||
} | |||
WebInputStream* getSharedWebInputStream (const URL& url, const bool usePost) | |||
{ | |||
ScopedLock lock (weakReferenceLock); | |||
if (threadShouldExit()) | |||
return nullptr; | |||
jassert (currentInputStream == nullptr); | |||
return (currentInputStream = new WeakWebInputStream (*this, url, usePost)); | |||
} | |||
bool isWaiting = false; | |||
WaitableEvent finished; | |||
private: | |||
//============================================================================== | |||
void handleAsyncUpdate() override | |||
{ | |||
if (functionToExecute) | |||
{ | |||
std::function<void()> f; | |||
std::swap (f, functionToExecute); | |||
if (! threadShouldExit()) | |||
f(); | |||
} | |||
} | |||
//============================================================================== | |||
struct WeakWebInputStream : public WebInputStream | |||
{ | |||
WeakWebInputStream (NetWorkerThread& workerThread, const URL& url, const bool usePost) | |||
: WebInputStream (url, usePost), owner (workerThread) {} | |||
~WeakWebInputStream() | |||
{ | |||
ScopedLock lock (owner.weakReferenceLock); | |||
owner.currentInputStream = nullptr; | |||
} | |||
NetWorkerThread& owner; | |||
WeakReference<WeakWebInputStream>::Master masterReference; | |||
friend class WeakReference<WeakWebInputStream>; | |||
}; | |||
//============================================================================== | |||
friend struct WeakWebInputStream; | |||
std::function<void()> functionToExecute; | |||
CriticalSection weakReferenceLock; | |||
WebInputStream* currentInputStream = nullptr; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NetWorkerThread) | |||
}; | |||
//============================================================================== | |||
//============================================================================== | |||
//============================================================================== | |||
struct LicenseThread : NetWorkerThread | |||
{ | |||
LicenseThread (LicenseController& licenseController, bool shouldSelectNewLicense) | |||
: owner (licenseController), selectNewLicense (shouldSelectNewLicense) | |||
{ | |||
startThread(); | |||
} | |||
String getAuthToken() | |||
{ | |||
if (owner.state.authToken.isNotEmpty()) | |||
return owner.state.authToken; | |||
selectNewLicense = false; | |||
HashMap<String, String> result; | |||
if (! queryWebview ("https://auth.roli.com/signin/projucer?redirect=projucer://receive-auth-token?token=", | |||
"receive-auth-token", result)) | |||
return {}; | |||
return result["token"]; | |||
} | |||
// returns true if any information was updated | |||
void updateUserInfo (LicenseState& stateToUpdate) | |||
{ | |||
jassert (stateToUpdate.authToken.isNotEmpty()); | |||
auto accessTokenHeader = "x-access-token: " + stateToUpdate.authToken; | |||
std::unique_ptr<WebInputStream> shared (getSharedWebInputStream (URL ("https://api.roli.com/api/v1/user"), false)); | |||
if (shared != nullptr) | |||
{ | |||
const int statusCode = shared->withExtraHeaders (accessTokenHeader).getStatusCode(); | |||
if (statusCode == 200) | |||
{ | |||
var result = JSON::parse (shared->readEntireStreamAsString()); | |||
shared.reset(); | |||
auto newState = licenseStateFromJSON (result, stateToUpdate.authToken, stateToUpdate.avatar); | |||
if (newState.type != LicenseState::Type::notLoggedIn) | |||
stateToUpdate = newState; | |||
} | |||
else if (statusCode == 401) | |||
{ | |||
selectNewLicense = false; | |||
// un-authorised: token has expired | |||
stateToUpdate = LicenseState(); | |||
} | |||
} | |||
} | |||
void updateLicenseType (LicenseState& stateToUpdate) | |||
{ | |||
bool requiredWebview = false; | |||
String licenseChooserPage = "https://juce.com/webviews/select_license"; | |||
jassert (stateToUpdate.authToken.isNotEmpty()); | |||
jassert (stateToUpdate.type != LicenseState::Type::notLoggedIn); | |||
auto accessTokenHeader = "x-access-token: " + stateToUpdate.authToken; | |||
StringArray licenses; | |||
while ((licenses.isEmpty() || selectNewLicense) && ! threadShouldExit()) | |||
{ | |||
static Identifier licenseTypeIdentifier ("type"); | |||
static Identifier licenseStatusIdentifier ("status"); | |||
static Identifier projucerLicenseTypeIdentifier ("licence_type"); | |||
static Identifier productNameIdentifier ("product_name"); | |||
static Identifier licenseIdentifier ("licence"); | |||
static Identifier serialIdentifier ("serial_number"); | |||
static Identifier versionIdentifier ("product_version"); | |||
static Identifier searchInternalIdentifier ("search_internal_id"); | |||
if (! selectNewLicense) | |||
{ | |||
std::unique_ptr<WebInputStream> shared (getSharedWebInputStream (URL ("https://api.roli.com/api/v1/user/licences?search_internal_id=com.roli.projucer&version=5"), | |||
false)); | |||
if (shared == nullptr) | |||
break; | |||
var json = JSON::parse (shared->withExtraHeaders (accessTokenHeader) | |||
.readEntireStreamAsString()); | |||
shared.reset(); | |||
if (auto* jsonLicenses = json.getArray()) | |||
{ | |||
for (auto& v : *jsonLicenses) | |||
{ | |||
if (auto* obj = v.getDynamicObject()) | |||
{ | |||
const String& productType = obj->getProperty (projucerLicenseTypeIdentifier); | |||
const String& status = obj->getProperty (licenseStatusIdentifier); | |||
if (productType.isNotEmpty() && (status.isEmpty() || status == "active")) | |||
licenses.add (productType); | |||
} | |||
} | |||
} | |||
else | |||
{ | |||
// no internet -> then use the last valid license | |||
if (stateToUpdate.type != LicenseState::Type::notLoggedIn | |||
&& stateToUpdate.type != LicenseState::Type::noLicenseChosenYet) | |||
return; | |||
} | |||
if (! licenses.isEmpty()) | |||
break; | |||
} | |||
// ask the user to select a license | |||
HashMap<String, String> result; | |||
requiredWebview = true; | |||
if (! queryWebview (licenseChooserPage, {}, result)) | |||
break; | |||
const String& redirectURL = result["page-redirect"]; | |||
const String& productKey = result["register-product"]; | |||
const String& chosenLicenseType = result["redeem-licence-type"]; | |||
if (redirectURL.isNotEmpty()) | |||
{ | |||
licenseChooserPage = "https://juce.com/webviews/register-product"; | |||
continue; | |||
} | |||
if (productKey.isNotEmpty()) | |||
{ | |||
DynamicObject::Ptr redeemObject (new DynamicObject()); | |||
redeemObject->setProperty (serialIdentifier, productKey); | |||
String postData (JSON::toString (var (redeemObject.get()))); | |||
std::unique_ptr<WebInputStream> shared (getSharedWebInputStream (URL ("https://api.roli.com/api/v1/user/products").withPOSTData (postData), | |||
true)); | |||
if (shared == nullptr) | |||
break; | |||
int statusCode = shared->withExtraHeaders (accessTokenHeader) | |||
.withExtraHeaders ("Content-Type: application/json") | |||
.getStatusCode(); | |||
licenseChooserPage = String ("https://juce.com/webviews/register-product?error=") | |||
+ String (statusCode == 404 ? "invalid" : "server"); | |||
if (statusCode == 200) | |||
selectNewLicense = false; | |||
continue; | |||
} | |||
if (chosenLicenseType.isNotEmpty()) | |||
{ | |||
// redeem the license | |||
DynamicObject::Ptr jsonLicenseObject (new DynamicObject()); | |||
jsonLicenseObject->setProperty (projucerLicenseTypeIdentifier, chosenLicenseType); | |||
jsonLicenseObject->setProperty (versionIdentifier, 5); | |||
DynamicObject::Ptr jsonLicenseRequest (new DynamicObject()); | |||
jsonLicenseRequest->setProperty (licenseIdentifier, var (jsonLicenseObject.get())); | |||
jsonLicenseRequest->setProperty (searchInternalIdentifier, "com.roli.projucer"); | |||
jsonLicenseRequest->setProperty (licenseTypeIdentifier, "software"); | |||
String postData (JSON::toString (var (jsonLicenseRequest.get()))); | |||
std::unique_ptr<WebInputStream> shared (getSharedWebInputStream (URL ("https://api.roli.com/api/v1/user/products/redeem") | |||
.withPOSTData (postData), | |||
true)); | |||
if (shared != nullptr) | |||
{ | |||
int statusCode = shared->withExtraHeaders (accessTokenHeader) | |||
.withExtraHeaders ("Content-Type: application/json") | |||
.getStatusCode(); | |||
if (statusCode == 200) | |||
selectNewLicense = false; | |||
continue; | |||
} | |||
} | |||
break; | |||
} | |||
HashMap<String, String> result; | |||
if (requiredWebview && ! threadShouldExit()) | |||
queryWebview ("https://juce.com/webviews/registration-complete", "licence_provisioned", result); | |||
stateToUpdate.type = getBestLicenseTypeFromLicenses (licenses); | |||
} | |||
//============================================================================== | |||
void run() override | |||
{ | |||
LicenseState workState (owner.state); | |||
while (! threadShouldExit()) | |||
{ | |||
workState.authToken = getAuthToken(); | |||
if (workState.authToken.isEmpty()) | |||
return; | |||
// read the user information | |||
updateUserInfo (workState); | |||
if (threadShouldExit()) | |||
return; | |||
updateIfChanged (workState); | |||
// if the last step logged us out then retry | |||
if (workState.authToken.isEmpty()) | |||
continue; | |||
// check if the license has changed | |||
updateLicenseType (workState); | |||
if (threadShouldExit()) | |||
return; | |||
updateIfChanged (workState); | |||
closeWebviewOnMessageThread (0); | |||
finished.wait (60 * 5 * 1000); | |||
} | |||
} | |||
//============================================================================== | |||
LicenseState licenseStateFromJSON (const var& json, const String& authToken, const Image& fallbackAvatar) | |||
{ | |||
static Identifier usernameIdentifier ("username"); | |||
static Identifier emailIdentifier ("email"); | |||
static Identifier avatarURLIdentifier ("avatar_url"); | |||
LicenseState result; | |||
if (auto* obj = json.getDynamicObject()) | |||
{ | |||
result.type = LicenseState::Type::noLicenseChosenYet; | |||
result.username = obj->getProperty (usernameIdentifier); | |||
result.authToken = authToken; | |||
result.email = obj->getProperty (emailIdentifier); | |||
result.avatar = fallbackAvatar; | |||
String avatarURL = obj->getProperty (avatarURLIdentifier); | |||
if (avatarURL.isNotEmpty()) | |||
{ | |||
std::unique_ptr<WebInputStream> shared (getSharedWebInputStream (URL (avatarURL), false)); | |||
if (shared != nullptr) | |||
{ | |||
MemoryBlock mb; | |||
shared->readIntoMemoryBlock (mb); | |||
result.avatar = ImageFileFormat::loadFrom (mb.getData(), mb.getSize()); | |||
} | |||
} | |||
} | |||
return result; | |||
} | |||
//============================================================================== | |||
bool queryWebview (const String& startURL, const String& valueToQuery, HashMap<String, String>& result) | |||
{ | |||
executeOnMessageThreadAndBlock ([&] () { owner.queryWebview (startURL, valueToQuery, result); }, false); | |||
return (! threadShouldExit()); | |||
} | |||
void closeWebviewOnMessageThread (int result) | |||
{ | |||
executeOnMessageThreadAndBlock ([this, result] () { owner.closeWebview (result); }); | |||
} | |||
static bool stringArrayContainsSubstring (const StringArray& stringArray, const String& substring) | |||
{ | |||
jassert (substring.isNotEmpty()); | |||
for (auto element : stringArray) | |||
if (element.containsIgnoreCase (substring)) | |||
return true; | |||
return false; | |||
} | |||
static LicenseState::Type getBestLicenseTypeFromLicenses (const StringArray& licenses) | |||
{ | |||
if (stringArrayContainsSubstring (licenses, "juce-pro")) return LicenseState::Type::pro; | |||
else if (stringArrayContainsSubstring (licenses, "juce-indie")) return LicenseState::Type::indie; | |||
else if (stringArrayContainsSubstring (licenses, "juce-personal")) return LicenseState::Type::personal; | |||
else if (stringArrayContainsSubstring (licenses, "juce-edu")) return LicenseState::Type::edu; | |||
return LicenseState::Type::noLicenseChosenYet; | |||
} | |||
void updateIfChanged (const LicenseState& newState) | |||
{ | |||
LicenseState updatedState (owner.state); | |||
bool changed = false; | |||
bool shouldUpdateLicenseType = (newState.type != LicenseState::Type::noLicenseChosenYet | |||
|| updatedState.type == LicenseState::Type::notLoggedIn); | |||
if (newState.type != LicenseState::Type::notLoggedIn) updatedState.avatar = newState.avatar; | |||
if (owner.state.type != newState.type && shouldUpdateLicenseType) { updatedState.type = newState.type; changed = true; } | |||
if (owner.state.authToken != newState.authToken) { updatedState.authToken = newState.authToken; changed = true; } | |||
if (owner.state.username != newState.username) { updatedState.username = newState.username; changed = true; } | |||
if (owner.state.email != newState.email) { updatedState.email = newState.email; changed = true; } | |||
if (owner.state.avatar.isValid() != newState.avatar.isValid()) { changed = true; } | |||
if (changed) | |||
executeOnMessageThreadAndBlock ([this, updatedState] { owner.updateState (updatedState); }); | |||
} | |||
//============================================================================== | |||
LicenseController& owner; | |||
bool selectNewLicense; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseThread) | |||
}; |
@@ -1,271 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE 6 technical preview. | |||
Copyright (c) 2017 - ROLI Ltd. | |||
You may use this code under the terms of the GPL v3 | |||
(see www.gnu.org/licenses). | |||
For this technical preview, this file is not subject to commercial licensing. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
#pragma once | |||
//============================================================================== | |||
class LicenseWebview : public DialogWindow | |||
{ | |||
public: | |||
LicenseWebview (ModalComponentManager::Callback* callbackToUse, const String& request) | |||
: DialogWindow ("Log-in to Projucer", Colour (0xfff1f1f1), true, true) | |||
{ | |||
LicenseWebviewContent* content; | |||
setUsingNativeTitleBar (true); | |||
setContentOwned (content = new LicenseWebviewContent (*this, callbackToUse), true); | |||
centreWithSize (getWidth(), getHeight()); | |||
content->goToURL (request); | |||
} | |||
void goToURL (const String& request) { reinterpret_cast<LicenseWebviewContent*> (getContentComponent())->goToURL (request); } | |||
void setPageCallback (const std::function<void (const String&, const HashMap<String, String>&)>& cb) | |||
{ | |||
reinterpret_cast<LicenseWebviewContent*> (getContentComponent())->pageCallback = cb; | |||
} | |||
void setNewWindowCallback (const std::function<void (const String&)>& cb) | |||
{ | |||
reinterpret_cast<LicenseWebviewContent*> (getContentComponent())->newWindowCallback = cb; | |||
} | |||
void closeButtonPressed() override { exitModalState (-1); } | |||
private: | |||
class LicenseWebviewContent : public Component | |||
{ | |||
//============================================================================== | |||
struct RedirectWebBrowserComponent : public WebBrowserComponent | |||
{ | |||
RedirectWebBrowserComponent (LicenseWebviewContent& controller) : WebBrowserComponent (false), owner (controller) {} | |||
~RedirectWebBrowserComponent() override {} | |||
bool pageAboutToLoad (const String& url) override { return owner.pageAboutToLoad (url); } | |||
void pageFinishedLoading (const String& url) override { owner.pageFinishedLoading (url); } | |||
void newWindowAttemptingToLoad (const String& url) override { owner.newWindowAttemptingToLoad (url); } | |||
bool pageLoadHadNetworkError (const String& err) override { return owner.pageLoadHadNetworkError (err); } | |||
LicenseWebviewContent& owner; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RedirectWebBrowserComponent) | |||
}; | |||
//============================================================================== | |||
struct Header : public Component, | |||
private LicenseController::StateChangedCallback | |||
{ | |||
Header() : avatarButton ("User Settings", &getIcons().user) | |||
{ | |||
setOpaque (true); | |||
addChildComponent (avatarButton); | |||
avatarButton.onClick = [this] { showAvatarWindow(); }; | |||
if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
{ | |||
licenseController->addLicenseStatusChangedCallback (this); | |||
licenseStateChanged (licenseController->getState()); | |||
} | |||
} | |||
~Header() override | |||
{ | |||
if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
licenseController->removeLicenseStatusChangedCallback (this); | |||
} | |||
void resized() override | |||
{ | |||
auto r = getLocalBounds().reduced (30, 20); | |||
avatarButton.setBounds (r.removeFromRight (r.getHeight())); | |||
} | |||
void paint (Graphics& g) override | |||
{ | |||
auto r = getLocalBounds().reduced (30, 20); | |||
g.fillAll (Colour (backgroundColour)); | |||
if (juceLogo != nullptr) | |||
juceLogo->drawWithin (g, r.toFloat(), RectanglePlacement::xLeft + RectanglePlacement::yMid, 1.0); | |||
} | |||
void licenseStateChanged (const LicenseState& state) override | |||
{ | |||
avatarButton.iconImage = state.avatar; | |||
avatarButton.setVisible (state.type != LicenseState::Type::notLoggedIn && state.type != LicenseState::Type::GPL); | |||
avatarButton.repaint(); | |||
} | |||
void showAvatarWindow() | |||
{ | |||
if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
{ | |||
auto type = licenseController->getState().type; | |||
auto* content = new UserSettingsPopup (true); | |||
content->setSize (200, (type == LicenseState::Type::noLicenseChosenYet ? 100 : 150)); | |||
CallOutBox::launchAsynchronously (content, avatarButton.getScreenBounds(), nullptr); | |||
} | |||
} | |||
const uint32 backgroundColour = 0xff414141; | |||
std::unique_ptr<Drawable> juceLogo { Drawable::createFromImageData (BinaryData::jucelogowithtext_svg, | |||
BinaryData::jucelogowithtext_svgSize) }; | |||
IconButton avatarButton; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Header) | |||
}; | |||
//============================================================================== | |||
public: | |||
LicenseWebviewContent (LicenseWebview& parentWindowToUse, ModalComponentManager::Callback* callbackToUse) | |||
: parentWindow (parentWindowToUse), modalCallback (callbackToUse), webview (*this) | |||
{ | |||
addAndMakeVisible (header); | |||
addAndMakeVisible (webview); | |||
setOpaque (true); | |||
setSize (978, 718); | |||
#if JUCE_WINDOWS // windows needs the webcomponent be visible | |||
parentWindow.enterModalState (true, modalCallback.release(), true); | |||
#endif | |||
} | |||
void goToURL (const String& request) | |||
{ | |||
lastURL = request; | |||
webview.goToURL (lastURL); | |||
} | |||
void paint (Graphics& g) override { g.fillAll (Colours::lightblue); } | |||
void resized() override | |||
{ | |||
auto r = getLocalBounds(); | |||
header.setBounds (r.removeFromTop (78)); | |||
webview.setBounds (r); | |||
} | |||
bool pageAboutToLoad (const String& page) | |||
{ | |||
URL url (page); | |||
if (page == "about:blank" || page.startsWith ("file://") || page.startsWith ("data:text/html")) | |||
{ | |||
if (page != lastErrorPageURI) | |||
lastURL = page; | |||
return true; | |||
} | |||
else if (url.getScheme() == "projucer") | |||
{ | |||
HashMap<String, String> params; | |||
auto n = url.getParameterNames().size(); | |||
for (int i = 0; i < n; ++i) | |||
params.set (url.getParameterNames()[i], url.getParameterValues()[i]); | |||
String cmd (url.getDomain()); | |||
if (n == 0 && cmd.containsChar (L'=')) | |||
{ | |||
// old-style callback | |||
StringArray domainTokens (StringArray::fromTokens (cmd, "=", "")); | |||
cmd = domainTokens[0]; | |||
params.set (cmd, domainTokens[1]); | |||
} | |||
if (pageCallback) | |||
pageCallback (cmd, params); | |||
return false; | |||
} | |||
if (isValidURL (url)) | |||
lastURL = page; | |||
return true; | |||
} | |||
void pageFinishedLoading (const String& page) | |||
{ | |||
URL url (page); | |||
if ((isValidURL (url) | |||
|| page.startsWith ("file://") || page.startsWith ("data:text/html")) | |||
&& ! parentWindow.isCurrentlyModal()) | |||
parentWindow.enterModalState (true, modalCallback.release(), true); | |||
} | |||
void newWindowAttemptingToLoad (const String& page) | |||
{ | |||
URL url (page); | |||
bool isGitHub = url.getDomain().endsWith ("github.com"); | |||
if (isValidURL (url) || isGitHub) | |||
{ | |||
url.launchInDefaultBrowser(); | |||
if (newWindowCallback && ! isGitHub) | |||
newWindowCallback (page); | |||
} | |||
} | |||
bool pageLoadHadNetworkError (const String&) | |||
{ | |||
String errorPageSource = String (BinaryData::offlinepage_html, BinaryData::offlinepage_htmlSize) | |||
.replace ("__URL_PLACEHOLDER__", lastURL); | |||
#if JUCE_WINDOWS | |||
auto tmpFile = File::createTempFile (".html"); | |||
tmpFile.replaceWithText (errorPageSource, true); | |||
lastErrorPageURI = "file://" + tmpFile.getFullPathName(); | |||
#else | |||
lastErrorPageURI = "data:text/html;base64," + Base64::toBase64 (errorPageSource); | |||
#endif | |||
goToURL (lastErrorPageURI); | |||
return false; | |||
} | |||
static bool isValidURL (const URL& url) { return (url.getDomain().endsWith ("roli.com") || url.getDomain().endsWith ("juce.com")); } | |||
//============================================================================== | |||
LicenseWebview& parentWindow; | |||
std::unique_ptr<ModalComponentManager::Callback> modalCallback; | |||
Header header; | |||
RedirectWebBrowserComponent webview; | |||
std::function<void (const String&, const HashMap<String, String>&)> pageCallback; | |||
std::function<void (const String&)> newWindowCallback; | |||
String lastURL, lastErrorPageURI; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseWebviewContent) | |||
}; | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LicenseWebview) | |||
}; |
@@ -18,6 +18,8 @@ | |||
#include "jucer_HeaderComponent.h" | |||
#include "../../Application/jucer_Application.h" | |||
#include "../../ProjectSaving/jucer_ProjectExporter.h" | |||
#include "../../Project/UI/jucer_ProjectContentComponent.h" | |||
@@ -48,9 +50,6 @@ HeaderComponent::HeaderComponent() | |||
HeaderComponent::~HeaderComponent() | |||
{ | |||
if (userSettingsWindow != nullptr) | |||
userSettingsWindow->dismiss(); | |||
if (childProcess != nullptr) | |||
{ | |||
childProcess->activityList.removeChangeListener(this); | |||
@@ -91,9 +90,6 @@ void HeaderComponent::resized() | |||
exporterBounds.removeFromRight (5); | |||
exporterBox.setBounds (exporterBounds.removeFromBottom (roundToInt (exporterBounds.getHeight() / 1.8f))); | |||
configLabel.setBounds (exporterBounds); | |||
bounds.removeFromRight (5); | |||
userSettingsButton->setBounds (bounds.removeFromRight (bounds.getHeight()).reduced (2)); | |||
} | |||
void HeaderComponent::paint (Graphics& g) | |||
@@ -196,11 +192,6 @@ bool HeaderComponent::canCurrentExporterLaunchProject() const noexcept | |||
} | |||
//============================================================================== | |||
int HeaderComponent::getUserButtonWidth() const noexcept | |||
{ | |||
return userSettingsButton->getWidth(); | |||
} | |||
void HeaderComponent::sidebarTabsWidthChanged (int newWidth) noexcept | |||
{ | |||
tabsWidth = newWidth; | |||
@@ -208,30 +199,6 @@ void HeaderComponent::sidebarTabsWidthChanged (int newWidth) noexcept | |||
} | |||
//============================================================================== | |||
void HeaderComponent::showUserSettings() noexcept | |||
{ | |||
#if JUCER_ENABLE_GPL_MODE | |||
auto settingsPopupHeight = 100; | |||
auto settingsPopupWidth = 200; | |||
#else | |||
auto settingsPopupHeight = 150; | |||
auto settingsPopupWidth = 250; | |||
#endif | |||
auto* content = new UserSettingsPopup (false); | |||
content->setSize (settingsPopupWidth, settingsPopupHeight); | |||
userSettingsWindow = &CallOutBox::launchAsynchronously (content, userSettingsButton->getScreenBounds(), nullptr); | |||
} | |||
//============================================================================== | |||
void HeaderComponent::lookAndFeelChanged() | |||
{ | |||
if (userSettingsWindow != nullptr) | |||
userSettingsWindow->sendLookAndFeelChange(); | |||
} | |||
void HeaderComponent::changeListenerCallback (ChangeBroadcaster*) | |||
{ | |||
if (childProcess != nullptr) | |||
@@ -275,15 +242,6 @@ void HeaderComponent::initialiseButtons() noexcept | |||
pcc->openInSelectedIDE (true); | |||
}; | |||
userSettingsButton.reset (new IconButton ("User Settings", &icons.user)); | |||
addAndMakeVisible (userSettingsButton.get()); | |||
userSettingsButton->isUserButton = true; | |||
userSettingsButton->onClick = [this] | |||
{ | |||
if (findParentComponentOfClass<ProjectContentComponent>() != nullptr) | |||
showUserSettings(); | |||
}; | |||
runAppButton.reset (new IconButton ("Run Application", &icons.play)); | |||
addAndMakeVisible (runAppButton.get()); | |||
runAppButton->onClick = [this] | |||
@@ -293,7 +251,6 @@ void HeaderComponent::initialiseButtons() noexcept | |||
}; | |||
updateExporterButton(); | |||
updateUserAvatar(); | |||
} | |||
void HeaderComponent::updateName() noexcept | |||
@@ -316,17 +273,6 @@ void HeaderComponent::updateExporterButton() noexcept | |||
} | |||
} | |||
void HeaderComponent::updateUserAvatar() noexcept | |||
{ | |||
if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
{ | |||
auto state = controller->getState(); | |||
userSettingsButton->iconImage = state.avatar; | |||
userSettingsButton->repaint(); | |||
} | |||
} | |||
//============================================================================== | |||
void HeaderComponent::buildPing() | |||
{ | |||
@@ -20,9 +20,9 @@ | |||
#include "../../Application/jucer_Headers.h" | |||
#include "../../Utility/UI/jucer_IconButton.h" | |||
#include "../../Utility/UI/jucer_UserSettingsPopup.h" | |||
class Project; | |||
class CompileEngineChildProcess; | |||
//============================================================================== | |||
class HeaderComponent : public Component, | |||
@@ -42,21 +42,14 @@ public: | |||
//============================================================================== | |||
void setCurrentProject (Project*) noexcept; | |||
//============================================================================== | |||
void updateExporters() noexcept; | |||
String getSelectedExporterName() const noexcept; | |||
bool canCurrentExporterLaunchProject() const noexcept; | |||
//============================================================================== | |||
int getUserButtonWidth() const noexcept; | |||
void sidebarTabsWidthChanged (int newWidth) noexcept; | |||
//============================================================================== | |||
void showUserSettings() noexcept; | |||
private: | |||
//============================================================================== | |||
void lookAndFeelChanged() override; | |||
void changeListenerCallback (ChangeBroadcaster* source) override; | |||
void valueChanged (Value&) override; | |||
void timerCallback() override; | |||
@@ -77,7 +70,6 @@ private: | |||
void updateName() noexcept; | |||
void updateExporterButton() noexcept; | |||
void updateUserAvatar() noexcept; | |||
//============================================================================== | |||
void buildPing(); | |||
@@ -98,9 +90,7 @@ private: | |||
projectNameLabel; | |||
std::unique_ptr<ImageComponent> juceIcon; | |||
std::unique_ptr<IconButton> projectSettingsButton, saveAndOpenInIDEButton, userSettingsButton, runAppButton; | |||
SafePointer<CallOutBox> userSettingsWindow; | |||
std::unique_ptr<IconButton> projectSettingsButton, saveAndOpenInIDEButton, runAppButton; | |||
ReferenceCountedObjectPtr<CompileEngineChildProcess> childProcess; | |||
@@ -133,10 +133,7 @@ void ProjectContentComponent::resized() | |||
resizerBar->setBounds (r.withWidth (4)); | |||
if (auto* h = dynamic_cast<HeaderComponent*> (header.get())) | |||
{ | |||
h->sidebarTabsWidthChanged (sidebarTabs.getWidth()); | |||
r.removeFromRight (h->getUserButtonWidth()); | |||
} | |||
if (contentView != nullptr) | |||
{ | |||
@@ -625,12 +622,6 @@ void ProjectContentComponent::showLiveBuildSettings() | |||
setEditorComponent (new LiveBuildSettingsComponent (*project), nullptr); | |||
} | |||
void ProjectContentComponent::showUserSettings() | |||
{ | |||
if (auto* headerComp = dynamic_cast<HeaderComponent*> (header.get())) | |||
headerComp->showUserSettings(); | |||
} | |||
StringArray ProjectContentComponent::getExportersWhichCanLaunch() const | |||
{ | |||
StringArray s; | |||
@@ -196,7 +196,7 @@ void Project::initialiseProjectValues() | |||
versionValue.referTo (projectRoot, Ids::version, getUndoManager(), "1.0.0"); | |||
bundleIdentifierValue.referTo (projectRoot, Ids::bundleIdentifier, getUndoManager(), getDefaultBundleIdentifierString()); | |||
displaySplashScreenValue.referTo (projectRoot, Ids::displaySplashScreen, getUndoManager(), ! ProjucerApplication::getApp().isPaidOrGPL()); | |||
displaySplashScreenValue.referTo (projectRoot, Ids::displaySplashScreen, getUndoManager(), false); | |||
splashScreenColourValue.referTo (projectRoot, Ids::splashScreenColour, getUndoManager(), "Dark"); | |||
useAppConfigValue.referTo (projectRoot, Ids::useAppConfig, getUndoManager(), true); | |||
@@ -897,16 +897,8 @@ void Project::createPropertyEditors (PropertyListBuilder& props) | |||
StringPairArray description; | |||
description.set ("Display the JUCE splash screen", "This option controls the display of the standard JUCE splash screen."); | |||
if (ProjucerApplication::getApp().isPaidOrGPL()) | |||
{ | |||
props.add (new ChoicePropertyComponent (displaySplashScreenValue, String ("Display the JUCE Splash Screen") + " (" + licenseRequiredTagline + ")"), | |||
description["Display the JUCE splash screen"] + " " + licenseRequiredInfo); | |||
} | |||
else | |||
{ | |||
props.add (new ChoicePropertyComponent (Value(), "Display the JUCE Splash Screen", { licenseRequiredTagline }, {}), | |||
description["Display the JUCE splash screen"] + " " + licenseRequiredInfo); | |||
} | |||
props.add (new ChoicePropertyComponent (displaySplashScreenValue, String ("Display the JUCE Splash Screen") + " (" + licenseRequiredTagline + ")"), | |||
description["Display the JUCE splash screen"] + " " + licenseRequiredInfo); | |||
} | |||
props.add (new ChoicePropertyComponent (splashScreenColourValue, "Splash Screen Colour", | |||
@@ -1,153 +0,0 @@ | |||
/* | |||
============================================================================== | |||
This file is part of the JUCE 6 technical preview. | |||
Copyright (c) 2017 - ROLI Ltd. | |||
You may use this code under the terms of the GPL v3 | |||
(see www.gnu.org/licenses). | |||
For this technical preview, this file is not subject to commercial licensing. | |||
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER | |||
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE | |||
DISCLAIMED. | |||
============================================================================== | |||
*/ | |||
#pragma once | |||
#include "../../Licenses/jucer_LicenseController.h" | |||
#include "../../Application/jucer_Application.h" | |||
//============================================================================== | |||
class UserSettingsPopup : public Component | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
, private LicenseController::StateChangedCallback | |||
#endif | |||
{ | |||
public: | |||
UserSettingsPopup (bool isShownInsideWebview) | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
: isInsideWebview (isShownInsideWebview) | |||
#endif | |||
{ | |||
#if JUCER_ENABLE_GPL_MODE | |||
ignoreUnused (isShownInsideWebview); | |||
#endif | |||
auto standardFont = Font (16.0f); | |||
loggedInUsernameLabel.reset (new Label ("Username Label")); | |||
addAndMakeVisible (loggedInUsernameLabel.get()); | |||
loggedInUsernameLabel->setFont (standardFont); | |||
loggedInUsernameLabel->setJustificationType (Justification::centred); | |||
loggedInUsernameLabel->setMinimumHorizontalScale (0.75f); | |||
#if JUCER_ENABLE_GPL_MODE | |||
loggedInUsernameLabel->setText ("GPL Mode: Re-compile with JUCER_ENABLE_GPL_MODE=0 to enable login!", | |||
NotificationType::dontSendNotification); | |||
#else | |||
licenseTypeLabel.reset (new Label ("License Type Label")); | |||
addAndMakeVisible (licenseTypeLabel.get()); | |||
licenseTypeLabel->setFont (standardFont); | |||
licenseTypeLabel->setJustificationType (Justification::centred); | |||
licenseTypeLabel->setMinimumHorizontalScale (1.0f); | |||
logoutButton.reset (new TextButton (isInsideWebview ? "Select different account..." : "Sign out")); | |||
addAndMakeVisible (logoutButton.get()); | |||
logoutButton->setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId)); | |||
logoutButton->onClick = [this] | |||
{ | |||
dismissCalloutBox(); | |||
ProjucerApplication::getApp().doLogout(); | |||
}; | |||
if (! isInsideWebview) | |||
{ | |||
switchLicenseButton.reset (new TextButton ("Switch License")); | |||
addAndMakeVisible (switchLicenseButton.get()); | |||
switchLicenseButton->onClick = [this] | |||
{ | |||
dismissCalloutBox(); | |||
if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
controller->chooseNewLicense(); | |||
}; | |||
} | |||
if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
licenseStateChanged (controller->getState()); | |||
#endif | |||
} | |||
void paint (Graphics& g) override | |||
{ | |||
g.fillAll (findColour (secondaryBackgroundColourId)); | |||
} | |||
void resized() override | |||
{ | |||
auto bounds = getLocalBounds().reduced (10); | |||
#if JUCER_ENABLE_GPL_MODE | |||
loggedInUsernameLabel->setBounds (bounds); | |||
#else | |||
loggedInUsernameLabel->setBounds (bounds.removeFromTop (hasLicenseType ? 25 : 75)); | |||
if (hasLicenseType) | |||
{ | |||
bounds.removeFromTop (10); | |||
licenseTypeLabel->setBounds (bounds.removeFromTop (25)); | |||
} | |||
bounds.removeFromBottom (5); | |||
auto buttonArea = bounds.removeFromBottom (40); | |||
if (! isInsideWebview) | |||
switchLicenseButton->setBounds (buttonArea.removeFromRight (buttonArea.getWidth() / 2).reduced (2)); | |||
logoutButton->setBounds (buttonArea.reduced (2)); | |||
#endif | |||
} | |||
private: | |||
//============================================================================== | |||
void dismissCalloutBox() | |||
{ | |||
if (auto* parent = findParentComponentOfClass<CallOutBox>()) | |||
parent->dismiss(); | |||
} | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
void licenseStateChanged (const LicenseState& state) override | |||
{ | |||
hasLicenseType = (state.type != LicenseState::Type::noLicenseChosenYet); | |||
licenseTypeLabel->setVisible (hasLicenseType); | |||
loggedInUsernameLabel->setText (state.username, NotificationType::dontSendNotification); | |||
licenseTypeLabel->setText (LicenseState::licenseTypeToString (state.type), NotificationType::dontSendNotification); | |||
} | |||
void lookAndFeelChanged() override | |||
{ | |||
if (logoutButton != nullptr) | |||
logoutButton->setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId)); | |||
} | |||
#endif | |||
//============================================================================== | |||
std::unique_ptr<Label> loggedInUsernameLabel; | |||
#if ! JUCER_ENABLE_GPL_MODE | |||
std::unique_ptr<Label> licenseTypeLabel; | |||
std::unique_ptr<TextButton> logoutButton, switchLicenseButton; | |||
bool hasLicenseType = false; | |||
bool isInsideWebview; | |||
#endif | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (UserSettingsPopup) | |||
}; |