diff --git a/extras/Projucer/Source/Application/jucer_MainWindow.cpp b/extras/Projucer/Source/Application/jucer_MainWindow.cpp index 5adcde5fe0..22ee9ec427 100644 --- a/extras/Projucer/Source/Application/jucer_MainWindow.cpp +++ b/extras/Projucer/Source/Application/jucer_MainWindow.cpp @@ -75,6 +75,8 @@ MainWindow::MainWindow() getLookAndFeel().setColour (ColourSelector::backgroundColourId, Colours::transparentBlack); + projectNameValue.addListener (this); + setResizeLimits (600, 500, 32000, 32000); } @@ -165,9 +167,9 @@ void MainWindow::setProject (Project* newProject) currentProject = newProject; if (currentProject != nullptr) - setName (currentProject->getProjectFilenameRoot() + " - Projucer"); + projectNameValue.referTo (currentProject->getProjectNameValue()); else - setName ("Projucer"); + projectNameValue.referTo (Value()); ProjucerApplication::getCommandManager().commandStatusChanged(); } @@ -361,6 +363,13 @@ bool MainWindow::perform (const InvocationInfo& info) return true; } +void MainWindow::valueChanged (Value& v) +{ + if (v == Value()) + setName ("Projucer"); + else + setName (projectNameValue.toString() + " - Projucer"); +} //============================================================================== MainWindowList::MainWindowList() diff --git a/extras/Projucer/Source/Application/jucer_MainWindow.h b/extras/Projucer/Source/Application/jucer_MainWindow.h index 0a728e63b9..b9e82830fb 100644 --- a/extras/Projucer/Source/Application/jucer_MainWindow.h +++ b/extras/Projucer/Source/Application/jucer_MainWindow.h @@ -36,7 +36,8 @@ class MainWindow : public DocumentWindow, public ApplicationCommandTarget, public FileDragAndDropTarget, - public DragAndDropContainer + public DragAndDropContainer, + private Value::Listener { public: //============================================================================== @@ -76,10 +77,13 @@ public: StringArray& files, bool& canMoveFiles) override; private: ScopedPointer currentProject; + Value projectNameValue; static const char* getProjectWindowPosName() { return "projectWindowPos"; } void createProjectContentCompIfNeeded(); + void valueChanged (Value&) override; + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) }; diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 010ff2d3e3..31a2a8047d 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -79,11 +79,6 @@ void Project::setTitle (const String& newTitle) getMainGroup().getNameValue() = newTitle; } -String Project::getTitle() const -{ - return projectRoot.getChildWithName (Ids::MAINGROUP) [Ids::name]; -} - String Project::getDocumentTitle() { return getTitle(); @@ -458,6 +453,8 @@ void Project::valueTreePropertyChanged (ValueTree&, const Identifier& property) { if (property == Ids::projectType) setMissingDefaultValues(); + else if (property == Ids::name) + setTitle (projectRoot [Ids::name]); changed(); } diff --git a/extras/Projucer/Source/Project/jucer_Project.h b/extras/Projucer/Source/Project/jucer_Project.h index a8ecd63feb..f1c2eb3d29 100644 --- a/extras/Projucer/Source/Project/jucer_Project.h +++ b/extras/Projucer/Source/Project/jucer_Project.h @@ -56,8 +56,8 @@ public: //============================================================================== File getProjectFolder() const { return getFile().getParentDirectory(); } ValueTree getProjectRoot() const { return projectRoot; } - String getTitle() const; - Value getProjectNameValue() { return getMainGroup().getNameValue(); } + String getTitle() const { return projectRoot [Ids::name]; } + Value getProjectNameValue() { return getProjectValue (Ids::name); } String getProjectFilenameRoot() { return File::createLegalFileName (getDocumentTitle()); } String getProjectUID() const { return projectRoot [Ids::ID]; } diff --git a/extras/Projucer/Source/Project/jucer_ProjectTree_Base.h b/extras/Projucer/Source/Project/jucer_ProjectTree_Base.h index b58b79eaa6..17e63f55c7 100644 --- a/extras/Projucer/Source/Project/jucer_ProjectTree_Base.h +++ b/extras/Projucer/Source/Project/jucer_ProjectTree_Base.h @@ -46,15 +46,7 @@ public: //============================================================================== String getDisplayName() const override { return item.getName(); } String getRenamingName() const override { return getDisplayName(); } - - void setName (const String& newName) override - { - if (item.isMainGroup()) - item.project.setTitle (newName); - else - item.getNameValue() = newName; - } - + void setName (const String& newName) override { item.getNameValue() = newName; } bool isMissing() const override { return isFileMissing; } virtual File getFile() const { return item.getFile(); }