mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-24 00:18:07 +02:00
MixerBoard listens for events for track sliders, mute, solo, name
This commit is contained in:
parent
5ab2faceea
commit
ccc2bbe3ef
@ -212,7 +212,7 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
.Style( DB_SLIDER )
|
.Style( DB_SLIDER )
|
||||||
.Orientation( wxVERTICAL ));
|
.Orientation( wxVERTICAL ));
|
||||||
mSlider_Gain->SetName(_("Gain"));
|
mSlider_Gain->SetName(_("Gain"));
|
||||||
this->UpdateGain();
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
mSlider_Velocity =
|
mSlider_Velocity =
|
||||||
safenew MixerTrackSlider(
|
safenew MixerTrackSlider(
|
||||||
@ -224,7 +224,6 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
.Style( VEL_SLIDER )
|
.Style( VEL_SLIDER )
|
||||||
.Orientation( wxVERTICAL ));
|
.Orientation( wxVERTICAL ));
|
||||||
mSlider_Velocity->SetName(_("Velocity"));
|
mSlider_Velocity->SetName(_("Velocity"));
|
||||||
this->UpdateVelocity();
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// other controls and meter at right
|
// other controls and meter at right
|
||||||
@ -260,8 +259,6 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
ASlider::Options{}.Style( PAN_SLIDER ));
|
ASlider::Options{}.Style( PAN_SLIDER ));
|
||||||
mSlider_Pan->SetName(_("Pan"));
|
mSlider_Pan->SetName(_("Pan"));
|
||||||
|
|
||||||
this->UpdatePan();
|
|
||||||
|
|
||||||
// mute/solo buttons stacked below Pan slider
|
// mute/solo buttons stacked below Pan slider
|
||||||
ctrlPos.y += PAN_HEIGHT + kDoubleInset;
|
ctrlPos.y += PAN_HEIGHT + kDoubleInset;
|
||||||
ctrlSize.Set(mMixerBoard->mMuteSoloWidth, MUTE_SOLO_HEIGHT);
|
ctrlSize.Set(mMixerBoard->mMuteSoloWidth, MUTE_SOLO_HEIGHT);
|
||||||
@ -278,7 +275,6 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
*(mMixerBoard->mImageMuteUp), *(mMixerBoard->mImageMuteOver),
|
*(mMixerBoard->mImageMuteUp), *(mMixerBoard->mImageMuteOver),
|
||||||
*(mMixerBoard->mImageMuteDown), *(mMixerBoard->mImageMuteDown),
|
*(mMixerBoard->mImageMuteDown), *(mMixerBoard->mImageMuteDown),
|
||||||
*(mMixerBoard->mImageMuteDisabled));
|
*(mMixerBoard->mImageMuteDisabled));
|
||||||
this->UpdateMute();
|
|
||||||
|
|
||||||
ctrlPos.y += MUTE_SOLO_HEIGHT;
|
ctrlPos.y += MUTE_SOLO_HEIGHT;
|
||||||
mToggleButton_Solo =
|
mToggleButton_Solo =
|
||||||
@ -289,7 +285,6 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
*(mMixerBoard->mImageSoloDisabled),
|
*(mMixerBoard->mImageSoloDisabled),
|
||||||
true); // toggle button
|
true); // toggle button
|
||||||
mToggleButton_Solo->SetName(_("Solo"));
|
mToggleButton_Solo->SetName(_("Solo"));
|
||||||
this->UpdateSolo();
|
|
||||||
bool bSoloNone = mProject->IsSoloNone();
|
bool bSoloNone = mProject->IsSoloNone();
|
||||||
mToggleButton_Solo->Show(!bSoloNone);
|
mToggleButton_Solo->Show(!bSoloNone);
|
||||||
|
|
||||||
@ -322,11 +317,12 @@ MixerTrackCluster::MixerTrackCluster(wxWindow* parent,
|
|||||||
mMeter->SetToolTip(_("Signal Level Meter"));
|
mMeter->SetToolTip(_("Signal Level Meter"));
|
||||||
#endif // wxUSE_TOOLTIPS
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
|
UpdateForStateChange();
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
wxSizeEvent event(GetSize(), GetId());
|
wxSizeEvent event(GetSize(), GetId());
|
||||||
event.SetEventObject(this);
|
event.SetEventObject(this);
|
||||||
GetEventHandler()->ProcessEvent(event);
|
GetEventHandler()->ProcessEvent(event);
|
||||||
UpdateGain();
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,77 +446,51 @@ void MixerTrackCluster::ResetMeter(const bool bResetClipping)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// These are used by TrackPanel for synchronizing control states, etc.
|
// Update appearance to match the state of the track
|
||||||
|
|
||||||
// Update the controls that can be affected by state change.
|
|
||||||
void MixerTrackCluster::UpdateForStateChange()
|
void MixerTrackCluster::UpdateForStateChange()
|
||||||
{
|
|
||||||
this->UpdateName();
|
|
||||||
this->UpdatePan();
|
|
||||||
this->UpdateGain();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerTrackCluster::UpdateName()
|
|
||||||
{
|
{
|
||||||
const wxString newName = mTrack->GetName();
|
const wxString newName = mTrack->GetName();
|
||||||
SetName(newName);
|
if (newName != GetName()) {
|
||||||
mStaticText_TrackName->SetLabel(newName);
|
SetName(newName);
|
||||||
mStaticText_TrackName->SetName(newName);
|
mStaticText_TrackName->SetLabel(newName);
|
||||||
#if wxUSE_TOOLTIPS
|
mStaticText_TrackName->SetName(newName);
|
||||||
mStaticText_TrackName->SetToolTip(newName);
|
#if wxUSE_TOOLTIPS
|
||||||
#endif
|
mStaticText_TrackName->SetToolTip(newName);
|
||||||
mBitmapButton_MusicalInstrument->SetBitmapLabel(
|
#endif
|
||||||
*(mMixerBoard->GetMusicalInstrumentBitmap(mTrack.get())));
|
mBitmapButton_MusicalInstrument->SetBitmapLabel(
|
||||||
Refresh();
|
*(mMixerBoard->GetMusicalInstrumentBitmap(mTrack.get())));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MixerTrackCluster::UpdateMute()
|
|
||||||
{
|
|
||||||
mToggleButton_Mute->SetAlternateIdx(mTrack->GetSolo() ? 1 : 0);
|
mToggleButton_Mute->SetAlternateIdx(mTrack->GetSolo() ? 1 : 0);
|
||||||
if (mTrack->GetMute())
|
if (mTrack->GetMute())
|
||||||
mToggleButton_Mute->PushDown();
|
mToggleButton_Mute->PushDown();
|
||||||
else
|
else
|
||||||
mToggleButton_Mute->PopUp();
|
mToggleButton_Mute->PopUp();
|
||||||
}
|
|
||||||
|
|
||||||
void MixerTrackCluster::UpdateSolo()
|
|
||||||
{
|
|
||||||
bool bIsSolo = mTrack->GetSolo();
|
bool bIsSolo = mTrack->GetSolo();
|
||||||
if (bIsSolo)
|
if (bIsSolo)
|
||||||
mToggleButton_Solo->PushDown();
|
mToggleButton_Solo->PushDown();
|
||||||
else
|
else
|
||||||
mToggleButton_Solo->PopUp();
|
mToggleButton_Solo->PopUp();
|
||||||
mToggleButton_Mute->SetAlternateIdx(bIsSolo ? 1 : 0);
|
mToggleButton_Mute->SetAlternateIdx(bIsSolo ? 1 : 0);
|
||||||
}
|
|
||||||
|
|
||||||
void MixerTrackCluster::UpdatePan()
|
if (!GetWave())
|
||||||
{
|
|
||||||
if (!GetWave()) {
|
|
||||||
mSlider_Pan->Hide();
|
mSlider_Pan->Hide();
|
||||||
return;
|
else
|
||||||
}
|
mSlider_Pan->Set(GetWave()->GetPan());
|
||||||
mSlider_Pan->Set(GetWave()->GetPan());
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerTrackCluster::UpdateGain()
|
if (!GetWave())
|
||||||
{
|
|
||||||
if (!GetWave()) {
|
|
||||||
mSlider_Gain->Hide();
|
mSlider_Gain->Hide();
|
||||||
return;
|
else
|
||||||
}
|
mSlider_Gain->Set(GetWave()->GetGain());
|
||||||
mSlider_Gain->Set(GetWave()->GetGain());
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
void MixerTrackCluster::UpdateVelocity()
|
if (!GetNote())
|
||||||
{
|
|
||||||
if (!GetNote()) {
|
|
||||||
mSlider_Velocity->Hide();
|
mSlider_Velocity->Hide();
|
||||||
return;
|
else
|
||||||
}
|
mSlider_Velocity->Set(GetNote()->GetVelocity());
|
||||||
mSlider_Velocity->Set(GetNote()->GetVelocity());
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void MixerTrackCluster::UpdateMeter(const double t0, const double t1)
|
void MixerTrackCluster::UpdateMeter(const double t0, const double t1)
|
||||||
{
|
{
|
||||||
@ -704,6 +674,8 @@ void MixerTrackCluster::OnMouseEvent(wxMouseEvent& event)
|
|||||||
|
|
||||||
void MixerTrackCluster::OnPaint(wxPaintEvent & WXUNUSED(event))
|
void MixerTrackCluster::OnPaint(wxPaintEvent & WXUNUSED(event))
|
||||||
{
|
{
|
||||||
|
UpdateForStateChange();
|
||||||
|
|
||||||
auto selected = mTrack->GetSelected();
|
auto selected = mTrack->GetSelected();
|
||||||
|
|
||||||
wxColour col = theTheme.Colour(selected ? clrTrackInfoSelected : clrTrackInfo) ;
|
wxColour col = theTheme.Colour(selected ? clrTrackInfoSelected : clrTrackInfo) ;
|
||||||
@ -773,8 +745,6 @@ void MixerTrackCluster::OnButton_Mute(wxCommandEvent& WXUNUSED(event))
|
|||||||
// Update the TrackPanel correspondingly.
|
// Update the TrackPanel correspondingly.
|
||||||
if (mProject->IsSoloSimple())
|
if (mProject->IsSoloSimple())
|
||||||
{
|
{
|
||||||
// Have to refresh all tracks.
|
|
||||||
mMixerBoard->UpdateSolo();
|
|
||||||
mProject->RedrawProject();
|
mProject->RedrawProject();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -789,12 +759,6 @@ void MixerTrackCluster::OnButton_Solo(wxCommandEvent& WXUNUSED(event))
|
|||||||
mToggleButton_Mute->SetAlternateIdx(bIsSolo ? 1 : 0);
|
mToggleButton_Mute->SetAlternateIdx(bIsSolo ? 1 : 0);
|
||||||
|
|
||||||
// Update the TrackPanel correspondingly.
|
// Update the TrackPanel correspondingly.
|
||||||
if (mProject->IsSoloSimple())
|
|
||||||
{
|
|
||||||
// Have to refresh all tracks.
|
|
||||||
mMixerBoard->UpdateMute();
|
|
||||||
mMixerBoard->UpdateSolo();
|
|
||||||
}
|
|
||||||
// Bug 509: Must repaint all, as many tracks can change with one Solo change.
|
// Bug 509: Must repaint all, as many tracks can change with one Solo change.
|
||||||
mProject->RedrawProject();
|
mProject->RedrawProject();
|
||||||
}
|
}
|
||||||
@ -957,6 +921,10 @@ MixerBoard::MixerBoard(AudacityProject* pProject,
|
|||||||
mProject->GetTracks()->Bind(EVT_TRACKLIST_DELETION,
|
mProject->GetTracks()->Bind(EVT_TRACKLIST_DELETION,
|
||||||
&MixerBoard::OnTrackSetChanged,
|
&MixerBoard::OnTrackSetChanged,
|
||||||
this);
|
this);
|
||||||
|
|
||||||
|
mProject->GetTracks()->Bind(EVT_TRACKLIST_TRACK_DATA_CHANGE,
|
||||||
|
&MixerBoard::OnTrackChanged,
|
||||||
|
this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1157,80 +1125,6 @@ void MixerBoard::ResetMeters(const bool bResetClipping)
|
|||||||
mMixerTrackClusters[i]->ResetMeter(bResetClipping);
|
mMixerTrackClusters[i]->ResetMeter(bResetClipping);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MixerBoard::UpdateName(const PlayableTrack* pTrack)
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
this->FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdateName();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerBoard::UpdateMute(const PlayableTrack* pTrack /*= NULL*/) // NULL means update for all tracks.
|
|
||||||
{
|
|
||||||
if (pTrack == NULL)
|
|
||||||
{
|
|
||||||
for (unsigned int i = 0; i < mMixerTrackClusters.size(); i++)
|
|
||||||
mMixerTrackClusters[i]->UpdateMute();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdateMute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerBoard::UpdateSolo(const PlayableTrack* pTrack /*= NULL*/) // NULL means update for all tracks.
|
|
||||||
{
|
|
||||||
if (pTrack == NULL)
|
|
||||||
{
|
|
||||||
for (unsigned int i = 0; i < mMixerTrackClusters.size(); i++)
|
|
||||||
mMixerTrackClusters[i]->UpdateSolo();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdateSolo();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerBoard::UpdatePan(const PlayableTrack* pTrack)
|
|
||||||
{
|
|
||||||
if (pTrack == NULL)
|
|
||||||
{
|
|
||||||
for (unsigned int i = 0; i < mMixerTrackClusters.size(); i++)
|
|
||||||
mMixerTrackClusters[i]->UpdatePan();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdatePan();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixerBoard::UpdateGain(const PlayableTrack* pTrack)
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdateGain();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
|
||||||
void MixerBoard::UpdateVelocity(const PlayableTrack* pTrack)
|
|
||||||
{
|
|
||||||
MixerTrackCluster* pMixerTrackCluster;
|
|
||||||
FindMixerTrackCluster(pTrack, &pMixerTrackCluster);
|
|
||||||
if (pMixerTrackCluster)
|
|
||||||
pMixerTrackCluster->UpdateVelocity();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void MixerBoard::UpdateMeters(const double t1, const bool bLoopedPlay)
|
void MixerBoard::UpdateMeters(const double t1, const bool bLoopedPlay)
|
||||||
{
|
{
|
||||||
if (!this->IsShown() || (t1 == BAD_STREAM_TIME))
|
if (!this->IsShown() || (t1 == BAD_STREAM_TIME))
|
||||||
|
@ -98,16 +98,7 @@ public:
|
|||||||
|
|
||||||
void ResetMeter(const bool bResetClipping);
|
void ResetMeter(const bool bResetClipping);
|
||||||
|
|
||||||
// These are used by TrackPanel for synchronizing control states.
|
void UpdateForStateChange();
|
||||||
void UpdateForStateChange(); // Update the controls that can be affected by state change.
|
|
||||||
void UpdateName();
|
|
||||||
void UpdateMute();
|
|
||||||
void UpdateSolo();
|
|
||||||
void UpdatePan();
|
|
||||||
void UpdateGain();
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
|
||||||
void UpdateVelocity();
|
|
||||||
#endif
|
|
||||||
void UpdateMeter(const double t0, const double t1);
|
void UpdateMeter(const double t0, const double t1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -225,15 +216,6 @@ public:
|
|||||||
|
|
||||||
void ResetMeters(const bool bResetClipping);
|
void ResetMeters(const bool bResetClipping);
|
||||||
|
|
||||||
void UpdateName(const PlayableTrack* pTrack);
|
|
||||||
void UpdateMute(const PlayableTrack* pTrack = NULL); // NULL means update for all tracks.
|
|
||||||
void UpdateSolo(const PlayableTrack* pTrack = NULL); // NULL means update for all tracks.
|
|
||||||
void UpdatePan(const PlayableTrack* pTrack = NULL); // NULL means update for all tracks.
|
|
||||||
void UpdateGain(const PlayableTrack* pTrack);
|
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
|
||||||
void UpdateVelocity(const PlayableTrack* pTrack);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void UpdateMeters(const double t1, const bool bLoopedPlay);
|
void UpdateMeters(const double t1, const bool bLoopedPlay);
|
||||||
|
|
||||||
void UpdateWidth();
|
void UpdateWidth();
|
||||||
@ -254,7 +236,6 @@ private:
|
|||||||
void OnTrackSetChanged(wxEvent &event);
|
void OnTrackSetChanged(wxEvent &event);
|
||||||
void OnTrackChanged(TrackListEvent &event);
|
void OnTrackChanged(TrackListEvent &event);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// mute & solo button images: Create once and store on MixerBoard for use in all MixerTrackClusters.
|
// mute & solo button images: Create once and store on MixerBoard for use in all MixerTrackClusters.
|
||||||
std::unique_ptr<wxImage> mImageMuteUp, mImageMuteOver, mImageMuteDown,
|
std::unique_ptr<wxImage> mImageMuteUp, mImageMuteOver, mImageMuteDown,
|
||||||
|
@ -5524,14 +5524,6 @@ void AudacityProject::DoTrackMute(Track *t, bool exclusive)
|
|||||||
{
|
{
|
||||||
HandleTrackMute(t, exclusive);
|
HandleTrackMute(t, exclusive);
|
||||||
|
|
||||||
// Update mixer board, too.
|
|
||||||
MixerBoard* pMixerBoard = this->GetMixerBoard();
|
|
||||||
if (pMixerBoard)
|
|
||||||
{
|
|
||||||
pMixerBoard->UpdateMute(); // Update for all tracks.
|
|
||||||
pMixerBoard->UpdateSolo(); // Update for all tracks.
|
|
||||||
}
|
|
||||||
|
|
||||||
mTrackPanel->UpdateAccessibility();
|
mTrackPanel->UpdateAccessibility();
|
||||||
mTrackPanel->Refresh(false);
|
mTrackPanel->Refresh(false);
|
||||||
}
|
}
|
||||||
@ -5540,14 +5532,6 @@ void AudacityProject::DoTrackSolo(Track *t, bool exclusive)
|
|||||||
{
|
{
|
||||||
HandleTrackSolo(t, exclusive);
|
HandleTrackSolo(t, exclusive);
|
||||||
|
|
||||||
// Update mixer board, too.
|
|
||||||
MixerBoard* pMixerBoard = this->GetMixerBoard();
|
|
||||||
if (pMixerBoard)
|
|
||||||
{
|
|
||||||
pMixerBoard->UpdateMute(); // Update for all tracks.
|
|
||||||
pMixerBoard->UpdateSolo(); // Update for all tracks.
|
|
||||||
}
|
|
||||||
|
|
||||||
mTrackPanel->UpdateAccessibility();
|
mTrackPanel->UpdateAccessibility();
|
||||||
mTrackPanel->Refresh(false);
|
mTrackPanel->Refresh(false);
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "../LabelTrack.h"
|
#include "../LabelTrack.h"
|
||||||
#include "../Menus.h"
|
#include "../Menus.h"
|
||||||
#include "../Mix.h"
|
#include "../Mix.h"
|
||||||
#include "../MixerBoard.h"
|
|
||||||
#include "../Prefs.h"
|
#include "../Prefs.h"
|
||||||
#include "../Project.h"
|
#include "../Project.h"
|
||||||
#include "../ShuttleGui.h"
|
#include "../ShuttleGui.h"
|
||||||
@ -13,6 +13,7 @@
|
|||||||
#include "../WaveTrack.h"
|
#include "../WaveTrack.h"
|
||||||
#include "../commands/CommandContext.h"
|
#include "../commands/CommandContext.h"
|
||||||
#include "../commands/CommandManager.h"
|
#include "../commands/CommandManager.h"
|
||||||
|
#include "../widgets/ASlider.h"
|
||||||
|
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
|
||||||
@ -103,7 +104,6 @@ void DoMixAndRender
|
|||||||
void DoPanTracks(AudacityProject &project, float PanValue)
|
void DoPanTracks(AudacityProject &project, float PanValue)
|
||||||
{
|
{
|
||||||
auto tracks = project.GetTracks();
|
auto tracks = project.GetTracks();
|
||||||
auto mixerBoard = project.GetMixerBoard();
|
|
||||||
|
|
||||||
// count selected wave tracks
|
// count selected wave tracks
|
||||||
const auto range = tracks->Any< WaveTrack >();
|
const auto range = tracks->Any< WaveTrack >();
|
||||||
@ -115,8 +115,6 @@ void DoPanTracks(AudacityProject &project, float PanValue)
|
|||||||
left->SetPan( PanValue );
|
left->SetPan( PanValue );
|
||||||
|
|
||||||
project.RedrawProject();
|
project.RedrawProject();
|
||||||
if (mixerBoard)
|
|
||||||
mixerBoard->UpdatePan();
|
|
||||||
|
|
||||||
auto flags = UndoPush::AUTOSAVE;
|
auto flags = UndoPush::AUTOSAVE;
|
||||||
/*i18n-hint: One or more audio tracks have been panned*/
|
/*i18n-hint: One or more audio tracks have been panned*/
|
||||||
@ -832,7 +830,6 @@ void OnMuteAllTracks(const CommandContext &context)
|
|||||||
auto tracks = project.GetTracks();
|
auto tracks = project.GetTracks();
|
||||||
auto soloSimple = project.IsSoloSimple();
|
auto soloSimple = project.IsSoloSimple();
|
||||||
auto soloNone = project.IsSoloNone();
|
auto soloNone = project.IsSoloNone();
|
||||||
auto mixerBoard = project.GetMixerBoard();
|
|
||||||
|
|
||||||
for (auto pt : tracks->Any<PlayableTrack>())
|
for (auto pt : tracks->Any<PlayableTrack>())
|
||||||
{
|
{
|
||||||
@ -843,11 +840,6 @@ void OnMuteAllTracks(const CommandContext &context)
|
|||||||
|
|
||||||
project.ModifyState(true);
|
project.ModifyState(true);
|
||||||
project.RedrawProject();
|
project.RedrawProject();
|
||||||
if (mixerBoard) {
|
|
||||||
mixerBoard->UpdateMute();
|
|
||||||
if (soloSimple || soloNone)
|
|
||||||
mixerBoard->UpdateSolo();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnUnmuteAllTracks(const CommandContext &context)
|
void OnUnmuteAllTracks(const CommandContext &context)
|
||||||
@ -856,7 +848,6 @@ void OnUnmuteAllTracks(const CommandContext &context)
|
|||||||
auto tracks = project.GetTracks();
|
auto tracks = project.GetTracks();
|
||||||
auto soloSimple = project.IsSoloSimple();
|
auto soloSimple = project.IsSoloSimple();
|
||||||
auto soloNone = project.IsSoloNone();
|
auto soloNone = project.IsSoloNone();
|
||||||
auto mixerBoard = project.GetMixerBoard();
|
|
||||||
|
|
||||||
for (auto pt : tracks->Any<PlayableTrack>())
|
for (auto pt : tracks->Any<PlayableTrack>())
|
||||||
{
|
{
|
||||||
@ -867,11 +858,6 @@ void OnUnmuteAllTracks(const CommandContext &context)
|
|||||||
|
|
||||||
project.ModifyState(true);
|
project.ModifyState(true);
|
||||||
project.RedrawProject();
|
project.RedrawProject();
|
||||||
if (mixerBoard) {
|
|
||||||
mixerBoard->UpdateMute();
|
|
||||||
if (soloSimple || soloNone)
|
|
||||||
mixerBoard->UpdateSolo();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnPanLeft(const CommandContext &context)
|
void OnPanLeft(const CommandContext &context)
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
|
|
||||||
#include "../../../../HitTestResult.h"
|
#include "../../../../HitTestResult.h"
|
||||||
#include "../../../../MixerBoard.h"
|
|
||||||
#include "../../../../Project.h"
|
#include "../../../../Project.h"
|
||||||
#include "../../../../RefreshCode.h"
|
#include "../../../../RefreshCode.h"
|
||||||
#include "../../../../TrackPanel.h" // for TrackInfo
|
#include "../../../../TrackPanel.h" // for TrackInfo
|
||||||
@ -51,10 +50,6 @@ UIHandle::Result VelocitySliderHandle::SetValue
|
|||||||
|
|
||||||
if (pTrack) {
|
if (pTrack) {
|
||||||
pTrack->SetVelocity(newValue);
|
pTrack->SetVelocity(newValue);
|
||||||
|
|
||||||
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
|
||||||
if (pMixerBoard)
|
|
||||||
pMixerBoard->UpdateVelocity(pTrack.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RefreshCode::RefreshCell;
|
return RefreshCode::RefreshCell;
|
||||||
|
@ -12,7 +12,6 @@ Paul Licameli split from TrackPanel.cpp
|
|||||||
#include "WaveTrackSliderHandles.h"
|
#include "WaveTrackSliderHandles.h"
|
||||||
|
|
||||||
#include "../../../../HitTestResult.h"
|
#include "../../../../HitTestResult.h"
|
||||||
#include "../../../../MixerBoard.h"
|
|
||||||
#include "../../../../Project.h"
|
#include "../../../../Project.h"
|
||||||
#include "../../../../RefreshCode.h"
|
#include "../../../../RefreshCode.h"
|
||||||
#include "../../../../TrackPanel.h"
|
#include "../../../../TrackPanel.h"
|
||||||
@ -50,10 +49,6 @@ UIHandle::Result GainSliderHandle::SetValue
|
|||||||
for (auto channel :
|
for (auto channel :
|
||||||
TrackList::Channels(pTrack.get()))
|
TrackList::Channels(pTrack.get()))
|
||||||
channel->SetGain(newValue);
|
channel->SetGain(newValue);
|
||||||
|
|
||||||
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
|
||||||
if (pMixerBoard)
|
|
||||||
pMixerBoard->UpdateGain(pTrack.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RefreshCode::RefreshNone;
|
return RefreshCode::RefreshNone;
|
||||||
@ -131,10 +126,6 @@ UIHandle::Result PanSliderHandle::SetValue(AudacityProject *pProject, float newV
|
|||||||
for (auto channel :
|
for (auto channel :
|
||||||
TrackList::Channels(pTrack.get()))
|
TrackList::Channels(pTrack.get()))
|
||||||
channel->SetPan(newValue);
|
channel->SetPan(newValue);
|
||||||
|
|
||||||
MixerBoard *const pMixerBoard = pProject->GetMixerBoard();
|
|
||||||
if (pMixerBoard)
|
|
||||||
pMixerBoard->UpdatePan(pTrack.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -15,7 +15,6 @@ Paul Licameli split from TrackPanel.cpp
|
|||||||
#include "../../HitTestResult.h"
|
#include "../../HitTestResult.h"
|
||||||
#include "../../RefreshCode.h"
|
#include "../../RefreshCode.h"
|
||||||
#include "../../Menus.h"
|
#include "../../Menus.h"
|
||||||
#include "../../MixerBoard.h"
|
|
||||||
#include "../../Project.h"
|
#include "../../Project.h"
|
||||||
#include "../../TrackPanel.h" // for TrackInfo
|
#include "../../TrackPanel.h" // for TrackInfo
|
||||||
#include "../../TrackPanelMouseEvent.h"
|
#include "../../TrackPanelMouseEvent.h"
|
||||||
@ -214,11 +213,6 @@ void TrackMenuTable::OnSetName(wxCommandEvent &)
|
|||||||
for (auto channel : TrackList::Channels(pTrack))
|
for (auto channel : TrackList::Channels(pTrack))
|
||||||
channel->SetName(newName);
|
channel->SetName(newName);
|
||||||
|
|
||||||
MixerBoard *const pMixerBoard = proj->GetMixerBoard();
|
|
||||||
auto pt = dynamic_cast<PlayableTrack*>(pTrack);
|
|
||||||
if (pt && pMixerBoard)
|
|
||||||
pMixerBoard->UpdateName(pt);
|
|
||||||
|
|
||||||
proj->PushState(wxString::Format(_("Renamed '%s' to '%s'"),
|
proj->PushState(wxString::Format(_("Renamed '%s' to '%s'"),
|
||||||
oldName,
|
oldName,
|
||||||
newName),
|
newName),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user