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 &) PROHIBITED
 
ProjectSelectionManageroperator= (const ProjectSelectionManager &) PROHIBITED
 
 ~ProjectSelectionManager () override
 
double AS_GetRate () override
 
void AS_SetRate (double rate) override
 
int AS_GetSnapTo () override
 
void AS_SetSnapTo (int snap) 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 double AS_GetRate ()=0
 
virtual void AS_SetRate (double rate)=0
 
virtual int AS_GetSnapTo ()=0
 
virtual void AS_SetSnapTo (int snap)=0
 
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

bool SnapSelection ()
 

Private Attributes

AudacityProjectmProject
 

Detailed Description

Definition at line 21 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 }
52{
53}

◆ ProjectSelectionManager() [2/2]

ProjectSelectionManager::ProjectSelectionManager ( const ProjectSelectionManager )

◆ ~ProjectSelectionManager()

ProjectSelectionManager::~ProjectSelectionManager ( )
overridedefault

Member Function Documentation

◆ AS_GetRate()

double ProjectSelectionManager::AS_GetRate ( )
overridevirtual

Implements SelectionBarListener.

Definition at line 91 of file ProjectSelectionManager.cpp.

92{
94}
static ProjectRate & Get(AudacityProject &project)
Definition: ProjectRate.cpp:28
double GetRate() const
Definition: ProjectRate.cpp:53

References ProjectRate::Get(), ProjectRate::GetRate(), and mProject.

Here is the call graph for this function:

◆ AS_GetSelectionFormat()

const NumericFormatSymbol & ProjectSelectionManager::AS_GetSelectionFormat ( )
overridevirtual

Implements SelectionBarListener.

Definition at line 130 of file ProjectSelectionManager.cpp.

131{
132 auto &project = mProject;
133 auto &formats = ProjectNumericFormats::Get( project );
134 return formats.GetSelectionFormat();
135}
static ProjectNumericFormats & Get(AudacityProject &project)

References ProjectNumericFormats::Get(), and mProject.

Here is the call graph for this function:

◆ AS_GetSnapTo()

int ProjectSelectionManager::AS_GetSnapTo ( )
overridevirtual

Implements SelectionBarListener.

Definition at line 103 of file ProjectSelectionManager.cpp.

104{
105 auto &project = mProject;
106 auto &settings = ProjectSettings::Get( project );
107 return settings.GetSnapTo();
108}
static Settings & settings()
Definition: TrackInfo.cpp:87
static ProjectSettings & Get(AudacityProject &project)

References ProjectSettings::Get(), mProject, and settings().

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 173 of file ProjectSelectionManager.cpp.

175{
176 auto &project = mProject;
177 auto &history = ProjectHistory::Get( project );
178 auto &trackPanel = TrackPanel::Get( project );
179 auto &viewInfo = ViewInfo::Get( project );
180 viewInfo.selectedRegion.setTimes(start, end);
181 trackPanel.Refresh(false);
182 if (done) {
183 history.ModifyState(false);
184 }
185}
static ProjectHistory & Get(AudacityProject &project)
static TrackPanel & Get(AudacityProject &project)
Definition: TrackPanel.cpp:231
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(), and mProject.

Here is the call graph for this function:

◆ AS_SetRate()

void ProjectSelectionManager::AS_SetRate ( double  rate)
overridevirtual

Implements SelectionBarListener.

Definition at line 96 of file ProjectSelectionManager.cpp.

97{
98 auto &project = mProject;
99 ProjectRate::Get( project ).SetRate( rate );
100 SelectionBar::Get( project ).SetRate(rate);
101}
void SetRate(double rate)
Definition: ProjectRate.cpp:58
void SetRate(double rate)
static SelectionBar & Get(AudacityProject &project)

References ProjectRate::Get(), SelectionBar::Get(), mProject, ProjectRate::SetRate(), and SelectionBar::SetRate().

Referenced by anonymous_namespace{PluginMenus.cpp}::OnResetConfig().

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

◆ AS_SetSelectionFormat()

void ProjectSelectionManager::AS_SetSelectionFormat ( const NumericFormatSymbol format)
overridevirtual

Implements SelectionBarListener.

Definition at line 137 of file ProjectSelectionManager.cpp.

139{
140 auto &project = mProject;
141 auto &formats = ProjectNumericFormats::Get( project );
142 formats.SetSelectionFormat( format );
143
144 gPrefs->Write(wxT("/SelectionFormat"), format.Internal());
145 gPrefs->Flush();
146
147 if (SnapSelection())
148 TrackPanel::Get( project ).Refresh(false);
149
151}
wxT("CloseDown"))
int format
Definition: ExportPCM.cpp:53
FileConfig * gPrefs
Definition: Prefs.cpp:70
virtual bool Flush(bool bCurrentOnly=false) wxOVERRIDE
Definition: FileConfig.cpp:143
void SetSelectionFormat(const NumericFormatSymbol &format)
void Refresh(bool eraseBackground=true, const wxRect *rect=(const wxRect *) NULL) override
Definition: TrackPanel.cpp:781

