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("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();

View File

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

View File

@ -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);

View File

@ -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);

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.