Audacity 3.2.0
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
ProjectSelectionManager Class Referencefinal

#include <ProjectSelectionManager.h>

Inheritance diagram for ProjectSelectionManager:
[legend]
Collaboration diagram for ProjectSelectionManager:
[legend]

Public Member Functions

 ProjectSelectionManager (AudacityProject &project)
 
 ProjectSelectionManager (const ProjectSelectionManager &)=delete
 
ProjectSelectionManageroperator= (const ProjectSelectionManager &)=delete
 
 ~ProjectSelectionManager () override
 
const NumericFormatSymbolAS_GetSelectionFormat () override
 
void AS_SetSelectionFormat (const NumericFormatSymbol &format) override
 
const NumericFormatSymbolTT_GetAudioTimeFormat () override
 
void TT_SetAudioTimeFormat (const NumericFormatSymbol &format) override
 
void AS_ModifySelection (double &start, double &end, bool done) override
 
double SSBL_GetRate () const override
 
const NumericFormatSymbolSSBL_GetFrequencySelectionFormatName () override
 
void SSBL_SetFrequencySelectionFormatName (const NumericFormatSymbol &formatName) override
 
const NumericFormatSymbolSSBL_GetBandwidthSelectionFormatName () override
 
void SSBL_SetBandwidthSelectionFormatName (const NumericFormatSymbol &formatName) override
 
void SSBL_ModifySpectralSelection (double &bottom, double &top, bool done) override
 
- Public Member Functions inherited from ClientData::Base
virtual ~Base ()
 
- Public Member Functions inherited from SelectionBarListener
 SelectionBarListener ()
 
virtual ~SelectionBarListener ()
 
virtual const NumericFormatSymbolAS_GetSelectionFormat ()=0
 
virtual void AS_SetSelectionFormat (const NumericFormatSymbol &format)=0
 
virtual void AS_ModifySelection (double &start, double &end, bool done)=0
 
- Public Member Functions inherited from SpectralSelectionBarListener
 SpectralSelectionBarListener ()
 
virtual ~SpectralSelectionBarListener ()
 
virtual double SSBL_GetRate () const =0
 
virtual const NumericFormatSymbolSSBL_GetFrequencySelectionFormatName ()=0
 
virtual void SSBL_SetFrequencySelectionFormatName (const NumericFormatSymbol &formatName)=0
 
virtual const NumericFormatSymbolSSBL_GetBandwidthSelectionFormatName ()=0
 
virtual void SSBL_SetBandwidthSelectionFormatName (const NumericFormatSymbol &formatName)=0
 
virtual void SSBL_ModifySpectralSelection (double &bottom, double &top, bool done)=0
 
- Public Member Functions inherited from TimeToolBarListener
 TimeToolBarListener ()
 
virtual ~TimeToolBarListener ()
 
virtual const NumericFormatSymbolTT_GetAudioTimeFormat ()=0
 
virtual void TT_SetAudioTimeFormat (const NumericFormatSymbol &format)=0
 

Static Public Member Functions

static ProjectSelectionManagerGet (AudacityProject &project)
 
static const ProjectSelectionManagerGet (const AudacityProject &project)
 

Private Member Functions

void SnapSelection ()
 

Private Attributes

AudacityProjectmProject
 
Observer::Subscription mSnappingChangedSubscription
 
Observer::Subscription mTimeSignatureChangedSubscription
 
Observer::Subscription mProjectRateChangedSubscription
 

Detailed Description

Definition at line 22 of file ProjectSelectionManager.h.

Constructor & Destructor Documentation

◆ ProjectSelectionManager() [1/2]

ProjectSelectionManager::ProjectSelectionManager ( AudacityProject project)
explicit

Definition at line 50 of file ProjectSelectionManager.cpp.

51 : mProject { project }
53 [this](auto&)
54 {
56 })}
59 { SnapSelection(); }) }
61 [this](auto&) { SnapSelection(); }) }
62
63{
64}
const auto project
Subscription Subscribe(Callback callback)
Connect a callback to the Publisher; later-connected are called earlier.
Definition: Observer.h:199
static ProjectRate & Get(AudacityProject &project)
Definition: ProjectRate.cpp:28
Observer::Subscription mSnappingChangedSubscription
Observer::Subscription mProjectRateChangedSubscription
Observer::Subscription mTimeSignatureChangedSubscription
static ProjectSnap & Get(AudacityProject &project)
Definition: ProjectSnap.cpp:27
static ProjectTimeSignature & Get(AudacityProject &project)

