145
146
bool EffectChangePitch::TransferParameters( Shuttle & shuttle )
147
148
shuttle.TransferDouble(wxT("Percentage"),m_PercentChange,0.0);
149
m_SemitonesChange = (12.0 * log((100.0 + m_PercentChange) / 100.0)) / log(2.0);
193
194
EVT_TEXT(ID_TEXT_PERCENTCHANGE, ChangePitchDialog::OnText_PercentChange)
194
195
EVT_SLIDER(ID_SLIDER_PERCENTCHANGE, ChangePitchDialog::OnSlider_PercentChange)
196
EVT_BUTTON(ID_BUTTON_PREVIEW, ChangePitchDialog::OnPreview)
197
EVT_BUTTON(ID_EFFECT_PREVIEW, ChangePitchDialog::OnPreview)
197
198
END_EVENT_TABLE()
248
249
pBoxSizer_Dialog->Add(pStaticText, 0, wxALIGN_CENTER | wxALL, 8);
250
251
pStaticText = new wxStaticText(this, -1,
252
/* i18n-hint: && in here is an escape character to get a single & on
253
* screen, so keep it as is */
251
254
_("by Vaughan Johnson && Dominic Mazzoni"),
252
255
wxDefaultPosition, wxDefaultSize, 0);
253
256
pBoxSizer_Dialog->Add(pStaticText, 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 8);
273
276
wxT("F#/Gb"), wxT("G"), wxT("G#/Ab"), wxT("A"), wxT("A#/Bb"), wxT("B")};
274
277
const int numChoicesPitchNames = 12;
275
278
m_pChoice_FromPitch =
276
new wxChoice(this, ID_CHOICE_FROMPITCH, wxDefaultPosition, wxSize(64, -1),
279
new wxChoice(this, ID_CHOICE_FROMPITCH, wxDefaultPosition, wxDefaultSize,
277
280
numChoicesPitchNames, strArray_PitchNames);
278
281
pBoxSizer_Pitch->Add(m_pChoice_FromPitch, 0,
279
282
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, 4);
290
293
wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT | wxALL, 4);
292
295
m_pChoice_ToPitch =
293
new wxChoice(this, ID_CHOICE_TOPITCH, wxDefaultPosition, wxSize(64, -1),
296
new wxChoice(this, ID_CHOICE_TOPITCH, wxDefaultPosition, wxDefaultSize,
294
297
numChoicesPitchNames, strArray_PitchNames);
295
298
pBoxSizer_Pitch->Add(m_pChoice_ToPitch, 0,
296
299
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, 4);
362
365
//v Override wxTextValidator to disallow negative values < -100.0?
363
366
m_pTextCtrl_PercentChange =
364
367
new wxTextCtrl(this, ID_TEXT_PERCENTCHANGE, wxT("0.0"),
365
wxDefaultPosition, wxSize(40, -1), 0,
368
wxDefaultPosition, wxSize(60, -1), 0,
366
369
wxTextValidator(wxFILTER_NUMERIC));
367
370
pBoxSizer_PercentChange->Add(m_pTextCtrl_PercentChange, 0,
368
371
wxALIGN_CENTER_VERTICAL | wxALL, 4);
379
382
pBoxSizer_Dialog->Add(0, 8, 0); // spacer
382
// Preview, OK, & Cancel buttons
383
pBoxSizer_Dialog->Add(0, 8, 0); // spacer
385
wxBoxSizer * pBoxSizer_OK = new wxBoxSizer(wxHORIZONTAL);
387
wxButton * pButton_Preview =
388
new wxButton(this, ID_BUTTON_PREVIEW, m_pEffect->GetPreviewName());
389
pBoxSizer_OK->Add(pButton_Preview, 0, wxALIGN_CENTER | wxALL, 4);
390
pBoxSizer_OK->Add(32, 8); // horizontal spacer
392
wxButton * pButton_Cancel =
393
new wxButton(this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0);
394
pBoxSizer_OK->Add(pButton_Cancel, 0, wxALIGN_CENTER | wxALL, 4);
396
wxButton * pButton_OK =
397
new wxButton(this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0);
398
pButton_OK->SetDefault();
399
pBoxSizer_OK->Add(pButton_OK, 0, wxALIGN_CENTER | wxALL, 4);
401
pBoxSizer_Dialog->Add(pBoxSizer_OK, 0, wxALIGN_CENTER | wxALL, 8);
384
// Preview, OK, & Cancel buttons
385
pBoxSizer_Dialog->Add(CreateStdButtonSizer(this, ePreviewButton|eCancelButton|eOkButton), 0, wxEXPAND);
404
387
this->SetAutoLayout(true);
405
388
this->SetSizer(pBoxSizer_Dialog);