1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-08 08:30:02 +02:00

Slider fixes (inspired by patch by Ed Musgrove).

This commit is contained in:
james.k.crook@gmail.com 2011-03-22 22:50:04 +00:00
parent 6a868ff21d
commit 2a24561345

View File

@ -731,18 +731,18 @@ enum {
ID_BUTTON_LEAVENOISE, ID_BUTTON_LEAVENOISE,
ID_RADIOBUTTON_KEEPSIGNAL, ID_RADIOBUTTON_KEEPSIGNAL,
ID_RADIOBUTTON_KEEPNOISE, ID_RADIOBUTTON_KEEPNOISE,
ID_SENSIVITY_SLIDER, ID_SENSITIVITY_SLIDER,
ID_GAIN_SLIDER, ID_GAIN_SLIDER,
ID_FREQ_SLIDER, ID_FREQ_SLIDER,
ID_TIME_SLIDER, ID_TIME_SLIDER,
ID_SENSIVITY_TEXT, ID_SENSITIVITY_TEXT,
ID_GAIN_TEXT, ID_GAIN_TEXT,
ID_FREQ_TEXT, ID_FREQ_TEXT,
ID_TIME_TEXT, ID_TIME_TEXT,
}; };
#define SENSIVITY_MIN 0 // Corresponds to -20 dB #define SENSITIVITY_MIN 0 // Corresponds to -20 dB
#define SENSIVITY_MAX 4000 // Corresponds to 20 dB #define SENSITIVITY_MAX 4000 // Corresponds to 20 dB
#define GAIN_MIN 0 #define GAIN_MIN 0
#define GAIN_MAX 48 // Corresponds to -48 dB #define GAIN_MAX 48 // Corresponds to -48 dB
@ -751,7 +751,7 @@ enum {
#define FREQ_MAX 100 // Corresponds to 1000 Hz #define FREQ_MAX 100 // Corresponds to 1000 Hz
#define TIME_MIN 0 #define TIME_MIN 0
#define TIME_MAX 1000 // Corresponds to 1.000 seconds #define TIME_MAX 100 // Corresponds to 1.000 seconds
BEGIN_EVENT_TABLE(NoiseRemovalDialog,wxDialog) BEGIN_EVENT_TABLE(NoiseRemovalDialog,wxDialog)
@ -761,11 +761,11 @@ BEGIN_EVENT_TABLE(NoiseRemovalDialog,wxDialog)
EVT_BUTTON(ID_BUTTON_GETPROFILE, NoiseRemovalDialog::OnGetProfile) EVT_BUTTON(ID_BUTTON_GETPROFILE, NoiseRemovalDialog::OnGetProfile)
EVT_RADIOBUTTON(ID_RADIOBUTTON_KEEPNOISE, NoiseRemovalDialog::OnKeepNoise) EVT_RADIOBUTTON(ID_RADIOBUTTON_KEEPNOISE, NoiseRemovalDialog::OnKeepNoise)
EVT_RADIOBUTTON(ID_RADIOBUTTON_KEEPSIGNAL, NoiseRemovalDialog::OnKeepNoise) EVT_RADIOBUTTON(ID_RADIOBUTTON_KEEPSIGNAL, NoiseRemovalDialog::OnKeepNoise)
EVT_SLIDER(ID_SENSIVITY_SLIDER, NoiseRemovalDialog::OnSensitivitySlider) EVT_SLIDER(ID_SENSITIVITY_SLIDER, NoiseRemovalDialog::OnSensitivitySlider)
EVT_SLIDER(ID_GAIN_SLIDER, NoiseRemovalDialog::OnGainSlider) EVT_SLIDER(ID_GAIN_SLIDER, NoiseRemovalDialog::OnGainSlider)
EVT_SLIDER(ID_FREQ_SLIDER, NoiseRemovalDialog::OnFreqSlider) EVT_SLIDER(ID_FREQ_SLIDER, NoiseRemovalDialog::OnFreqSlider)
EVT_SLIDER(ID_TIME_SLIDER, NoiseRemovalDialog::OnTimeSlider) EVT_SLIDER(ID_TIME_SLIDER, NoiseRemovalDialog::OnTimeSlider)
EVT_TEXT(ID_SENSIVITY_TEXT, NoiseRemovalDialog::OnSensitivityText) EVT_TEXT(ID_SENSITIVITY_TEXT, NoiseRemovalDialog::OnSensitivityText)
EVT_TEXT(ID_GAIN_TEXT, NoiseRemovalDialog::OnGainText) EVT_TEXT(ID_GAIN_TEXT, NoiseRemovalDialog::OnGainText)
EVT_TEXT(ID_FREQ_TEXT, NoiseRemovalDialog::OnFreqText) EVT_TEXT(ID_FREQ_TEXT, NoiseRemovalDialog::OnFreqText)
EVT_TEXT(ID_TIME_TEXT, NoiseRemovalDialog::OnTimeText) EVT_TEXT(ID_TIME_TEXT, NoiseRemovalDialog::OnTimeText)
@ -910,13 +910,13 @@ void NoiseRemovalDialog::PopulateOrExchange(ShuttleGui & S)
mGainS->SetRange(GAIN_MIN, GAIN_MAX); mGainS->SetRange(GAIN_MIN, GAIN_MAX);
mGainS->SetSizeHints(150, -1); mGainS->SetSizeHints(150, -1);
mSensitivityT = S.Id(ID_SENSIVITY_TEXT).AddTextBox(_("&Sensitivity (dB):"), mSensitivityT = S.Id(ID_SENSITIVITY_TEXT).AddTextBox(_("&Sensitivity (dB):"),
wxT(""), wxT(""),
0); 0);
S.SetStyle(wxSL_HORIZONTAL); S.SetStyle(wxSL_HORIZONTAL);
mSensitivityS = S.Id(ID_SENSIVITY_SLIDER).AddSlider(wxT(""), 0, SENSIVITY_MAX); mSensitivityS = S.Id(ID_SENSITIVITY_SLIDER).AddSlider(wxT(""), 0, SENSITIVITY_MAX);
mSensitivityS->SetName(_("Sensitivity")); mSensitivityS->SetName(_("Sensitivity"));
mSensitivityS->SetRange(SENSIVITY_MIN, SENSIVITY_MAX); mSensitivityS->SetRange(SENSITIVITY_MIN, SENSITIVITY_MAX);
mSensitivityS->SetSizeHints(150, -1); mSensitivityS->SetSizeHints(150, -1);
mFreqT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Fr&equency smoothing (Hz):"), mFreqT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Fr&equency smoothing (Hz):"),
@ -957,10 +957,10 @@ bool NoiseRemovalDialog::TransferDataToWindow()
mKeepNoise->SetValue(mbLeaveNoise); mKeepNoise->SetValue(mbLeaveNoise);
mKeepSignal->SetValue(!mbLeaveNoise); mKeepSignal->SetValue(!mbLeaveNoise);
mSensitivityS->SetValue(TrapLong(mSensitivity*100.0 + 2000.0, SENSIVITY_MIN, SENSIVITY_MAX)); mSensitivityS->SetValue(TrapLong(mSensitivity*100.0 + (SENSITIVITY_MAX-SENSITIVITY_MIN+1)/2.0, SENSITIVITY_MIN, SENSITIVITY_MAX));
mGainS->SetValue(TrapLong(mGain, GAIN_MIN, GAIN_MAX)); mGainS->SetValue(TrapLong(mGain, GAIN_MIN, GAIN_MAX));
mFreqS->SetValue(TrapLong(mFreq / 10, FREQ_MIN, FREQ_MAX)); mFreqS->SetValue(TrapLong(mFreq / 10, FREQ_MIN, FREQ_MAX));
mTimeS->SetValue(TrapLong(mTime * 1000, TIME_MIN, TIME_MAX)); mTimeS->SetValue(TrapLong(mTime * TIME_MAX + 0.5, TIME_MIN, TIME_MAX));
return true; return true;
} }
@ -974,7 +974,7 @@ bool NoiseRemovalDialog::TransferDataFromWindow()
void NoiseRemovalDialog::OnSensitivityText(wxCommandEvent & event) void NoiseRemovalDialog::OnSensitivityText(wxCommandEvent & event)
{ {
mSensitivityT->GetValue().ToDouble(&mSensitivity); mSensitivityT->GetValue().ToDouble(&mSensitivity);
mSensitivityS->SetValue(TrapLong(mSensitivity*100.0 + 2000.0, SENSIVITY_MIN, SENSIVITY_MAX)); mSensitivityS->SetValue(TrapLong(mSensitivity*100.0 + (SENSITIVITY_MAX-SENSITIVITY_MIN+1)/2.0, SENSITIVITY_MIN, SENSITIVITY_MAX));
} }
void NoiseRemovalDialog::OnGainText(wxCommandEvent & event) void NoiseRemovalDialog::OnGainText(wxCommandEvent & event)
@ -992,7 +992,7 @@ void NoiseRemovalDialog::OnFreqText(wxCommandEvent & event)
void NoiseRemovalDialog::OnTimeText(wxCommandEvent & event) void NoiseRemovalDialog::OnTimeText(wxCommandEvent & event)
{ {
mTimeT->GetValue().ToDouble(&mTime); mTimeT->GetValue().ToDouble(&mTime);
mTimeS->SetValue(TrapLong(mTime * 1000, TIME_MIN, TIME_MAX)); mTimeS->SetValue(TrapLong(mTime * TIME_MAX + 0.5, TIME_MIN, TIME_MAX));
} }
void NoiseRemovalDialog::OnSensitivitySlider(wxCommandEvent & event) void NoiseRemovalDialog::OnSensitivitySlider(wxCommandEvent & event)
@ -1015,7 +1015,7 @@ void NoiseRemovalDialog::OnFreqSlider(wxCommandEvent & event)
void NoiseRemovalDialog::OnTimeSlider(wxCommandEvent & event) void NoiseRemovalDialog::OnTimeSlider(wxCommandEvent & event)
{ {
mTime = mTimeS->GetValue() / 1000.0; mTime = mTimeS->GetValue() / (TIME_MAX*1.0);
mTimeT->SetValue(wxString::Format(wxT("%.2f"), mTime)); mTimeT->SetValue(wxString::Format(wxT("%.2f"), mTime));
} }