26 std::vector<Track*> toRemove;
27 for (
auto track : tracks.Selected())
28 toRemove.push_back(track);
32 if (!toRemove.empty()) {
33 auto found = tracks.
Find(toRemove[0]);
37 for (
auto track : toRemove)
42 f = *tracks.Any().rbegin();
45 auto found = tracks.FindLeader(f);
60 trackPanel.UpdateViewIfNoTracks();
68 t = *tracks.FindLeader(t);
73 bool chosen = (t == leader);
74 leader->SetMute(chosen);
75 leader->SetSolo(
false);
85 pt->SetMute(!wasMute);
95 auto nPlayableTracks = range.
size();
97 for (
auto track : range)
98 track->SetSolo((nPlaying == 1) &&
99 (nPlayableTracks > 1) && !track->GetMute());
112 t = *tracks.FindLeader(t);
120 bool bSoloMultiple = !simple ^ exclusive;
128 pt->SetSolo(!bWasSolo);
133 bool chosen = (t == leader);
135 leader->SetSolo(!bWasSolo);
137 leader->SetMute(
false);
140 leader->SetSolo(
false);
142 leader->SetMute(!bWasSolo);
160 bool toRemoveWasFocused = trackFocus.Get() == toRemove;
162 if (toRemoveWasFocused) {
163 auto iterNext = tracks.FindLeader(toRemove), iterPrev = iterNext;
164 newFocus = *++iterNext;
166 newFocus = *--iterPrev;
174 auto &iter = channels.first;
175 while (iter != channels.end())
176 tracks.Remove( * iter++ );
178 if (toRemoveWasFocused)
179 trackFocus.Set( newFocus );
197 longDesc =
XO(
"Moved '%s' to Top");
198 shortDesc =
XO(
"Move Track to Top");
202 while (tracks.CanMoveUp(target))
203 tracks.Move(target,
true);
208 longDesc =
XO(
"Moved '%s' to Bottom");
209 shortDesc =
XO(
"Move Track to Bottom");
213 while (tracks.CanMoveDown(target))
214 tracks.Move(target,
false);
220 tracks.Move(target, bUp);
223 bUp?
XO(
"Moved '%s' Up")
224 :
XO(
"Moved '%s' Down");
227 bUp?
XO(
"Move Track Up")
228 :
XO(
"Move Track Down");
const TranslatableString name
EnumSetting< SoloBehavior > TracksBehaviorsSolo
Extends Track with notions of mute and solo setting.
The top-level handle to an Audacity project. It serves as a source of events that other objects can b...
size_t size() const
How many attachment pointers are in the Site.
Subclass * Find(const RegisteredFactory &key)
Get a (bare) pointer to an attachment, or null, down-cast it to Subclass *; will not create on demand...
AudioTrack subclass that can also be audibly replayed by the program.
void PushState(const TranslatableString &desc, const TranslatableString &shortDesc)
void ModifyState(bool bWantsAutoSave)
static ProjectHistory & Get(AudacityProject &project)
static ProjectWindow & Get(AudacityProject &project)
Abstract base class for an object holding data associated with points on a time axis.
void EnsureVisible(bool modifyState=false)
const wxString & GetName() const
Name is always the same for all channels of a group.
static TrackList & Get(AudacityProject &project)
static auto Channels(TrackType *pTrack) -> TrackIterRange< TrackType >
static TrackPanel & Get(AudacityProject &project)
Holds a msgid for the translation catalog; may also bind format arguments.
TranslatableString & Format(Args &&...args) &
Capture variadic format arguments (by copy) when there is no plural.
void DoTrackMute(AudacityProject &project, Track *t, bool exclusive)
void DoMoveTrack(AudacityProject &project, Track *target, MoveChoice choice)
Move a track up, down, to top or to bottom.
void DoTrackSolo(AudacityProject &project, Track *t, bool exclusive)
void DoRemoveTrack(AudacityProject &project, Track *toRemove)
void DoRemoveTracks(AudacityProject &project)