Add SessionDirectory::export_path and make sure it gets created in SessionDirectory...
[ardour.git] / libs / ardour / ardour / session_directory.h
1 /*
2         Copyright (C) 2007 Tim Mayberry 
3
4         This program is free software; you can redistribute it and/or modify
5         it under the terms of the GNU General Public License as published by
6         the Free Software Foundation; either version 2 of the License, or
7         (at your option) any later version.
8
9         This program is distributed in the hope that it will be useful,
10         but WITHOUT ANY WARRANTY; without even the implied warranty of
11         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12         GNU General Public License for more details.
13
14         You should have received a copy of the GNU General Public License
15         along with this program; if not, write to the Free Software
16         Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18
19 #ifndef __ardour_session_directory_h__
20 #define __ardour_session_directory_h__
21
22 #include <string>
23 #include <vector>
24
25 #include <pbd/filesystem.h>
26
27 namespace ARDOUR {
28
29 using std::string;
30 using std::vector;
31 using PBD::sys::path;
32
33 class SessionDirectory
34 {
35 public:
36         /**
37          * @param session_path An absolute path to a session directory.
38          */
39         SessionDirectory (const string& session_path);
40
41         /**
42          * @return the absolute path to the root directory of the session
43          */
44         const path root_path() const { return m_root_path; }
45
46         /**
47          * @return the absolute path to the directory in which 
48          * the session stores audio files.
49          *
50          * If the session is an older session with an existing
51          * "sounds" directory then it will return a path to that
52          * directory otherwise it will return the new location
53          * of root_path()/interchange/session_name/audiofiles
54          */
55         const path sound_path () const;
56
57         /**
58          * @return The absolute path to the directory in which all
59          * peak files are stored for a session.
60          */
61         const path peak_path () const;
62
63         /**
64          * @return The absolute path to the directory that audio
65          * files are moved to when they are no longer part of the
66          * session.
67          */
68         const path dead_sound_path () const;
69
70         /**
71          * @return The absolute path to the directory that audio
72          * files are created in by default when exporting.
73          */
74         const path export_path () const;
75
76         /**
77          * @return true if session directory and all the required 
78          * subdirectories exist.
79          */
80         bool is_valid () const;
81
82         /**
83          * @return true If a new session directory and all the 
84          * subdirectories were created, otherwise false.
85          */
86         bool create ();
87
88 protected:
89
90         /**
91          * @return The path to the old style sound directory.
92          * It isn't created by create().
93          */
94         const path old_sound_path () const;
95
96         /**
97          * @return a vector containing the fullpath of all subdirectories.
98          */
99         const vector<PBD::sys::path> sub_directories () const;
100
101         /// The path to the root of the session directory.
102         const path m_root_path;
103 };
104
105 } // namespace ARDOUR
106
107 #endif