tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
tracktion_ProjectManager.h
Go to the documentation of this file.
1 /*
2 ,--. ,--. ,--. ,--.
3 ,-' '-.,--.--.,--,--.,---.| |,-.,-' '-.`--' ,---. ,--,--, Copyright 2024
4 '-. .-'| .--' ,-. | .--'| /'-. .-',--.| .-. || \ Tracktion Software
5 | | | | \ '-' \ `--.| \ \ | | | |' '-' '| || | Corporation
6 `---' `--' `--`--'`---'`--'`--' `---' `--' `---' `--''--' www.tracktion.com
7
8 Tracktion Engine uses a GPL/commercial licence - see LICENCE.md for details.
9*/
10
11namespace tracktion { inline namespace engine
12{
13
15{
16public:
17 //==============================================================================
20
21 void initialise();
22
23 //==============================================================================
24 Project::Ptr addProjectToList (const juce::File& projectFile,
25 bool shouldSaveList,
26 juce::ValueTree folderToAddTo,
27 int insertIndex = -1);
28
29 void removeProjectFromList (const juce::File&);
30
31 void clearProjects();
32
33 //==============================================================================
34 juce::ValueTree getActiveProjectsFolder();
35 juce::ValueTree getLibraryProjectsFolder();
36
37 //==============================================================================
38 Project::Ptr getProjectFrom (const juce::ValueTree&, bool createIfNotFound = true);
39
40 Project::Ptr getProject (int projectID);
41 Project::Ptr getProject (const juce::File&);
42
44 juce::ReferenceCountedArray<Project> getAllProjects (const juce::ValueTree& folder);
45
46 //==============================================================================
47 void unpackArchiveAndAddToList (const juce::File& archiveFile, juce::ValueTree folder);
48
49 //==============================================================================
53
55 Project::Ptr getProject (const Edit&);
56
59
60 //==============================================================================
61 void saveAllProjects();
62
63 //==============================================================================
64 juce::StringArray getRecentProjects (bool printableFormat);
65 void addFileToRecentProjectsList (const juce::File&);
66
67 juce::ValueTree findFolderContaining (const Project&) const;
68 juce::ValueTree findFolderContaining (int projectId) const;
69 juce::ValueTree getFolderItemFor (const Project&) const;
70 int getFolderIndexFor (const Project&) const;
71
72 void createNewProjectFolder (juce::ValueTree parent, const juce::String& name);
73 void deleteProjectFolder (juce::ValueTree folder);
74 void updateProjectFile (Project& p, const juce::File&);
75
76 Project::Ptr createNewProject (const juce::File& projectFile);
77 Project::Ptr createNewProject (const juce::File& projectFile, juce::ValueTree folderToAddTo);
78 Project::Ptr createNewProjectInteractively (const juce::String& suggestedName, const juce::File& lastPath, juce::ValueTree folderToAddTo);
79 Project::Ptr createNewProjectFromTemplate (const juce::String& suggestedName, const juce::File& lastPath, const juce::File& templateArchiveFile, juce::ValueTree folderToAddTo);
80
81 Project::Ptr findProjectWithId (const juce::ValueTree& folder, int pid);
82 Project::Ptr findProjectWithFile (const juce::ValueTree& folder, const juce::File&);
83
84 //==============================================================================
85 void loadList();
86 void saveList();
87
88 Engine& engine;
89 juce::ValueTree folders;
90
91 //==============================================================================
93 {
94 TempProject (ProjectManager& pm, const juce::File& f, bool createNewProjectID)
95 {
96 if (f.exists() || f.create())
97 {
98 auto p = pm.createNewProject (f);
99 p->temporary = true;
100
101 if (createNewProjectID)
102 {
103 p->createNewProjectId();
104 p->save();
105 }
106
107 project = p;
108 }
109 }
110
111 Project::Ptr project;
113 };
114
115private:
116 friend class Project;
117
120
122};
123
124}} // namespace tracktion { inline namespace engine
Result create() const
bool exists() const
The Tracktion Edit class!
The Engine is the central class for all tracktion sessions.
An ID representing one of the items in a Project.
juce::File findSourceFile(ProjectItemID)
tries to find the media file used by a particular object.
ProjectItem::Ptr getProjectItem(ProjectItemID)
tries to find the project that contains an id, and open it as a ProjectItem.
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)