113
136
// BassBoostDialog
114
137
//----------------------------------------------------------------------------
139
const static wxChar *numbers[] =
141
wxT("0"), wxT("1"), wxT("2"), wxT("3"), wxT("4"),
142
wxT("5"), wxT("6"), wxT("7"), wxT("8"), wxT("9")
145
// Declare window functions
147
#define ID_FREQ_TEXT 10001
148
#define ID_FREQ_SLIDER 10002
149
#define ID_BOOST_TEXT 10003
150
#define ID_BOOST_SLIDER 10004
116
154
#define FREQ_MIN 1
117
155
#define FREQ_MAX 1000
118
156
#define BOOST_MIN 0
119
157
#define BOOST_MAX 36
121
BEGIN_EVENT_TABLE(BassBoostDialog, wxDialog)
122
EVT_BUTTON(ID_BUTTON_PREVIEW, BassBoostDialog::OnPreview)
123
EVT_BUTTON(wxID_OK, BassBoostDialog::OnOk)
124
EVT_BUTTON(wxID_CANCEL, BassBoostDialog::OnCancel)
159
BEGIN_EVENT_TABLE(BassBoostDialog, EffectDialog)
125
160
EVT_SLIDER(ID_FREQ_SLIDER, BassBoostDialog::OnFreqSlider)
126
161
EVT_SLIDER(ID_BOOST_SLIDER, BassBoostDialog::OnBoostSlider)
127
162
EVT_TEXT(ID_FREQ_TEXT, BassBoostDialog::OnFreqText)
128
163
EVT_TEXT(ID_BOOST_TEXT, BassBoostDialog::OnBoostText)
164
EVT_BUTTON(ID_EFFECT_PREVIEW, BassBoostDialog::OnPreview)
129
165
END_EVENT_TABLE()
131
167
BassBoostDialog::BassBoostDialog(EffectBassBoost *effect,
132
wxWindow * parent, wxWindowID id,
133
const wxString & title,
134
const wxPoint & position,
137
wxDialog(parent, id, title, position, size, style),
169
EffectDialog(parent, _("BassBoost"), PROCESS_EFFECT),
140
MakeBassBoostDialog(this, TRUE, TRUE);
143
bool BassBoostDialog::Validate()
175
void BassBoostDialog::PopulateOrExchange(ShuttleGui & S)
177
wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST);
178
vld.SetIncludes(wxArrayString(10, numbers));
180
S.StartHorizontalLay(wxCENTER, false);
182
S.AddTitle(_("by Nasca Octavian Paul"));
184
S.EndHorizontalLay();
186
S.StartHorizontalLay(wxCENTER, false);
188
// Add a little space
190
S.EndHorizontalLay();
192
S.StartMultiColumn(3, wxEXPAND);
196
mFreqT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Frequency (Hz):"),
199
mFreqT->SetValidator(vld);
201
S.SetStyle(wxSL_HORIZONTAL);
202
mFreqS = S.Id(ID_FREQ_SLIDER).AddSlider(wxT(""),
205
mFreqS->SetRange(FREQ_MIN, FREQ_MAX);
208
mBoostT = S.Id(ID_BOOST_TEXT).AddTextBox(_("Boost (dB):"),
211
mBoostT->SetValidator(vld);
213
S.SetStyle(wxSL_HORIZONTAL);
214
mBoostS = S.Id(ID_BOOST_SLIDER).AddSlider(wxT(""),
217
mBoostS->SetRange(BOOST_MIN, BOOST_MAX);
148
223
bool BassBoostDialog::TransferDataToWindow()
152
slider = GetBoostSlider();
154
slider->SetValue((int)boost);
156
slider = GetFreqSlider();
158
slider->SetValue((int)freq);
160
wxTextCtrl *text = GetBoostText();
163
str.Printf("%d", (int) boost);
167
text = GetFreqText();
170
str.Printf("%d", (int) freq);
225
mBoostS->SetValue((int)boost);
226
mFreqS->SetValue((int)freq);
228
mBoostT->SetValue(wxString::Format(wxT("%d"), (int) boost));
229
mFreqT->SetValue(wxString::Format(wxT("%d"), (int) freq));
177
234
bool BassBoostDialog::TransferDataFromWindow()
179
wxTextCtrl *c = GetBoostText();
183
wxString val = c->GetValue();
185
boost = TrapLong(b, BOOST_MIN, BOOST_MAX);
192
wxString val = c->GetValue();
194
freq = TrapLong(f, FREQ_MIN, FREQ_MAX);
236
boost = TrapLong(mBoostS->GetValue(), BOOST_MIN, BOOST_MAX);
237
freq = TrapLong(mFreqS->GetValue(), FREQ_MIN, FREQ_MAX);
200
242
// WDR: handler implementations for BassBoostDialog
202
244
void BassBoostDialog::OnBoostText(wxCommandEvent & event)
204
wxTextCtrl *c = GetBoostText();
208
c->GetValue().ToLong(&boost);
209
boost = TrapLong(boost, BOOST_MIN, BOOST_MAX);
211
wxSlider *slider = GetBoostSlider();
213
slider->SetValue(boost);
248
mBoostT->GetValue().ToLong(&val);
249
mBoostS->SetValue(TrapLong(val, BOOST_MIN, BOOST_MAX));
217
252
void BassBoostDialog::OnFreqText(wxCommandEvent & event)
219
wxTextCtrl *c = GetFreqText();
223
c->GetValue().ToLong(&freq);
224
freq = TrapLong(freq, FREQ_MIN, FREQ_MAX);
226
wxSlider *slider = GetFreqSlider();
228
slider->SetValue(freq);
256
mFreqT->GetValue().ToLong(&val);
257
mFreqS->SetValue(TrapLong(val, FREQ_MIN, FREQ_MAX));
232
260
void BassBoostDialog::OnBoostSlider(wxCommandEvent & event)
235
str.Printf("%d", GetBoostSlider()->GetValue());
236
GetBoostText()->SetValue(str);
262
mBoostT->SetValue(wxString::Format(wxT("%d"), mBoostS->GetValue()));
239
265
void BassBoostDialog::OnFreqSlider(wxCommandEvent & event)
242
long freq = GetFreqSlider()->GetValue();
243
freq = ((freq + 5) / 10) * 10; // round to nearest multiple of 10
244
str.Printf("%ld", freq);
245
GetFreqText()->SetValue(str);
267
mFreqT->SetValue(wxString::Format(wxT("%d"), mFreqS->GetValue()));
248
270
void BassBoostDialog::OnPreview(wxCommandEvent & event)
253
275
mEffect->Preview();
256
void BassBoostDialog::OnOk(wxCommandEvent & event)
258
TransferDataFromWindow();
267
void BassBoostDialog::OnCancel(wxCommandEvent & event)
272
wxSizer *BassBoostDialog::MakeBassBoostDialog(wxWindow * parent, bool call_fit,
275
wxBoxSizer *item0 = new wxBoxSizer(wxVERTICAL);
277
wxStaticText *item1 =
278
new wxStaticText(parent, -1,
279
_("Bass Boost by Nasca Octavian Paul"),
280
wxDefaultPosition, wxDefaultSize, 0);
281
item0->Add(item1, 0, wxALIGN_CENTRE | wxALL, 5);
283
wxFlexGridSizer *item2 = new wxFlexGridSizer(3, 0, 0);
285
wxStaticText *item3 =
286
new wxStaticText(parent, -1, _("Frequency (Hz):"),
287
wxDefaultPosition, wxDefaultSize, 0);
288
item2->Add(item3, 0, wxALIGN_CENTRE | wxALL, 5);
291
new wxTextCtrl(parent, ID_FREQ_TEXT, "", wxDefaultPosition,
293
item2->Add(item4, 0, wxALIGN_CENTRE | wxALL, 5);
296
new wxSlider(parent, ID_FREQ_SLIDER, 0, FREQ_MIN, FREQ_MAX,
297
wxDefaultPosition, wxSize(100, -1), wxSL_HORIZONTAL);
298
//item5->SetValue(200);
299
item2->Add(item5, 0, wxALIGN_CENTRE | wxALL, 5);
301
wxStaticText *item6 =
302
new wxStaticText(parent, -1, _("Boost (dB):"), wxDefaultPosition,
304
item2->Add(item6, 0, wxALIGN_CENTRE | wxALL, 5);
307
new wxTextCtrl(parent, ID_BOOST_TEXT, "", wxDefaultPosition,
309
item2->Add(item7, 0, wxALIGN_CENTRE | wxALL, 5);
312
new wxSlider(parent, ID_BOOST_SLIDER, 0, BOOST_MIN, BOOST_MAX,
313
wxDefaultPosition, wxSize(100, -1), wxSL_HORIZONTAL);
314
//item8->SetValue(12);
315
item2->Add(item8, 0, wxALIGN_CENTRE | wxALL, 5);
317
item0->Add(item2, 0, wxALIGN_CENTRE | wxALL, 5);
319
wxBoxSizer *item9 = new wxBoxSizer(wxHORIZONTAL);
322
new wxButton(parent, ID_BUTTON_PREVIEW, mEffect->GetPreviewName());
323
item9->Add(item9b, 0, wxALIGN_CENTRE | wxALL, 5);
324
item9->Add(20, 5); // horizontal spacer
327
new wxButton(parent, wxID_CANCEL, _("Cancel"), wxDefaultPosition,
329
item9->Add(item11, 0, wxALIGN_CENTRE | wxALL, 5);
332
new wxButton(parent, wxID_OK, _("OK"), wxDefaultPosition,
334
item10->SetDefault();
336
item9->Add(item10, 0, wxALIGN_CENTRE | wxALL, 5);
338
item0->Add(item9, 0, wxALIGN_CENTRE | wxALL, 5);
341
parent->SetAutoLayout(TRUE);
342
parent->SetSizer(item0);
345
item0->SetSizeHints(parent);
278
// Indentation settings for Vim and Emacs and unique identifier for Arch, a
279
// version control system. Please do not modify past this point.
283
// indent-tabs-mode: nil
286
// vim: et sts=3 sw=3
287
// arch-tag: 25dfd7cb-9e1b-4c8d-a188-ed406c2b51b7