mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-29 14:48:39 +02:00
SelectAllIfNone now selects all time if none, and all tracks if none.
This means you can now select just a time, and get all tracks selected, or some tracks, and get all time selected. One side effect of this is that if you select a label (only) and apply 'cut' you now just cut the label, rather than cutting all tracks. If you select a label and apply echo, you now get an error message, rather than applying echo to all tracks.
This commit is contained in:
parent
c42a111a42
commit
0ac2d90d8a
@ -5374,33 +5374,77 @@ void AudacityProject::OnSplitNew()
|
||||
RedrawProject();
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectSomething()
|
||||
int AudacityProject::CountSelectedWaveTracks()
|
||||
{
|
||||
if( mViewInfo.selectedRegion.isPoint() )
|
||||
OnSelectAll();
|
||||
else
|
||||
OnSelectAllTracks();
|
||||
TrackListIterator iter(GetTracks());
|
||||
Track *t = iter.First();
|
||||
|
||||
int count =0;
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
if( (t->GetKind() == Track::Wave) && t->GetSelected() )
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAll()
|
||||
int AudacityProject::CountSelectedTracks()
|
||||
{
|
||||
mViewInfo.selectedRegion.setTimes(
|
||||
mTracks->GetMinOffset(), mTracks->GetEndTime());
|
||||
OnSelectAllTracks();
|
||||
TrackListIterator iter(GetTracks());
|
||||
Track *t = iter.First();
|
||||
|
||||
int count =0;
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
if( t->GetSelected() )
|
||||
count++;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectTimeAndTracks(bool bAllTime, bool bAllTracks)
|
||||
{
|
||||
if( bAllTime )
|
||||
mViewInfo.selectedRegion.setTimes(
|
||||
mTracks->GetMinOffset(), mTracks->GetEndTime());
|
||||
|
||||
if( bAllTracks ){
|
||||
TrackListIterator iter(GetTracks());
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetSelected(true);
|
||||
}
|
||||
|
||||
ModifyState(false);
|
||||
mTrackPanel->Refresh(false);
|
||||
if (mMixerBoard)
|
||||
mMixerBoard->Refresh(false);}
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAllTime()
|
||||
{
|
||||
OnSelectTimeAndTracks( true, false );
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAllTracks()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetSelected(true);
|
||||
}
|
||||
OnSelectTimeAndTracks( false, true );
|
||||
}
|
||||
|
||||
ModifyState(false);
|
||||
void AudacityProject::OnSelectAll()
|
||||
{
|
||||
OnSelectTimeAndTracks( true, true );
|
||||
}
|
||||
|
||||
mTrackPanel->Refresh(false);
|
||||
if (mMixerBoard)
|
||||
mMixerBoard->Refresh(false);
|
||||
// This function selects all tracks if no tracks selected,
|
||||
// and all time if no time selected.
|
||||
// There is an argument for making it just count wave tracks,
|
||||
// However you could then not select a label and cut it,
|
||||
// without this function selecting all tracks.
|
||||
void AudacityProject::OnSelectSomething()
|
||||
{
|
||||
bool bTime = mViewInfo.selectedRegion.isPoint();
|
||||
bool bTracks = CountSelectedTracks() == 0;
|
||||
|
||||
if( bTime || bTracks )
|
||||
OnSelectTimeAndTracks(bTime,bTracks);
|
||||
}
|
||||
|
||||
void AudacityProject::SelectNone()
|
||||
|
@ -275,9 +275,16 @@ void OnSplitLabels();
|
||||
void OnJoinLabels();
|
||||
void OnDisjoinLabels();
|
||||
|
||||
void OnSelectTimeAndTracks(bool bAllTime, bool bAllTracks);
|
||||
void OnSelectAllTime();
|
||||
void OnSelectAllTracks();
|
||||
void OnSelectAll();
|
||||
void OnSelectSomething();
|
||||
void OnSelectNone();
|
||||
private:
|
||||
int CountSelectedWaveTracks();
|
||||
int CountSelectedTracks();
|
||||
public:
|
||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||
void OnToggleSpectralSelection();
|
||||
void DoNextPeakFrequency(bool up);
|
||||
@ -304,7 +311,6 @@ void OnSelectNextClip();
|
||||
void OnSelectClip(bool next);
|
||||
void OnSelectCursorStoredCursor();
|
||||
void OnSelectSyncLockSel();
|
||||
void OnSelectAllTracks();
|
||||
|
||||
// View Menu
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user