References SnapSelection().

Here is the call graph for this function:

◆ ProjectSelectionManager() [2/2]

ProjectSelectionManager::ProjectSelectionManager ( const ProjectSelectionManager )
delete

◆ ~ProjectSelectionManager()

ProjectSelectionManager::~ProjectSelectionManager ( )
overridedefault

Member Function Documentation

◆ AS_GetSelectionFormat()

const NumericFormatSymbol & ProjectSelectionManager::AS_GetSelectionFormat ( )
overridevirtual

Implements SelectionBarListener.

Definition at line 92 of file ProjectSelectionManager.cpp.

93{
94 auto &project = mProject;
96}
const NumericFormatSymbol & GetSelectionFormat() const
static ProjectNumericFormats & Get(AudacityProject &project)

References ProjectNumericFormats::Get(), ProjectNumericFormats::GetSelectionFormat(), mProject, and project.

Here is the call graph for this function:

◆ AS_ModifySelection()

void ProjectSelectionManager::AS_ModifySelection ( double &  start,
double &  end,
bool  done 
)
overridevirtual

Implements SelectionBarListener.

Definition at line 131 of file ProjectSelectionManager.cpp.

133{
134 auto &project = mProject;
135 auto &history = ProjectHistory::Get( project );
136 auto &trackPanel = TrackPanel::Get( project );
137 auto &viewInfo = ViewInfo::Get( project );
138 viewInfo.selectedRegion.setTimes(start, end);
139 trackPanel.Refresh(false);
140 if (done) {
141 history.ModifyState(false);
142 }
143}
static ProjectHistory & Get(AudacityProject &project)
static TrackPanel & Get(AudacityProject &project)
Definition: TrackPanel.cpp:232
static ViewInfo & Get(AudacityProject &project)
Definition: ViewInfo.cpp:235
auto end(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
Definition: PackedArray.h:159

References PackedArray::end(), ProjectHistory::Get(), ViewInfo::Get(), TrackPanel::Get(), mProject, and project.

Here is the call graph for this function:

◆ AS_SetSelectionFormat()

void ProjectSelectionManager::AS_SetSelectionFormat ( const NumericFormatSymbol format)
overridevirtual

Implements SelectionBarListener.

Definition at line 98 of file ProjectSelectionManager.cpp.

100{
101 auto &project = mProject;
102 auto &formats = ProjectNumericFormats::Get( project );
103 formats.SetSelectionFormat( format );
104
105 gPrefs->Write(wxT("/SelectionFormat"), format.Internal());
106 gPrefs->Flush();
107
109}
wxT("CloseDown"))
audacity::BasicSettings * gPrefs
Definition: Prefs.cpp:68
void SetSelectionFormat(const NumericFormatSymbol &format)
static SelectionBar & Get(AudacityProject &project)
virtual bool Flush() noexcept=0
virtual bool Write(const wxString &key, bool value)=0

References audacity::BasicSettings::Flush(), anonymous_namespace{ExportPCM.cpp}::format, ProjectNumericFormats::Get(), SelectionBar::Get(), gPrefs, mProject, project, SelectionBar::SetSelectionFormat(), audacity::BasicSettings::Write(), and wxT().

Here is the call graph for this function:

◆ Get() [1/2]

ProjectSelectionManager & ProjectSelectionManager::Get ( AudacityProject project)
static

Definition at line 37 of file ProjectSelectionManager.cpp.

