1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-03-23 06:35:50 +01:00

Move project status string management to new attached object class

This commit is contained in:
Paul Licameli
2019-07-02 11:38:15 -04:00
parent efa66f5350
commit e2362bc25a
17 changed files with 131 additions and 45 deletions

View File

@@ -0,0 +1,48 @@
/**********************************************************************
Audacity: A Digital Audio Editor
ProjectStatus.h
Paul Licameli
**********************************************************************/
#include "ProjectStatus.h"
#include "Project.h"
wxDEFINE_EVENT(EVT_PROJECT_STATUS_UPDATE, wxCommandEvent);
static const AudacityProject::AttachedObjects::RegisteredFactory key{
[]( AudacityProject &parent ){
return std::make_shared< ProjectStatus >( parent );
}
};
ProjectStatus &ProjectStatus::Get( AudacityProject &project )
{
return project.AttachedObjects::Get< ProjectStatus >( key );
}
const ProjectStatus &ProjectStatus::Get( const AudacityProject &project )
{
return Get( const_cast< AudacityProject & >( project ) );
}
ProjectStatus::ProjectStatus( AudacityProject &project )
: mProject{ project }
{
}
ProjectStatus::~ProjectStatus() = default;
void ProjectStatus::Set(const wxString &msg)
{
auto &project = mProject;
if ( msg != mLastMainStatusMessage ) {
mLastMainStatusMessage = msg;
wxCommandEvent evt{ EVT_PROJECT_STATUS_UPDATE };
project.ProcessEvent( evt );
}
}