1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Projucer: Remove the JUCE splash screen and update licensing

This commit is contained in:
Tom Poole 2024-03-25 12:11:50 +00:00 committed by Anthony Nicholls
parent 22d4747038
commit fd933dfac6
95 changed files with 355 additions and 988 deletions

View file

@ -75,9 +75,6 @@ static void doBasicProjectSetup (Project& project, const NewProjectTemplates::Pr
project.getProjectValue (Ids::useAppConfig) = false;
project.getProjectValue (Ids::addUsingNamespaceToJuceHeader) = false;
if (! ProjucerApplication::getApp().getLicenseController().getCurrentState().canUnlockFullFeatures())
project.getProjectValue (Ids::displaySplashScreen) = true;
if (NewProjectTemplates::isPlugin (projectTemplate))
project.getConfigFlag ("JUCE_VST3_CAN_REPLACE_VST2") = 0;
}

View file

@ -47,9 +47,9 @@ public:
}
//==============================================================================
static LicenseState getGPLState()
static LicenseState getAGPLState()
{
return { LicenseState::Type::gpl, projucerMajorVersion, {}, {} };
return { LicenseState::Type::agplv3, projucerMajorVersion, {}, {} };
}
LicenseState getCurrentState() const noexcept
@ -113,7 +113,7 @@ private:
{
switch (type)
{
case LicenseState::Type::gpl: return "GPL";
case LicenseState::Type::agplv3: return "AGPLv3";
case LicenseState::Type::personal: return "personal";
case LicenseState::Type::educational: return "edu";
case LicenseState::Type::indie: return "indie";
@ -127,7 +127,7 @@ private:
static LicenseState::Type getLicenseTypeFromValue (const String& d)
{
if (d == getLicenseStateValue (LicenseState::Type::gpl)) return LicenseState::Type::gpl;
if (d == getLicenseStateValue (LicenseState::Type::agplv3)) return LicenseState::Type::agplv3;
if (d == getLicenseStateValue (LicenseState::Type::personal)) return LicenseState::Type::personal;
if (d == getLicenseStateValue (LicenseState::Type::educational)) return LicenseState::Type::educational;
if (d == getLicenseStateValue (LicenseState::Type::indie)) return LicenseState::Type::indie;
@ -188,7 +188,7 @@ private:
//==============================================================================
void checkLicense()
{
if (state.authToken.isNotEmpty() && ! state.isGPL())
if (state.authToken.isNotEmpty() && ! state.isAGPL())
{
auto completionCallback = [this] (LicenseQueryThread::ErrorMessageAndType error,
LicenseState updatedState)
@ -218,11 +218,7 @@ private:
}
//==============================================================================
#if JUCER_ENABLE_GPL_MODE
LicenseState state = getGPLState();
#else
LicenseState state = licenseStateFromSettings (getGlobalProperties());
#endif
ListenerList<LicenseStateListener> stateListeners;
LicenseQueryThread licenseQueryThread;

View file

@ -63,7 +63,7 @@ namespace LicenseHelpers
case LicenseState::Type::indie: return 3;
case LicenseState::Type::educational: return 2;
case LicenseState::Type::personal: return 1;
case LicenseState::Type::gpl:
case LicenseState::Type::agplv3:
case LicenseState::Type::none:
default: return -1;
}

View file

@ -41,7 +41,7 @@ struct LicenseState
enum class Type
{
none,
gpl,
agplv3,
personal,
educational,
indie,
@ -68,21 +68,17 @@ struct LicenseState
return ! operator== (other);
}
bool isSignedIn() const noexcept { return isGPL() || (version > 0 && username.isNotEmpty()); }
bool isOldLicense() const noexcept { return isSignedIn() && version < projucerMajorVersion; }
bool isGPL() const noexcept { return type == Type::gpl; }
bool canUnlockFullFeatures() const noexcept
{
return isGPL() || (isSignedIn() && ! isOldLicense() && (type == Type::indie || type == Type::pro));
}
bool isSignedIn() const noexcept { return isAGPL() || (version > 0 && username.isNotEmpty()); }
bool isOldLicense() const noexcept { return isSignedIn() && version < projucerMajorVersion; }
bool isAGPL() const noexcept { return type == Type::agplv3; }
bool isPersonalOrNone() const noexcept { return type == Type::none || type == Type::personal; }
String getLicenseTypeString() const
{
switch (type)
{
case Type::none: return "No license";
case Type::gpl: return "GPL";
case Type::agplv3: return "AGPLv3";
case Type::personal: return "Personal";
case Type::educational: return "Educational";
case Type::indie: return "Indie";

View file

@ -63,10 +63,10 @@ public:
addAndMakeVisible (logInButton);
logInButton.onClick = [this] { submitDetails(); };
addAndMakeVisible (enableGPLButton);
enableGPLButton.onClick = [this]
addAndMakeVisible (enableAGPLButton);
enableAGPLButton.onClick = [this]
{
ProjucerApplication::getApp().getLicenseController().setState (LicenseController::getGPLState());
ProjucerApplication::getApp().getLicenseController().setState (LicenseController::getAGPLState());
mainWindow.hideLoginFormOverlay();
};
@ -127,7 +127,7 @@ public:
auto slice = bounds.removeFromTop (textEditorHeight);
createAccountLabel.setBounds (slice.removeFromLeft (createAccountLabel.getFont().getStringWidth (createAccountLabel.getText()) + 5));
slice.removeFromLeft (15);
enableGPLButton.setBounds (slice.reduced (0, 5));
enableAGPLButton.setBounds (slice.reduced (0, 5));
dismissButton.setBounds (getLocalBounds().reduced (10).removeFromTop (20).removeFromRight (20));
}
@ -145,7 +145,7 @@ public:
void updateLookAndFeel()
{
enableGPLButton.setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId));
enableAGPLButton.setColour (TextButton::buttonColourId, findColour (secondaryButtonBackgroundColourId));
}
void lookAndFeelChanged() override
@ -284,7 +284,7 @@ private:
TextEditor emailBox, passwordBox;
ProgressButton logInButton { "Sign In" };
TextButton enableGPLButton { "Enable GPL Mode" };
TextButton enableAGPLButton { "Enable AGPLv3 Mode" };
ShapeButton dismissButton { {},
findColour (treeIconColourId),
findColour (treeIconColourId).overlaidWith (findColour (defaultHighlightedTextColourId).withAlpha (0.2f)),

View file

@ -374,10 +374,7 @@ PopupMenu ProjucerApplication::createFileMenu()
menu.addCommandItem (commandManager.get(), CommandIDs::openInIDE);
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);
@ -1038,8 +1035,8 @@ void ProjucerApplication::getCommandInfo (CommandID commandID, ApplicationComman
{
auto licenseState = licenseController->getCurrentState();
if (licenseState.isGPL())
result.setInfo ("Disable GPL mode", "Disables GPL mode", CommandCategories::general, 0);
if (licenseState.isAGPL())
result.setInfo ("Disable AGPLv3 mode", "Disables AGPLv3 mode", CommandCategories::general, 0);
else
result.setInfo (licenseState.isSignedIn() ? String ("Sign out ") + licenseState.username + "..." : String ("Sign in..."),
"Sign out of your JUCE account",

View file

@ -32,6 +32,10 @@
==============================================================================
*/
#ifdef JUCER_ENABLE_GPL_MODE
#warning The flag JUCER_ENABLE_GPL_MODE has been removed
#endif
#include "jucer_Headers.h"
#include "jucer_Application.h"

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

View file

@ -36,11 +36,8 @@
#include "../ProjectSaving/jucer_ProjectExporter.h"
#include "../Project/UI/jucer_HeaderComponent.h"
#include "jucer_LicenseController.h"
#if ! JUCER_ENABLE_GPL_MODE
#include "jucer_LicenseWebview.h"
#include "jucer_LicenseThread.h"
#endif
#include "jucer_LicenseWebview.h"
#include "jucer_LicenseThread.h"
//==============================================================================
const char* LicenseState::licenseTypeToString (LicenseState::Type type)
@ -49,7 +46,7 @@ const char* LicenseState::licenseTypeToString (LicenseState::Type type)
{
case Type::notLoggedIn: return "<notLoggedIn>";
case Type::noLicenseChosenYet: return "<noLicenseChosenYet>";
case Type::GPL: return "JUCE GPL";
case Type::agplv3: return "AGPLv3";
case Type::personal: return "JUCE Personal";
case Type::edu: return "JUCE Education";
case Type::indie: return "JUCE Indie";
@ -62,7 +59,7 @@ static const char* getLicenseStateValue (LicenseState::Type type)
{
switch (type)
{
case LicenseState::Type::GPL: return "GPL";
case LicenseState::Type::agplv3: return "agplv3";
case LicenseState::Type::personal: return "personal";
case LicenseState::Type::edu: return "edu";
case LicenseState::Type::indie: return "indie";
@ -75,7 +72,7 @@ static const char* getLicenseStateValue (LicenseState::Type type)
static LicenseState::Type getLicenseTypeFromValue (const String& d)
{
if (d == getLicenseStateValue (LicenseState::Type::GPL)) return LicenseState::Type::GPL;
if (d == getLicenseStateValue (LicenseState::Type::agplv3)) return LicenseState::Type::agplv3;
if (d == getLicenseStateValue (LicenseState::Type::personal)) return LicenseState::Type::personal;
if (d == getLicenseStateValue (LicenseState::Type::edu)) return LicenseState::Type::edu;
if (d == getLicenseStateValue (LicenseState::Type::indie)) return LicenseState::Type::indie;
@ -83,7 +80,6 @@ static LicenseState::Type getLicenseTypeFromValue (const String& d)
return LicenseState::Type::noLicenseChosenYet;
}
#if ! JUCER_ENABLE_GPL_MODE
struct LicenseController::ModalCompletionCallback final : ModalComponentManager::Callback
{
ModalCompletionCallback (LicenseController& controller) : owner (controller) {}
@ -92,24 +88,17 @@ struct LicenseController::ModalCompletionCallback final : ModalComponentManager:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ModalCompletionCallback)
};
#endif
//==============================================================================
LicenseController::LicenseController()
: state (licenseStateFromSettings (ProjucerApplication::getApp().settings->getGlobalProperties()))
{
#if JUCER_ENABLE_GPL_MODE
state.type = LicenseState::Type::GPL;
state.username = "GPL mode";
#endif
}
LicenseController::~LicenseController()
{
#if ! JUCER_ENABLE_GPL_MODE
thread.reset();
closeWebview (-1);
#endif
}
LicenseState LicenseController::getState() const noexcept
@ -117,13 +106,13 @@ LicenseState LicenseController::getState() const noexcept
LicenseState projucerState = state;
// if the user has never logged in before and the user is running from command line
// then we have no way to ask the user to log in, so fallback to GPL mode
// then we have no way to ask the user to log in, so fallback to AGPLv3 mode
if (guiNotInitialisedYet
&& (state.type == LicenseState::Type::notLoggedIn
|| state.type == LicenseState::Type::noLicenseChosenYet))
{
projucerState.type = LicenseState::Type::GPL;
projucerState.username = "GPL mode";
projucerState.type = LicenseState::Type::agplv3;
projucerState.username = "AGPLv3 mode";
}
return projucerState;
@ -138,17 +127,14 @@ void LicenseController::startWebviewIfNeeded()
listeners.call ([&] (StateChangedCallback& l) { l.licenseStateChanged (stateParam); });
}
#if ! JUCER_ENABLE_GPL_MODE
if (thread == nullptr)
thread.reset (new LicenseThread (*this, false));
#endif
}
void LicenseController::logout()
{
JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED
#if ! JUCER_ENABLE_GPL_MODE
thread.reset();
updateState ({});
@ -157,21 +143,17 @@ void LicenseController::logout()
#endif
thread.reset (new LicenseThread (*this, false));
#endif
}
void LicenseController::chooseNewLicense()
{
JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED
#if ! JUCER_ENABLE_GPL_MODE
thread.reset();
thread.reset (new LicenseThread (*this, true));
#endif
}
//==============================================================================
#if ! JUCER_ENABLE_GPL_MODE
void LicenseController::closeWebview (int result)
{
if (licenseWebview != nullptr)
@ -235,7 +217,6 @@ void LicenseController::queryWebview (const String& startURL, const String& valu
}
});
}
#endif
void LicenseController::updateState (const LicenseState& newState)
{

View file

@ -79,7 +79,7 @@ public:
{
if (moduleInfo.getLicense() == "ISC")
iconColour = Colours::lightblue;
else if (moduleInfo.getLicense() == "GPL/Commercial")
else if (moduleInfo.getLicense() == "AGPLv3/Commercial")
iconColour = Colours::orange;
}
}

View file

@ -96,8 +96,8 @@ void HeaderComponent::resized()
configLabel.setBounds (exporterBounds);
}
userAvatar.setBounds (bounds.removeFromRight (userAvatar.isDisplaingGPLLogo() ? roundToInt ((float) bounds.getHeight() * 1.9f)
: bounds.getHeight()).reduced (2));
userAvatar.setBounds (bounds.removeFromRight (userAvatar.isDisplaingAGPLLogo() ? roundToInt ((float) bounds.getHeight() * 1.9f)
: bounds.getHeight()).reduced (2));
}
void HeaderComponent::paint (Graphics& g)
@ -253,9 +253,6 @@ void HeaderComponent::initialiseButtons()
child.setProperty (ProjectMessages::Ids::isVisible, true, nullptr);
};
if (project->hasIncompatibleLicenseTypeAndSplashScreenSetting())
setWarningVisible (ProjectMessages::Ids::incompatibleLicense);
if (project->isFileModificationCheckPending())
setWarningVisible (ProjectMessages::Ids::jucerFileModified);
};