References FileConfig::Flush(), format, ProjectNumericFormats::Get(), SelectionBar::Get(), TrackPanel::Get(), gPrefs, mProject, TrackPanel::Refresh(), SelectionBar::SetSelectionFormat(), SnapSelection(), and wxT().

Here is the call graph for this function:

◆ AS_SetSnapTo()

void ProjectSelectionManager::AS_SetSnapTo ( int  snap)
overridevirtual

Implements SelectionBarListener.

Definition at line 110 of file ProjectSelectionManager.cpp.

111{
112 auto &project = mProject;
113 auto &settings = ProjectSettings::Get( project );
114 auto &window = ProjectWindow::Get( project );
115
116 settings.SetSnapTo( snap );
117
118// LLL: TODO - what should this be changed to???
119// GetCommandManager()->Check(wxT("Snap"), mSnapTo);
120 gPrefs->Write(wxT("/SnapTo"), snap);
121 gPrefs->Flush();
122
124
125 window.RedrawProject();
126
127 SelectionBar::Get( project ).SetSnapTo(snap);
128}
static ProjectWindow & Get(AudacityProject &project)
void SetSnapTo(int)

References FileConfig::Flush(), ProjectSettings::Get(), ProjectWindow::Get(), SelectionBar::Get(), gPrefs, mProject, SelectionBar::SetSnapTo(), settings(), SnapSelection(), and wxT().

Referenced by anonymous_namespace{PluginMenus.cpp}::OnResetConfig(), SelectActions::Handler::OnSnapToNearest(), SelectActions::Handler::OnSnapToOff(), SelectActions::Handler::OnSnapToPrior(), and anonymous_namespace{HelpMenus.cpp}::QuickFixDialog::PopulateOrExchange().

Here is the call graph for this function:
Here is the caller 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 sProjectSelectionManagerKey.

Referenced by SelectFrequenciesCommand::Apply(), Get(), AUPImportFileHandle::Import(), ProjectManager::New(), anonymous_namespace{PluginMenus.cpp}::OnResetConfig(), SelectActions::Handler::OnSnapToNearest(), SelectActions::Handler::OnSnapToOff(), SelectActions::Handler::OnSnapToPrior(), ProjectFileManager::OpenProjectFile(), and anonymous_namespace{HelpMenus.cpp}::QuickFixDialog::PopulateOrExchange().

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().

Here is the call graph for this function:

◆ operator=()

ProjectSelectionManager & ProjectSelectionManager::operator= ( const ProjectSelectionManager )

◆ SnapSelection()

bool ProjectSelectionManager::SnapSelection ( )
private

Definition at line 57 of file ProjectSelectionManager.cpp.

58{
59 auto &project = mProject;
60 auto &formats = ProjectNumericFormats::Get( project );
61 auto &settings = ProjectSettings::Get( project );
62 auto &window = ProjectWindow::Get( project );
63 auto snapTo = settings.GetSnapTo();
64 if (snapTo != SNAP_OFF) {
65 auto &viewInfo = ViewInfo::Get( project );
66 auto &selectedRegion = viewInfo.selectedRegion;
68 formats.GetSelectionFormat(), 0, ProjectRate::Get(project).GetRate());
69 const bool nearest = (snapTo == SNAP_NEAREST);
70
71 const double oldt0 = selectedRegion.t0();
72 const double oldt1 = selectedRegion.t1();
73
74 nc.ValueToControls(oldt0, nearest);
75 nc.ControlsToValue();
76 const double t0 = nc.GetValue();
77
78 nc.ValueToControls(oldt1, nearest);
79 nc.ControlsToValue();
80 const double t1 = nc.GetValue();
81
82 if (t0 != oldt0 || t1 != oldt1) {
83 selectedRegion.setTimes(t0, t1);
84 return true;
85 }
86 }
87
88 return false;
89}
@ SNAP_NEAREST
@ SNAP_OFF
NumericConverter provides the advanced formatting control used in the selection bar of Audacity.

References NumericConverter::ControlsToValue(), ProjectNumericFormats::Get(), ProjectRate::Get(), ViewInfo::Get(), ProjectSettings::Get(), ProjectWindow::Get(), ProjectRate::GetRate(), NumericConverter::GetValue(), mProject, settings(), SNAP_NEAREST, SNAP_OFF, NumericConverter::TIME, and NumericConverter::ValueToControls().

Referenced by AS_SetSelectionFormat(), and AS_SetSnapTo().

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 222 of file ProjectSelectionManager.cpp.

223{
224 auto &project = mProject;
225 auto &formats = ProjectNumericFormats::Get( project );
226 return formats.GetBandwidthSelectionFormatName();
227}

References ProjectNumericFormats::Get(), and mProject.

Here is the call graph for this function:

◆ SSBL_GetFrequencySelectionFormatName()

const NumericFormatSymbol & ProjectSelectionManager::SSBL_GetFrequencySelectionFormatName ( )
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 197 of file ProjectSelectionManager.cpp.

198{
199 auto &project = mProject;
200 auto &formats = ProjectNumericFormats::Get( project );
201 return formats.GetFrequencySelectionFormatName();
202}

