Browse Source

Added a method RecentlyOpenedFilesList::registerRecentFileNatively() and updated the introjucer to register its recent documents with the OS.

tags/2021-05-28
jules 13 years ago
parent
commit
220114d04b
5 changed files with 34 additions and 8 deletions
  1. +12
    -5
      extras/Introjucer/Source/Project/jucer_Project.cpp
  2. +1
    -1
      extras/Introjucer/Source/Project/jucer_Project.h
  3. +1
    -2
      modules/juce_gui_extra/juce_gui_extra.cpp
  4. +14
    -0
      modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp
  5. +6
    -0
      modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h

+ 12
- 5
extras/Introjucer/Source/Project/jucer_Project.cpp View File

@@ -202,6 +202,13 @@ void Project::addDefaultModules (bool shouldCopyFilesLocally)
} }
//============================================================================== //==============================================================================
static void registerRecentFile (const File& file)
{
RecentlyOpenedFilesList::registerRecentFileNatively (file);
StoredSettings::getInstance()->recentFiles.addFile (file);
StoredSettings::getInstance()->flush();
}
const String Project::loadDocument (const File& file) const String Project::loadDocument (const File& file)
{ {
ScopedPointer <XmlElement> xml (XmlDocument::parse (file)); ScopedPointer <XmlElement> xml (XmlDocument::parse (file));
@@ -214,8 +221,7 @@ const String Project::loadDocument (const File& file)
if (! newTree.hasType (Tags::projectRoot)) if (! newTree.hasType (Tags::projectRoot))
return "The document contains errors and couldn't be parsed!"; return "The document contains errors and couldn't be parsed!";
StoredSettings::getInstance()->recentFiles.addFile (file);
StoredSettings::getInstance()->flush();
registerRecentFile (file);
projectRoot = newTree; projectRoot = newTree;
removeDefunctExporters(); removeDefunctExporters();
@@ -229,15 +235,16 @@ const String Project::saveDocument (const File& file)
return saveProject (file, true); return saveProject (file, true);
} }
String Project::saveProject (const File& file, bool showProgressBox)
String Project::saveProject (const File& file, bool isCommandLineApp)
{ {
updateProjectSettings(); updateProjectSettings();
sanitiseConfigFlags(); sanitiseConfigFlags();
StoredSettings::getInstance()->recentFiles.addFile (file);
if (isCommandLineApp)
registerRecentFile (file);
ProjectSaver saver (*this, file); ProjectSaver saver (*this, file);
return saver.save (showProgressBox);
return saver.save (isCommandLineApp);
} }
String Project::saveResourcesOnly (const File& file) String Project::saveResourcesOnly (const File& file)


+ 1
- 1
extras/Introjucer/Source/Project/jucer_Project.h View File

@@ -46,7 +46,7 @@ public:
const String getDocumentTitle(); const String getDocumentTitle();
const String loadDocument (const File& file); const String loadDocument (const File& file);
const String saveDocument (const File& file); const String saveDocument (const File& file);
String saveProject (const File& file, bool showProgressBox);
String saveProject (const File& file, bool isCommandLineApp);
String saveResourcesOnly (const File& file); String saveResourcesOnly (const File& file);
const File getLastDocumentOpened(); const File getLastDocumentOpened();
void setLastDocumentOpened (const File& file); void setLastDocumentOpened (const File& file);


+ 1
- 2
modules/juce_gui_extra/juce_gui_extra.cpp View File

@@ -79,7 +79,7 @@
namespace juce namespace juce
{ {
// START_AUTOINCLUDE documents/*.cpp, code_editor/*.cpp, embedding/*.cpp, lookandfeel/*.cpp, misc/*.cpp
#include "../juce_core/native/juce_osx_ObjCHelpers.h"
#include "documents/juce_FileBasedDocument.cpp" #include "documents/juce_FileBasedDocument.cpp"
#include "code_editor/juce_CodeDocument.cpp" #include "code_editor/juce_CodeDocument.cpp"
#include "code_editor/juce_CodeEditorComponent.cpp" #include "code_editor/juce_CodeEditorComponent.cpp"
@@ -92,7 +92,6 @@ namespace juce
#include "misc/juce_RecentlyOpenedFilesList.cpp" #include "misc/juce_RecentlyOpenedFilesList.cpp"
#include "misc/juce_SplashScreen.cpp" #include "misc/juce_SplashScreen.cpp"
#include "misc/juce_SystemTrayIconComponent.cpp" #include "misc/juce_SystemTrayIconComponent.cpp"
// END_AUTOINCLUDE
} }


+ 14
- 0
modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp View File

@@ -130,3 +130,17 @@ void RecentlyOpenedFilesList::restoreFromString (const String& stringifiedVersio
setMaxNumberOfItems (maxNumberOfItems); setMaxNumberOfItems (maxNumberOfItems);
} }
//==============================================================================
void RecentlyOpenedFilesList::registerRecentFileNatively (const File& file)
{
#if JUCE_MAC
JUCE_AUTORELEASEPOOL
[[NSDocumentController sharedDocumentController]
noteNewRecentDocumentURL: [NSURL fileURLWithPath: juceStringToNS (file.getFullPathName())]];
#else
(void) file;
#endif
}

+ 6
- 0
modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h View File

@@ -102,6 +102,12 @@ public:
*/ */
void removeNonExistentFiles(); void removeNonExistentFiles();
/** Tells the OS to add a file to the OS-managed list of recent documents for this app.
Not all OSes maintain a list of recent files for an application, so this
function will have no effect on some OSes. Currently it's just implemented for OSX.
*/
static void registerRecentFileNatively (const File& file);
//============================================================================== //==============================================================================
/** Adds entries to a menu, representing each of the files in the list. /** Adds entries to a menu, representing each of the files in the list.


Loading…
Cancel
Save