Browse Source

Projucer: Cleaned up the structure of the Projucer folder in userApplicationDataDirectory and renamed old "Introjucer" global/project settings files to "Projucer"

tags/2021-05-28
ed 8 years ago
parent
commit
ba36008560
5 changed files with 62 additions and 28 deletions
  1. +4
    -1
      extras/Projucer/Source/Application/jucer_Application.cpp
  2. +1
    -1
      extras/Projucer/Source/Application/jucer_Application.h
  3. +11
    -10
      extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h
  4. +44
    -16
      extras/Projucer/Source/Utility/jucer_StoredSettings.cpp
  5. +2
    -0
      extras/Projucer/Source/Utility/jucer_StoredSettings.h

+ 4
- 1
extras/Projucer/Source/Application/jucer_Application.cpp View File

@@ -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;
}


+ 1
- 1
extras/Projucer/Source/Application/jucer_Application.h View File

@@ -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();


+ 11
- 10
extras/Projucer/Source/LiveBuildEngine/projucer_CompileEngineDLL.h View File

@@ -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;


+ 44
- 16
extras/Projucer/Source/Utility/jucer_StoredSettings.cpp View File

@@ -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<XmlElement> 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<XmlElement> projectDefaultsXml (propertyFiles.getFirst()->getXmlValue ("PROJECT_DEFAULT_SETTINGS"));
@@ -153,6 +154,33 @@ void StoredSettings::setLastProjects (const Array<File>& 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())
{


+ 2
- 0
extras/Projucer/Source/Utility/jucer_StoredSettings.h View File

@@ -88,6 +88,8 @@ private:
void loadSwatchColours();
void saveSwatchColours();
void updateOldProjectSettingsFiles();
//==============================================================================
void valueTreePropertyChanged (ValueTree&, const Identifier&) override { changed(); }
void valueTreeChildAdded (ValueTree&, ValueTree&) override { changed(); }


Loading…
Cancel
Save