References ProjectNumericFormats::Get(), and mProject.

Here is the call graph for this function:

◆ SSBL_GetRate()

double ProjectSelectionManager::SSBL_GetRate ( ) const
overridevirtual

Implements SpectralSelectionBarListener.

Definition at line 187 of file ProjectSelectionManager.cpp.

188{
189 auto &project = mProject;
190 auto &tracks = TrackList::Get( project );
191 // Return maximum of project rate and all track rates.
192 return std::max( ProjectRate::Get( project ).GetRate(),
193 tracks.Any<const WaveTrack>().max( &WaveTrack::GetRate ) );
194}
static TrackList & Get(AudacityProject &project)
Definition: Track.cpp:487
A Track that contains audio waveform data.
Definition: WaveTrack.h:51
double GetRate() const override
Definition: WaveTrack.cpp:360

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

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 246 of file ProjectSelectionManager.cpp.

248{
249#ifdef EXPERIMENTAL_SPECTRAL_EDITING
250 auto &project = mProject;
251 auto &history = ProjectHistory::Get( project );
252 auto &trackPanel = TrackPanel::Get( project );
253 auto &viewInfo = ViewInfo::Get( project );
254
255 double nyq = SSBL_GetRate() / 2.0;
256 if (bottom >= 0.0)
257 bottom = std::min(nyq, bottom);
258 if (top >= 0.0)
259 top = std::min(nyq, top);
260 viewInfo.selectedRegion.setFrequencies(bottom, top);
261 trackPanel.Refresh(false);
262 if (done) {
263 history.ModifyState(false);
264 }
265#else
266 bottom; top; done;
267#endif
268}
int min(int a, int b)
double SSBL_GetRate() const override

References ProjectHistory::Get(), ViewInfo::Get(), TrackPanel::Get(), min(), mProject, 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 229 of file ProjectSelectionManager.cpp.

231{
232 auto &project = mProject;
233 auto &formats = ProjectNumericFormats::Get( project );
234
235 formats.SetBandwidthSelectionFormatName( formatName );
236
237 gPrefs->Write(wxT("/BandwidthSelectionFormatName"),
238 formatName.Internal());
239 gPrefs->Flush();
240
241#ifdef EXPERIMENTAL_SPECTRAL_EDITING
243#endif
244}
const wxString & Internal() const
void SetBandwidthSelectionFormatName(const NumericFormatSymbol &formatName)
static SpectralSelectionBar & Get(AudacityProject &project)

References FileConfig::Flush(), ProjectNumericFormats::Get(), SpectralSelectionBar::Get(), gPrefs, ComponentInterfaceSymbol::Internal(), mProject, SpectralSelectionBar::SetBandwidthSelectionFormatName(), 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 204 of file ProjectSelectionManager.cpp.

206{
207 auto &project = mProject;
208 auto &formats = ProjectNumericFormats::Get( project );
209
210 formats.SetFrequencySelectionFormatName( formatName );
211
212 gPrefs->Write(wxT("/FrequencySelectionFormatName"),
213 formatName.Internal());
214 gPrefs->Flush();
215
216#ifdef EXPERIMENTAL_SPECTRAL_EDITING
218#endif
219}
void SetFrequencySelectionFormatName(const NumericFormatSymbol &formatName)

References FileConfig::Flush(), ProjectNumericFormats::Get(), SpectralSelectionBar::Get(), gPrefs, ComponentInterfaceSymbol::Internal(), mProject, SpectralSelectionBar::SetFrequencySelectionFormatName(), and wxT().

Here is the call graph for this function:

◆ TT_GetAudioTimeFormat()

const NumericFormatSymbol & ProjectSelectionManager::TT_GetAudioTimeFormat ( )
overridevirtual

Implements TimeToolBarListener.

Definition at line 153 of file ProjectSelectionManager.cpp.

154{
155 auto &project = mProject;
156 auto &formats = ProjectNumericFormats::Get( project );
157 return formats.GetAudioTimeFormat();
158}

References ProjectNumericFormats::Get(), and mProject.

Here is the call graph for this function:

◆ TT_SetAudioTimeFormat()

void ProjectSelectionManager::TT_SetAudioTimeFormat ( const NumericFormatSymbol format)
overridevirtual

Implements TimeToolBarListener.

Definition at line 160 of file ProjectSelectionManager.cpp.

162{
163 auto &project = mProject;
164 auto &formats = ProjectNumericFormats::Get( project );
165 formats.SetAudioTimeFormat( format );
166
167 gPrefs->Write(wxT("/AudioTimeFormat"), format.Internal());
168 gPrefs->Flush();
169
171}
void SetAudioTimeFormat(const NumericFormatSymbol &format)
static TimeToolBar & Get(AudacityProject &project)
Definition: TimeToolBar.cpp:74

References FileConfig::Flush(), format, ProjectNumericFormats::Get(), TimeToolBar::Get(), gPrefs, mProject, TimeToolBar::SetAudioTimeFormat(), and wxT().

Here is the call graph for this function:

Member Data Documentation

◆ mProject

AudacityProject& ProjectSelectionManager::mProject
private

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