Browse Source

Projucer: Removed sign-in

tags/2021-05-28
ed 5 years ago
parent
commit
cf93f79cc8
25 changed files with 47 additions and 1472 deletions
  1. +2
    -8
      extras/Projucer/Builds/LinuxMakefile/Makefile
  2. +2
    -63
      extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
  3. +2
    -8
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj
  4. +0
    -21
      extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters
  5. +2
    -8
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
  6. +0
    -21
      extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters
  7. +2
    -8
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
  8. +0
    -21
      extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
  9. +1
    -2
      extras/Projucer/CMakeLists.txt
  10. +2
    -52
      extras/Projucer/JuceLibraryCode/BinaryData.cpp
  11. +1
    -4
      extras/Projucer/JuceLibraryCode/BinaryData.h
  12. +2
    -15
      extras/Projucer/Projucer.jucer
  13. +0
    -24
      extras/Projucer/Source/Application/Windows/jucer_AboutWindowComponent.h
  14. +16
    -81
      extras/Projucer/Source/Application/jucer_Application.cpp
  15. +4
    -14
      extras/Projucer/Source/Application/jucer_Application.h
  16. +4
    -6
      extras/Projucer/Source/Application/jucer_CommandIDs.h
  17. +0
    -42
      extras/Projucer/Source/BinaryData/offlinepage.html
  18. +0
    -104
      extras/Projucer/Source/Licenses/jucer_LicenseController.h
  19. +0
    -458
      extras/Projucer/Source/Licenses/jucer_LicenseThread.h
  20. +0
    -271
      extras/Projucer/Source/Licenses/jucer_LicenseWebview.h
  21. +2
    -56
      extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp
  22. +2
    -12
      extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h
  23. +0
    -9
      extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp
  24. +3
    -11
      extras/Projucer/Source/Project/jucer_Project.cpp
  25. +0
    -153
      extras/Projucer/Source/Utility/UI/jucer_UserSettingsPopup.h

+ 2
- 8
extras/Projucer/Builds/LinuxMakefile/Makefile View File

@@ -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"


+ 2
- 63
extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj View File

@@ -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,


+ 2
- 8
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj View File

@@ -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"/>


+ 0
- 21
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters View File

@@ -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>


+ 2
- 8
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj View File

@@ -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"/>


+ 0
- 21
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters View File

@@ -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>


+ 2
- 8
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj View File

@@ -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"/>


+ 0
- 21
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters View File

@@ -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>


+ 1
- 2
extras/Projucer/CMakeLists.txt View File

@@ -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


+ 2
- 52
extras/Projucer/JuceLibraryCode/BinaryData.cpp View File

@@ -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"
};


+ 1
- 4
extras/Projucer/JuceLibraryCode/BinaryData.h View File

@@ -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[];


+ 2
- 15
extras/Projucer/Projucer.jucer View File

@@ -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"/>


+ 0
- 24
extras/Projucer/Source/Application/Windows/jucer_AboutWindowComponent.h View File

@@ -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;


+ 16
- 81
extras/Projucer/Source/Application/jucer_Application.cpp View File

@@ -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);
}


+ 4
- 14
extras/Projucer/Source/Application/jucer_Application.h View File

@@ -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;


+ 4
- 6
extras/Projucer/Source/Application/jucer_CommandIDs.h View File

@@ -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
};


+ 0
- 42
extras/Projucer/Source/BinaryData/offlinepage.html View File

@@ -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>

+ 0
- 104
extras/Projucer/Source/Licenses/jucer_LicenseController.h View File

@@ -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)
};

+ 0
- 458
extras/Projucer/Source/Licenses/jucer_LicenseThread.h View File

@@ -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)
};

+ 0
- 271
extras/Projucer/Source/Licenses/jucer_LicenseWebview.h View File

@@ -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)
};

+ 2
- 56
extras/Projucer/Source/Project/UI/jucer_HeaderComponent.cpp View File

@@ -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()
{


+ 2
- 12
extras/Projucer/Source/Project/UI/jucer_HeaderComponent.h View File

@@ -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;


+ 0
- 9
extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp View File

@@ -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;


+ 3
- 11
extras/Projucer/Source/Project/jucer_Project.cpp View File

@@ -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",


+ 0
- 153
extras/Projucer/Source/Utility/UI/jucer_UserSettingsPopup.h View File

@@ -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)
};

Loading…
Cancel
Save