mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Projucer: Disable project saving when file modification warning is showing
This commit is contained in:
parent
f6782fe25b
commit
a3af3a5381
3 changed files with 30 additions and 13 deletions
|
|
@ -277,13 +277,22 @@ void HeaderComponent::initialiseButtons()
|
|||
{
|
||||
if (project != nullptr)
|
||||
{
|
||||
if (project->hasIncompatibleLicenseTypeAndSplashScreenSetting())
|
||||
if (project->isSaveAndExportDisabled())
|
||||
{
|
||||
auto child = project->getProjectMessages().getChildWithName (ProjectMessages::Ids::warning)
|
||||
.getChildWithName (ProjectMessages::Ids::incompatibleLicense);
|
||||
auto setWarningVisible = [this] (const Identifier& identifier)
|
||||
{
|
||||
auto child = project->getProjectMessages().getChildWithName (ProjectMessages::Ids::warning)
|
||||
.getChildWithName (identifier);
|
||||
|
||||
if (child.isValid())
|
||||
child.setProperty (ProjectMessages::Ids::isVisible, true, nullptr);
|
||||
if (child.isValid())
|
||||
child.setProperty (ProjectMessages::Ids::isVisible, true, nullptr);
|
||||
};
|
||||
|
||||
if (project->hasIncompatibleLicenseTypeAndSplashScreenSetting())
|
||||
setWarningVisible (ProjectMessages::Ids::incompatibleLicense);
|
||||
|
||||
if (project->isFileModificationCheckPending())
|
||||
setWarningVisible (ProjectMessages::Ids::jucerFileModified);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -39,22 +39,22 @@ Project::ProjectFileModificationPoller::ProjectFileModificationPoller (Project&
|
|||
void Project::ProjectFileModificationPoller::reset()
|
||||
{
|
||||
project.removeProjectMessage (ProjectMessages::Ids::jucerFileModified);
|
||||
showingWarning = false;
|
||||
pending = false;
|
||||
|
||||
startTimer (250);
|
||||
}
|
||||
|
||||
void Project::ProjectFileModificationPoller::timerCallback()
|
||||
{
|
||||
if (project.updateCachedFileState() && ! showingWarning)
|
||||
if (project.updateCachedFileState() && ! pending)
|
||||
{
|
||||
project.addProjectMessage (ProjectMessages::Ids::jucerFileModified,
|
||||
{ { "Save current state", [this] { resaveProject(); } },
|
||||
{ "Re-load from disk", [this] { reloadProjectFromDisk(); } },
|
||||
{ "Ignore", [this] { reset(); } } });
|
||||
{ "Re-load from disk", [this] { reloadProjectFromDisk(); } },
|
||||
{ "Ignore", [this] { reset(); } } });
|
||||
|
||||
stopTimer();
|
||||
showingWarning = true;
|
||||
pending = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -79,8 +79,8 @@ void Project::ProjectFileModificationPoller::reloadProjectFromDisk()
|
|||
|
||||
void Project::ProjectFileModificationPoller::resaveProject()
|
||||
{
|
||||
project.saveProject();
|
||||
reset();
|
||||
project.saveProject();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -745,9 +745,15 @@ bool Project::hasIncompatibleLicenseTypeAndSplashScreenSetting() const
|
|||
&& ! ProjucerApplication::getApp().getLicenseController().getCurrentState().canUnlockFullFeatures();
|
||||
}
|
||||
|
||||
bool Project::isFileModificationCheckPending() const
|
||||
{
|
||||
return fileModificationPoller.isCheckPending();
|
||||
}
|
||||
|
||||
bool Project::isSaveAndExportDisabled() const
|
||||
{
|
||||
return ! ProjucerApplication::getApp().isRunningCommandLine && hasIncompatibleLicenseTypeAndSplashScreenSetting();
|
||||
return ! ProjucerApplication::getApp().isRunningCommandLine
|
||||
&& (hasIncompatibleLicenseTypeAndSplashScreenSetting() || isFileModificationCheckPending());
|
||||
}
|
||||
|
||||
void Project::updateLicenseWarning()
|
||||
|
|
|
|||
|
|
@ -501,6 +501,7 @@ public:
|
|||
|
||||
//==============================================================================
|
||||
bool hasIncompatibleLicenseTypeAndSplashScreenSetting() const;
|
||||
bool isFileModificationCheckPending() const;
|
||||
bool isSaveAndExportDisabled() const;
|
||||
|
||||
private:
|
||||
|
|
@ -514,6 +515,7 @@ private:
|
|||
struct ProjectFileModificationPoller : private Timer
|
||||
{
|
||||
ProjectFileModificationPoller (Project& p);
|
||||
bool isCheckPending() const noexcept { return pending; }
|
||||
|
||||
private:
|
||||
void timerCallback() override;
|
||||
|
|
@ -523,7 +525,7 @@ private:
|
|||
void reloadProjectFromDisk();
|
||||
|
||||
Project& project;
|
||||
bool showingWarning = false;
|
||||
bool pending = false;
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue