1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 16:40:07 +02:00

add commands for moving focused track up, down, to top, and to bottom

This commit is contained in:
David Bailes 2015-04-17 13:53:15 +01:00
parent 3ad53fff33
commit 593197c2db
5 changed files with 78 additions and 19 deletions

View File

@ -1174,6 +1174,10 @@ void AudacityProject::CreateMenusAndCommands()
c->AddCommand(wxT("TrackMute"), _("Mute/Unmute focused track"), FN(OnTrackMute), wxT("Shift+U")); 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("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("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); c->SetDefaultFlags(AlwaysEnabledFlag, AlwaysEnabledFlag);
@ -2861,6 +2865,26 @@ void AudacityProject::OnTrackClose()
mTrackPanel->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() void AudacityProject::OnInputDevice()
{ {
DeviceToolBar *tb = GetDeviceToolBar(); DeviceToolBar *tb = GetDeviceToolBar();

View File

@ -98,6 +98,10 @@ void OnTrackMenu();
void OnTrackMute(); void OnTrackMute();
void OnTrackSolo(); void OnTrackSolo();
void OnTrackClose(); void OnTrackClose();
void OnTrackMoveUp();
void OnTrackMoveDown();
void OnTrackMoveTop();
void OnTrackMoveBottom();
// Device control // Device control
void OnInputDevice(); void OnInputDevice();

View File

@ -8559,6 +8559,30 @@ void TrackPanel::OnTrackClose()
Refresh( false ); 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() Track * TrackPanel::GetFirstSelectedTrack()
{ {
@ -9190,24 +9214,30 @@ void TrackPanel::OnTimeTrackLogInt(wxCommandEvent & /*event*/)
} }
/// Move a track up, down, to top or to bottom. /// 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 || wxASSERT(event.GetId() == OnMoveUpID || event.GetId() == OnMoveDownID ||
event.GetId() == OnMoveTopID || event.GetId() == OnMoveBottomID); event.GetId() == OnMoveTopID || event.GetId() == OnMoveBottomID);
MoveTrack( mPopupMenuTarget, event.GetId() );
}
void TrackPanel::MoveTrack( Track* target, int eventId )
{
wxString direction; wxString direction;
switch (event.GetId()) switch (eventId)
{ {
case OnMoveTopID : case OnMoveTopID :
/* i18n-hint: where the track is moving to.*/ /* i18n-hint: where the track is moving to.*/
direction = _("to Top"); direction = _("to Top");
while (mTracks->CanMoveUp(mPopupMenuTarget)) { while (mTracks->CanMoveUp(target)) {
if (mTracks->Move(mPopupMenuTarget, true)) { if (mTracks->Move(target, true)) {
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board. MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board.
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave)) if (pMixerBoard && (target->GetKind() == Track::Wave))
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, true); pMixerBoard->MoveTrackCluster((WaveTrack*)target, true);
} }
} }
break; break;
@ -9215,23 +9245,23 @@ void TrackPanel::OnMoveTrack(wxCommandEvent & event)
/* i18n-hint: where the track is moving to.*/ /* i18n-hint: where the track is moving to.*/
direction = _("to Bottom"); direction = _("to Bottom");
while (mTracks->CanMoveDown(mPopupMenuTarget)) { while (mTracks->CanMoveDown(target)) {
if (mTracks->Move(mPopupMenuTarget, false)) { if (mTracks->Move(target, false)) {
MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board. MixerBoard* pMixerBoard = this->GetMixerBoard(); // Update mixer board.
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave)) if (pMixerBoard && (target->GetKind() == Track::Wave))
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, false); pMixerBoard->MoveTrackCluster((WaveTrack*)target, false);
} }
} }
break; break;
default: default:
bool bUp = (OnMoveUpID == event.GetId()); bool bUp = (OnMoveUpID == eventId);
/* i18n-hint: a direction.*/ /* i18n-hint: a direction.*/
direction = bUp ? _("Up") : _("Down"); direction = bUp ? _("Up") : _("Down");
if (mTracks->Move(mPopupMenuTarget, bUp)) { if (mTracks->Move(target, bUp)) {
MixerBoard* pMixerBoard = this->GetMixerBoard(); MixerBoard* pMixerBoard = this->GetMixerBoard();
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave)) { if (pMixerBoard && (target->GetKind() == Track::Wave)) {
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, bUp); pMixerBoard->MoveTrackCluster((WaveTrack*)target, bUp);
} }
} }
} }
@ -9242,7 +9272,7 @@ void TrackPanel::OnMoveTrack(wxCommandEvent & event)
wxString shortDesc = (_("Move Track")); wxString shortDesc = (_("Move Track"));
longDesc = (wxString::Format(wxT("%s '%s' %s"), longDesc.c_str(), 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())); shortDesc = (wxString::Format(wxT("%s %s"), shortDesc.c_str(), direction.c_str()));
MakeParentPushState(longDesc, shortDesc); MakeParentPushState(longDesc, shortDesc);

View File

@ -240,6 +240,10 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel {
virtual void OnTrackMute(bool shiftdown, Track *t = NULL); virtual void OnTrackMute(bool shiftdown, Track *t = NULL);
virtual void OnTrackSolo(bool shiftdown, Track *t = NULL); virtual void OnTrackSolo(bool shiftdown, Track *t = NULL);
virtual void OnTrackClose(); virtual void OnTrackClose();
virtual void OnTrackMoveUp();
virtual void OnTrackMoveDown();
virtual void OnTrackMoveTop();
virtual void OnTrackMoveBottom();
virtual Track * GetFirstSelectedTrack(); virtual Track * GetFirstSelectedTrack();
virtual bool IsMouseCaptured(); virtual bool IsMouseCaptured();
@ -462,6 +466,7 @@ protected:
virtual void OnSetFont(wxCommandEvent &event); virtual void OnSetFont(wxCommandEvent &event);
virtual void OnMoveTrack (wxCommandEvent &event); virtual void OnMoveTrack (wxCommandEvent &event);
virtual void MoveTrack(Track* target, int eventId);
virtual void OnChangeOctave (wxCommandEvent &event); virtual void OnChangeOctave (wxCommandEvent &event);
virtual void OnChannelChange(wxCommandEvent &event); virtual void OnChannelChange(wxCommandEvent &event);
virtual void OnSetDisplay (wxCommandEvent &event); virtual void OnSetDisplay (wxCommandEvent &event);

View File

@ -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.