1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-03 09:29:30 +02:00

Move gain and pan details out of TrackPanel.cpp

This commit is contained in:
Paul Licameli 2015-08-28 15:53:11 -04:00
parent 6bfd3ee54a
commit 45e91f165a
5 changed files with 108 additions and 127 deletions

View File

@ -2841,34 +2841,87 @@ void AudacityProject::PrevWindow()
w->Raise();
}
//The following methods operate controls on specified tracks,
//This will pop up the track panning dialog for specified track
void AudacityProject::OnTrackPan()
{
mTrackPanel->OnTrackPan();
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->PanSlider
(static_cast<WaveTrack*>(track));
if (slider->ShowDialog()) {
SetTrackPan(track, slider);
}
}
void AudacityProject::OnTrackPanLeft()
{
mTrackPanel->OnTrackPanLeft();
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->PanSlider
(static_cast<WaveTrack*>(track));
slider->Decrease(1);
SetTrackPan(track, slider);
}
void AudacityProject::OnTrackPanRight()
{
mTrackPanel->OnTrackPanRight();
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->PanSlider
(static_cast<WaveTrack*>(track));
slider->Increase(1);
SetTrackPan(track, slider);
}
void AudacityProject::OnTrackGain()
{
mTrackPanel->OnTrackGain();
/// This will pop up the track gain dialog for specified track
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->GainSlider
(static_cast<WaveTrack*>(track));
if (slider->ShowDialog()) {
SetTrackGain(track, slider);
}
}
void AudacityProject::OnTrackGainInc()
{
mTrackPanel->OnTrackGainInc();
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->GainSlider
(static_cast<WaveTrack*>(track));
slider->Increase(1);
SetTrackGain(track, slider);
}
void AudacityProject::OnTrackGainDec()
{
mTrackPanel->OnTrackGainDec();
Track *const track = mTrackPanel->GetFocusedTrack();
if (!track || (track->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackPanel->GetTrackInfo()->GainSlider
(static_cast<WaveTrack*>(track));
slider->Decrease(1);
SetTrackGain(track, slider);
}
void AudacityProject::OnTrackMenu()

View File

@ -120,6 +120,7 @@ scroll information. It also has some status flags.
#include "effects/Effect.h"
#include "prefs/PrefsDialog.h"
#include "widgets/LinkingHtmlWindow.h"
#include "widgets/ASlider.h"
#include "widgets/ErrorDialog.h"
#include "widgets/Ruler.h"
#include "widgets/Warning.h"
@ -4881,6 +4882,40 @@ void AudacityProject::DoTrackSolo(Track *t, bool exclusive)
mTrackPanel->Refresh(false);
}
void AudacityProject::SetTrackGain(Track * track, LWSlider * slider)
{
wxASSERT(track);
if (track->GetKind() != Track::Wave)
return;
float newValue = slider->Get();
WaveTrack *const link = static_cast<WaveTrack*>(mTracks->GetLink(track));
static_cast<WaveTrack*>(track)->SetGain(newValue);
if (link)
link->SetGain(newValue);
PushState(_("Adjusted gain"), _("Gain"), PUSH_CONSOLIDATE);
GetTrackPanel()->RefreshTrack(track);
}
void AudacityProject::SetTrackPan(Track * track, LWSlider * slider)
{
wxASSERT(track);
if (track->GetKind() != Track::Wave)
return;
float newValue = slider->Get();
WaveTrack *const link = static_cast<WaveTrack*>(mTracks->GetLink(track));
static_cast<WaveTrack*>(track)->SetPan(newValue);
if (link)
link->SetPan(newValue);
PushState(_("Adjusted Pan"), _("Pan"), PUSH_CONSOLIDATE);
GetTrackPanel()->RefreshTrack(track);
}
void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
{
// "exclusive" mute means mute the chosen track and unmute all others.

View File

@ -89,6 +89,8 @@ struct AudioIOStartStreamOptions;
class WaveTrackArray;
class Regions;
class LWSlider;
AudacityProject *CreateNewAudacityProject();
AUDACITY_DLL_API AudacityProject *GetActiveProject();
void RedrawAllProjects();
@ -337,6 +339,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
void DoTrackMute(Track *pTrack, bool exclusive);
void DoTrackSolo(Track *pTrack, bool exclusive);
void SetTrackGain(Track * track, LWSlider * slider);
void SetTrackPan(Track * track, LWSlider * slider);
// "exclusive" mute means mute the chosen track and unmute all others.
void HandleTrackMute(Track *t, const bool exclusive);

View File

@ -6588,7 +6588,11 @@ void TrackPanel::OnMouseEvent(wxMouseEvent & event)
if (event.Leaving() && !event.ButtonIsDown(wxMOUSE_BTN_ANY))
{
if (mMouseCapture != IsPanSliding && mMouseCapture != IsGainSliding)
// PRL: was this test really needed? It interfered with my refactoring
// that tried to eliminate those enum values.
// I think it was never true, that mouse capture was pan or gain sliding,
// but no mouse button was down.
// if (mMouseCapture != IsPanSliding && mMouseCapture != IsGainSliding)
{
SetCapturedTrack(NULL);
#if defined(__WXMAC__)
@ -8342,117 +8346,6 @@ void TrackPanel::ScrollIntoView(int x)
ScrollIntoView(mViewInfo->PositionToTime(x, GetLeftOffset()));
}
//The following methods operate controls on specified tracks,
//This will pop up the track panning dialog for specified track
void TrackPanel::OnTrackPan()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.PanSlider((WaveTrack *) t);
if (slider->ShowDialog()) {
SetTrackPan(t, slider);
}
}
void TrackPanel::OnTrackPanLeft()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.PanSlider((WaveTrack *) t);
slider->Decrease(1);
SetTrackPan(t, slider);
}
void TrackPanel::OnTrackPanRight()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.PanSlider((WaveTrack *) t);
slider->Increase(1);
SetTrackPan(t, slider);
}
void TrackPanel::SetTrackPan(Track * t, LWSlider * s)
{
wxASSERT(t);
if( t->GetKind() != Track::Wave )
return;
float newValue = s->Get();
WaveTrack *link = (WaveTrack *)mTracks->GetLink(t);
((WaveTrack*)t)->SetPan(newValue);
if (link)
link->SetPan(newValue);
MakeParentPushState(_("Adjusted Pan"), _("Pan"), PUSH_CONSOLIDATE );
RefreshTrack(t);
}
/// This will pop up the track gain dialog for specified track
void TrackPanel::OnTrackGain()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.GainSlider((WaveTrack *) t);
if (slider->ShowDialog()) {
SetTrackGain(t, slider);
}
}
void TrackPanel::OnTrackGainInc()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.GainSlider((WaveTrack *) t);
slider->Increase(1);
SetTrackGain(t, slider);
}
void TrackPanel::OnTrackGainDec()
{
Track *t = GetFocusedTrack();
if (!t || (t->GetKind() != Track::Wave)) {
return;
}
LWSlider *slider = mTrackInfo.GainSlider((WaveTrack *) t);
slider->Decrease(1);
SetTrackGain(t, slider);
}
void TrackPanel::SetTrackGain(Track * t, LWSlider * s)
{
wxASSERT(t);
if( t->GetKind() != Track::Wave )
return ;
float newValue = s->Get();
WaveTrack *link = (WaveTrack *)mTracks->GetLink(t);
((WaveTrack*)t)->SetGain(newValue);
if (link)
link->SetGain(newValue);
MakeParentPushState(_("Adjusted gain"), _("Gain"), PUSH_CONSOLIDATE);
RefreshTrack(t);
}
void TrackPanel::OnTrackMenu(Track *t)
{
if(!t) {

View File

@ -104,6 +104,7 @@ private:
void GetMinimizeRect(const wxRect & rect, wxRect &dest) const;
void GetSyncLockIconRect(const wxRect & rect, wxRect &dest) const;
public:
LWSlider * GainSlider(WaveTrack *t) const;
LWSlider * PanSlider(WaveTrack *t) const;
@ -198,12 +199,6 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel {
virtual void ScrollIntoView(double pos);
virtual void ScrollIntoView(int x);
virtual void OnTrackPan();
virtual void OnTrackPanLeft();
virtual void OnTrackPanRight();
virtual void OnTrackGain();
virtual void OnTrackGainDec();
virtual void OnTrackGainInc();
virtual void OnTrackMenu(Track *t = NULL);
virtual void OnVRulerMenu(Track *t, wxMouseEvent *pEvent = NULL);
virtual void OnTrackClose();
@ -506,9 +501,6 @@ protected:
virtual void SplitStereo(bool stereo);
virtual void OnMergeStereo(wxCommandEvent &event);
virtual void SetTrackPan(Track * t, LWSlider * s);
virtual void SetTrackGain(Track * t, LWSlider * s);
virtual void RemoveTrack(Track * toRemove);
// Find track info by coordinate
@ -577,7 +569,10 @@ protected:
virtual bool MoveClipToTrack(WaveClip *clip, WaveTrack* dst);
TrackInfo mTrackInfo;
public:
TrackInfo *GetTrackInfo() { return &mTrackInfo; }
protected:
TrackPanelListener *mListener;
TrackList *mTracks;