View file

@ -59,7 +59,7 @@ public:
{
auto bounds = getLocalBounds();
if (! isGPL)
if (! isAGPL)
{
bounds = bounds.removeFromRight (bounds.getHeight());
@ -88,7 +88,7 @@ public:
}
}
bool isDisplaingGPLLogo() const noexcept { return isGPL; }
bool isDisplaingAGPLLogo() const noexcept { return isAGPL; }
std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override
{
@ -101,9 +101,9 @@ public:
private:
//==============================================================================
static Image createGPLAvatarImage()
static Image createAGPLAvatarImage()
{
if (auto logo = Drawable::createFromImageData (BinaryData::gpl_logo_svg, BinaryData::gpl_logo_svgSize))
if (auto logo = Drawable::createFromImageData (BinaryData::agplv3_logo_svg, BinaryData::agplv3_logo_svgSize))
{
auto bounds = logo->getDrawableBounds();
@ -139,15 +139,14 @@ private:
void licenseStateChanged() override
{
auto state = ProjucerApplication::getApp().getLicenseController().getCurrentState();
isGPL = ProjucerApplication::getApp().getLicenseController().getCurrentState().isGPL();
isAGPL = state.isAGPL();
if (interactive)
{
auto formattedUserString = [state]() -> String
{
if (state.isSignedIn())
return (state.isGPL() ? "" : (state.username + " - ")) + state.getLicenseTypeString();
return (state.isAGPL() ? "" : (state.username + " - ")) + state.getLicenseTypeString();
return "Not logged in";
}();
@ -155,8 +154,8 @@ private:
setTooltip (formattedUserString);
}
currentAvatar = isGPL ? gplAvatarImage
: state.isSignedIn() ? standardAvatarImage : signedOutAvatarImage;
currentAvatar = isAGPL ? agplAvatarImage
: state.isSignedIn() ? standardAvatarImage : signedOutAvatarImage;
repaint();
sendChangeMessage();
@ -175,6 +174,6 @@ private:
}
//==============================================================================
Image standardAvatarImage, signedOutAvatarImage, gplAvatarImage { createGPLAvatarImage() }, currentAvatar;
bool isGPL = false, interactive = false;
Image standardAvatarImage, signedOutAvatarImage, agplAvatarImage { createAGPLAvatarImage() }, currentAvatar;
bool isAGPL = false, interactive = false;
};

View file

@ -301,9 +301,6 @@ 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(), false);
splashScreenColourValue.referTo (projectRoot, Ids::splashScreenColour, getUndoManager(), "Dark");
useAppConfigValue.referTo (projectRoot, Ids::useAppConfig, getUndoManager(), true);
addUsingNamespaceToJuceHeader.referTo (projectRoot, Ids::addUsingNamespaceToJuceHeader, getUndoManager(), true);
@ -806,17 +803,6 @@ Result Project::saveResourcesOnly()
return saver->saveResourcesOnly();
}
bool Project::hasIncompatibleLicenseTypeAndSplashScreenSetting() const
{
auto companyName = companyNameValue.get().toString();
auto isJUCEProject = (companyName == "Raw Material Software Limited"
|| companyName == "JUCE"
|| companyName == "ROLI Ltd.");
return ! ProjucerApplication::getApp().isRunningCommandLine && ! isJUCEProject && ! shouldDisplaySplashScreen()
&& ! ProjucerApplication::getApp().getLicenseController().getCurrentState().canUnlockFullFeatures();
}
bool Project::isFileModificationCheckPending() const
{
return fileModificationPoller.isCheckPending();
@ -825,28 +811,20 @@ bool Project::isFileModificationCheckPending() const
bool Project::isSaveAndExportDisabled() const
{
return ! ProjucerApplication::getApp().isRunningCommandLine
&& (hasIncompatibleLicenseTypeAndSplashScreenSetting() || isFileModificationCheckPending());
&& isFileModificationCheckPending();
}
void Project::updateLicenseWarning()
{
if (hasIncompatibleLicenseTypeAndSplashScreenSetting())
{
ProjectMessages::MessageAction action;
auto currentLicenseState = ProjucerApplication::getApp().getLicenseController().getCurrentState();
if (ProjucerApplication::getApp().isRunningCommandLine)
return;
if (currentLicenseState.isSignedIn() && (! currentLicenseState.canUnlockFullFeatures() || currentLicenseState.isOldLicense()))
action = { "Upgrade", [] { URL ("https://juce.com/get-juce").launchInDefaultBrowser(); } };
else
action = { "Sign in", [this] { ProjucerApplication::getApp().mainWindowList.getMainWindowForFile (getFile())->showLoginFormOverlay(); } };
auto currentLicenseState = ProjucerApplication::getApp().getLicenseController().getCurrentState();
addProjectMessage (ProjectMessages::Ids::incompatibleLicense,
{ std::move (action), { "Enable splash screen", [this] { displaySplashScreenValue = true; } } });
}
if (currentLicenseState.isPersonalOrNone() || currentLicenseState.isOldLicense())
addProjectMessage (ProjectMessages::Ids::personalLicense, {});
else
{
removeProjectMessage (ProjectMessages::Ids::incompatibleLicense);
}
removeProjectMessage (ProjectMessages::Ids::personalLicense);
}
void Project::updateJUCEPathWarning()
@ -1139,10 +1117,6 @@ void Project::valueTreePropertyChanged (ValueTree& tree, const Identifier& prope
if (shouldWriteLegacyPluginCharacteristicsSettings)
writeLegacyPluginCharacteristicsSettings();
}
else if (property == Ids::displaySplashScreen)
{
updateLicenseWarning();
}
else if (property == Ids::cppLanguageStandard)
{
updateModuleWarnings();
@ -1405,17 +1379,6 @@ void Project::createPropertyEditors (PropertyListBuilder& props)
"no such statement will be included. This setting used to be enabled by default, but it "
"is recommended to leave it disabled for new projects.");
props.add (new ChoicePropertyComponent (displaySplashScreenValue, "Display the JUCE Splash Screen (required for closed source applications without an Indie or Pro JUCE license)"),
"This option controls the display of the standard JUCE splash screen. "
"In accordance with the terms of the JUCE 7 End-Use License Agreement (www.juce.com/juce-7-licence), "
"this option can only be disabled for closed source applications if you have a JUCE Indie or Pro "
"license, or are using JUCE under the GPL v3 license.");
props.add (new ChoicePropertyComponentWithEnablement (splashScreenColourValue, displaySplashScreenValue, "Splash Screen Colour",
{ "Dark", "Light" }, { "Dark", "Light" }),
"Choose the colour of the JUCE splash screen.");
{
StringArray projectTypeNames;
Array<var> projectTypeCodes;
@ -2713,8 +2676,6 @@ String Project::getUniqueTargetFolderSuffixForExporter (const Identifier& export
StringPairArray Project::getAppConfigDefs()
{
StringPairArray result;
result.set ("JUCE_DISPLAY_SPLASH_SCREEN", shouldDisplaySplashScreen() ? "1" : "0");
result.set ("JUCE_USE_DARK_SPLASH_SCREEN", getSplashScreenColourString() == "Dark" ? "1" : "0");
result.set ("JUCE_PROJUCER_VERSION", "0x" + String::toHexString (ProjectInfo::versionNumber));
OwnedArray<LibraryModule> modules;

View file

@ -50,7 +50,7 @@ namespace ProjectMessages
DECLARE_ID (projectMessages);
DECLARE_ID (incompatibleLicense);
DECLARE_ID (personalLicense);
DECLARE_ID (cppStandard);
DECLARE_ID (moduleNotFound);
DECLARE_ID (jucePath);
@ -72,15 +72,17 @@ namespace ProjectMessages
inline Identifier getTypeForMessage (const Identifier& message)
{
static Identifier warnings[] = { Ids::incompatibleLicense, Ids::cppStandard, Ids::moduleNotFound,
Ids::jucePath, Ids::jucerFileModified, Ids::missingModuleDependencies,
static Identifier warnings[] = { Ids::cppStandard, Ids::moduleNotFound, Ids::jucePath,
Ids::jucerFileModified, Ids::missingModuleDependencies,
Ids::oldProjucer, Ids::pluginCodeInvalid, Ids::manufacturerCodeInvalid,
Ids::deprecatedExporter };
if (std::find (std::begin (warnings), std::end (warnings), message) != std::end (warnings))
return Ids::warning;
if (message == Ids::newVersionAvailable)
static Identifier notifications[] = { Ids::personalLicense, Ids::newVersionAvailable };
if (std::find (std::begin (notifications), std::end (notifications), message) != std::end (notifications))
return Ids::notification;
jassertfalse;
@ -89,7 +91,6 @@ namespace ProjectMessages
inline String getTitleForMessage (const Identifier& message)
{
if (message == Ids::incompatibleLicense) return "Incompatible License and Splash Screen Setting";
if (message == Ids::cppStandard) return "C++ Standard";
if (message == Ids::moduleNotFound) return "Module Not Found";
if (message == Ids::jucePath) return "JUCE Path";
@ -100,6 +101,7 @@ namespace ProjectMessages
if (message == Ids::pluginCodeInvalid) return "Invalid Plugin Code";
if (message == Ids::manufacturerCodeInvalid) return "Invalid Manufacturer Code";
if (message == Ids::deprecatedExporter) return "Deprecated Exporter";
if (message == Ids::personalLicense) return "Personal Licence";
jassertfalse;
return {};
@ -107,7 +109,6 @@ namespace ProjectMessages
inline String getDescriptionForMessage (const Identifier& message)
{
if (message == Ids::incompatibleLicense) return "Save and export is disabled.";
if (message == Ids::cppStandard) return "Module(s) have a higher C++ standard requirement than the project.";
if (message == Ids::moduleNotFound) return "Module(s) could not be found at the specified paths.";
if (message == Ids::jucePath) return "The path to your JUCE folder is incorrect.";
@ -118,6 +119,7 @@ namespace ProjectMessages
if (message == Ids::pluginCodeInvalid) return "The plugin code should be exactly four characters in length.";
if (message == Ids::manufacturerCodeInvalid) return "The manufacturer code should be exactly four characters in length.";
if (message == Ids::deprecatedExporter) return "The project includes a deprecated exporter.";
if (message == Ids::personalLicense) return "You are using a Personal licence. Sign in to activate a commercial licence.";
jassertfalse;
return {};
@ -290,9 +292,6 @@ public:
bool shouldIncludeBinaryInJuceHeader() const { return includeBinaryDataInJuceHeaderValue.get(); }
String getBinaryDataNamespaceString() const { return binaryDataNamespaceValue.get(); }
bool shouldDisplaySplashScreen() const { return displaySplashScreenValue.get(); }
String getSplashScreenColourString() const { return splashScreenColourValue.get(); }
static StringArray getCppStandardStrings() { return { "C++17", "C++20", "Use Latest" }; }
static Array<var> getCppStandardVars() { return { "17", "20", "latest" }; }
@ -610,7 +609,6 @@ public:
std::vector<ProjectMessages::MessageAction> getMessageActions (const Identifier& message);
//==============================================================================
bool hasIncompatibleLicenseTypeAndSplashScreenSetting() const;
bool isFileModificationCheckPending() const;
bool isSaveAndExportDisabled() const;
@ -653,9 +651,9 @@ private:
ValueTree projectRoot { Ids::JUCERPROJECT };
ValueTreePropertyWithDefault projectNameValue, projectUIDValue, projectLineFeedValue, projectTypeValue, versionValue, bundleIdentifierValue, companyNameValue,
companyCopyrightValue, companyWebsiteValue, companyEmailValue, displaySplashScreenValue, splashScreenColourValue, cppStandardValue,
headerSearchPathsValue, preprocessorDefsValue, userNotesValue, maxBinaryFileSizeValue, includeBinaryDataInJuceHeaderValue, binaryDataNamespaceValue,
compilerFlagSchemesValue, postExportShellCommandPosixValue, postExportShellCommandWinValue, useAppConfigValue, addUsingNamespaceToJuceHeader;
companyCopyrightValue, companyWebsiteValue, companyEmailValue, cppStandardValue, headerSearchPathsValue, preprocessorDefsValue,
userNotesValue, maxBinaryFileSizeValue, includeBinaryDataInJuceHeaderValue, binaryDataNamespaceValue, compilerFlagSchemesValue,
postExportShellCommandPosixValue, postExportShellCommandWinValue, useAppConfigValue, addUsingNamespaceToJuceHeader;
ValueTreePropertyWithDefault pluginFormatsValue, pluginNameValue, pluginDescriptionValue, pluginManufacturerValue, pluginManufacturerCodeValue,
pluginCodeValue, pluginChannelConfigsValue, pluginCharacteristicsValue, pluginAUExportPrefixValue, pluginAAXIdentifierValue,

View file

@ -389,28 +389,6 @@ void ProjectSaver::writeAppConfig (MemoryOutputStream& out, const OwnedArray<Lib
out << newLine << CodeHelpers::createIncludeStatement (Project::getPluginDefinesFilename()) << newLine;
out << newLine
<< "/*" << newLine
<< " ==============================================================================" << newLine
<< newLine
<< " In accordance with the terms of the JUCE 7 End-Use License Agreement, the" << newLine
<< " JUCE Code in SECTION A cannot be removed, changed or otherwise rendered" << newLine
<< " ineffective unless you have a JUCE Indie or Pro license, or are using JUCE" << newLine
<< " under the GPL v3 license." << newLine
<< newLine
<< " End User License Agreement: www.juce.com/juce-7-licence" << newLine
<< newLine
<< " ==============================================================================" << newLine
<< "*/" << newLine
<< newLine
<< "// BEGIN SECTION A" << newLine
<< newLine
<< "#ifndef JUCE_DISPLAY_SPLASH_SCREEN" << newLine
<< " #define JUCE_DISPLAY_SPLASH_SCREEN " << (project.shouldDisplaySplashScreen() ? "1" : "0") << newLine
<< "#endif" << newLine << newLine
<< "// END SECTION A" << newLine
<< newLine
<< "#define JUCE_USE_DARK_SPLASH_SCREEN " << (project.getSplashScreenColourString() == "Dark" ? "1" : "0") << newLine
<< newLine
<< "#define JUCE_PROJUCER_VERSION 0x" << String::toHexString (ProjectInfo::versionNumber) << newLine;
out << newLine

View file

@ -60,8 +60,6 @@ namespace Ids
DECLARE_ID (addUsingNamespaceToJuceHeader);
DECLARE_ID (usePrecompiledHeaderFile);
DECLARE_ID (precompiledHeaderFile);
DECLARE_ID (displaySplashScreen);
DECLARE_ID (splashScreenColour);
DECLARE_ID (position);
DECLARE_ID (source);
DECLARE_ID (width);

View file

@ -381,8 +381,6 @@ Result PIPGenerator::setProjectSettings (ValueTree& jucerTree)
: "\"File->Global Paths...\"")
+ " menu item.");
}
jucerTree.setProperty (Ids::displaySplashScreen, true, nullptr);
}
setPropertyIfNotEmpty (Ids::defines, defines);