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:
parent
6bfd3ee54a
commit
45e91f165a
@ -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()
|
||||||
|
@ -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.
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user