1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-14 17:14:07 +01:00

Move code for Time track menu items

This commit is contained in:
Paul Licameli
2015-07-31 14:50:49 -04:00
committed by Paul Licameli
parent 0e5e7b1c05
commit 516d812f3a
3 changed files with 100 additions and 107 deletions

View File

@@ -11,8 +11,11 @@ Paul Licameli split from TrackPanel.cpp
#include "../../../Audacity.h"
#include "TimeTrackControls.h"
#include "../../../HitTestResult.h"
#include "../../../Project.h"
#include "../../../RefreshCode.h"
#include "../../../TimeTrack.h"
#include "../../../widgets/PopupMenuTable.h"
#include <wx/numdlg.h>
TimeTrackControls::TimeTrackControls()
{
@@ -35,6 +38,14 @@ HitTestResult TimeTrackControls::HitTest
return TrackControls::HitTest(event, pProject);
}
enum
{
OnTimeTrackLinID = 30000,
OnTimeTrackLogID,
OnTimeTrackLogIntID,
OnSetTimeTrackRangeID,
};
class TimeTrackMenuTable : public PopupMenuTable
{
TimeTrackMenuTable() : mpData(NULL) {}
@@ -47,6 +58,9 @@ private:
void InitMenu(Menu *pMenu, void *pUserData) override
{
mpData = static_cast<TrackControls::InitMenuData*>(pUserData);
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
pMenu->Check(OnTimeTrackLogIntID, pTrack->GetInterpolateLog());
}
void DestroyMenu() override
@@ -55,6 +69,11 @@ private:
}
TrackControls::InitMenuData *mpData;
void OnSetTimeTrackRange(wxCommandEvent & /*event*/);
void OnTimeTrackLin(wxCommandEvent & /*event*/);
void OnTimeTrackLog(wxCommandEvent & /*event*/);
void OnTimeTrackLogInt(wxCommandEvent & /*event*/);
};
TimeTrackMenuTable &TimeTrackMenuTable::Instance()
@@ -63,7 +82,87 @@ TimeTrackMenuTable &TimeTrackMenuTable::Instance()
return instance;
}
void TimeTrackMenuTable::OnSetTimeTrackRange(wxCommandEvent & /*event*/)
{
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
if (pTrack) {
long lower = (long)(pTrack->GetRangeLower() * 100.0 + 0.5);
long upper = (long)(pTrack->GetRangeUpper() * 100.0 + 0.5);
// MB: these lower/upper limits match the maximum allowed range of the time track
// envelope, but this is not strictly required
lower = wxGetNumberFromUser(_("Change lower speed limit (%) to:"),
_("Lower speed limit"),
_("Lower speed limit"),
lower,
10,
1000);
upper = wxGetNumberFromUser(_("Change upper speed limit (%) to:"),
_("Upper speed limit"),
_("Upper speed limit"),
upper,
lower + 1,
1000);
if (lower >= 10 && upper <= 1000 && lower < upper) {
AudacityProject *const project = ::GetActiveProject();
pTrack->SetRangeLower((double)lower / 100.0);
pTrack->SetRangeUpper((double)upper / 100.0);
project->PushState(wxString::Format(_("Set range to '%ld' - '%ld'"),
lower,
upper),
/* i18n-hint: (verb)*/
_("Set Range"));
mpData->result = RefreshCode::RefreshAll;
}
}
}
void TimeTrackMenuTable::OnTimeTrackLin(wxCommandEvent & /*event*/)
{
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
pTrack->SetDisplayLog(false);
AudacityProject *const project = ::GetActiveProject();
project->PushState(_("Set time track display to linear"), _("Set Display"));
using namespace RefreshCode;
mpData->result = RefreshAll | UpdateVRuler;
}
void TimeTrackMenuTable::OnTimeTrackLog(wxCommandEvent & /*event*/)
{
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
pTrack->SetDisplayLog(true);
AudacityProject *const project = ::GetActiveProject();
project->PushState(_("Set time track display to logarithmic"), _("Set Display"));
using namespace RefreshCode;
mpData->result = RefreshAll | UpdateVRuler;
}
void TimeTrackMenuTable::OnTimeTrackLogInt(wxCommandEvent & /*event*/)
{
TimeTrack *const pTrack = static_cast<TimeTrack*>(mpData->pTrack);
AudacityProject *const project = ::GetActiveProject();
if (pTrack->GetInterpolateLog()) {
pTrack->SetInterpolateLog(false);
project->PushState(_("Set time track interpolation to linear"), _("Set Interpolation"));
}
else {
pTrack->SetInterpolateLog(true);
project->PushState(_("Set time track interpolation to logarithmic"), _("Set Interpolation"));
}
mpData->result = RefreshCode::RefreshAll;
}
BEGIN_POPUP_MENU(TimeTrackMenuTable)
POPUP_MENU_SEPARATOR()
POPUP_MENU_ITEM(OnTimeTrackLinID, _("&Linear scale"), OnTimeTrackLin)
POPUP_MENU_ITEM(OnTimeTrackLogID, _("L&ogarithmic scale"), OnTimeTrackLog)
POPUP_MENU_SEPARATOR()
POPUP_MENU_ITEM(OnSetTimeTrackRangeID, _("&Range..."), OnSetTimeTrackRange)
POPUP_MENU_CHECK_ITEM(OnTimeTrackLogIntID, _("Logarithmic &Interpolation"), OnTimeTrackLogInt)
END_POPUP_MENU()
PopupMenuTable *TimeTrackControls::GetMenuExtension(Track *)