diff --git a/src/AudacityApp.h b/src/AudacityApp.h index 0dd78a5c8..8ba8c0ba2 100644 --- a/src/AudacityApp.h +++ b/src/AudacityApp.h @@ -94,6 +94,7 @@ enum IsNotSyncLockedFlag = 0x04000000, //awd IsSyncLockedFlag = 0x08000000, //awd IsRealtimeNotActiveFlag= 0x10000000, //lll + CaptureNotBusyFlag = 0x20000000, NoFlagsSpecifed = 0xffffffff }; diff --git a/src/Menus.cpp b/src/Menus.cpp index c58624a0f..bda2b556f 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -1121,15 +1121,21 @@ void AudacityProject::CreateMenusAndCommands() c->AddCommand(wxT("Stop"), _("Stop"), FN(OnStop), AudioIOBusyFlag, AudioIOBusyFlag); - c->AddCommand(wxT("PlayOneSec"), _("Play One Second"), FN(OnPlayOneSecond), wxT("1")); - c->AddCommand(wxT("PlayToSelection"),_("Play To Selection"), FN(OnPlayToSelection), wxT("B")); + c->AddCommand(wxT("PlayOneSec"), _("Play One Second"), FN(OnPlayOneSecond), wxT("1"), + CaptureNotBusyFlag, + CaptureNotBusyFlag); + c->AddCommand(wxT("PlayToSelection"),_("Play To Selection"), FN(OnPlayToSelection), wxT("B"), + CaptureNotBusyFlag, + CaptureNotBusyFlag); c->AddCommand(wxT("PlayBeforeSelectionStart"),_("Play Before Selection Start"), FN(OnPlayBeforeSelectionStart), wxT("Shift+F5")); c->AddCommand(wxT("PlayAfterSelectionStart"),_("Play After Selection Start"), FN(OnPlayAfterSelectionStart), wxT("Shift+F6")); c->AddCommand(wxT("PlayBeforeSelectionEnd"),_("Play Before Selection End"), FN(OnPlayBeforeSelectionEnd), wxT("Shift+F7")); c->AddCommand(wxT("PlayAfterSelectionEnd"),_("Play After Selection End"), FN(OnPlayAfterSelectionEnd), wxT("Shift+F8")); c->AddCommand(wxT("PlayBeforeAndAfterSelectionStart"),_("Play Before and After Selection Start"), FN(OnPlayBeforeAndAfterSelectionStart), wxT("Ctrl+Shift+F5")); c->AddCommand(wxT("PlayBeforeAndAfterSelectionEnd"),_("Play Before and After Selection End"), FN(OnPlayBeforeAndAfterSelectionEnd), wxT("Ctrl+Shift+F7")); - c->AddCommand(wxT("PlayCutPreview"), _("Play Cut Preview"), FN(OnPlayCutPreview), wxT("C")); + c->AddCommand(wxT("PlayCutPreview"), _("Play Cut Preview"), FN(OnPlayCutPreview), wxT("C"), + CaptureNotBusyFlag, + CaptureNotBusyFlag); c->AddCommand(wxT("SelStart"), _("Selection to Start"), FN(OnSelToStart), wxT("Shift+Home")); c->AddCommand(wxT("SelEnd"), _("Selection to End"), FN(OnSelToEnd), wxT("Shift+End")); @@ -1227,6 +1233,8 @@ void AudacityProject::CreateMenusAndCommands() c->AddCommand(wxT("InputGainInc"), _("Increase recording volume"), FN(OnInputGainInc)); c->AddCommand(wxT("InputGainDec"), _("Decrease recording volume"), FN(OnInputGainDec)); + c->SetDefaultFlags(CaptureNotBusyFlag, CaptureNotBusyFlag); + c->AddCommand(wxT("PlayAtSpeed"), _("Play at speed"), FN(OnPlayAtSpeed)); c->AddCommand(wxT("PlayAtSpeedLooped"), _("Loop Play at speed"), FN(OnPlayAtSpeedLooped)); c->AddCommand(wxT("PlayAtSpeedCutPreview"), _("Play Cut Preview at speed"), FN(OnPlayAtSpeedCutPreview)); @@ -1794,6 +1802,9 @@ wxUint32 AudacityProject::GetUpdateFlags() if (!EffectManager::Get().RealtimeIsActive()) flags |= IsRealtimeNotActiveFlag; + if (!mIsCapturing) + flags |= CaptureNotBusyFlag; + return flags; } diff --git a/src/Project.cpp b/src/Project.cpp index 8bca0605e..972d8021b 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -1031,11 +1031,21 @@ AudacityProject::AudacityProject(wxWindow * parent, wxWindowID id, // mTrackPanel->SetDropTarget(new AudacityDropTarget(this)); mTrackPanel->SetDropTarget(new DropTarget(this)); #endif + + wxTheApp->Connect(EVT_AUDIOIO_CAPTURE, + wxCommandEventHandler(AudacityProject::OnCapture), + NULL, + this); } AudacityProject::~AudacityProject() { wxGetApp().GetRecentFiles()->RemoveMenu(mRecentFilesMenu); + + wxTheApp->Disconnect(EVT_AUDIOIO_CAPTURE, + wxCommandEventHandler(AudacityProject::OnCapture), + NULL, + this); } AudioIOStartStreamOptions AudacityProject::GetDefaultPlayOptions() @@ -1143,6 +1153,15 @@ void AudacityProject::SetSel1(double newSel1) mViewInfo.selectedRegion.setT1(newSel1); } +void AudacityProject::OnCapture(wxCommandEvent& evt) +{ + evt.Skip(); + + if (evt.GetInt() != 0) + mIsCapturing = true; + else + mIsCapturing = false; +} DirManager *AudacityProject::GetDirManager() diff --git a/src/Project.h b/src/Project.h index 6ee8f2d24..1fe84ff86 100644 --- a/src/Project.h +++ b/src/Project.h @@ -451,6 +451,7 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame, private: + void OnCapture(wxCommandEvent & evt); void ClearClipboard(); void InitialState(); void ModifyState(bool bWantsAutoSave); // if true, writes auto-save file. Should set only if you really want the state change restored after @@ -621,6 +622,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame, bool mbInitializingScrollbar; + // Flag that we're recoding. + bool mIsCapturing; + DECLARE_EVENT_TABLE() }; diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index a86ef0d1f..3c45f2216 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -2554,7 +2554,7 @@ void TrackPanel::SelectionHandleClick(wxMouseEvent & event, return; } - +/* Redundant now that we have a more comprehensive Quick-Play in the Timeline // A control-click will set just the indicator to the clicked spot, // and turn playback on. else if(event.CmdDown() @@ -2569,6 +2569,7 @@ void TrackPanel::SelectionHandleClick(wxMouseEvent & event, SetCapturedTrack(NULL, IsUncaptured); return; } +*/ //Make sure you are within the selected track bool startNewSelection = true;