From 056de91cf79179f53f56be2f809709137d65e2a5 Mon Sep 17 00:00:00 2001 From: akleja Date: Wed, 25 Aug 2021 00:58:24 +0200 Subject: [PATCH] Remove MixerToolbar The mixer toolbar is redundant when PortMixer isn't supported Signed-off-by: akleja --- src/CMakeLists.txt | 2 - src/Menus.cpp | 1 - src/ProjectManager.cpp | 5 +- src/Screenshot.cpp | 1 - src/commands/ScreenshotCommand.cpp | 3 - src/commands/ScreenshotCommand.h | 1 - src/menus/ExtraMenus.cpp | 87 +------- src/toolbars/MixerToolBar.cpp | 345 ----------------------------- src/toolbars/MixerToolBar.h | 79 ------- src/toolbars/ToolBar.h | 1 - src/toolbars/ToolManager.cpp | 3 +- 11 files changed, 3 insertions(+), 525 deletions(-) delete mode 100644 src/toolbars/MixerToolBar.cpp delete mode 100644 src/toolbars/MixerToolBar.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 55e3810a7..43fa8f0bc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -755,8 +755,6 @@ list( APPEND SOURCES toolbars/EditToolBar.h toolbars/MeterToolBar.cpp toolbars/MeterToolBar.h - toolbars/MixerToolBar.cpp - toolbars/MixerToolBar.h toolbars/ScrubbingToolBar.cpp toolbars/ScrubbingToolBar.h toolbars/SelectionBar.cpp diff --git a/src/Menus.cpp b/src/Menus.cpp index 340b0f40e..509465184 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -406,7 +406,6 @@ void MenuCreator::CreateMenusAndCommands(AudacityProject &project) {wxT("/View/Other/Toolbars/Toolbars/Other"), wxT( "ShowTransportTB,ShowToolsTB,ShowRecordMeterTB,ShowPlayMeterTB," //"ShowMeterTB," -"ShowMixerTB," "ShowEditTB,ShowTranscriptionTB,ShowScrubbingTB,ShowDeviceTB,ShowSelectionTB," "ShowSpectralSelectionTB") } } diff --git a/src/ProjectManager.cpp b/src/ProjectManager.cpp index 34a6077a5..d9ba79a37 100644 --- a/src/ProjectManager.cpp +++ b/src/ProjectManager.cpp @@ -37,7 +37,6 @@ Paul Licameli split from AudacityProject.cpp #include "import/Import.h" #include "import/ImportMIDI.h" #include "prefs/QualitySettings.h" -#include "toolbars/MixerToolBar.h" #include "toolbars/SelectionBar.h" #include "toolbars/SpectralSelectionBar.h" #include "toolbars/TimeToolBar.h" @@ -991,9 +990,7 @@ void ProjectManager::OnTimer(wxTimerEvent& WXUNUSED(event)) { auto &project = mProject; auto &projectAudioIO = ProjectAudioIO::Get( project ); - auto mixerToolBar = &MixerToolBar::Get( project ); - mixerToolBar->UpdateControls(); - + auto gAudioIO = AudioIO::Get(); // gAudioIO->GetNumCaptureChannels() should only be positive // when we are recording. diff --git a/src/Screenshot.cpp b/src/Screenshot.cpp index 9c951cdbe..127b5f5eb 100644 --- a/src/Screenshot.cpp +++ b/src/Screenshot.cpp @@ -724,7 +724,6 @@ void ScreenshotBigDialog::OnCaptureSomething(wxCommandEvent & event) ScreenshotCommand::ktimer, ScreenshotCommand::ktools, ScreenshotCommand::ktransport, - ScreenshotCommand::kmixer, ScreenshotCommand::kmeter, ScreenshotCommand::kplaymeter, ScreenshotCommand::krecordmeter, diff --git a/src/commands/ScreenshotCommand.cpp b/src/commands/ScreenshotCommand.cpp index 4e2a5e942..750842152 100644 --- a/src/commands/ScreenshotCommand.cpp +++ b/src/commands/ScreenshotCommand.cpp @@ -66,7 +66,6 @@ kCaptureWhatStrings[ ScreenshotCommand::nCaptureWhats ] = { XO("Timer") }, { XO("Tools") }, { XO("Transport") }, - { XO("Mixer") }, { XO("Meter") }, { wxT("PlayMeter"), XO("Play Meter") }, { wxT("RecordMeter"), XO("Record Meter") }, @@ -814,8 +813,6 @@ bool ScreenshotCommand::Apply(const CommandContext & context) return CaptureToolbar(context, &toolManager, ToolsBarID, mFileName); case ktransport: return CaptureToolbar(context, &toolManager, TransportBarID, mFileName); - case kmixer: - return CaptureToolbar(context, &toolManager, MixerBarID, mFileName); case kmeter: return CaptureToolbar(context, &toolManager, MeterBarID, mFileName); case krecordmeter: diff --git a/src/commands/ScreenshotCommand.h b/src/commands/ScreenshotCommand.h index 48c1116de..9b3510033 100644 --- a/src/commands/ScreenshotCommand.h +++ b/src/commands/ScreenshotCommand.h @@ -54,7 +54,6 @@ public: ktimer, ktools, ktransport, - kmixer, kmeter, kplaymeter, krecordmeter, diff --git a/src/menus/ExtraMenus.cpp b/src/menus/ExtraMenus.cpp index c779c2f2c..f73387c83 100644 --- a/src/menus/ExtraMenus.cpp +++ b/src/menus/ExtraMenus.cpp @@ -4,7 +4,6 @@ #include "../Project.h" #include "../commands/CommandContext.h" #include "../commands/CommandManager.h" -#include "../toolbars/MixerToolBar.h" #include "../toolbars/DeviceToolBar.h" #include @@ -23,66 +22,6 @@ namespace ExtraActions { struct Handler : CommandHandlerObject { -void OnOutputGain(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->ShowOutputGainDialog(); - } -} - -void OnOutputGainInc(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->AdjustOutputGain(1); - } -} - -void OnOutputGainDec(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->AdjustOutputGain(-1); - } -} - -void OnInputGain(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->ShowInputGainDialog(); - } -} - -void OnInputGainInc(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->AdjustInputGain(1); - } -} - -void OnInputGainDec(const CommandContext &context) -{ - auto &project = context.project; - auto tb = &MixerToolBar::Get( project ); - - if (tb) { - tb->AdjustInputGain(-1); - } -} - void OnInputDevice(const CommandContext &context) { auto &project = context.project; @@ -140,7 +79,6 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) { namespace { using namespace MenuTable; -BaseItemSharedPtr ExtraMixerMenu(); BaseItemSharedPtr ExtraDeviceMenu(); BaseItemSharedPtr ExtraMenu() @@ -149,8 +87,7 @@ BaseItemSharedPtr ExtraMenu() // TODO: devise a registration system instead. static BaseItemSharedPtr extraItems{ Items( wxEmptyString, Section( "Part1", - ExtraMixerMenu() - , ExtraDeviceMenu() + ExtraDeviceMenu() ), Section( "Part2" ) @@ -170,28 +107,6 @@ AttachedItem sAttachment1{ Shared( ExtraMenu() ) }; -// Under /MenuBar/Optional/Extra/Part1 -BaseItemSharedPtr ExtraMixerMenu() -{ - static BaseItemSharedPtr menu{ - ( FinderScope{ findCommandHandler }, - Menu( wxT("Mixer"), XXO("Mi&xer"), - Command( wxT("OutputGain"), XXO("Ad&just Playback Volume..."), - FN(OnOutputGain), AlwaysEnabledFlag ), - Command( wxT("OutputGainInc"), XXO("&Increase Playback Volume"), - FN(OnOutputGainInc), AlwaysEnabledFlag ), - Command( wxT("OutputGainDec"), XXO("&Decrease Playback Volume"), - FN(OnOutputGainDec), AlwaysEnabledFlag ), - Command( wxT("InputGain"), XXO("Adj&ust Recording Volume..."), - FN(OnInputGain), AlwaysEnabledFlag ), - Command( wxT("InputGainInc"), XXO("I&ncrease Recording Volume"), - FN(OnInputGainInc), AlwaysEnabledFlag ), - Command( wxT("InputGainDec"), XXO("D&ecrease Recording Volume"), - FN(OnInputGainDec), AlwaysEnabledFlag ) - ) ) }; - return menu; -} - // Under /MenuBar/Optional/Extra/Part1 BaseItemSharedPtr ExtraDeviceMenu() { diff --git a/src/toolbars/MixerToolBar.cpp b/src/toolbars/MixerToolBar.cpp deleted file mode 100644 index 8f9c234a4..000000000 --- a/src/toolbars/MixerToolBar.cpp +++ /dev/null @@ -1,345 +0,0 @@ -/********************************************************************** - - Audacity: A Digital Audio Editor - - MixerToolBar.cpp - - Dominic Mazzoni - -*******************************************************************//*! - -\class MixerToolBar -\brief A ToolBar that provides the record and playback volume settings. - -*//*******************************************************************/ - - - -#include "MixerToolBar.h" - -#include "ToolManager.h" - -// For compilers that support precompilation, includes "wx/wx.h". -#include - -#ifndef WX_PRECOMP -#include -#include -#include -#include -#include -#include -#include -#endif - -#include "../AColor.h" -#include "../AllThemeResources.h" -#include "../AudioIO.h" -#include "../ImageManipulation.h" -#include "../KeyboardCapture.h" -#include "../Prefs.h" -#include "../widgets/ASlider.h" -#include "../widgets/Grabber.h" - -IMPLEMENT_CLASS(MixerToolBar, ToolBar); - -//////////////////////////////////////////////////////////// -/// Methods for MixerToolBar -//////////////////////////////////////////////////////////// - -BEGIN_EVENT_TABLE(MixerToolBar, ToolBar) - EVT_PAINT(MixerToolBar::OnPaint) - EVT_SLIDER(wxID_ANY, MixerToolBar::SetMixer) - EVT_CHOICE(wxID_ANY, MixerToolBar::SetMixer) - EVT_COMMAND(wxID_ANY, EVT_CAPTURE_KEY, MixerToolBar::OnCaptureKey) -END_EVENT_TABLE() - -//Standard constructor -MixerToolBar::MixerToolBar( AudacityProject &project ) -: ToolBar(project, MixerBarID, XO("Mixer"), wxT("Mixer"), true) -{ - mInputSliderVolume = 0.0; - mOutputSliderVolume = 0.0; - mEnabled = true; -} - -MixerToolBar::~MixerToolBar() -{ -} - -MixerToolBar &MixerToolBar::Get( AudacityProject &project ) -{ - auto &toolManager = ToolManager::Get( project ); - return *static_cast( toolManager.GetToolBar(MixerBarID) ); -} - -const MixerToolBar &MixerToolBar::Get( const AudacityProject &project ) -{ - return Get( const_cast( project )) ; -} - -void MixerToolBar::Create(wxWindow *parent) -{ - ToolBar::Create(parent); - UpdatePrefs(); -} - -void MixerToolBar::Populate() -{ - SetBackgroundColour( theTheme.Colour( clrMedium ) ); - // Recording icon and slider - Add(safenew AStaticBitmap(this, - wxID_ANY, - theTheme.Bitmap(bmpMic)), 0, wxALIGN_CENTER); - mInputSlider = safenew ASlider(this, wxID_ANY, XO("Recording Volume"), - wxDefaultPosition, wxSize(130, 25), - ASlider::Options{}.Line( 0.1f ).Page( 2.0f )); - Add(mInputSlider, 1, wxALIGN_CENTER); - mInputSlider->SetSizeHints(wxSize(75, 25), wxSize(1000, 25)); - - // Playback icon and slider - Add(safenew AStaticBitmap(this, - wxID_ANY, - theTheme.Bitmap(bmpSpeaker)), 0, wxALIGN_CENTER); - mOutputSlider = safenew ASlider(this, wxID_ANY, XO("Playback Volume"), - wxDefaultPosition, wxSize(130, 25), - ASlider::Options{}.Line( 0.1f ).Page( 2.0f )); - Add(mOutputSlider, 1, wxALIGN_CENTER); - mOutputSlider->SetSizeHints(wxSize(75, 25), wxSize(1000, 25)); - - // this bit taken from SelectionBar::Populate() - mInputSlider->Bind(wxEVT_SET_FOCUS, - &MixerToolBar::OnFocus, - this); - mInputSlider->Bind(wxEVT_KILL_FOCUS, - &MixerToolBar::OnFocus, - this); - mOutputSlider->Bind(wxEVT_SET_FOCUS, - &MixerToolBar::OnFocus, - this); - mOutputSlider->Bind(wxEVT_KILL_FOCUS, - &MixerToolBar::OnFocus, - this); - // Show or hide the input slider based on whether it works - auto gAudioIO = AudioIO::Get(); - mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); - mOutputSlider->Enable(mEnabled); - - UpdateControls(); - - // Add a little space - Add(2, -1); - - // Listen for capture events - wxTheApp->Bind(EVT_AUDIOIO_CAPTURE, - &MixerToolBar::OnAudioCapture, - this); -} - -void MixerToolBar::OnAudioCapture(wxCommandEvent & event) -{ - event.Skip(); - - AudacityProject *p = &mProject; - if ((AudacityProject *) event.GetEventObject() != p) - { - mEnabled = !event.GetInt(); - mInputSlider->Enable(mEnabled); - mOutputSlider->Enable(mEnabled); - } -} - -//Also from SelectionBar; -void MixerToolBar::OnFocus(wxFocusEvent &event) -{ - KeyboardCapture::OnFocus( *this, event ); -} - -void MixerToolBar::OnCaptureKey(wxCommandEvent &event) -{ - wxKeyEvent *kevent = (wxKeyEvent *)event.GetEventObject(); - int keyCode = kevent->GetKeyCode(); - - // Pass LEFT/RIGHT/UP/DOWN/PAGEUP/PAGEDOWN through for input/output sliders - if (FindFocus() == mInputSlider && (keyCode == WXK_LEFT || keyCode == WXK_RIGHT - || keyCode == WXK_UP || keyCode == WXK_DOWN - || keyCode == WXK_PAGEUP || keyCode == WXK_PAGEDOWN)) { - return; - } - if (FindFocus() == mOutputSlider && (keyCode == WXK_LEFT || keyCode == WXK_RIGHT - || keyCode == WXK_UP || keyCode == WXK_DOWN - || keyCode == WXK_PAGEUP || keyCode == WXK_PAGEDOWN)) { - return; - } - - event.Skip(); - - return; -} - -void MixerToolBar::UpdatePrefs() -{ -#if USE_PORTMIXER - float inputVolume; - float playbackVolume; - int inputSource; - - // Reset the selected source - auto gAudioIO = AudioIO::Get(); - gAudioIO->GetMixer(&inputSource, &inputVolume, &playbackVolume); - - // Show or hide the input slider based on whether it works - mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); - Layout(); - -// This code is from before the mixer toolbar was resizable. -// Now that it is resizable we trust the user to resize the mixer toolbar themselves. -#if 0 - wxSize oldSize( GetSize() ); - // Layout the toolbar - Layout(); - // Resize the toolbar to fit the contents - //Fit(); - // And make that size the minimum - wxSize newMinSize( wxWindow::GetSizer()->GetMinSize() ); - SetMinSize( newMinSize ); - // IF size must increase, do so. - if( newMinSize.x > oldSize.x ){ - SetSize( newMinSize ); - // Notify someone that we've changed our size - Updated(); - } - // ELSE preserve original size. - else - SetSize( oldSize ); -#endif -#endif - - // Set label to pull in language change - SetLabel(XO("Mixer")); - - RegenerateTooltips(); - - // Give base class a chance - ToolBar::UpdatePrefs(); -} - -void MixerToolBar::UpdateControls() -{ -#if USE_PORTMIXER - float inputVolume; - float playbackVolume; - int inputSource; - - // Show or hide the input slider based on whether it works - auto gAudioIO = AudioIO::Get(); - mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); - - gAudioIO->GetMixer(&inputSource, &inputVolume, &playbackVolume); - - if (mOutputSlider->Get() != playbackVolume) { - mOutputSlider->Set(playbackVolume); - mOutputSliderVolume = playbackVolume; - SetToolTips(); - } - - if (mInputSlider->Get() != inputVolume) { - mInputSlider->Set(inputVolume); - mInputSliderVolume = inputVolume; - SetToolTips(); - } -#endif // USE_PORTMIXER -} - -void MixerToolBar::SetMixer(wxCommandEvent & WXUNUSED(event)) -{ -#if USE_PORTMIXER - float inputVolume = mInputSlider->Get(); - float outputVolume = mOutputSlider->Get(); - float oldIn, oldOut; - int inputSource; - - auto gAudioIO = AudioIO::Get(); - gAudioIO->GetMixer(&inputSource, &oldIn, &oldOut); - gAudioIO->SetMixer(inputSource, inputVolume, outputVolume); - mOutputSliderVolume = outputVolume; - mInputSliderVolume = inputVolume; - SetToolTips(); -#endif // USE_PORTMIXER -} - -void MixerToolBar::ShowOutputGainDialog() -{ - mOutputSlider->ShowDialog(); - wxCommandEvent e; - SetMixer(e); - UpdateControls(); -} - -void MixerToolBar::ShowInputGainDialog() -{ - mInputSlider->ShowDialog(); - wxCommandEvent e; - SetMixer(e); - UpdateControls(); -} - -void MixerToolBar::AdjustOutputGain(int adj) -{ - if (adj < 0) { - mOutputSlider->Decrease(-adj); - } - else { - mOutputSlider->Increase(adj); - } - wxCommandEvent e; - SetMixer(e); - UpdateControls(); -} - -void MixerToolBar::AdjustInputGain(int adj) -{ - if (adj < 0) { - mInputSlider->Decrease(-adj); - } - else { - mInputSlider->Increase(adj); - } - wxCommandEvent e; - SetMixer(e); - UpdateControls(); -} - -void MixerToolBar::SetToolTips() -{ - if (mInputSlider->IsEnabled()) { - mInputSlider->SetToolTipTemplate(XO("Recording Volume: %.2f")); - } - else { - mInputSlider->SetToolTipTemplate(XO("Recording Volume (Unavailable; use system mixer.)")); - } - - if (mOutputSlider->IsEnabled()) { - auto format = (AudioIO::Get()->OutputMixerEmulated() - ? XO("Playback Volume: %.2f (emulated)") - : XO("Playback Volume: %.2f")); - - mOutputSlider->SetToolTipTemplate( format ); - } - else { - mOutputSlider->SetToolTipTemplate(XO("Playback Volume (Unavailable; use system mixer.)")); - } -} - -static RegisteredToolbarFactory factory{ MixerBarID, - []( AudacityProject &project ){ - return ToolBar::Holder{ safenew MixerToolBar{ project } }; } -}; - -namespace { -AttachedToolBarMenuItem sAttachment{ - /* i18n-hint: Clicking this menu item shows the toolbar - with the mixer */ - MixerBarID, wxT("ShowMixerTB"), XXO("Mi&xer Toolbar") -}; -} diff --git a/src/toolbars/MixerToolBar.h b/src/toolbars/MixerToolBar.h deleted file mode 100644 index 3726f64a9..000000000 --- a/src/toolbars/MixerToolBar.h +++ /dev/null @@ -1,79 +0,0 @@ -/********************************************************************** - - Audacity: A Digital Audio Editor - - MixerToolbar.h - - Dominic Mazzoni - -**********************************************************************/ - -#ifndef __AUDACITY_MIXER_TOOLBAR__ -#define __AUDACITY_MIXER_TOOLBAR__ - -#include "ToolBar.h" - -class wxSize; -class wxPoint; - -class ASlider; -class AudacityProject; - -class MixerToolBar final : public ToolBar { - - public: - - MixerToolBar( AudacityProject &project ); - virtual ~MixerToolBar(); - - static MixerToolBar &Get( AudacityProject &project ); - static const MixerToolBar &Get( const AudacityProject &project ); - - void Create(wxWindow * parent) override; - - void UpdatePrefs() override; - void UpdateControls(); - void SetMixer(wxCommandEvent &event); - - void Populate() override; - void Repaint(wxDC * WXUNUSED(dc)) override {}; - void EnableDisableButtons() override {}; - int GetMinToolbarWidth() override { return 250; } - int GetInitialWidth() override { return 327; } - - void OnFocus(wxFocusEvent &event); - void OnCaptureKey(wxCommandEvent &event); - - void OnSlider(wxCommandEvent & event); - - void OnAudioCapture(wxCommandEvent & event); - - void ShowOutputGainDialog(); - void ShowInputGainDialog(); - - void AdjustOutputGain(int adj); - void AdjustInputGain(int adj); - - void RegenerateTooltips() override {}; - - protected: - float mInputSliderVolume; - float mOutputSliderVolume; - - private: - - void InitializeMixerToolBar(); - void SetToolTips(); - - ASlider *mInputSlider; - ASlider *mOutputSlider; - bool mEnabled; - - public: - - DECLARE_CLASS(MixerToolBar) - DECLARE_EVENT_TABLE() -}; - -#endif - diff --git a/src/toolbars/ToolBar.h b/src/toolbars/ToolBar.h index a6ad93b20..f8b7f524a 100644 --- a/src/toolbars/ToolBar.h +++ b/src/toolbars/ToolBar.h @@ -74,7 +74,6 @@ enum ToolBarID MeterBarID, RecordMeterBarID, PlayMeterBarID, - MixerBarID, EditBarID, TranscriptionBarID, ScrubbingBarID, diff --git a/src/toolbars/ToolManager.cpp b/src/toolbars/ToolManager.cpp index 2980bfba4..b35739ac3 100644 --- a/src/toolbars/ToolManager.cpp +++ b/src/toolbars/ToolManager.cpp @@ -533,8 +533,7 @@ static struct DefaultConfigEntry { { ToolsBarID, TransportBarID, NoBarID }, { RecordMeterBarID, ToolsBarID, NoBarID }, { PlayMeterBarID, RecordMeterBarID, NoBarID }, - { MixerBarID, PlayMeterBarID, NoBarID }, - { EditBarID, MixerBarID, NoBarID }, + { EditBarID, PlayMeterBarID, NoBarID }, // DA: Transcription Toolbar not docked, by default. #ifdef EXPERIMENTAL_DA