mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-06 07:29:07 +02:00
Remove some naked new amd delete in: Project
This commit is contained in:
parent
60260520dc
commit
cfd7648fce
@ -1695,7 +1695,7 @@ CommandFlag AudacityProject::GetUpdateFlags()
|
|||||||
if (!mViewInfo.selectedRegion.isPoint())
|
if (!mViewInfo.selectedRegion.isPoint())
|
||||||
flags |= TimeSelectedFlag;
|
flags |= TimeSelectedFlag;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
flags |= TracksExistFlag;
|
flags |= TracksExistFlag;
|
||||||
@ -3336,7 +3336,7 @@ double AudacityProject::NearestZeroCrossing(double t0)
|
|||||||
for(i=0; i<windowSize; i++)
|
for(i=0; i<windowSize; i++)
|
||||||
dist[i] = 0.0;
|
dist[i] = 0.0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *track = iter.First();
|
Track *track = iter.First();
|
||||||
while (track) {
|
while (track) {
|
||||||
if (!track->GetSelected() || track->GetKind() != (Track::Wave)) {
|
if (!track->GetSelected() || track->GetKind() != (Track::Wave)) {
|
||||||
@ -3447,7 +3447,7 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags)
|
|||||||
|
|
||||||
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
|
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
WaveTrack *newTrack{};
|
WaveTrack *newTrack{};
|
||||||
wxWindow *focus = wxWindow::FindFocus();
|
wxWindow *focus = wxWindow::FindFocus();
|
||||||
@ -3475,7 +3475,7 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags)
|
|||||||
EffectManager & em = EffectManager::Get();
|
EffectManager & em = EffectManager::Get();
|
||||||
|
|
||||||
bool success = em.DoEffect(ID, this, mRate,
|
bool success = em.DoEffect(ID, this, mRate,
|
||||||
mTracks, mTrackFactory,
|
GetTracks(), GetTrackFactory(),
|
||||||
&mViewInfo.selectedRegion,
|
&mViewInfo.selectedRegion,
|
||||||
(flags & OnEffectFlags::kConfigured) == 0);
|
(flags & OnEffectFlags::kConfigured) == 0);
|
||||||
|
|
||||||
@ -3647,7 +3647,7 @@ void AudacityProject::OnExportLabels()
|
|||||||
Track *t;
|
Track *t;
|
||||||
int numLabelTracks = 0;
|
int numLabelTracks = 0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
wxString fName = _("labels.txt");
|
wxString fName = _("labels.txt");
|
||||||
t = iter.First();
|
t = iter.First();
|
||||||
@ -3715,7 +3715,7 @@ void AudacityProject::OnExportLabels()
|
|||||||
|
|
||||||
#ifdef USE_MIDI
|
#ifdef USE_MIDI
|
||||||
void AudacityProject::OnExportMIDI(){
|
void AudacityProject::OnExportMIDI(){
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
int numNoteTracksSelected = 0;
|
int numNoteTracksSelected = 0;
|
||||||
NoteTrack *nt = NULL;
|
NoteTrack *nt = NULL;
|
||||||
@ -3860,7 +3860,7 @@ void AudacityProject::OnPageSetup()
|
|||||||
|
|
||||||
void AudacityProject::OnPrint()
|
void AudacityProject::OnPrint()
|
||||||
{
|
{
|
||||||
HandlePrint(this, GetName(), mTracks);
|
HandlePrint(this, GetName(), GetTracks());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -3928,7 +3928,7 @@ void AudacityProject::OnRedo()
|
|||||||
|
|
||||||
void AudacityProject::OnCut()
|
void AudacityProject::OnCut()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
// This doesn't handle cutting labels, it handles
|
// This doesn't handle cutting labels, it handles
|
||||||
@ -4016,7 +4016,7 @@ void AudacityProject::OnCut()
|
|||||||
|
|
||||||
void AudacityProject::OnSplitCut()
|
void AudacityProject::OnSplitCut()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
ClearClipboard();
|
ClearClipboard();
|
||||||
@ -4059,7 +4059,7 @@ void AudacityProject::OnSplitCut()
|
|||||||
void AudacityProject::OnCopy()
|
void AudacityProject::OnCopy()
|
||||||
{
|
{
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
@ -4113,7 +4113,7 @@ void AudacityProject::OnPaste()
|
|||||||
double t0 = mViewInfo.selectedRegion.t0();
|
double t0 = mViewInfo.selectedRegion.t0();
|
||||||
double t1 = mViewInfo.selectedRegion.t1();
|
double t1 = mViewInfo.selectedRegion.t1();
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
TrackListIterator clipIter(msClipboard.get());
|
TrackListIterator clipIter(msClipboard.get());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
@ -4308,7 +4308,7 @@ void AudacityProject::OnPaste()
|
|||||||
// (This was formerly the first part of overly-long OnPaste.)
|
// (This was formerly the first part of overly-long OnPaste.)
|
||||||
bool AudacityProject::HandlePasteText()
|
bool AudacityProject::HandlePasteText()
|
||||||
{
|
{
|
||||||
TrackListOfKindIterator iterLabelTrack(Track::Label, mTracks);
|
TrackListOfKindIterator iterLabelTrack(Track::Label, GetTracks());
|
||||||
LabelTrack* pLabelTrack = (LabelTrack*)(iterLabelTrack.First());
|
LabelTrack* pLabelTrack = (LabelTrack*)(iterLabelTrack.First());
|
||||||
while (pLabelTrack)
|
while (pLabelTrack)
|
||||||
{
|
{
|
||||||
@ -4344,7 +4344,7 @@ bool AudacityProject::HandlePasteNothingSelected()
|
|||||||
{
|
{
|
||||||
// First check whether anything's selected.
|
// First check whether anything's selected.
|
||||||
bool bAnySelected = false;
|
bool bAnySelected = false;
|
||||||
TrackListIterator iterTrack(mTracks);
|
TrackListIterator iterTrack(GetTracks());
|
||||||
Track* pTrack = iterTrack.First();
|
Track* pTrack = iterTrack.First();
|
||||||
while (pTrack) {
|
while (pTrack) {
|
||||||
if (pTrack->GetSelected())
|
if (pTrack->GetSelected())
|
||||||
@ -4442,13 +4442,13 @@ void AudacityProject::OnPasteNewLabel()
|
|||||||
{
|
{
|
||||||
bool bPastedSomething = false;
|
bool bPastedSomething = false;
|
||||||
|
|
||||||
SelectedTrackListOfKindIterator iter(Track::Label, mTracks);
|
SelectedTrackListOfKindIterator iter(Track::Label, GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
if (!t)
|
if (!t)
|
||||||
{
|
{
|
||||||
// If there are no selected label tracks, try to choose the first label
|
// If there are no selected label tracks, try to choose the first label
|
||||||
// track after some other selected track
|
// track after some other selected track
|
||||||
TrackListIterator iter1(mTracks);
|
TrackListIterator iter1(GetTracks());
|
||||||
for (Track *t1 = iter1.First(); t1; t1 = iter1.Next()) {
|
for (Track *t1 = iter1.First(); t1; t1 = iter1.Next()) {
|
||||||
if (t1->GetSelected()) {
|
if (t1->GetSelected()) {
|
||||||
// Look for a label track
|
// Look for a label track
|
||||||
@ -4525,7 +4525,7 @@ void AudacityProject::OnTrim()
|
|||||||
if (mViewInfo.selectedRegion.isPoint())
|
if (mViewInfo.selectedRegion.isPoint())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
while (n) {
|
while (n) {
|
||||||
@ -4566,7 +4566,7 @@ void AudacityProject::OnDelete()
|
|||||||
|
|
||||||
void AudacityProject::OnSplitDelete()
|
void AudacityProject::OnSplitDelete()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
@ -4595,7 +4595,7 @@ void AudacityProject::OnSplitDelete()
|
|||||||
|
|
||||||
void AudacityProject::OnDisjoin()
|
void AudacityProject::OnDisjoin()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
@ -4620,7 +4620,7 @@ void AudacityProject::OnDisjoin()
|
|||||||
|
|
||||||
void AudacityProject::OnJoin()
|
void AudacityProject::OnJoin()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
@ -4645,7 +4645,7 @@ void AudacityProject::OnJoin()
|
|||||||
|
|
||||||
void AudacityProject::OnSilence()
|
void AudacityProject::OnSilence()
|
||||||
{
|
{
|
||||||
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
|
SelectedTrackListOfKindIterator iter(Track::Wave, GetTracks());
|
||||||
|
|
||||||
for (Track *n = iter.First(); n; n = iter.Next())
|
for (Track *n = iter.First(); n; n = iter.Next())
|
||||||
n->Silence(mViewInfo.selectedRegion.t0(), mViewInfo.selectedRegion.t1());
|
n->Silence(mViewInfo.selectedRegion.t0(), mViewInfo.selectedRegion.t1());
|
||||||
@ -4661,7 +4661,7 @@ void AudacityProject::OnSilence()
|
|||||||
|
|
||||||
void AudacityProject::OnDuplicate()
|
void AudacityProject::OnDuplicate()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *l = iter.Last();
|
Track *l = iter.Last();
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
@ -4849,7 +4849,7 @@ void AudacityProject::OnDisjoinLabels()
|
|||||||
|
|
||||||
void AudacityProject::OnSplit()
|
void AudacityProject::OnSplit()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
double sel0 = mViewInfo.selectedRegion.t0();
|
double sel0 = mViewInfo.selectedRegion.t0();
|
||||||
double sel1 = mViewInfo.selectedRegion.t1();
|
double sel1 = mViewInfo.selectedRegion.t1();
|
||||||
@ -4922,7 +4922,7 @@ void AudacityProject::OnSplit()
|
|||||||
|
|
||||||
void AudacityProject::OnSplitNew()
|
void AudacityProject::OnSplitNew()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *l = iter.Last();
|
Track *l = iter.Last();
|
||||||
|
|
||||||
for (Track *n = iter.First(); n; n = iter.Next()) {
|
for (Track *n = iter.First(); n; n = iter.Next()) {
|
||||||
@ -4967,7 +4967,7 @@ void AudacityProject::OnSplitNew()
|
|||||||
|
|
||||||
void AudacityProject::OnSelectAll()
|
void AudacityProject::OnSelectAll()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -5003,7 +5003,7 @@ void AudacityProject::DoNextPeakFrequency(bool up)
|
|||||||
{
|
{
|
||||||
// Find the first selected wave track that is in a spectrogram view.
|
// Find the first selected wave track that is in a spectrogram view.
|
||||||
WaveTrack *pTrack = 0;
|
WaveTrack *pTrack = 0;
|
||||||
SelectedTrackListOfKindIterator iter(Track::Wave, mTracks);
|
SelectedTrackListOfKindIterator iter(Track::Wave, GetTracks());
|
||||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||||
WaveTrack *const wt = static_cast<WaveTrack*>(t);
|
WaveTrack *const wt = static_cast<WaveTrack*>(t);
|
||||||
const int display = wt->GetDisplay();
|
const int display = wt->GetDisplay();
|
||||||
@ -5036,7 +5036,7 @@ void AudacityProject::OnSelectCursorEnd()
|
|||||||
{
|
{
|
||||||
double maxEndOffset = -1000000.0;
|
double maxEndOffset = -1000000.0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -5059,7 +5059,7 @@ void AudacityProject::OnSelectStartCursor()
|
|||||||
{
|
{
|
||||||
double minOffset = 1000000.0;
|
double minOffset = 1000000.0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -5081,7 +5081,7 @@ void AudacityProject::OnSelectStartCursor()
|
|||||||
void AudacityProject::OnSelectSyncLockSel()
|
void AudacityProject::OnSelectSyncLockSel()
|
||||||
{
|
{
|
||||||
bool selected = false;
|
bool selected = false;
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
for (Track *t = iter.First(); t; t = iter.Next())
|
for (Track *t = iter.First(); t; t = iter.Next())
|
||||||
{
|
{
|
||||||
if (t->IsSyncLockSelected()) {
|
if (t->IsSyncLockSelected()) {
|
||||||
@ -5100,7 +5100,7 @@ void AudacityProject::OnSelectSyncLockSel()
|
|||||||
|
|
||||||
void AudacityProject::OnSelectAllTracks()
|
void AudacityProject::OnSelectAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||||
t->SetSelected(true);
|
t->SetSelected(true);
|
||||||
}
|
}
|
||||||
@ -5277,7 +5277,7 @@ void AudacityProject::DoZoomFitV()
|
|||||||
height -= 28;
|
height -= 28;
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
if ((t->GetKind() == Track::Wave) &&
|
if ((t->GetKind() == Track::Wave) &&
|
||||||
@ -5297,7 +5297,7 @@ void AudacityProject::DoZoomFitV()
|
|||||||
if (height < 40)
|
if (height < 40)
|
||||||
height = 40;
|
height = 40;
|
||||||
|
|
||||||
TrackListIterator iter2(mTracks);
|
TrackListIterator iter2(GetTracks());
|
||||||
t = iter2.First();
|
t = iter2.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
if ((t->GetKind() == Track::Wave) &&
|
if ((t->GetKind() == Track::Wave) &&
|
||||||
@ -5671,7 +5671,7 @@ void AudacityProject::OnImportRaw()
|
|||||||
|
|
||||||
TrackHolders newTracks;
|
TrackHolders newTracks;
|
||||||
|
|
||||||
::ImportRaw(this, fileName, mTrackFactory, newTracks);
|
::ImportRaw(this, fileName, GetTrackFactory(), newTracks);
|
||||||
|
|
||||||
if (newTracks.size() <= 0)
|
if (newTracks.size() <= 0)
|
||||||
return;
|
return;
|
||||||
@ -5709,12 +5709,12 @@ void AudacityProject::HandleMixAndRender(bool toNewTrack)
|
|||||||
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
|
wxGetApp().SetMissingAliasedFileWarningShouldShow(true);
|
||||||
|
|
||||||
WaveTrack::Holder uNewLeft, uNewRight;
|
WaveTrack::Holder uNewLeft, uNewRight;
|
||||||
MixAndRender(mTracks, mTrackFactory, mRate, mDefaultFormat, 0.0, 0.0, uNewLeft, uNewRight);
|
MixAndRender(GetTracks(), GetTrackFactory(), mRate, mDefaultFormat, 0.0, 0.0, uNewLeft, uNewRight);
|
||||||
|
|
||||||
if (uNewLeft) {
|
if (uNewLeft) {
|
||||||
// Remove originals, get stats on what tracks were mixed
|
// Remove originals, get stats on what tracks were mixed
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
int selectedCount = 0;
|
int selectedCount = 0;
|
||||||
wxString firstName;
|
wxString firstName;
|
||||||
@ -5811,7 +5811,7 @@ void AudacityProject::OnCursorTrackStart()
|
|||||||
{
|
{
|
||||||
double minOffset = 1000000.0;
|
double minOffset = 1000000.0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -5835,7 +5835,7 @@ void AudacityProject::OnCursorTrackEnd()
|
|||||||
double maxEndOffset = -1000000.0;
|
double maxEndOffset = -1000000.0;
|
||||||
double thisEndOffset = 0.0;
|
double thisEndOffset = 0.0;
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -5872,7 +5872,7 @@ void AudacityProject::OnCursorSelEnd()
|
|||||||
|
|
||||||
void AudacityProject::HandleAlign(int index, bool moveSel)
|
void AudacityProject::HandleAlign(int index, bool moveSel)
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
wxString action;
|
wxString action;
|
||||||
wxString shortAction;
|
wxString shortAction;
|
||||||
double offset;
|
double offset;
|
||||||
@ -5966,7 +5966,7 @@ void AudacityProject::HandleAlign(int index, bool moveSel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((unsigned)index >= mAlignLabelsCount) { // This is an alignLabelsNoSync command.
|
if ((unsigned)index >= mAlignLabelsCount) { // This is an alignLabelsNoSync command.
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
double leftChannelStart = 0.0;
|
double leftChannelStart = 0.0;
|
||||||
double leftChannelEnd = 0.0;
|
double leftChannelEnd = 0.0;
|
||||||
@ -6023,7 +6023,7 @@ void AudacityProject::HandleAlign(int index, bool moveSel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (delta != 0.0) {
|
if (delta != 0.0) {
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -6502,7 +6502,7 @@ int AudacityProject::DoAddLabel(const SelectedRegion ®ion, bool preserveFocus
|
|||||||
|
|
||||||
// Otherwise look for a label track after the focused track
|
// Otherwise look for a label track after the focused track
|
||||||
if (!lt) {
|
if (!lt) {
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
if (t)
|
if (t)
|
||||||
iter.StartWith(t);
|
iter.StartWith(t);
|
||||||
else
|
else
|
||||||
@ -6589,7 +6589,7 @@ void AudacityProject::DoEditLabels(LabelTrack *lt, int index)
|
|||||||
wxString format = GetSelectionFormat(),
|
wxString format = GetSelectionFormat(),
|
||||||
freqFormat = GetFrequencySelectionFormatName();
|
freqFormat = GetFrequencySelectionFormatName();
|
||||||
|
|
||||||
LabelDialog dlg(this, *GetTrackFactory(), mTracks,
|
LabelDialog dlg(this, *GetTrackFactory(), GetTracks(),
|
||||||
lt, index,
|
lt, index,
|
||||||
mViewInfo, mRate,
|
mViewInfo, mRate,
|
||||||
format, freqFormat);
|
format, freqFormat);
|
||||||
@ -6620,7 +6620,7 @@ void AudacityProject::OnEditChains()
|
|||||||
|
|
||||||
void AudacityProject::OnRemoveTracks()
|
void AudacityProject::OnRemoveTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
Track *f = NULL;
|
Track *f = NULL;
|
||||||
Track *l = NULL;
|
Track *l = NULL;
|
||||||
@ -6781,7 +6781,7 @@ void AudacityProject::OnSeparator()
|
|||||||
|
|
||||||
void AudacityProject::OnCollapseAllTracks()
|
void AudacityProject::OnCollapseAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t)
|
while (t)
|
||||||
@ -6796,7 +6796,7 @@ void AudacityProject::OnCollapseAllTracks()
|
|||||||
|
|
||||||
void AudacityProject::OnExpandAllTracks()
|
void AudacityProject::OnExpandAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t)
|
while (t)
|
||||||
@ -6812,7 +6812,7 @@ void AudacityProject::OnExpandAllTracks()
|
|||||||
|
|
||||||
void AudacityProject::OnMuteAllTracks()
|
void AudacityProject::OnMuteAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t)
|
while (t)
|
||||||
@ -6831,7 +6831,7 @@ void AudacityProject::OnMuteAllTracks()
|
|||||||
|
|
||||||
void AudacityProject::OnUnMuteAllTracks()
|
void AudacityProject::OnUnMuteAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
|
|
||||||
while (t)
|
while (t)
|
||||||
@ -6868,7 +6868,7 @@ void AudacityProject::OnUnlockPlayRegion()
|
|||||||
|
|
||||||
void AudacityProject::OnResample()
|
void AudacityProject::OnResample()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
int newRate;
|
int newRate;
|
||||||
|
|
||||||
|
117
src/Project.cpp
117
src/Project.cpp
@ -842,8 +842,6 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
|
|||||||
// MM: We don't need to Ref() here because it start with refcount=1
|
// MM: We don't need to Ref() here because it start with refcount=1
|
||||||
mDirManager = new DirManager();
|
mDirManager = new DirManager();
|
||||||
|
|
||||||
// Create track list
|
|
||||||
mTracks = new TrackList();
|
|
||||||
mLastSavedTracks = NULL;
|
mLastSavedTracks = NULL;
|
||||||
|
|
||||||
// Register for tracklist updates
|
// Register for tracklist updates
|
||||||
@ -965,7 +963,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
|
|||||||
TrackPanelID,
|
TrackPanelID,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
mTracks,
|
GetTracks(),
|
||||||
&mViewInfo,
|
&mViewInfo,
|
||||||
this,
|
this,
|
||||||
mRuler);
|
mRuler);
|
||||||
@ -1093,7 +1091,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
|
|||||||
#endif
|
#endif
|
||||||
mIconized = false;
|
mIconized = false;
|
||||||
|
|
||||||
mTrackFactory = new TrackFactory(mDirManager, &mViewInfo);
|
mTrackFactory.reset(safenew TrackFactory{ mDirManager, &mViewInfo });
|
||||||
|
|
||||||
int widths[] = {0, GetControlToolBar()->WidthForStatusBar(mStatusBar), -1, 150};
|
int widths[] = {0, GetControlToolBar()->WidthForStatusBar(mStatusBar), -1, 150};
|
||||||
mStatusBar->SetStatusWidths(4, widths);
|
mStatusBar->SetStatusWidths(4, widths);
|
||||||
@ -1103,7 +1101,7 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id,
|
|||||||
GetControlToolBar()->UpdateStatusBar(this);
|
GetControlToolBar()->UpdateStatusBar(this);
|
||||||
mLastStatusUpdateTime = ::wxGetUTCTime();
|
mLastStatusUpdateTime = ::wxGetUTCTime();
|
||||||
|
|
||||||
mTimer = new wxTimer(this, AudacityProjectTimerID);
|
mTimer = std::make_unique<wxTimer>(this, AudacityProjectTimerID);
|
||||||
mTimer->Start(200);
|
mTimer->Start(200);
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
@ -1217,9 +1215,9 @@ wxDialog *AudacityProject::GetMissingAliasFileDialog()
|
|||||||
void AudacityProject::RedrawProject(const bool bForceWaveTracks /*= false*/)
|
void AudacityProject::RedrawProject(const bool bForceWaveTracks /*= false*/)
|
||||||
{
|
{
|
||||||
FixScrollbars();
|
FixScrollbars();
|
||||||
if (bForceWaveTracks && mTracks)
|
if (bForceWaveTracks && GetTracks())
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track* pTrack = iter.First();
|
Track* pTrack = iter.First();
|
||||||
while (pTrack)
|
while (pTrack)
|
||||||
{
|
{
|
||||||
@ -1277,7 +1275,7 @@ DirManager *AudacityProject::GetDirManager()
|
|||||||
|
|
||||||
TrackFactory *AudacityProject::GetTrackFactory()
|
TrackFactory *AudacityProject::GetTrackFactory()
|
||||||
{
|
{
|
||||||
return mTrackFactory;
|
return mTrackFactory.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
AdornedRulerPanel *AudacityProject::GetRulerPanel()
|
AdornedRulerPanel *AudacityProject::GetRulerPanel()
|
||||||
@ -1420,7 +1418,7 @@ double AudacityProject::SSBL_GetRate() const
|
|||||||
// Return maximum of project rate and all track rates.
|
// Return maximum of project rate and all track rates.
|
||||||
double rate = mRate;
|
double rate = mRate;
|
||||||
|
|
||||||
TrackListOfKindIterator iterWaveTrack(Track::Wave, mTracks);
|
TrackListOfKindIterator iterWaveTrack(Track::Wave, mTracks.get());
|
||||||
WaveTrack *pWaveTrack = static_cast<WaveTrack*>(iterWaveTrack.First());
|
WaveTrack *pWaveTrack = static_cast<WaveTrack*>(iterWaveTrack.First());
|
||||||
while (pWaveTrack)
|
while (pWaveTrack)
|
||||||
{
|
{
|
||||||
@ -1726,7 +1724,7 @@ bool AudacityProject::TP_ScrollUpDown(int delta)
|
|||||||
|
|
||||||
void AudacityProject::FixScrollbars()
|
void AudacityProject::FixScrollbars()
|
||||||
{
|
{
|
||||||
if(!mTracks)
|
if (!GetTracks())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool refresh = false;
|
bool refresh = false;
|
||||||
@ -1877,8 +1875,8 @@ void AudacityProject::FixScrollbars()
|
|||||||
|
|
||||||
Track *AudacityProject::GetFirstVisible()
|
Track *AudacityProject::GetFirstVisible()
|
||||||
{
|
{
|
||||||
if (!mViewInfo.track && mTracks) {
|
if (!mViewInfo.track && GetTracks()) {
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||||
int y = t->GetY();
|
int y = t->GetY();
|
||||||
int h = t->GetHeight();
|
int h = t->GetHeight();
|
||||||
@ -1894,7 +1892,7 @@ Track *AudacityProject::GetFirstVisible()
|
|||||||
|
|
||||||
void AudacityProject::UpdateFirstVisible()
|
void AudacityProject::UpdateFirstVisible()
|
||||||
{
|
{
|
||||||
if (!mViewInfo.track || !mTracks) {
|
if (!mViewInfo.track || !GetTracks()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2349,8 +2347,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
|
|||||||
ModuleManager::Get().Dispatch(ProjectClosing);
|
ModuleManager::Get().Dispatch(ProjectClosing);
|
||||||
|
|
||||||
// Stop the timer since there's no need to update anything anymore
|
// Stop the timer since there's no need to update anything anymore
|
||||||
delete mTimer;
|
mTimer.reset();
|
||||||
mTimer = NULL;
|
|
||||||
|
|
||||||
// The project is now either saved or the user doesn't want to save it,
|
// The project is now either saved or the user doesn't want to save it,
|
||||||
// so there's no need to keep auto save info around anymore
|
// so there's no need to keep auto save info around anymore
|
||||||
@ -2390,7 +2387,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
|
|||||||
// in memory. After it's locked, DELETE the data structure so that
|
// in memory. After it's locked, DELETE the data structure so that
|
||||||
// there's no memory leak.
|
// there's no memory leak.
|
||||||
if (mLastSavedTracks) {
|
if (mLastSavedTracks) {
|
||||||
TrackListIterator iter(mLastSavedTracks);
|
TrackListIterator iter(mLastSavedTracks.get());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
if (t->GetKind() == Track::Wave)
|
if (t->GetKind() == Track::Wave)
|
||||||
@ -2398,9 +2395,8 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
|
|||||||
t = iter.Next();
|
t = iter.Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
mLastSavedTracks->Clear();
|
mLastSavedTracks->Clear(); // sends an event
|
||||||
delete mLastSavedTracks;
|
mLastSavedTracks.reset();
|
||||||
mLastSavedTracks = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get rid of the history window
|
// Get rid of the history window
|
||||||
@ -2429,13 +2425,11 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
|
|||||||
|
|
||||||
DestroyChildren();
|
DestroyChildren();
|
||||||
|
|
||||||
delete mTrackFactory;
|
mTrackFactory.reset();
|
||||||
mTrackFactory = NULL;
|
|
||||||
|
|
||||||
mTags.reset();
|
mTags.reset();
|
||||||
|
|
||||||
delete mImportXMLTagHandler;
|
mImportXMLTagHandler.reset();
|
||||||
mImportXMLTagHandler = NULL;
|
|
||||||
|
|
||||||
// Unregister for tracklist updates
|
// Unregister for tracklist updates
|
||||||
mTracks->Disconnect(EVT_TRACKLIST_UPDATED,
|
mTracks->Disconnect(EVT_TRACKLIST_UPDATED,
|
||||||
@ -2445,8 +2439,7 @@ void AudacityProject::OnCloseWindow(wxCloseEvent & event)
|
|||||||
|
|
||||||
// Delete all the tracks to free up memory and DirManager references.
|
// Delete all the tracks to free up memory and DirManager references.
|
||||||
mTracks->Clear();
|
mTracks->Clear();
|
||||||
delete mTracks;
|
mTracks.reset();
|
||||||
mTracks = NULL;
|
|
||||||
|
|
||||||
// This must be done before the following Deref() since it holds
|
// This must be done before the following Deref() since it holds
|
||||||
// references to the DirManager.
|
// references to the DirManager.
|
||||||
@ -2850,7 +2843,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
|
|||||||
bool err = false;
|
bool err = false;
|
||||||
Track *t;
|
Track *t;
|
||||||
TrackListIterator iter(GetTracks());
|
TrackListIterator iter(GetTracks());
|
||||||
mLastSavedTracks = new TrackList();
|
mLastSavedTracks = std::make_unique<TrackList>();
|
||||||
|
|
||||||
t = iter.First();
|
t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -2998,11 +2991,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Clean up now unused recording recovery handler if any
|
// Clean up now unused recording recovery handler if any
|
||||||
if (mRecordingRecoveryHandler)
|
mRecordingRecoveryHandler.reset();
|
||||||
{
|
|
||||||
delete mRecordingRecoveryHandler;
|
|
||||||
mRecordingRecoveryHandler = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!bParseSuccess)
|
if (!bParseSuccess)
|
||||||
return; // No need to do further processing if parse failed.
|
return; // No need to do further processing if parse failed.
|
||||||
@ -3015,7 +3004,7 @@ void AudacityProject::OpenFile(const wxString &fileNameArg, bool addtohistory)
|
|||||||
if(ODManager::HasLoadedODFlag())
|
if(ODManager::HasLoadedODFlag())
|
||||||
{
|
{
|
||||||
Track *tr;
|
Track *tr;
|
||||||
TrackListIterator triter(mTracks);
|
TrackListIterator triter(GetTracks());
|
||||||
tr = triter.First();
|
tr = triter.First();
|
||||||
|
|
||||||
std::vector<ODTask*> newTasks;
|
std::vector<ODTask*> newTasks;
|
||||||
@ -3318,14 +3307,14 @@ XMLTagHandler *AudacityProject::HandleXMLChild(const wxChar *tag)
|
|||||||
|
|
||||||
if (!wxStrcmp(tag, wxT("recordingrecovery"))) {
|
if (!wxStrcmp(tag, wxT("recordingrecovery"))) {
|
||||||
if (!mRecordingRecoveryHandler)
|
if (!mRecordingRecoveryHandler)
|
||||||
mRecordingRecoveryHandler = new RecordingRecoveryHandler(this);
|
mRecordingRecoveryHandler = std::make_unique<RecordingRecoveryHandler>(this);
|
||||||
return mRecordingRecoveryHandler;
|
return mRecordingRecoveryHandler.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wxStrcmp(tag, wxT("import"))) {
|
if (!wxStrcmp(tag, wxT("import"))) {
|
||||||
if (mImportXMLTagHandler == NULL)
|
if (!mImportXMLTagHandler)
|
||||||
mImportXMLTagHandler = new ImportXMLTagHandler(this);
|
mImportXMLTagHandler = std::make_unique<ImportXMLTagHandler>(this);
|
||||||
return mImportXMLTagHandler;
|
return mImportXMLTagHandler.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -3392,7 +3381,7 @@ void AudacityProject::WriteXML(XMLWriter &xmlFile)
|
|||||||
|
|
||||||
Track *t;
|
Track *t;
|
||||||
WaveTrack* pWaveTrack;
|
WaveTrack* pWaveTrack;
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
t = iter.First();
|
t = iter.First();
|
||||||
unsigned int ndx = 0;
|
unsigned int ndx = 0;
|
||||||
while (t) {
|
while (t) {
|
||||||
@ -3491,7 +3480,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
|
|||||||
wxASSERT(fromSaveAs);
|
wxASSERT(fromSaveAs);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
bool bHasTracks = (iter.First() != NULL);
|
bool bHasTracks = (iter.First() != NULL);
|
||||||
if (!bHasTracks)
|
if (!bHasTracks)
|
||||||
{
|
{
|
||||||
@ -3582,7 +3571,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
|
|||||||
std::vector<movable_ptr<WaveTrack::Locker>> lockers;
|
std::vector<movable_ptr<WaveTrack::Locker>> lockers;
|
||||||
if (mLastSavedTracks && !overwrite) {
|
if (mLastSavedTracks && !overwrite) {
|
||||||
lockers.reserve(mLastSavedTracks->size());
|
lockers.reserve(mLastSavedTracks->size());
|
||||||
TrackListIterator iter(mLastSavedTracks);
|
TrackListIterator iter(mLastSavedTracks.get());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
if (t->GetKind() == Track::Wave)
|
if (t->GetKind() == Track::Wave)
|
||||||
@ -3666,14 +3655,11 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
|
|||||||
mDirManager->RemoveOrphanBlockfiles();
|
mDirManager->RemoveOrphanBlockfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mLastSavedTracks) {
|
if (mLastSavedTracks)
|
||||||
mLastSavedTracks->Clear();
|
mLastSavedTracks->Clear();
|
||||||
delete mLastSavedTracks;
|
mLastSavedTracks = std::make_unique<TrackList>();
|
||||||
}
|
|
||||||
|
|
||||||
mLastSavedTracks = new TrackList();
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
TrackListIterator iter(mTracks);
|
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
mLastSavedTracks->Add(t->Duplicate());
|
mLastSavedTracks->Add(t->Duplicate());
|
||||||
@ -3710,7 +3696,7 @@ bool AudacityProject::Save(bool overwrite /* = true */ ,
|
|||||||
// Copy the tracks because we're going to do some state changes before exporting.
|
// Copy the tracks because we're going to do some state changes before exporting.
|
||||||
Track* pTrack;
|
Track* pTrack;
|
||||||
WaveTrack* pWaveTrack;
|
WaveTrack* pWaveTrack;
|
||||||
TrackListOfKindIterator iter(Track::Wave, mTracks);
|
TrackListOfKindIterator iter(Track::Wave, GetTracks());
|
||||||
unsigned int numWaveTracks = 0;
|
unsigned int numWaveTracks = 0;
|
||||||
|
|
||||||
TrackList pSavedTrackList;
|
TrackList pSavedTrackList;
|
||||||
@ -3913,7 +3899,7 @@ bool AudacityProject::Import(const wxString &fileName, WaveTrackArray* pTrackArr
|
|||||||
TempTags tempTags(mTags);
|
TempTags tempTags(mTags);
|
||||||
|
|
||||||
bool success = Importer::Get().Import(fileName,
|
bool success = Importer::Get().Import(fileName,
|
||||||
mTrackFactory,
|
GetTrackFactory(),
|
||||||
newTracks,
|
newTracks,
|
||||||
mTags.get(),
|
mTags.get(),
|
||||||
errorMessage);
|
errorMessage);
|
||||||
@ -4099,18 +4085,17 @@ For an audio file that will open in other apps, use 'Export'.\n"),
|
|||||||
|
|
||||||
void AudacityProject::InitialState()
|
void AudacityProject::InitialState()
|
||||||
{
|
{
|
||||||
if (mImportXMLTagHandler != NULL) {
|
if (mImportXMLTagHandler) {
|
||||||
// We processed an <import> tag, so save it as a normal project, with no <import> tags.
|
// We processed an <import> tag, so save it as a normal project, with no <import> tags.
|
||||||
this->Save();
|
this->Save();
|
||||||
|
|
||||||
// Shouldn't need it any more.
|
// Shouldn't need it any more.
|
||||||
delete mImportXMLTagHandler;
|
mImportXMLTagHandler.reset();
|
||||||
mImportXMLTagHandler = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GetUndoManager()->ClearStates();
|
GetUndoManager()->ClearStates();
|
||||||
|
|
||||||
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion, mTags,
|
GetUndoManager()->PushState(GetTracks(), mViewInfo.selectedRegion, mTags,
|
||||||
_("Created new project"), wxT(""));
|
_("Created new project"), wxT(""));
|
||||||
|
|
||||||
GetUndoManager()->StateSaved();
|
GetUndoManager()->StateSaved();
|
||||||
@ -4134,7 +4119,7 @@ void AudacityProject::PushState(const wxString &desc,
|
|||||||
const wxString &shortDesc,
|
const wxString &shortDesc,
|
||||||
UndoPush flags )
|
UndoPush flags )
|
||||||
{
|
{
|
||||||
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion, mTags,
|
GetUndoManager()->PushState(GetTracks(), mViewInfo.selectedRegion, mTags,
|
||||||
desc, shortDesc, flags);
|
desc, shortDesc, flags);
|
||||||
|
|
||||||
mDirty = true;
|
mDirty = true;
|
||||||
@ -4170,7 +4155,7 @@ void AudacityProject::RollbackState()
|
|||||||
|
|
||||||
void AudacityProject::ModifyState(bool bWantsAutoSave)
|
void AudacityProject::ModifyState(bool bWantsAutoSave)
|
||||||
{
|
{
|
||||||
GetUndoManager()->ModifyState(mTracks, mViewInfo.selectedRegion, mTags);
|
GetUndoManager()->ModifyState(GetTracks(), mViewInfo.selectedRegion, mTags);
|
||||||
if (bWantsAutoSave)
|
if (bWantsAutoSave)
|
||||||
AutoSave();
|
AutoSave();
|
||||||
}
|
}
|
||||||
@ -4252,7 +4237,7 @@ void AudacityProject::UpdateLyrics()
|
|||||||
if (!mLyricsWindow)
|
if (!mLyricsWindow)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TrackListOfKindIterator iter(Track::Label, mTracks);
|
TrackListOfKindIterator iter(Track::Label, GetTracks());
|
||||||
LabelTrack* pLabelTrack = (LabelTrack*)(iter.First()); // Lyrics come from only the first label track.
|
LabelTrack* pLabelTrack = (LabelTrack*)(iter.First()); // Lyrics come from only the first label track.
|
||||||
if (!pLabelTrack)
|
if (!pLabelTrack)
|
||||||
return;
|
return;
|
||||||
@ -4320,7 +4305,7 @@ void AudacityProject::ClearClipboard()
|
|||||||
|
|
||||||
void AudacityProject::Clear()
|
void AudacityProject::Clear()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
|
|
||||||
Track *n = iter.First();
|
Track *n = iter.First();
|
||||||
|
|
||||||
@ -4345,7 +4330,7 @@ void AudacityProject::Clear()
|
|||||||
|
|
||||||
void AudacityProject::SelectNone()
|
void AudacityProject::SelectNone()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
while (t) {
|
while (t) {
|
||||||
t->SetSelected(false);
|
t->SetSelected(false);
|
||||||
@ -4614,7 +4599,7 @@ void AudacityProject::OnTimer(wxTimerEvent& WXUNUSED(event))
|
|||||||
//regions memory need to be deleted by the caller
|
//regions memory need to be deleted by the caller
|
||||||
void AudacityProject::GetRegionsByLabel( Regions ®ions )
|
void AudacityProject::GetRegionsByLabel( Regions ®ions )
|
||||||
{
|
{
|
||||||
TrackListIterator iter( mTracks );
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n;
|
Track *n;
|
||||||
|
|
||||||
//determine labelled regions
|
//determine labelled regions
|
||||||
@ -4668,7 +4653,7 @@ void AudacityProject::EditByLabel( EditFunction action,
|
|||||||
if( regions.size() == 0 )
|
if( regions.size() == 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TrackListIterator iter( mTracks );
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n;
|
Track *n;
|
||||||
bool allTracks = true;
|
bool allTracks = true;
|
||||||
|
|
||||||
@ -4714,7 +4699,7 @@ void AudacityProject::EditClipboardByLabel( EditDestFunction action )
|
|||||||
if( regions.size() == 0 )
|
if( regions.size() == 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
TrackListIterator iter( mTracks );
|
TrackListIterator iter(GetTracks());
|
||||||
Track *n;
|
Track *n;
|
||||||
bool allTracks = true;
|
bool allTracks = true;
|
||||||
|
|
||||||
@ -5195,7 +5180,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
|
|||||||
// "exclusive" mute means mute the chosen track and unmute all others.
|
// "exclusive" mute means mute the chosen track and unmute all others.
|
||||||
if (exclusive)
|
if (exclusive)
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *i = iter.First();
|
Track *i = iter.First();
|
||||||
while (i) {
|
while (i) {
|
||||||
if (i == t) {
|
if (i == t) {
|
||||||
@ -5219,7 +5204,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
|
|||||||
if(t->GetLinked()) // set mute the same on both, if a pair
|
if(t->GetLinked()) // set mute the same on both, if a pair
|
||||||
{
|
{
|
||||||
bool muted = t->GetMute();
|
bool muted = t->GetMute();
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *i = iter.First();
|
Track *i = iter.First();
|
||||||
while (i != t) { // search for this track
|
while (i != t) { // search for this track
|
||||||
i = iter.Next();
|
i = iter.Next();
|
||||||
@ -5230,7 +5215,7 @@ void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
|
|||||||
|
|
||||||
if (IsSoloSimple() || IsSoloNone())
|
if (IsSoloSimple() || IsSoloNone())
|
||||||
{
|
{
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *i = iter.First();
|
Track *i = iter.First();
|
||||||
int nPlaying=0;
|
int nPlaying=0;
|
||||||
|
|
||||||
@ -5273,7 +5258,7 @@ void AudacityProject::HandleTrackSolo(Track *t, const bool alternate)
|
|||||||
if(t->GetLinked())
|
if(t->GetLinked())
|
||||||
{
|
{
|
||||||
bool soloed = t->GetSolo();
|
bool soloed = t->GetSolo();
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *i = iter.First();
|
Track *i = iter.First();
|
||||||
while (i != t) { // search for this track
|
while (i != t) { // search for this track
|
||||||
i = iter.Next();
|
i = iter.Next();
|
||||||
@ -5286,7 +5271,7 @@ void AudacityProject::HandleTrackSolo(Track *t, const bool alternate)
|
|||||||
{
|
{
|
||||||
// Normal click solo this track only, mute everything else.
|
// Normal click solo this track only, mute everything else.
|
||||||
// OR unmute and unsolo everything.
|
// OR unmute and unsolo everything.
|
||||||
TrackListIterator iter(mTracks);
|
TrackListIterator iter(GetTracks());
|
||||||
Track *i = iter.First();
|
Track *i = iter.First();
|
||||||
bool bWasSolo = t->GetSolo();
|
bool bWasSolo = t->GetSolo();
|
||||||
while (i) {
|
while (i) {
|
||||||
@ -5417,7 +5402,7 @@ bool AudacityProject::SaveFromTimerRecording(wxFileName fnFile) {
|
|||||||
bool AudacityProject::ProjectHasTracks() {
|
bool AudacityProject::ProjectHasTracks() {
|
||||||
// These two lines test for an 'empty' project.
|
// These two lines test for an 'empty' project.
|
||||||
// of course it could still have a history at this stage.
|
// of course it could still have a history at this stage.
|
||||||
TrackListIterator iter2(mTracks);
|
TrackListIterator iter2(GetTracks());
|
||||||
bool bHasTracks = (iter2.First() != NULL);
|
bool bHasTracks = (iter2.First() != NULL);
|
||||||
return bHasTracks;
|
return bHasTracks;
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ class AUDACITY_DLL_API AudacityProject final : public wxFrame,
|
|||||||
|
|
||||||
AudioIOStartStreamOptions GetDefaultPlayOptions();
|
AudioIOStartStreamOptions GetDefaultPlayOptions();
|
||||||
|
|
||||||
TrackList *GetTracks() { return mTracks; }
|
TrackList *GetTracks() { return mTracks.get(); }
|
||||||
UndoManager *GetUndoManager() { return mUndoManager.get(); }
|
UndoManager *GetUndoManager() { return mUndoManager.get(); }
|
||||||
|
|
||||||
sampleFormat GetDefaultFormat() { return mDefaultFormat; }
|
sampleFormat GetDefaultFormat() { return mDefaultFormat; }
|
||||||
@ -562,14 +562,14 @@ public:
|
|||||||
std::shared_ptr<Tags> mTags;
|
std::shared_ptr<Tags> mTags;
|
||||||
|
|
||||||
// List of tracks and display info
|
// List of tracks and display info
|
||||||
TrackList *mTracks;
|
std::unique_ptr<TrackList> mTracks{ std::make_unique<TrackList>() };
|
||||||
|
|
||||||
int mSnapTo;
|
int mSnapTo;
|
||||||
wxString mSelectionFormat;
|
wxString mSelectionFormat;
|
||||||
wxString mFrequencySelectionFormatName;
|
wxString mFrequencySelectionFormatName;
|
||||||
wxString mBandwidthSelectionFormatName;
|
wxString mBandwidthSelectionFormatName;
|
||||||
|
|
||||||
TrackList *mLastSavedTracks;
|
std::unique_ptr<TrackList> mLastSavedTracks;
|
||||||
|
|
||||||
// Clipboard (static because it is shared by all projects)
|
// Clipboard (static because it is shared by all projects)
|
||||||
static std::unique_ptr<TrackList> msClipboard;
|
static std::unique_ptr<TrackList> msClipboard;
|
||||||
@ -592,7 +592,7 @@ public:
|
|||||||
|
|
||||||
// Window elements
|
// Window elements
|
||||||
|
|
||||||
wxTimer *mTimer;
|
std::unique_ptr<wxTimer> mTimer;
|
||||||
long mLastStatusUpdateTime;
|
long mLastStatusUpdateTime;
|
||||||
|
|
||||||
wxStatusBar *mStatusBar;
|
wxStatusBar *mStatusBar;
|
||||||
@ -600,7 +600,7 @@ public:
|
|||||||
AdornedRulerPanel *mRuler{};
|
AdornedRulerPanel *mRuler{};
|
||||||
wxPanel *mTopPanel{};
|
wxPanel *mTopPanel{};
|
||||||
TrackPanel *mTrackPanel{};
|
TrackPanel *mTrackPanel{};
|
||||||
TrackFactory *mTrackFactory{};
|
std::unique_ptr<TrackFactory> mTrackFactory{};
|
||||||
wxPanel * mMainPanel;
|
wxPanel * mMainPanel;
|
||||||
wxScrollBar *mHsbar;
|
wxScrollBar *mHsbar;
|
||||||
wxScrollBar *mVsbar;
|
wxScrollBar *mVsbar;
|
||||||
@ -664,7 +664,7 @@ public:
|
|||||||
// See AudacityProject::OnActivate() for an explanation of this.
|
// See AudacityProject::OnActivate() for an explanation of this.
|
||||||
wxWindow *mLastFocusedWindow{};
|
wxWindow *mLastFocusedWindow{};
|
||||||
|
|
||||||
ImportXMLTagHandler* mImportXMLTagHandler{};
|
std::unique_ptr<ImportXMLTagHandler> mImportXMLTagHandler;
|
||||||
|
|
||||||
// Last auto-save file name and path (empty if none)
|
// Last auto-save file name and path (empty if none)
|
||||||
wxString mAutoSaveFileName;
|
wxString mAutoSaveFileName;
|
||||||
@ -679,7 +679,7 @@ public:
|
|||||||
wxString mRecoveryAutoSaveDataDir;
|
wxString mRecoveryAutoSaveDataDir;
|
||||||
|
|
||||||
// The handler that handles recovery of <recordingrecovery> tags
|
// The handler that handles recovery of <recordingrecovery> tags
|
||||||
RecordingRecoveryHandler* mRecordingRecoveryHandler{};
|
std::unique_ptr<RecordingRecoveryHandler> mRecordingRecoveryHandler;
|
||||||
|
|
||||||
// Dependencies have been imported and a warning should be shown on save
|
// Dependencies have been imported and a warning should be shown on save
|
||||||
bool mImportedDependencies{ false };
|
bool mImportedDependencies{ false };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user