14#include <wx/display.h>
15#include <wx/filename.h>
44 std::lock_guard<std::mutex> guard{ Mutex() };
45 auto start =
begin(), finish =
end(), iter = std::find_if(
52 gAudacityProjects.erase( iter );
62 std::lock_guard<std::mutex> guard{
Mutex() };
68 static std::mutex theMutex;
82 auto result = std::make_shared<AudacityProject>(
CreateToken{});
85 result->AttachedObjects::BuildAll();
128std::unique_ptr<const BasicUI::WindowPlacement>
132 std::unique_ptr<const BasicUI::WindowPlacement> result;
136 return std::make_unique<BasicUI::WindowPlacement>();
Toolkit-neutral facade for basic user interface services.
DEFINE_XML_METHOD_REGISTRY(ProjectFileIORegistry)
std::unique_ptr< const BasicUI::WindowPlacement > ProjectFramePlacement(AudacityProject *project)
Make a WindowPlacement object suitable for project (which may be null)
static std::mutex & Mutex()
const_reverse_iterator rend() const
static Container gAudacityProjects
std::vector< AProjectHolder > Container
void Add(const value_type &pProject)
This invalidates iterators.
Container::const_reverse_iterator const_reverse_iterator
Container::const_iterator const_iterator
const_iterator end() const
Container::value_type value_type
value_type Remove(AudacityProject &project)
const_iterator begin() const
const_reverse_iterator rbegin() const
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
virtual ~AudacityProject()
void SetInitialImportPath(const FilePath &path)
FilePath mInitialImportPath
const wxString & GetProjectName() const
void SetProjectName(const wxString &name)
static int mProjectCounter
FilePath GetInitialImportPath() const
AudacityProject(CreateToken)
Don't use this constructor directly.
static std::shared_ptr< AudacityProject > Create()
Use this factory function.
static stored_type & Get()
Get the installed value.
const char * end(const char *str) noexcept
const char * begin(const char *str) noexcept