39{
40 return project.AttachedObjects::Get< ProjectSelectionManager >(
42}
static AudacityProject::AttachedObjects::RegisteredFactory sProjectSelectionManagerKey

References project, and sProjectSelectionManagerKey.

Referenced by SelectFrequenciesCommand::Apply(), Get(), AUPImportFileHandle::Import(), ProjectManager::New(), and ProjectFileManager::OpenProjectFile().

Here is the caller graph for this function:

◆ Get() [2/2]

const ProjectSelectionManager & ProjectSelectionManager::Get ( const AudacityProject project)
static

Definition at line 44 of file ProjectSelectionManager.cpp.

46{
47 return Get( const_cast< AudacityProject & >( project ) );
48}
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
Definition: Project.h:90
static ProjectSelectionManager & Get(AudacityProject &project)

References Get(), and project.

Here is the call graph for this function:

◆ operator=()

ProjectSelectionManager & ProjectSelectionManager::operator= ( const ProjectSelectionManager )
delete

◆ SnapSelection()

void ProjectSelectionManager::SnapSelection ( )
private

Definition at line 68 of file ProjectSelectionManager.cpp.

69{
70 auto& project = mProject;
71 auto& projectSnap = ProjectSnap::Get(mProject);
72
73 if (projectSnap.GetSnapMode() == SnapMode::SNAP_OFF)
74 return;
75
76 auto& viewInfo = ViewInfo::Get(project);
77 auto& selectedRegion = viewInfo.selectedRegion;
78
79 const double oldt0 = selectedRegion.t0();
80 const double oldt1 = selectedRegion.t1();
81
82 const double t0 = projectSnap.SnapTime(oldt0).time;
83 const double t1 = projectSnap.SnapTime(oldt1).time;
84
85 if (t0 != oldt0 || t1 != oldt1)
86 {
87 selectedRegion.setTimes(t0, t1);
89 }
90}
void Refresh(bool eraseBackground=true, const wxRect *rect=(const wxRect *) NULL) override
Definition: TrackPanel.cpp:784

References ProjectSnap::Get(), ViewInfo::Get(), TrackPanel::Get(), mProject, project, TrackPanel::Refresh(), and SNAP_OFF.

Referenced by ProjectSelectionManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SSBL_GetBandwidthSelectionFormatName()

const NumericFormatSymbol & ProjectSelectionManager::SSBL_GetBandwidthSelectionFormatName ( )
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 180 of file ProjectSelectionManager.cpp.

181{
182 auto &project = mProject;
183 auto &formats = ProjectNumericFormats::Get( project );
184 return formats.GetBandwidthSelectionFormatName();
185}

References ProjectNumericFormats::Get(), mProject, and project.

Here is the call graph for this function:

◆ SSBL_GetFrequencySelectionFormatName()

const NumericFormatSymbol & ProjectSelectionManager::SSBL_GetFrequencySelectionFormatName ( )
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 155 of file ProjectSelectionManager.cpp.

156{
157 auto &project = mProject;
158 auto &formats = ProjectNumericFormats::Get( project );
159 return formats.GetFrequencySelectionFormatName();
160}

References ProjectNumericFormats::Get(), mProject, and project.

Here is the call graph for this function:

◆ SSBL_GetRate()

double ProjectSelectionManager::SSBL_GetRate ( ) const
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 145 of file ProjectSelectionManager.cpp.

146{
147 auto &project = mProject;
148 auto &tracks = TrackList::Get( project );
149 // Return maximum of project rate and all track rates.
150 return std::max( ProjectRate::Get( project ).GetRate(),
151 tracks.Any<const WaveTrack>().max(&WaveTrack::GetRate));
152}
const auto tracks
static TrackList & Get(AudacityProject &project)
Definition: Track.cpp:354
A Track that contains audio waveform data.
Definition: WaveTrack.h:221
double GetRate() const override
Definition: WaveTrack.cpp:792
double GetRate(const Track &track)
Definition: TimeTrack.cpp:196

References ProjectRate::Get(), TrackList::Get(), WaveTrack::GetRate(), anonymous_namespace{TimeTrack.cpp}::GetRate(), mProject, project, and tracks.

Referenced by SSBL_ModifySpectralSelection().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SSBL_ModifySpectralSelection()

void ProjectSelectionManager::SSBL_ModifySpectralSelection ( double &  bottom,
double &  top,
bool  done 
)
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 204 of file ProjectSelectionManager.cpp.

206{
207#ifdef EXPERIMENTAL_SPECTRAL_EDITING
208 auto &project = mProject;
209 auto &history = ProjectHistory::Get( project );
210 auto &trackPanel = TrackPanel::Get( project );
211 auto &viewInfo = ViewInfo::Get( project );
212
213 double nyq = SSBL_GetRate() / 2.0;
214 if (bottom >= 0.0)
215 bottom = std::min(nyq, bottom);
216 if (top >= 0.0)
217 top = std::min(nyq, top);
218 viewInfo.selectedRegion.setFrequencies(bottom, top);
219 trackPanel.Refresh(false);
220 if (done) {
221 history.ModifyState(false);
222 }
223#else
224 bottom; top; done;
225#endif
226}
int min(int a, int b)
double SSBL_GetRate() const override

References ProjectHistory::Get(), ViewInfo::Get(), TrackPanel::Get(), min(), mProject, project, and SSBL_GetRate().

Referenced by SelectFrequenciesCommand::Apply().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SSBL_SetBandwidthSelectionFormatName()

void ProjectSelectionManager::SSBL_SetBandwidthSelectionFormatName ( const NumericFormatSymbol formatName)
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 187 of file ProjectSelectionManager.cpp.

189{
190 auto &project = mProject;
191 auto &formats = ProjectNumericFormats::Get( project );
192
193 formats.SetBandwidthSelectionFormatName( formatName );
194
195 gPrefs->Write(wxT("/BandwidthSelectionFormatName"),
196 formatName.Internal());
197 gPrefs->Flush();
198
199#ifdef EXPERIMENTAL_SPECTRAL_EDITING
201#endif
202}
const wxString & Internal() const
void SetBandwidthSelectionFormatName(const NumericFormatSymbol &formatName)
static SpectralSelectionBar & Get(AudacityProject &project)

References audacity::BasicSettings::Flush(), ProjectNumericFormats::Get(), SpectralSelectionBar::Get(), gPrefs, ComponentInterfaceSymbol::Internal(), mProject, project, SpectralSelectionBar::SetBandwidthSelectionFormatName(), audacity::BasicSettings::Write(), and wxT().

Here is the call graph for this function:

◆ SSBL_SetFrequencySelectionFormatName()

void ProjectSelectionManager::SSBL_SetFrequencySelectionFormatName ( const NumericFormatSymbol formatName)
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 162 of file ProjectSelectionManager.cpp.

164{
165 auto &project = mProject;
166 auto &formats = ProjectNumericFormats::Get( project );
167
168 formats.SetFrequencySelectionFormatName( formatName );
169
170 gPrefs->Write(wxT("/FrequencySelectionFormatName"),
171 formatName.Internal());
172 gPrefs->Flush();
173
174#ifdef EXPERIMENTAL_SPECTRAL_EDITING
176#endif
177}
void SetFrequencySelectionFormatName(const NumericFormatSymbol &formatName)

References audacity::BasicSettings::Flush(), ProjectNumericFormats::Get(), SpectralSelectionBar::Get(), gPrefs, ComponentInterfaceSymbol::Internal(), mProject, project, SpectralSelectionBar::SetFrequencySelectionFormatName(), audacity::BasicSettings::Write(), and wxT().

Here is the call graph for this function:

◆ TT_GetAudioTimeFormat()

const NumericFormatSymbol & ProjectSelectionManager::TT_GetAudioTimeFormat ( )
overridevirtual

Implements TimeToolBarListener.

Definition at line 111 of file ProjectSelectionManager.cpp.

112{
113 auto &project = mProject;
114 auto &formats = ProjectNumericFormats::Get( project );
115 return formats.GetAudioTimeFormat();
116}

References ProjectNumericFormats::Get(), mProject, and project.

Here is the call graph for this function:

◆ TT_SetAudioTimeFormat()

void ProjectSelectionManager::TT_SetAudioTimeFormat ( const NumericFormatSymbol format)
overridevirtual

Implements TimeToolBarListener.

Definition at line 118 of file ProjectSelectionManager.cpp.

120{
121 auto &project = mProject;
122 auto &formats = ProjectNumericFormats::Get( project );
123 formats.SetAudioTimeFormat( format );
124
125 gPrefs->Write(wxT("/AudioTimeFormat"), format.Internal());
126 gPrefs->Flush();
127
129}
void SetAudioTimeFormat(const NumericFormatSymbol &format)
static TimeToolBar & Get(AudacityProject &project)
Definition: TimeToolBar.cpp:74

References audacity::BasicSettings::Flush(), anonymous_namespace{ExportPCM.cpp}::format, ProjectNumericFormats::Get(), TimeToolBar::Get(), gPrefs, mProject, project, TimeToolBar::SetAudioTimeFormat(), audacity::BasicSettings::Write(), and wxT().

Here is the call graph for this function:

Member Data Documentation

◆ mProject

AudacityProject& ProjectSelectionManager::mProject
private

◆ mProjectRateChangedSubscription

Observer::Subscription ProjectSelectionManager::mProjectRateChangedSubscription
private

Definition at line 63 of file ProjectSelectionManager.h.

◆ mSnappingChangedSubscription

Observer::Subscription ProjectSelectionManager::mSnappingChangedSubscription
private

Definition at line 61 of file ProjectSelectionManager.h.

◆ mTimeSignatureChangedSubscription

Observer::Subscription ProjectSelectionManager::mTimeSignatureChangedSubscription
private

Definition at line 62 of file ProjectSelectionManager.h.


The documentation for this class was generated from the following files: