mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
add commands for moving focused track up, down, to top, and to bottom
This commit is contained in:
parent
3ad53fff33
commit
593197c2db
@ -1174,6 +1174,10 @@ void AudacityProject::CreateMenusAndCommands()
|
||||
c->AddCommand(wxT("TrackMute"), _("Mute/Unmute focused track"), FN(OnTrackMute), wxT("Shift+U"));
|
||||
c->AddCommand(wxT("TrackSolo"), _("Solo/Unsolo focused track"), FN(OnTrackSolo), wxT("Shift+S"));
|
||||
c->AddCommand(wxT("TrackClose"), _("Close focused track"), FN(OnTrackClose), wxT("Shift+C"));
|
||||
c->AddCommand(wxT("TrackMoveUp"), _("Move focused track up"), FN(OnTrackMoveUp));
|
||||
c->AddCommand(wxT("TrackMoveDown"), _("Move focused track down"), FN(OnTrackMoveDown));
|
||||
c->AddCommand(wxT("TrackMoveTop"), _("Move focused track to top"), FN(OnTrackMoveTop));
|
||||
c->AddCommand(wxT("TrackMoveBottom"), _("Move focused track to bottom"), FN(OnTrackMoveBottom));
|
||||
|
||||
c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
|
||||
|
||||
@ -2861,6 +2865,26 @@ void AudacityProject::OnTrackClose()
|
||||
mTrackPanel->OnTrackClose();
|
||||
}
|
||||
|
||||
void AudacityProject::OnTrackMoveUp()
|
||||
{
|
||||
mTrackPanel->OnTrackMoveUp();
|
||||
}
|
||||
|
||||
void AudacityProject::OnTrackMoveDown()
|
||||
{
|
||||
mTrackPanel->OnTrackMoveDown();
|
||||
}
|
||||
|
||||
void AudacityProject::OnTrackMoveTop()
|
||||
{
|
||||
mTrackPanel->OnTrackMoveTop();
|
||||
}
|
||||
|
||||
void AudacityProject::OnTrackMoveBottom()
|
||||
{
|
||||
mTrackPanel->OnTrackMoveBottom();
|
||||
}
|
||||
|
||||
void AudacityProject::OnInputDevice()
|
||||
{
|
||||
DeviceToolBar *tb = GetDeviceToolBar();
|
||||
|
@ -98,6 +98,10 @@ void OnTrackMenu();
|
||||
void OnTrackMute();
|
||||
void OnTrackSolo();
|
||||
void OnTrackClose();
|
||||
void OnTrackMoveUp();
|
||||
void OnTrackMoveDown();
|
||||
void OnTrackMoveTop();
|
||||
void OnTrackMoveBottom();
|
||||
|
||||
// Device control
|
||||
void OnInputDevice();
|
||||
|
@ -8559,6 +8559,30 @@ void TrackPanel::OnTrackClose()
|
||||
Refresh( false );
|
||||
}
|
||||
|
||||
void TrackPanel::OnTrackMoveUp()
|
||||
{
|
||||
if (GetFocusedTrack())
|
||||
MoveTrack(GetFocusedTrack(), OnMoveUpID);
|
||||
}
|
||||
|
||||
void TrackPanel::OnTrackMoveDown()
|
||||
{
|
||||
if (GetFocusedTrack())
|
||||
MoveTrack(GetFocusedTrack(), OnMoveDownID);
|
||||
}
|
||||
|
||||
void TrackPanel::OnTrackMoveTop()
|
||||
{
|
||||
if (GetFocusedTrack())
|
||||
MoveTrack(GetFocusedTrack(), OnMoveTopID);
|
||||
}
|
||||
|
||||
void TrackPanel::OnTrackMoveBottom()
|
||||
{
|
||||
if (GetFocusedTrack())
|
||||
MoveTrack(GetFocusedTrack(), OnMoveBottomID);
|
||||
}
|
||||
|
||||
|
||||
Track * TrackPanel::GetFirstSelectedTrack()
|
||||
{
|
||||
@ -9190,24 +9214,30 @@ void TrackPanel::OnTimeTrackLogInt(wxCommandEvent & /*event*/)
|
||||
}
|
||||
|
||||
/// Move a track up, down, to top or to bottom.
|
||||
void TrackPanel::OnMoveTrack(wxCommandEvent & event)
|
||||
|
||||
void TrackPanel::OnMoveTrack(wxCommandEvent &event)
|
||||
{
|
||||
wxASSERT(event.GetId() == OnMoveUpID || event.GetId() == OnMoveDownID ||
|
||||
event.GetId() == OnMoveTopID || event.GetId() == OnMoveBottomID);
|
||||
|
||||
MoveTrack( mPopupMenuTarget, event.GetId() );
|
||||
}
|
||||
|
||||
void TrackPanel::MoveTrack( Track* target, int eventId )
|
||||
{
|
||||
wxString direction;
|
||||
|
||||
switch (event.GetId())
|
||||
switch (eventId)
|
||||
{
|
||||
case OnMoveTopID :
|
||||
/* i18n-hint: where the track is moving to.*/
|
||||
direction = _("to Top");
|
||||
|
||||
while (mTracks->CanMoveUp(mPopupMenuTarget)) {
|
||||
if (mTracks->Move(mPopupMenuTarget, true)) {
|
||||
while (mTracks->CanMoveUp(target)) {
|
||||
if (mTracks->Move(target, true)) {
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board.
|
||||
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave))
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, true);
|
||||
if (pMixerBoard && (target->GetKind() == Track::Wave))
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)target, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -9215,23 +9245,23 @@ void TrackPanel::OnMoveTrack(wxCommandEvent & event)
|
||||
/* i18n-hint: where the track is moving to.*/
|
||||
direction = _("to Bottom");
|
||||
|
||||
while (mTracks->CanMoveDown(mPopupMenuTarget)) {
|
||||
if (mTracks->Move(mPopupMenuTarget, false)) {
|
||||
while (mTracks->CanMoveDown(target)) {
|
||||
if (mTracks->Move(target, false)) {
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board.
|
||||
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave))
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, false);
|
||||
if (pMixerBoard && (target->GetKind() == Track::Wave))
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)target, false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
bool bUp = (OnMoveUpID == event.GetId());
|
||||
bool bUp = (OnMoveUpID == eventId);
|
||||
/* i18n-hint: a direction.*/
|
||||
direction = bUp ? _("Up") : _("Down");
|
||||
|
||||
if (mTracks->Move(mPopupMenuTarget, bUp)) {
|
||||
if (mTracks->Move(target, bUp)) {
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard();
|
||||
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave)) {
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, bUp);
|
||||
if (pMixerBoard && (target->GetKind() == Track::Wave)) {
|
||||
pMixerBoard->MoveTrackCluster((WaveTrack*)target, bUp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9242,7 +9272,7 @@ void TrackPanel::OnMoveTrack(wxCommandEvent & event)
|
||||
wxString shortDesc = (_("Move Track"));
|
||||
|
||||
longDesc = (wxString::Format(wxT("%s '%s' %s"), longDesc.c_str(),
|
||||
mPopupMenuTarget->GetName().c_str(), direction.c_str()));
|
||||
target->GetName().c_str(), direction.c_str()));
|
||||
shortDesc = (wxString::Format(wxT("%s %s"), shortDesc.c_str(), direction.c_str()));
|
||||
|
||||
MakeParentPushState(longDesc, shortDesc);
|
||||
|
@ -240,6 +240,10 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel {
|
||||
virtual void OnTrackMute(bool shiftdown, Track *t = NULL);
|
||||
virtual void OnTrackSolo(bool shiftdown, Track *t = NULL);
|
||||
virtual void OnTrackClose();
|
||||
virtual void OnTrackMoveUp();
|
||||
virtual void OnTrackMoveDown();
|
||||
virtual void OnTrackMoveTop();
|
||||
virtual void OnTrackMoveBottom();
|
||||
virtual Track * GetFirstSelectedTrack();
|
||||
virtual bool IsMouseCaptured();
|
||||
|
||||
@ -462,6 +466,7 @@ protected:
|
||||
virtual void OnSetFont(wxCommandEvent &event);
|
||||
|
||||
virtual void OnMoveTrack (wxCommandEvent &event);
|
||||
virtual void MoveTrack(Track* target, int eventId);
|
||||
virtual void OnChangeOctave (wxCommandEvent &event);
|
||||
virtual void OnChannelChange(wxCommandEvent &event);
|
||||
virtual void OnSetDisplay (wxCommandEvent &event);
|
||||
|
@ -1,4 +0,0 @@
|
||||
resetPrefs.txt
|
||||
|
||||
|
||||
The contents of this file are not used, but its existence is checked and if it exists, the prefs are reset.
|
Loading…
x
Reference in New Issue
Block a user