1 /**********************************************************************
2 
3 Audacity: A Digital Audio Editor
4 
5 ProjectWindowBase.cpp
6 
7 Paul Licameli split from ProjectWindow.cpp
8 
9 **********************************************************************/
10 
11 #include "ProjectWindowBase.h"
12 
13 #include "Project.h"
14 #include "ProjectWindows.h"
15 
ProjectWindowBase(wxWindow * parent,wxWindowID id,const wxPoint & pos,const wxSize & size,AudacityProject & project)16 ProjectWindowBase::ProjectWindowBase(wxWindow * parent, wxWindowID id,
17                                  const wxPoint & pos,
18                                  const wxSize & size, AudacityProject &project)
19    : wxFrame(parent, id, _TS("Audacity"), pos, size)
20    , mProject{ project }
21 {
22    SetProjectFrame( project, *this );
23 
24    // Ensure a unique name of this window for journalling purposes
25    SetName(
26       wxString::Format( L"AudacityProject %d", project.GetProjectNumber() ) );
27 };
28 
~ProjectWindowBase()29 ProjectWindowBase::~ProjectWindowBase()
30 {
31 }
32 
33 namespace {
34 
FindProjectWindow(wxWindow * pWindow)35 ProjectWindowBase *FindProjectWindow( wxWindow *pWindow )
36 {
37    while ( pWindow && pWindow->GetParent() )
38       pWindow = pWindow->GetParent();
39    return dynamic_cast< ProjectWindowBase* >( pWindow );
40 }
41 
42 }
43 
FindProjectFromWindow(wxWindow * pWindow)44 AudacityProject *FindProjectFromWindow( wxWindow *pWindow )
45 {
46    auto pProjectWindow = FindProjectWindow( pWindow );
47    return pProjectWindow ? &pProjectWindow->GetProject() : nullptr;
48 }
49 
FindProjectFromWindow(const wxWindow * pWindow)50 const AudacityProject *FindProjectFromWindow( const wxWindow *pWindow )
51 {
52    return FindProjectFromWindow( const_cast< wxWindow* >( pWindow ) );
53 }
54