mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-16 08:34:10 +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();
|
RedrawProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudacityProject::OnSelectSomething()
|
int AudacityProject::CountSelectedWaveTracks()
|
||||||
{
|
{
|
||||||
if( mViewInfo.selectedRegion.isPoint() )
|
TrackListIterator iter(GetTracks());
|
||||||
OnSelectAll();
|
Track *t = iter.First();
|
||||||
else
|
|
||||||
OnSelectAllTracks();
|
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(
|
TrackListIterator iter(GetTracks());
|
||||||
mTracks->GetMinOffset(), mTracks->GetEndTime());
|
Track *t = iter.First();
|
||||||
OnSelectAllTracks();
|
|
||||||
|
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()
|
void AudacityProject::OnSelectAllTracks()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(GetTracks());
|
OnSelectTimeAndTracks( false, true );
|
||||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
}
|
||||||
t->SetSelected(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
ModifyState(false);
|
void AudacityProject::OnSelectAll()
|
||||||
|
{
|
||||||
|
OnSelectTimeAndTracks( true, true );
|
||||||
|
}
|
||||||
|
|
||||||
mTrackPanel->Refresh(false);
|
// This function selects all tracks if no tracks selected,
|
||||||
if (mMixerBoard)
|
// and all time if no time selected.
|
||||||
mMixerBoard->Refresh(false);
|
// 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()
|
void AudacityProject::SelectNone()
|
||||||
|
@ -275,9 +275,16 @@ void OnSplitLabels();
|
|||||||
void OnJoinLabels();
|
void OnJoinLabels();
|
||||||
void OnDisjoinLabels();
|
void OnDisjoinLabels();
|
||||||
|
|
||||||
|
void OnSelectTimeAndTracks(bool bAllTime, bool bAllTracks);
|
||||||
|
void OnSelectAllTime();
|
||||||
|
void OnSelectAllTracks();
|
||||||
void OnSelectAll();
|
void OnSelectAll();
|
||||||
void OnSelectSomething();
|
void OnSelectSomething();
|
||||||
void OnSelectNone();
|
void OnSelectNone();
|
||||||
|
private:
|
||||||
|
int CountSelectedWaveTracks();
|
||||||
|
int CountSelectedTracks();
|
||||||
|
public:
|
||||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||||
void OnToggleSpectralSelection();
|
void OnToggleSpectralSelection();
|
||||||
void DoNextPeakFrequency(bool up);
|
void DoNextPeakFrequency(bool up);
|
||||||
@ -304,7 +311,6 @@ void OnSelectNextClip();
|
|||||||
void OnSelectClip(bool next);
|
void OnSelectClip(bool next);
|
||||||
void OnSelectCursorStoredCursor();
|
void OnSelectCursorStoredCursor();
|
||||||
void OnSelectSyncLockSel();
|
void OnSelectSyncLockSel();
|
||||||
void OnSelectAllTracks();
|
|
||||||
|
|
||||||
// View Menu
|
// View Menu
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user