1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-05 14:49:25 +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(); w->Raise();
} }
//The following methods operate controls on specified tracks,
//This will pop up the track panning dialog for specified track
void AudacityProject::OnTrackPan() 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() 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() 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() 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() 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() 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() void AudacityProject::OnTrackMenu()

View File

@ -120,6 +120,7 @@ scroll information. It also has some status flags.
#include "effects/Effect.h" #include "effects/Effect.h"
#include "prefs/PrefsDialog.h" #include "prefs/PrefsDialog.h"
#include "widgets/LinkingHtmlWindow.h" #include "widgets/LinkingHtmlWindow.h"
#include "widgets/ASlider.h"
#include "widgets/ErrorDialog.h" #include "widgets/ErrorDialog.h"
#include "widgets/Ruler.h" #include "widgets/Ruler.h"
#include "widgets/Warning.h" #include "widgets/Warning.h"
@ -4881,6 +4882,40 @@ void AudacityProject::DoTrackSolo(Track *t, bool exclusive)
mTrackPanel->Refresh(false); 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) void AudacityProject::HandleTrackMute(Track *t, const bool exclusive)
{ {
// "exclusive" mute means mute the chosen track and unmute all others. // "exclusive" mute means mute the chosen track and unmute all others.

View File

@ -89,6 +89,8 @@ struct AudioIOStartStreamOptions;
class WaveTrackArray; class WaveTrackArray;
class Regions; class Regions;
class LWSlider;
AudacityProject *CreateNewAudacityProject(); AudacityProject *CreateNewAudacityProject();
AUDACITY_DLL_API AudacityProject *GetActiveProject(); AUDACITY_DLL_API AudacityProject *GetActiveProject();
void RedrawAllProjects(); void RedrawAllProjects();
@ -337,6 +339,9 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
void DoTrackMute(Track *pTrack, bool exclusive); void DoTrackMute(Track *pTrack, bool exclusive);
void DoTrackSolo(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. // "exclusive" mute means mute the chosen track and unmute all others.
void HandleTrackMute(Track *t, const bool exclusive); 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 (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); SetCapturedTrack(NULL);
#if defined(__WXMAC__) #if defined(__WXMAC__)
@ -8342,117 +8346,6 @@ void TrackPanel::ScrollIntoView(int x)
ScrollIntoView(mViewInfo->PositionToTime(x, GetLeftOffset())); 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) void TrackPanel::OnTrackMenu(Track *t)
{ {
if(!t) { if(!t) {

View File

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