From cc24472d09707272430d6ac1007d3cf23516a6a6 Mon Sep 17 00:00:00 2001 From: David Bailes Date: Tue, 8 Nov 2016 08:55:09 +0000 Subject: [PATCH] Add two new commands for selecting a time range using the keyboard The new commands are "Save Cursor Position" and "(Select) Cursor to Saved Cursor Position" --- src/Menus.cpp | 20 ++++++++++++++++++++ src/Menus.h | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/src/Menus.cpp b/src/Menus.cpp index 81e398b69..942c3f193 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -558,6 +558,9 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("SelStartCursor"), _("Track &Start to Cursor"), FN(OnSelectStartCursor), wxT("Shift+J")); c->AddItem(wxT("SelCursorEnd"), _("Cursor to Track &End"), FN(OnSelectCursorEnd), wxT("Shift+K")); + c->AddItem(wxT("SelCursorSavedCursor"), _("Cursor to Saved &Cursor Position"), FN(OnSelectCursorSavedCursor), + wxT(""), TracksExistFlag, TracksExistFlag); + c->AddSeparator(); @@ -600,6 +603,9 @@ void AudacityProject::CreateMenusAndCommands() c->AddItem(wxT("SelRestore"), _("Regio&n Restore"), FN(OnSelectionRestore), TracksExistFlag, TracksExistFlag); + c->AddItem(wxT("SaveCursorPosition"), _("Save Cursor Pos&ition"), FN(OnCursorPositionSave), + WaveTracksExistFlag, + WaveTracksExistFlag); c->AddSeparator(); @@ -5170,6 +5176,14 @@ void AudacityProject::OnSelectStartCursor() mTrackPanel->Refresh(false); } +void AudacityProject::OnSelectCursorSavedCursor() +{ + if (mCursorPositionHasBeenSaved) { + mViewInfo.selectedRegion.setT0(std::min(mViewInfo.selectedRegion.t0(), mCursorPositionSaved)); + mViewInfo.selectedRegion.setT1(std::max(mViewInfo.selectedRegion.t1(), mCursorPositionSaved)); + } +} + void AudacityProject::OnSelectSyncLockSel() { bool selected = false; @@ -5886,6 +5900,12 @@ void AudacityProject::OnSelectionSave() mRegionSave = mViewInfo.selectedRegion; } +void AudacityProject::OnCursorPositionSave() +{ + mCursorPositionSaved = mViewInfo.selectedRegion.t0(); + mCursorPositionHasBeenSaved = true; +} + void AudacityProject::OnSelectionRestore() { if ((mRegionSave.t0() == 0.0) && diff --git a/src/Menus.h b/src/Menus.h index 11d4de0f8..cb722fe09 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -270,6 +270,7 @@ void OnNextLowerPeakFrequency(); #endif void OnSelectCursorEnd(); void OnSelectStartCursor(); +void OnSelectCursorSavedCursor(); void OnSelectSyncLockSel(); void OnSelectAllTracks(); @@ -346,9 +347,12 @@ void HandleMixAndRender(bool toNewTrack); private: SelectedRegion mRegionSave{}; + bool mCursorPositionHasBeenSaved{false}; + double mCursorPositionSaved; public: void OnSelectionSave(); void OnSelectionRestore(); +void OnCursorPositionSave(); void OnCursorTrackStart(); void OnCursorTrackEnd();