diff --git a/extras/Projucer/Source/Application/jucer_Application.cpp b/extras/Projucer/Source/Application/jucer_Application.cpp index 0f58675100..75b195c78d 100644 --- a/extras/Projucer/Source/Application/jucer_Application.cpp +++ b/extras/Projucer/Source/Application/jucer_Application.cpp @@ -781,7 +781,7 @@ void ProjucerApplication::deleteLogger() logger = nullptr; } -PropertiesFile::Options ProjucerApplication::getPropertyFileOptionsFor (const String& filename) +PropertiesFile::Options ProjucerApplication::getPropertyFileOptionsFor (const String& filename, bool isProjectSettings) { PropertiesFile::Options options; options.applicationName = filename; @@ -793,6 +793,9 @@ PropertiesFile::Options ProjucerApplication::getPropertyFileOptionsFor (const St options.folderName = "Projucer"; #endif + if (isProjectSettings) + options.folderName += "/ProjectSettings"; + return options; } diff --git a/extras/Projucer/Source/Application/jucer_Application.h b/extras/Projucer/Source/Application/jucer_Application.h index 3195532bc6..6559c88279 100644 --- a/extras/Projucer/Source/Application/jucer_Application.h +++ b/extras/Projucer/Source/Application/jucer_Application.h @@ -92,7 +92,7 @@ public: bool closeAllDocuments (bool askUserToSave); bool closeAllMainWindows(); - PropertiesFile::Options getPropertyFileOptionsFor (const String& filename); + PropertiesFile::Options getPropertyFileOptionsFor (const String& filename, bool isProjectSettings); //============================================================================== void showUTF8ToolWindow(); diff --git a/extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h b/extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h index 177502bc43..4bd8940251 100644 --- a/extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h +++ b/extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h @@ -43,7 +43,7 @@ struct CompileEngineDLL : DeletedAtShutdown // never load the dynamic lib multiple times if (! isLoaded()) { - File f = findDLLFile(); + auto f = findDLLFile(); if (f != File() && dll.open (f.getLinkedTarget().getFullPathName())) { @@ -105,13 +105,13 @@ struct CompileEngineDLL : DeletedAtShutdown static File getVersionedUserAppSupportFolder() { - File userAppData (File::getSpecialLocation (File::userApplicationDataDirectory)); + auto userAppData = File::getSpecialLocation (File::userApplicationDataDirectory); #if JUCE_MAC userAppData = userAppData.getChildFile ("Application Support"); #endif - return userAppData.getChildFile (String ("Projucer-") + ProjectInfo::versionString); + return userAppData.getChildFile ("Projucer").getChildFile (String ("CompileEngine-") + ProjectInfo::versionString); } juce_DeclareSingleton (CompileEngineDLL, false) @@ -123,9 +123,9 @@ private: static File findDLLFile() { - File dllFile; + auto dllFile = File(); - if (tryFindDLLFileInAppFolder(dllFile)) + if (tryFindDLLFileInAppFolder (dllFile)) return dllFile; #if JUCE_MAC @@ -133,7 +133,7 @@ private: return dllFile; #endif - if (tryFindDLLFileInAppConfigFolder(dllFile)) + if (tryFindDLLFileInAppConfigFolder (dllFile)) return dllFile; return {}; @@ -149,19 +149,19 @@ private: static bool tryFindDLLFileInAppFolder(File &outFile) { - File currentAppFile (File::getSpecialLocation (File::currentApplicationFile)); + auto currentAppFile = File::getSpecialLocation (File::currentApplicationFile); return tryFindDLLFileInFolder (currentAppFile.getParentDirectory(), outFile); } static bool tryFindDLLFileInAppConfigFolder(File &outFile) { - File userAppDataFolder (getVersionedUserAppSupportFolder()); + auto userAppDataFolder = getVersionedUserAppSupportFolder(); return tryFindDLLFileInFolder (userAppDataFolder, outFile); } static bool tryFindDLLFileInFolder(File folder, File& outFile) { - File file = folder.getChildFile (getDLLName()); + auto file = folder.getChildFile (getDLLName()); if (isDLLFile (file)) { outFile = file; @@ -178,7 +178,8 @@ private: static void setPropertyCallback (const char* key, const char* value) { - if (String (key).isNotEmpty()) + auto keyStr = String (key); + if (keyStr.isNotEmpty()) getGlobalProperties().setValue (key, value); else jassertfalse; diff --git a/extras/Projucer/Source/Utility/jucer_StoredSettings.cpp b/extras/Projucer/Source/Utility/jucer_StoredSettings.cpp index f51198d775..ef4b6cc09a 100644 --- a/extras/Projucer/Source/Utility/jucer_StoredSettings.cpp +++ b/extras/Projucer/Source/Utility/jucer_StoredSettings.cpp @@ -44,6 +44,7 @@ PropertiesFile& getGlobalProperties() StoredSettings::StoredSettings() : appearance (true), projectDefaults ("PROJECT_DEFAULT_SETTINGS") { + updateOldProjectSettingsFiles(); reload(); projectDefaults.addListener (this); } @@ -59,24 +60,24 @@ PropertiesFile& StoredSettings::getGlobalProperties() return *propertyFiles.getUnchecked (0); } -static PropertiesFile* createPropsFile (const String& filename) +static PropertiesFile* createPropsFile (const String& filename, bool isProjectSettings) { return new PropertiesFile (ProjucerApplication::getApp() - .getPropertyFileOptionsFor (filename)); + .getPropertyFileOptionsFor (filename, isProjectSettings)); } PropertiesFile& StoredSettings::getProjectProperties (const String& projectUID) { - const String filename ("Introjucer_Project_" + projectUID); + const auto filename = String ("Projucer_Project_" + projectUID); - for (int i = propertyFiles.size(); --i >= 0;) + for (auto i = propertyFiles.size(); --i >= 0;) { - PropertiesFile* const props = propertyFiles.getUnchecked(i); + auto* const props = propertyFiles.getUnchecked(i); if (props->getFile().getFileNameWithoutExtension() == filename) return *props; } - PropertiesFile* p = createPropsFile (filename); + auto* p = createPropsFile (filename, true); propertyFiles.add (p); return *p; } @@ -97,7 +98,7 @@ void StoredSettings::updateKeyMappings() { getGlobalProperties().removeValue ("keyMappings"); - if (ApplicationCommandManager* commandManager = ProjucerApplication::getApp().commandManager) + if (auto* commandManager = ProjucerApplication::getApp().commandManager.get()) { const ScopedPointer keys (commandManager->getKeyMappings()->createXml (true)); @@ -111,14 +112,14 @@ void StoredSettings::flush() updateGlobalPreferences(); saveSwatchColours(); - for (int i = propertyFiles.size(); --i >= 0;) + for (auto i = propertyFiles.size(); --i >= 0;) propertyFiles.getUnchecked(i)->saveIfNeeded(); } void StoredSettings::reload() { propertyFiles.clear(); - propertyFiles.add (createPropsFile ("Introjucer")); + propertyFiles.add (createPropsFile ("Projucer", false)); ScopedPointer projectDefaultsXml (propertyFiles.getFirst()->getXmlValue ("PROJECT_DEFAULT_SETTINGS")); @@ -153,6 +154,33 @@ void StoredSettings::setLastProjects (const Array& files) getGlobalProperties().setValue ("lastProjects", s.joinIntoString ("|")); } +void StoredSettings::updateOldProjectSettingsFiles() +{ + // Global properties file hasn't been created yet so create a dummy file + auto projucerSettingsDirectory = ProjucerApplication::getApp().getPropertyFileOptionsFor ("Dummy", false) + .getDefaultFile().getParentDirectory(); + + auto newProjectSettingsDir = projucerSettingsDirectory.getChildFile ("ProjectSettings"); + newProjectSettingsDir.createDirectory(); + + DirectoryIterator iter (projucerSettingsDirectory, false, "*.settings"); + while (iter.next()) + { + auto f = iter.getFile(); + auto oldFileName = f.getFileName(); + + if (oldFileName.contains ("Introjucer")) + { + auto newFileName = oldFileName.replace ("Introjucer", "Projucer"); + + if (oldFileName.contains ("_Project")) + f.moveFileTo (f.getSiblingFile (newProjectSettingsDir.getFileName()).getChildFile (newFileName)); + else + f.moveFileTo (f.getSiblingFile (newFileName)); + } + } +} + //============================================================================== void StoredSettings::loadSwatchColours() { @@ -168,19 +196,19 @@ void StoredSettings::loadSwatchColours() #undef COL - const int numSwatchColours = 24; - PropertiesFile& props = getGlobalProperties(); + const auto numSwatchColours = 24; + auto& props = getGlobalProperties(); - for (int i = 0; i < numSwatchColours; ++i) + for (auto i = 0; i < numSwatchColours; ++i) swatchColours.add (Colour::fromString (props.getValue ("swatchColour" + String (i), colours [2 + i].toString()))); } void StoredSettings::saveSwatchColours() { - PropertiesFile& props = getGlobalProperties(); + auto& props = getGlobalProperties(); - for (int i = 0; i < swatchColours.size(); ++i) + for (auto i = 0; i < swatchColours.size(); ++i) props.setValue ("swatchColour" + String (i), swatchColours.getReference(i).toString()); } @@ -202,13 +230,13 @@ void StoredSettings::ColourSelectorWithSwatches::setSwatchColour (int index, con //============================================================================== static bool doesSDKPathContainFile (const File& relativeTo, const String& path, const String& fileToCheckFor) { - String actualPath = path.replace ("${user.home}", File::getSpecialLocation (File::userHomeDirectory).getFullPathName()); + auto actualPath = path.replace ("${user.home}", File::getSpecialLocation (File::userHomeDirectory).getFullPathName()); return relativeTo.getChildFile (actualPath + "/" + fileToCheckFor).existsAsFile(); } Value StoredSettings::getGlobalPath (const Identifier& key, DependencyPathOS os) { - Value v (projectDefaults.getPropertyAsValue (key, nullptr)); + auto v = projectDefaults.getPropertyAsValue (key, nullptr); if (v.toString().isEmpty()) { diff --git a/extras/Projucer/Source/Utility/jucer_StoredSettings.h b/extras/Projucer/Source/Utility/jucer_StoredSettings.h index 297caf897c..ba0efa8a51 100644 --- a/extras/Projucer/Source/Utility/jucer_StoredSettings.h +++ b/extras/Projucer/Source/Utility/jucer_StoredSettings.h @@ -88,6 +88,8 @@ private: void loadSwatchColours(); void saveSwatchColours(); + void updateOldProjectSettingsFiles(); + //============================================================================== void valueTreePropertyChanged (ValueTree&, const Identifier&) override { changed(); } void valueTreeChildAdded (ValueTree&, ValueTree&) override { changed(); }