Browse Source

Dialog window to ask whether to keep current project or re-load from disk when .jucer file changes

tags/2021-05-28
ed 8 years ago
parent
commit
8e10f16eb8
4 changed files with 47 additions and 0 deletions
  1. +23
    -0
      extras/Projucer/Source/Application/jucer_MainWindow.cpp
  2. +2
    -0
      extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h
  3. +16
    -0
      extras/Projucer/Source/Project/jucer_Project.cpp
  4. +6
    -0
      extras/Projucer/Source/Project/jucer_Project.h

+ 23
- 0
extras/Projucer/Source/Application/jucer_MainWindow.cpp View File

@@ -276,6 +276,29 @@ void MainWindow::activeWindowStatusChanged()
pcc->updateMissingFileStatuses();
ProjucerApplication::getApp().openDocumentManager.reloadModifiedFiles();
if (Project* p = getProject())
{
if (p->hasProjectBeenModified())
{
const int r = AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon,
TRANS (".jucer file has been modified since last save."),
TRANS ("Do you want to keep current project or re-load from disk?"),
TRANS ("Keep"),
TRANS ("Re-load from disk"));
if (r == 0)
{
File projectFile = p->getFile();
setProject (nullptr);
openFile (projectFile);
}
else if (r == 1)
{
ProjucerApplication::getApp().getCommandManager().invokeDirectly (CommandIDs::saveProject, true);
}
}
}
}
void MainWindow::updateTitle (const String& documentName)


+ 2
- 0
extras/Projucer/Source/Project Saving/jucer_ProjectSaver.h View File

@@ -104,6 +104,8 @@ public:
return Result::fail (errors[0]);
}
project.updateModificationTime();
return Result::ok();
}


+ 16
- 0
extras/Projucer/Source/Project/jucer_Project.cpp View File

@@ -59,6 +59,8 @@ Project::Project (const File& f)
setChangedFlag (false);
projectRoot.addListener (this);
modificationTime = getFile().getLastModificationTime();
}
Project::~Project()
@@ -374,6 +376,20 @@ void Project::valueTreeChildRemoved (ValueTree&, ValueTree&, int) { changed();
void Project::valueTreeChildOrderChanged (ValueTree&, int, int) { changed(); }
void Project::valueTreeParentChanged (ValueTree&) {}
//==============================================================================
bool Project::hasProjectBeenModified()
{
Time newModificationTime = getFile().getLastModificationTime();
if (newModificationTime != modificationTime)
{
modificationTime = newModificationTime;
return true;
}
return false;
}
//==============================================================================
File Project::resolveFilename (String filename) const
{


+ 6
- 0
extras/Projucer/Source/Project/jucer_Project.h View File

@@ -311,6 +311,10 @@ public:
//==============================================================================
static const char* projectFileExtension;
//==============================================================================
bool hasProjectBeenModified();
void updateModificationTime() { modificationTime = getFile().getLastModificationTime(); }
private:
//==============================================================================
void setMissingAudioPluginDefaultValues();
@@ -334,6 +338,8 @@ private:
void updateOldModulePaths();
void warnAboutOldProjucerVersion();
Time modificationTime;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Project)
};


Loading…
Cancel
Save