| @@ -79,7 +79,7 @@ AppearanceSettings::AppearanceSettings (bool updateAppWhenChanged) | |||||
| File AppearanceSettings::getSchemesFolder() | File AppearanceSettings::getSchemesFolder() | ||||
| { | { | ||||
| File f (getAppProperties().getFile().getSiblingFile ("Schemes")); | |||||
| File f (getGlobalProperties().getFile().getSiblingFile ("Schemes")); | |||||
| f.createDirectory(); | f.createDirectory(); | ||||
| return f; | return f; | ||||
| } | } | ||||
| @@ -58,7 +58,7 @@ MainWindow::MainWindow() | |||||
| { | { | ||||
| commandManager->getKeyMappings()->resetToDefaultMappings(); | commandManager->getKeyMappings()->resetToDefaultMappings(); | ||||
| ScopedPointer <XmlElement> keys (getAppProperties().getXmlValue ("keyMappings")); | |||||
| ScopedPointer <XmlElement> keys (getGlobalProperties().getXmlValue ("keyMappings")); | |||||
| if (keys != nullptr) | if (keys != nullptr) | ||||
| commandManager->getKeyMappings()->restoreFromXml (*keys); | commandManager->getKeyMappings()->restoreFromXml (*keys); | ||||
| @@ -82,7 +82,7 @@ MainWindow::~MainWindow() | |||||
| removeKeyListener (commandManager->getKeyMappings()); | removeKeyListener (commandManager->getKeyMappings()); | ||||
| // save the current size and position to our settings file.. | // save the current size and position to our settings file.. | ||||
| getAppProperties().setValue ("lastMainWindowPos", getWindowStateAsString()); | |||||
| getGlobalProperties().setValue ("lastMainWindowPos", getWindowStateAsString()); | |||||
| clearContentComponent(); | clearContentComponent(); | ||||
| currentProject = nullptr; | currentProject = nullptr; | ||||
| @@ -125,7 +125,7 @@ bool MainWindow::closeProject (Project* project) | |||||
| if (project == nullptr) | if (project == nullptr) | ||||
| return true; | return true; | ||||
| getAppProperties().setValue (getProjectWindowPosName(), getWindowStateAsString()); | |||||
| project->getStoredProperties().setValue (getProjectWindowPosName(), getWindowStateAsString()); | |||||
| ProjectContentComponent* const pcc = getProjectContentComponent(); | ProjectContentComponent* const pcc = getProjectContentComponent(); | ||||
| @@ -169,10 +169,10 @@ void MainWindow::restoreWindowPosition() | |||||
| String windowState; | String windowState; | ||||
| if (currentProject != nullptr) | if (currentProject != nullptr) | ||||
| windowState = getAppProperties().getValue (getProjectWindowPosName()); | |||||
| windowState = currentProject->getStoredProperties().getValue (getProjectWindowPosName()); | |||||
| if (windowState.isEmpty()) | if (windowState.isEmpty()) | ||||
| windowState = getAppProperties().getValue ("lastMainWindowPos"); | |||||
| windowState = getGlobalProperties().getValue ("lastMainWindowPos"); | |||||
| restoreWindowStateFromString (windowState); | restoreWindowStateFromString (windowState); | ||||
| } | } | ||||
| @@ -77,15 +77,7 @@ public: | |||||
| private: | private: | ||||
| ScopedPointer <Project> currentProject; | ScopedPointer <Project> currentProject; | ||||
| String getProjectWindowPosName() const | |||||
| { | |||||
| jassert (currentProject != nullptr); | |||||
| if (currentProject == nullptr) | |||||
| return String::empty; | |||||
| return "projectWindowPos_" + currentProject->getProjectUID(); | |||||
| } | |||||
| static const char* getProjectWindowPosName() { return "projectWindowPos"; } | |||||
| void createProjectContentCompIfNeeded(); | void createProjectContentCompIfNeeded(); | ||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow); | JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow); | ||||
| @@ -70,7 +70,7 @@ namespace ProjectSettingsTreeClasses | |||||
| bool isMissing() { return false; } | bool isMissing() { return false; } | ||||
| bool canBeSelected() const { return true; } | bool canBeSelected() const { return true; } | ||||
| bool mightContainSubItems() { return false; } | bool mightContainSubItems() { return false; } | ||||
| String getUniqueName() const { return config->project.getProjectUID() + "_config_" + config->getName(); } | |||||
| String getUniqueName() const { return "config_" + config->getName(); } | |||||
| String getRenamingName() const { return getDisplayName(); } | String getRenamingName() const { return getDisplayName(); } | ||||
| String getDisplayName() const { return config->getName(); } | String getDisplayName() const { return config->getName(); } | ||||
| void setName (const String&) {} | void setName (const String&) {} | ||||
| @@ -170,7 +170,7 @@ namespace ProjectSettingsTreeClasses | |||||
| bool canBeSelected() const { return true; } | bool canBeSelected() const { return true; } | ||||
| bool mightContainSubItems() { return exporter->getNumConfigurations() > 0; } | bool mightContainSubItems() { return exporter->getNumConfigurations() > 0; } | ||||
| String getUniqueName() const { return project.getProjectUID() + "_exporter_" + String (exporterIndex); } | |||||
| String getUniqueName() const { return "exporter_" + String (exporterIndex); } | |||||
| String getRenamingName() const { return getDisplayName(); } | String getRenamingName() const { return getDisplayName(); } | ||||
| String getDisplayName() const { return exporter->getName(); } | String getDisplayName() const { return exporter->getName(); } | ||||
| void setName (const String&) {} | void setName (const String&) {} | ||||
| @@ -292,7 +292,7 @@ namespace ProjectSettingsTreeClasses | |||||
| bool canBeSelected() const { return true; } | bool canBeSelected() const { return true; } | ||||
| bool mightContainSubItems() { return false; } | bool mightContainSubItems() { return false; } | ||||
| String getUniqueName() const { return project.getProjectUID() + "_modules"; } | |||||
| String getUniqueName() const { return "modules"; } | |||||
| String getRenamingName() const { return getDisplayName(); } | String getRenamingName() const { return getDisplayName(); } | ||||
| String getDisplayName() const { return "Modules"; } | String getDisplayName() const { return "Modules"; } | ||||
| void setName (const String&) {} | void setName (const String&) {} | ||||
| @@ -353,7 +353,7 @@ namespace ProjectSettingsTreeClasses | |||||
| void showDocument() { showSettingsPage (new SettingsComp (project)); } | void showDocument() { showSettingsPage (new SettingsComp (project)); } | ||||
| bool canBeSelected() const { return true; } | bool canBeSelected() const { return true; } | ||||
| bool mightContainSubItems() { return project.getNumExporters() > 0; } | bool mightContainSubItems() { return project.getNumExporters() > 0; } | ||||
| String getUniqueName() const { return project.getProjectUID() + "_config_root"; } | |||||
| String getUniqueName() const { return "config_root"; } | |||||
| void addSubItems() | void addSubItems() | ||||
| { | { | ||||
| @@ -146,7 +146,7 @@ File ModuleList::getLocalModulesFolder (Project* project) | |||||
| { | { | ||||
| File defaultJuceFolder (getDefaultModulesFolder (project)); | File defaultJuceFolder (getDefaultModulesFolder (project)); | ||||
| File f (getAppProperties().getValue ("lastJuceFolder", defaultJuceFolder.getFullPathName())); | |||||
| File f (getGlobalProperties().getValue ("lastJuceFolder", defaultJuceFolder.getFullPathName())); | |||||
| f = getModulesFolderForJuceOrModulesFolder (f); | f = getModulesFolderForJuceOrModulesFolder (f); | ||||
| if ((! ModuleList::isModulesFolder (f)) && ModuleList::isModulesFolder (defaultJuceFolder)) | if ((! ModuleList::isModulesFolder (f)) && ModuleList::isModulesFolder (defaultJuceFolder)) | ||||
| @@ -163,7 +163,7 @@ File ModuleList::getModuleFolder (const String& uid) const | |||||
| void ModuleList::setLocalModulesFolder (const File& file) | void ModuleList::setLocalModulesFolder (const File& file) | ||||
| { | { | ||||
| //jassert (FileHelpers::isJuceFolder (file)); | //jassert (FileHelpers::isJuceFolder (file)); | ||||
| getAppProperties().setValue ("lastJuceFolder", file.getFullPathName()); | |||||
| getGlobalProperties().setValue ("lastJuceFolder", file.getFullPathName()); | |||||
| } | } | ||||
| struct ModuleSorter | struct ModuleSorter | ||||
| @@ -966,3 +966,8 @@ bool Project::ExporterIterator::next() | |||||
| return true; | return true; | ||||
| } | } | ||||
| PropertiesFile& Project::getStoredProperties() const | |||||
| { | |||||
| return getAppSettings().getProjectProperties (getProjectUID()); | |||||
| } | |||||
| @@ -253,6 +253,9 @@ public: | |||||
| //============================================================================== | //============================================================================== | ||||
| String getFileTemplate (const String& templateName); | String getFileTemplate (const String& templateName); | ||||
| //============================================================================== | |||||
| PropertiesFile& getStoredProperties() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| void valueTreePropertyChanged (ValueTree& tree, const Identifier& property); | void valueTreePropertyChanged (ValueTree& tree, const Identifier& property); | ||||
| void valueTreeChildAdded (ValueTree& parentTree, ValueTree& childWhichHasBeenAdded); | void valueTreeChildAdded (ValueTree& parentTree, ValueTree& childWhichHasBeenAdded); | ||||
| @@ -37,7 +37,7 @@ class FileTreeTab : public TreePanelBase | |||||
| { | { | ||||
| public: | public: | ||||
| FileTreeTab (Project& project) | FileTreeTab (Project& project) | ||||
| : TreePanelBase ("treeViewState_" + project.getProjectUID()) | |||||
| : TreePanelBase (&project, "fileTreeState") | |||||
| { | { | ||||
| tree.setMultiSelectEnabled (true); | tree.setMultiSelectEnabled (true); | ||||
| setRoot (new GroupTreeViewItem (project.getMainGroup())); | setRoot (new GroupTreeViewItem (project.getMainGroup())); | ||||
| @@ -49,7 +49,7 @@ class ConfigTreeTab : public TreePanelBase | |||||
| { | { | ||||
| public: | public: | ||||
| ConfigTreeTab (Project& project) | ConfigTreeTab (Project& project) | ||||
| : TreePanelBase ("settingsTreeViewState_" + project.getProjectUID()) | |||||
| : TreePanelBase (&project, "settingsTreeState") | |||||
| { | { | ||||
| tree.setMultiSelectEnabled (false); | tree.setMultiSelectEnabled (false); | ||||
| setRoot (createProjectConfigTreeViewRoot (project)); | setRoot (createProjectConfigTreeViewRoot (project)); | ||||
| @@ -189,8 +189,6 @@ void ProjectContentComponent::setProject (Project* newProject) | |||||
| { | { | ||||
| if (project != newProject) | if (project != newProject) | ||||
| { | { | ||||
| PropertiesFile& settings = getAppProperties(); | |||||
| if (project != nullptr) | if (project != nullptr) | ||||
| project->removeChangeListener (this); | project->removeChangeListener (this); | ||||
| @@ -199,10 +197,12 @@ void ProjectContentComponent::setProject (Project* newProject) | |||||
| if (project != nullptr && treeViewTabs.isShowing()) | if (project != nullptr && treeViewTabs.isShowing()) | ||||
| { | { | ||||
| PropertiesFile& settings = project->getStoredProperties(); | |||||
| if (treeViewTabs.getWidth() > 0) | if (treeViewTabs.getWidth() > 0) | ||||
| settings.setValue ("projectTreeviewWidth_" + project->getProjectUID(), treeViewTabs.getWidth()); | |||||
| settings.setValue ("projectPanelWidth", treeViewTabs.getWidth()); | |||||
| settings.setValue ("lastTab_" + project->getProjectUID(), treeViewTabs.getCurrentTabName()); | |||||
| settings.setValue ("lastTab", treeViewTabs.getCurrentTabName()); | |||||
| } | } | ||||
| treeViewTabs.clearTabs(); | treeViewTabs.clearTabs(); | ||||
| @@ -214,7 +214,9 @@ void ProjectContentComponent::setProject (Project* newProject) | |||||
| createProjectTabs(); | createProjectTabs(); | ||||
| const String lastTabName (settings.getValue ("lastTab_" + project->getProjectUID())); | |||||
| PropertiesFile& settings = project->getStoredProperties(); | |||||
| const String lastTabName (settings.getValue ("lastTab")); | |||||
| int lastTabIndex = treeViewTabs.getTabNames().indexOf (lastTabName); | int lastTabIndex = treeViewTabs.getTabNames().indexOf (lastTabName); | ||||
| if (lastTabIndex < 0 || lastTabIndex > treeViewTabs.getNumTabs()) | if (lastTabIndex < 0 || lastTabIndex > treeViewTabs.getNumTabs()) | ||||
| @@ -222,7 +224,7 @@ void ProjectContentComponent::setProject (Project* newProject) | |||||
| treeViewTabs.setCurrentTabIndex (lastTabIndex); | treeViewTabs.setCurrentTabIndex (lastTabIndex); | ||||
| int lastTreeWidth = settings.getValue ("projectTreeviewWidth_" + project->getProjectUID()).getIntValue(); | |||||
| int lastTreeWidth = settings.getValue ("projectPanelWidth").getIntValue(); | |||||
| if (lastTreeWidth < 150) | if (lastTreeWidth < 150) | ||||
| lastTreeWidth = 240; | lastTreeWidth = 240; | ||||
| @@ -283,7 +285,7 @@ void ProjectContentComponent::saveOpenDocumentList() | |||||
| ScopedPointer<XmlElement> xml (recentDocumentList.createXML()); | ScopedPointer<XmlElement> xml (recentDocumentList.createXML()); | ||||
| if (xml != nullptr) | if (xml != nullptr) | ||||
| getAppProperties().setValue ("lastDocs_" + project->getProjectUID(), xml); | |||||
| project->getStoredProperties().setValue ("lastDocs", xml); | |||||
| } | } | ||||
| } | } | ||||
| @@ -291,7 +293,7 @@ void ProjectContentComponent::reloadLastOpenDocuments() | |||||
| { | { | ||||
| if (project != nullptr) | if (project != nullptr) | ||||
| { | { | ||||
| ScopedPointer<XmlElement> xml (getAppProperties().getXmlValue ("lastDocs_" + project->getProjectUID())); | |||||
| ScopedPointer<XmlElement> xml (project->getStoredProperties().getXmlValue ("lastDocs")); | |||||
| if (xml != nullptr) | if (xml != nullptr) | ||||
| { | { | ||||
| @@ -27,6 +27,45 @@ | |||||
| #include "../Project/jucer_ProjectContentComponent.h" | #include "../Project/jucer_ProjectContentComponent.h" | ||||
| //============================================================================== | |||||
| void TreePanelBase::setRoot (JucerTreeViewBase* root) | |||||
| { | |||||
| rootItem = root; | |||||
| tree.setRootItem (root); | |||||
| tree.getRootItem()->setOpen (true); | |||||
| if (project != nullptr) | |||||
| { | |||||
| const ScopedPointer<XmlElement> treeOpenness (project->getStoredProperties() | |||||
| .getXmlValue (opennessStateKey)); | |||||
| if (treeOpenness != nullptr) | |||||
| { | |||||
| tree.restoreOpennessState (*treeOpenness, true); | |||||
| for (int i = tree.getNumSelectedItems(); --i >= 0;) | |||||
| { | |||||
| JucerTreeViewBase* item = dynamic_cast<JucerTreeViewBase*> (tree.getSelectedItem (i)); | |||||
| if (item != nullptr) | |||||
| item->cancelDelayedSelectionTimer(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| void TreePanelBase::saveOpenness() | |||||
| { | |||||
| if (project != nullptr) | |||||
| { | |||||
| const ScopedPointer<XmlElement> opennessState (tree.getOpennessState (true)); | |||||
| if (opennessState != nullptr) | |||||
| project->getStoredProperties().setValue (opennessStateKey, opennessState); | |||||
| else | |||||
| project->getStoredProperties().removeValue (opennessStateKey); | |||||
| } | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| JucerTreeViewBase::JucerTreeViewBase() | JucerTreeViewBase::JucerTreeViewBase() | ||||
| : textX (0) | : textX (0) | ||||
| @@ -28,7 +28,7 @@ | |||||
| #include "../jucer_Headers.h" | #include "../jucer_Headers.h" | ||||
| class ProjectContentComponent; | class ProjectContentComponent; | ||||
| class Project; | |||||
| //============================================================================== | //============================================================================== | ||||
| class JucerTreeViewBase : public TreeViewItem | class JucerTreeViewBase : public TreeViewItem | ||||
| @@ -109,8 +109,8 @@ private: | |||||
| class TreePanelBase : public Component | class TreePanelBase : public Component | ||||
| { | { | ||||
| public: | public: | ||||
| TreePanelBase (const String& opennessStateKey_) | |||||
| : opennessStateKey (opennessStateKey_) | |||||
| TreePanelBase (const Project* p, const String& treeviewID) | |||||
| : project (p), opennessStateKey (treeviewID) | |||||
| { | { | ||||
| addAndMakeVisible (&tree); | addAndMakeVisible (&tree); | ||||
| tree.setRootItemVisible (true); | tree.setRootItemVisible (true); | ||||
| @@ -125,34 +125,8 @@ public: | |||||
| tree.setRootItem (nullptr); | tree.setRootItem (nullptr); | ||||
| } | } | ||||
| void setRoot (JucerTreeViewBase* root) | |||||
| { | |||||
| rootItem = root; | |||||
| tree.setRootItem (root); | |||||
| tree.getRootItem()->setOpen (true); | |||||
| const ScopedPointer<XmlElement> treeOpenness (getAppProperties().getXmlValue (opennessStateKey)); | |||||
| if (treeOpenness != nullptr) | |||||
| { | |||||
| tree.restoreOpennessState (*treeOpenness, true); | |||||
| for (int i = tree.getNumSelectedItems(); --i >= 0;) | |||||
| { | |||||
| JucerTreeViewBase* item = dynamic_cast<JucerTreeViewBase*> (tree.getSelectedItem (i)); | |||||
| if (item != nullptr) | |||||
| item->cancelDelayedSelectionTimer(); | |||||
| } | |||||
| } | |||||
| } | |||||
| void saveOpenness() | |||||
| { | |||||
| const ScopedPointer<XmlElement> opennessState (tree.getOpennessState (true)); | |||||
| if (opennessState != nullptr) | |||||
| getAppProperties().setValue (opennessStateKey, opennessState); | |||||
| } | |||||
| void setRoot (JucerTreeViewBase* root); | |||||
| void saveOpenness(); | |||||
| void deleteSelectedItems() | void deleteSelectedItems() | ||||
| { | { | ||||
| @@ -194,6 +168,7 @@ public: | |||||
| return Rectangle<int> (0, 2, getWidth() - 2, getHeight() - 2); | return Rectangle<int> (0, 2, getWidth() - 2, getHeight() - 2); | ||||
| } | } | ||||
| const Project* project; | |||||
| TreeView tree; | TreeView tree; | ||||
| ScopedPointer<JucerTreeViewBase> rootItem; | ScopedPointer<JucerTreeViewBase> rootItem; | ||||
| @@ -189,7 +189,7 @@ public: | |||||
| setResizeLimits (minW, minH, maxW, maxH); | setResizeLimits (minW, minH, maxW, maxH); | ||||
| setContentOwned (content, false); | setContentOwned (content, false); | ||||
| const String windowState (getAppProperties().getValue (windowPosProperty)); | |||||
| const String windowState (getGlobalProperties().getValue (windowPosProperty)); | |||||
| if (windowState.isNotEmpty()) | if (windowState.isNotEmpty()) | ||||
| restoreWindowStateFromString (windowState); | restoreWindowStateFromString (windowState); | ||||
| @@ -202,7 +202,7 @@ public: | |||||
| ~FloatingToolWindow() | ~FloatingToolWindow() | ||||
| { | { | ||||
| getAppProperties().setValue (windowPosProperty, getWindowStateAsString()); | |||||
| getGlobalProperties().setValue (windowPosProperty, getWindowStateAsString()); | |||||
| } | } | ||||
| void closeButtonPressed() | void closeButtonPressed() | ||||
| @@ -33,9 +33,9 @@ StoredSettings& getAppSettings() | |||||
| return *JucerApplication::getApp().settings; | return *JucerApplication::getApp().settings; | ||||
| } | } | ||||
| PropertiesFile& getAppProperties() | |||||
| PropertiesFile& getGlobalProperties() | |||||
| { | { | ||||
| return getAppSettings().getProps(); | |||||
| return getAppSettings().getGlobalProperties(); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -54,16 +54,48 @@ void StoredSettings::initialise() | |||||
| reload(); | reload(); | ||||
| } | } | ||||
| PropertiesFile& StoredSettings::getProps() | |||||
| PropertiesFile& StoredSettings::getGlobalProperties() | |||||
| { | { | ||||
| jassert (props != nullptr); | |||||
| return *props; | |||||
| return *propertyFiles.getUnchecked (0); | |||||
| } | |||||
| static PropertiesFile* createPropsFile (const String& filename) | |||||
| { | |||||
| PropertiesFile::Options options; | |||||
| options.applicationName = filename; | |||||
| options.filenameSuffix = "settings"; | |||||
| options.osxLibrarySubFolder = "Application Support"; | |||||
| #if JUCE_LINUX | |||||
| options.folderName = ".introjucer"; | |||||
| #else | |||||
| options.folderName = "Introjucer"; | |||||
| #endif | |||||
| return new PropertiesFile (options); | |||||
| } | |||||
| PropertiesFile& StoredSettings::getProjectProperties (const String& projectUID) | |||||
| { | |||||
| const String filename ("Introjucer_Project_" + projectUID); | |||||
| for (int i = propertyFiles.size(); --i >= 0;) | |||||
| { | |||||
| PropertiesFile* const props = propertyFiles.getUnchecked(i); | |||||
| if (props->getFile().getFileNameWithoutExtension() == filename) | |||||
| return *props; | |||||
| } | |||||
| PropertiesFile* p = createPropsFile (filename); | |||||
| propertyFiles.add (p); | |||||
| return *p; | |||||
| } | } | ||||
| void StoredSettings::flush() | void StoredSettings::flush() | ||||
| { | { | ||||
| if (props != nullptr) | |||||
| for (int i = propertyFiles.size(); --i >= 0;) | |||||
| { | { | ||||
| PropertiesFile* const props = propertyFiles.getUnchecked(i); | |||||
| { | { | ||||
| const ScopedPointer<XmlElement> xml (appearance.settings.createXml()); | const ScopedPointer<XmlElement> xml (appearance.settings.createXml()); | ||||
| props->setValue ("editorColours", xml); | props->setValue ("editorColours", xml); | ||||
| @@ -87,28 +119,14 @@ void StoredSettings::flush() | |||||
| void StoredSettings::reload() | void StoredSettings::reload() | ||||
| { | { | ||||
| props = nullptr; | |||||
| { | |||||
| // These settings are used in defining the properties file's location. | |||||
| PropertiesFile::Options options; | |||||
| options.applicationName = "Introjucer"; | |||||
| options.filenameSuffix = "settings"; | |||||
| options.osxLibrarySubFolder = "Application Support"; | |||||
| #if JUCE_LINUX | |||||
| options.folderName = ".introjucer"; | |||||
| #else | |||||
| options.folderName = "Introjucer"; | |||||
| #endif | |||||
| props = new PropertiesFile (options); | |||||
| } | |||||
| propertyFiles.clear(); | |||||
| propertyFiles.add (createPropsFile ("Introjucer")); | |||||
| // recent files... | // recent files... | ||||
| recentFiles.restoreFromString (props->getValue ("recentFiles")); | |||||
| recentFiles.restoreFromString (getGlobalProperties().getValue ("recentFiles")); | |||||
| recentFiles.removeNonExistentFiles(); | recentFiles.removeNonExistentFiles(); | ||||
| ScopedPointer<XmlElement> xml (props->getXmlValue ("editorColours")); | |||||
| ScopedPointer<XmlElement> xml (getGlobalProperties().getXmlValue ("editorColours")); | |||||
| if (xml == nullptr) | if (xml == nullptr) | ||||
| xml = XmlDocument::parse (BinaryData::colourscheme_dark_xml); | xml = XmlDocument::parse (BinaryData::colourscheme_dark_xml); | ||||
| @@ -118,10 +136,10 @@ void StoredSettings::reload() | |||||
| loadSwatchColours(); | loadSwatchColours(); | ||||
| } | } | ||||
| Array<File> StoredSettings::getLastProjects() const | |||||
| Array<File> StoredSettings::getLastProjects() | |||||
| { | { | ||||
| StringArray s; | StringArray s; | ||||
| s.addTokens (props->getValue ("lastProjects"), "|", ""); | |||||
| s.addTokens (getGlobalProperties().getValue ("lastProjects"), "|", ""); | |||||
| Array<File> f; | Array<File> f; | ||||
| for (int i = 0; i < s.size(); ++i) | for (int i = 0; i < s.size(); ++i) | ||||
| @@ -136,7 +154,7 @@ void StoredSettings::setLastProjects (const Array<File>& files) | |||||
| for (int i = 0; i < files.size(); ++i) | for (int i = 0; i < files.size(); ++i) | ||||
| s.add (files.getReference(i).getFullPathName()); | s.add (files.getReference(i).getFullPathName()); | ||||
| props->setValue ("lastProjects", s.joinIntoString ("|")); | |||||
| getGlobalProperties().setValue ("lastProjects", s.joinIntoString ("|")); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -155,10 +173,11 @@ void StoredSettings::loadSwatchColours() | |||||
| #undef COL | #undef COL | ||||
| const int numSwatchColours = 24; | const int numSwatchColours = 24; | ||||
| PropertiesFile& props = getGlobalProperties(); | |||||
| for (int i = 0; i < numSwatchColours; ++i) | for (int i = 0; i < numSwatchColours; ++i) | ||||
| swatchColours.add (Colour::fromString (props->getValue ("swatchColour" + String (i), | |||||
| colours [2 + i].toString()))); | |||||
| swatchColours.add (Colour::fromString (props.getValue ("swatchColour" + String (i), | |||||
| colours [2 + i].toString()))); | |||||
| } | } | ||||
| int StoredSettings::ColourSelectorWithSwatches::getNumSwatches() const | int StoredSettings::ColourSelectorWithSwatches::getNumSwatches() const | ||||
| @@ -38,14 +38,16 @@ public: | |||||
| void initialise(); | void initialise(); | ||||
| PropertiesFile& getProps(); | |||||
| PropertiesFile& getGlobalProperties(); | |||||
| PropertiesFile& getProjectProperties (const String& projectUID); | |||||
| void flush(); | void flush(); | ||||
| void reload(); | void reload(); | ||||
| //============================================================================== | //============================================================================== | ||||
| RecentlyOpenedFilesList recentFiles; | RecentlyOpenedFilesList recentFiles; | ||||
| Array<File> getLastProjects() const; | |||||
| Array<File> getLastProjects(); | |||||
| void setLastProjects (const Array<File>& files); | void setLastProjects (const Array<File>& files); | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -67,7 +69,7 @@ public: | |||||
| StringArray monospacedFontNames; | StringArray monospacedFontNames; | ||||
| private: | private: | ||||
| ScopedPointer<PropertiesFile> props; | |||||
| OwnedArray<PropertiesFile> propertyFiles; | |||||
| void loadSwatchColours(); | void loadSwatchColours(); | ||||
| @@ -75,7 +77,7 @@ private: | |||||
| }; | }; | ||||
| StoredSettings& getAppSettings(); | StoredSettings& getAppSettings(); | ||||
| PropertiesFile& getAppProperties(); | |||||
| PropertiesFile& getGlobalProperties(); | |||||
| #endif // __JUCER_STOREDSETTINGS_JUCEHEADER__ | #endif // __JUCER_STOREDSETTINGS_JUCEHEADER__ | ||||