From 0a64763f2f0c3b62b07e957b049f64842ab48841 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sat, 21 Apr 2012 15:13:46 +0000 Subject: [PATCH] Set the audio volume from the slider when audio is opened Originally committed to SVN as r6711. --- aegisub/src/audio_box.cpp | 6 +++++- aegisub/src/audio_box.h | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/aegisub/src/audio_box.cpp b/aegisub/src/audio_box.cpp index 1a69f0c4c..f488baa4d 100644 --- a/aegisub/src/audio_box.cpp +++ b/aegisub/src/audio_box.cpp @@ -81,6 +81,7 @@ AudioBox::AudioBox(wxWindow *parent, agi::Context *context) : wxSashWindow(parent, -1, wxDefaultPosition, wxDefaultSize, wxSW_3D | wxCLIP_CHILDREN) , controller(context->audioController) , context(context) +, audio_open_connection(controller->AddAudioOpenListener(&AudioBox::OnAudioOpen, this)) , panel(new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_RAISED)) , audioDisplay(new AudioDisplay(panel, context->audioController, context)) , HorizontalZoom(new wxSlider(panel, Audio_Horizontal_Zoom, OPT_GET("Audio/Zoom/Horizontal")->GetInt(), -50, 30, wxDefaultPosition, wxSize(-1, 20), wxSL_VERTICAL|wxSL_BOTH)) @@ -139,7 +140,6 @@ AudioBox::AudioBox(wxWindow *parent, agi::Context *context) audioDisplay->SetZoomLevel(-HorizontalZoom->GetValue()); audioDisplay->SetAmplitudeScale(pow(mid(1, VerticalZoom->GetValue(), 100) / 50.0, 3)); - controller->SetVolume(pow(mid(1, VolumeBar->GetValue(), 100) / 50.0, 3)); } AudioBox::~AudioBox() { } @@ -230,6 +230,10 @@ void AudioBox::OnVerticalLink(agi::OptionValue const& opt) { VolumeBar->Enable(!opt.GetBool()); } +void AudioBox::OnAudioOpen() { + controller->SetVolume(pow(mid(1, VolumeBar->GetValue(), 100) / 50.0, 3)); +} + void AudioBox::ShowKaraokeBar(bool show) { wxSizer *panel_sizer = panel->GetSizer(); if (panel_sizer->IsShown(context->karaoke) == show) return; diff --git a/aegisub/src/audio_box.h b/aegisub/src/audio_box.h index 3f77418b3..669a6e746 100644 --- a/aegisub/src/audio_box.h +++ b/aegisub/src/audio_box.h @@ -38,6 +38,8 @@ #include #endif +#include + namespace agi { struct Context; class OptionValue; @@ -62,6 +64,8 @@ class AudioBox : public wxSashWindow { /// Project context this operates on agi::Context *context; + agi::signal::Connection audio_open_connection; + /// Panel containing the children wxPanel *panel; @@ -81,12 +85,13 @@ class AudioBox : public wxSashWindow { // Mouse wheel zoom accumulator int mouse_zoom_accum; + void OnAudioOpen(); void OnHorizontalZoom(wxScrollEvent &event); + void OnMouseWheel(wxMouseEvent &evt); + void OnSashDrag(wxSashEvent &event); + void OnVerticalLink(agi::OptionValue const& opt); void OnVerticalZoom(wxScrollEvent &event); void OnVolume(wxScrollEvent &event); - void OnVerticalLink(agi::OptionValue const& opt); - void OnSashDrag(wxSashEvent &event); - void OnMouseWheel(wxMouseEvent &evt); public: AudioBox(wxWindow *parent, agi::Context *context);