/// Populates more complex dialog that has a chirp. void ToneGenDialog::PopulateOrExchangeExtended( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.TieChoice( _("Waveform:"), waveform, waveforms); S.SetSizeHints(-1,-1); } S.EndMultiColumn(); S.StartMultiColumn(3, wxCENTER); { S.AddFixedText(wxT("")); S.AddTitle( _("Start")); S.AddTitle( _("End") ); S.TieTextBox( _("Frequency / Hz"),frequency[0], 10); S.TieTextBox( wxT(""),frequency[1], 10); S.TieTextBox( _("Amplitude (0-1)"),amplitude[0], 10); S.TieTextBox( wxT(""),amplitude[1], 10); } S.EndMultiColumn(); S.StartMultiColumn(2, wxCENTER); { S.TieTextBox( _("Length (seconds)"),length, 10 ); } S.EndMultiColumn(); }
void RepeatDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST); vld.SetIncludes(wxArrayString(12, numbers)); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Dominic Mazzoni && Vaughan Johnson")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { mRepeatCount = S.Id(ID_REPEAT_TEXT).AddTextBox(_("Number of times to repeat:"), wxT(""), 12); mRepeatCount->SetValidator(vld); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, true); { mTotalTime = S.AddVariableText(_("New selection length: hh:mm:ss")); } S.EndHorizontalLay(); }
void FindClippingDialog::PopulateOrExchange(ShuttleGui & S) { S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Leland Lucius")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartMultiColumn(2, wxALIGN_CENTER); { S.TieTextBox(_("Start threshold (samples):"), mEffect->mStart, 10)->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); S.TieTextBox(_("Stop threshold (samples):"), mEffect->mStop, 10)->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); } S.EndMultiColumn(); }
void PaulstretchDialog::PopulateOrExchange(ShuttleGui & S){ S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Nasca Octavian Paul")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); S.EndHorizontalLay(); S.StartMultiColumn(2, wxALIGN_CENTER); { /* i18n-hint: This is how many times longer the sound will be, e.g. applying * the effect to a 1-second sample, with the default Stretch Factor of 10.0 * will give an (approximately) 10 second sound */ m_pTextCtrl_Amount = S.AddTextBox(_("Stretch Factor:"),wxT("10.0"),10); m_pTextCtrl_Amount->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_pTextCtrl_TimeResolution= S.AddTextBox(_("Time Resolution (seconds):"), wxT("0.25"),10); m_pTextCtrl_TimeResolution->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); } S.EndMultiColumn(); };
void EchoDialog::PopulateOrExchange(ShuttleGui & S) { S.StartHorizontalLay(wxCENTER, false); { /* i18n-hint: && in here is an escape character to get a single & on * screen, so keep it as is */ S.AddTitle(_("by Dominic Mazzoni && Vaughan Johnson")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartMultiColumn(2, wxALIGN_CENTER); { m_pTextCtrl_Delay = S.AddTextBox(_("Delay time (seconds):"), wxT("1.0"), 10); m_pTextCtrl_Delay->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_pTextCtrl_Decay = S.AddTextBox(_("Decay factor:"), wxT("0.5"), 10); m_pTextCtrl_Decay->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); } S.EndMultiColumn(); }
void TruncSilenceDialog::PopulateOrExchange(ShuttleGui & S) { S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Lynn Allan")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartThreeColumn(); { wxArrayString choices(Enums::NumDbChoices, Enums::GetDbChoices()); S.Id( ID_LONGEST_SILENCE_TEXT ).TieTextBox(_("Max silence duration:"), mEffect->mTruncLongestAllowedSilentMs, 10); S.AddUnits( _("milliseconds") ); //S.AddUnits(_("(9999999 or greater is off)")); S.TieChoice(_("Threshold for silence:"), mEffect->mTruncDbChoiceIndex, &choices); } S.EndTwoColumn(); pWarning = S.AddVariableText( wxT("") ); }
void AmplifyDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST); vld.SetIncludes(wxArrayString(12, numbers)); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Dominic Mazzoni")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); // Amplitude S.StartMultiColumn(2, wxCENTER); { mAmpT = S.Id(ID_AMP_TEXT).AddTextBox(_("Amplification (dB):"), wxT(""), 12); mAmpT->SetValidator(vld); } S.EndMultiColumn(); // Amplitude S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); mAmpS = S.Id(ID_AMP_SLIDER).AddSlider(wxT(""), 0, AMP_MAX, AMP_MIN); mAmpS->SetName(_("Amplification (dB)")); } S.EndHorizontalLay(); // Peek S.StartMultiColumn(2, wxCENTER); { mPeakT = S.Id(ID_PEAK_TEXT).AddTextBox(_("New Peak Amplitude (dB):"), wxT(""), 12); // mPeakT->SetValidator(vld); } S.EndMultiColumn(); // Clipping S.StartHorizontalLay(wxCENTER); { mClip = S.Id(ID_CLIP_CHECKBOX).AddCheckBox(_("Allow clipping"), wxT("false")); } S.EndHorizontalLay(); return; }
/// Populates more complex dialog that has a chirp. void ToneGenDialog::PopulateOrExchangeExtended( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Waveform:"), waveform, waveforms); S.SetSizeHints(-1, -1); } S.EndMultiColumn(); S.StartMultiColumn(3, wxCENTER); { S.AddFixedText(wxT("")); S.AddTitle(_("Start")); S.AddTitle(_("End")); // The added colon to improve visual consistency was placed outside // the translatable strings to avoid breaking translations close to 2.0. // TODO: Make colon part of the translatable string after 2.0. S.TieNumericTextBox(_("Frequency (Hz)") + wxString(wxT(":")), frequency[0], 10)->SetName(_("Frequency Hertz Start")); S.TieNumericTextBox(wxT(""), frequency[1], 10)->SetName(_("Frequency Hertz End")); S.TieNumericTextBox(_("Amplitude (0-1)") + wxString(wxT(":")), amplitude[0], 10)->SetName(_("Amplitude Start")); S.TieNumericTextBox(wxT(""), amplitude[1], 10)->SetName(_("Amplitude End")); } S.EndMultiColumn(); S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Interpolation:"), interpolation, interpolations); S.AddPrompt(_("Duration") + wxString(wxT(":"))); if (mToneDurationT == NULL) { mToneDurationT = new TimeTextCtrl(this, wxID_ANY, wxT(""), mDuration, mEffect->mProjectRate, wxDefaultPosition, wxDefaultSize, true); mToneDurationT->SetName(_("Duration")); mToneDurationT->SetFormatString(mToneDurationT->GetBuiltinFormat(isSelection==true?(_("hh:mm:ss + samples")):(_("seconds")))); mToneDurationT->EnableMenu(); } S.AddWindow(mToneDurationT); } S.EndMultiColumn(); }
void DtmfDialog::PopulateOrExchange( ShuttleGui & S ) { wxTextValidator vldDtmf(wxFILTER_INCLUDE_CHAR_LIST); vldDtmf.SetIncludes(wxArrayString(42, dtmfSymbols)); S.AddTitle(_("by Salvo Ventura")); S.StartMultiColumn(2, wxEXPAND); { mDtmfStringT = S.Id(ID_DTMF_STRING_TEXT).AddTextBox(_("DTMF sequence:"), wxT(""), 10); mDtmfStringT->SetValidator(vldDtmf); // The added colon to improve visual consistency was placed outside // the translatable strings to avoid breaking translations close to 2.0. // TODO: Make colon part of the translatable string after 2.0. S.TieNumericTextBox(_("Amplitude (0-1)") + wxString(wxT(":")), dAmplitude, 10); S.AddPrompt(_("Duration:")); if (mDtmfDurationT == NULL) { mDtmfDurationT = new TimeTextCtrl(this, ID_DTMF_DURATION_TEXT, wxT(""), dDuration, mEffect->mProjectRate, wxDefaultPosition, wxDefaultSize, true); /* use this instead of "seconds" because if a selection is passed to the * effect, I want it (dDuration) to be used as the duration, and with * "seconds" this does not always work properly. For example, it rounds * down to zero... */ mDtmfDurationT->SetName(_("Duration")); mDtmfDurationT->SetFormatString(mDtmfDurationT->GetBuiltinFormat(dIsSelection==true?(_("hh:mm:ss + samples")):(_("hh:mm:ss + milliseconds")))); mDtmfDurationT->EnableMenu(); } S.AddWindow(mDtmfDurationT); S.AddFixedText(_("Tone/silence ratio:"), false); S.SetStyle(wxSL_HORIZONTAL | wxEXPAND); mDtmfDutyS = S.Id(ID_DTMF_DUTYCYCLE_SLIDER).AddSlider(wxT(""), (int)dDutyCycle, DUTY_MAX, DUTY_MIN); S.SetSizeHints(-1,-1); } S.EndMultiColumn(); S.StartMultiColumn(2, wxCENTER); { S.AddFixedText(_("Duty cycle:"), false); mDtmfDutyT = S.Id(ID_DTMF_DUTYCYCLE_TEXT).AddVariableText(wxString::Format(wxT("%.1f %%"), (float) dDutyCycle/DUTY_SCALE), false); S.AddFixedText(_("Tone duration:"), false); mDtmfSilenceT = S.Id(ID_DTMF_TONELEN_TEXT).AddVariableText(wxString::Format(wxString(wxT("%d ")) + _("ms"), (int) dTone * 1000), false); S.AddFixedText(_("Silence duration:"), false); mDtmfToneT = S.Id(ID_DTMF_SILENCE_TEXT).AddVariableText(wxString::Format(wxString(wxT("%d ")) + _("ms"), (int) dSilence * 1000), false); } S.EndMultiColumn(); }
void ChangeSpeedDialog::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(10); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Change Speed, affecting both Tempo and Pitch") + wxString(wxT("\n\n")) + _("by Vaughan Johnson && Dominic Mazzoni") + wxString(wxT("\n")) + _("using SampleRate, by Erik de Castro Lopo")); } S.EndHorizontalLay(); S.SetBorder(5); // S.StartMultiColumn(2, wxCENTER); { mpTextCtrl_PercentChange = S.Id(ID_TEXT_PERCENTCHANGE).AddTextBox(_("Percent Change:"), wxT(""), 12); wxTextValidator validator(wxFILTER_NUMERIC); mpTextCtrl_PercentChange->SetValidator(validator); } S.EndMultiColumn(); // S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); mpSlider_PercentChange = S.Id(ID_SLIDER_PERCENTCHANGE).AddSlider(wxT(""), 0, (int)PERCENTCHANGE_MAX, (int)PERCENTCHANGE_MIN); mpSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); // S.StartMultiColumn(5, wxCENTER); { S.AddUnits(_("Standard Vinyl RPM:")); wxArrayString rpmStrings; rpmStrings.Add(wxT("33 1/3")); rpmStrings.Add(wxT("45")); rpmStrings.Add(wxT("78")); /* i18n-hint: n/a is an English abbreviation meaning "not applicable". */ rpmStrings.Add(_("n/a")); mpChoice_FromVinyl = S.Id(ID_CHOICE_FROMVINYL).AddChoice(_("from"), wxT(""), &rpmStrings); mpChoice_FromVinyl->SetName(_("From RPM")); mpChoice_FromVinyl->SetSizeHints(100, -1); mpChoice_ToVinyl = S.Id(ID_CHOICE_TOVINYL).AddChoice(_("to"), wxT(""), &rpmStrings); mpChoice_ToVinyl->SetName(_("To RPM")); mpChoice_ToVinyl->SetSizeHints(100, -1); } S.EndMultiColumn(); }
void PopulateOrExchange(ShuttleGui & S) { wxString text; S.SetBorder(10); S.StartVerticalLay(true); { text.Printf(_("Audacity needs the file '%s' to import and export audio via FFmpeg."), mName.c_str()); S.AddTitle(text); S.SetBorder(3); S.StartHorizontalLay(wxALIGN_LEFT, true); { text.Printf(_("Location of '%s':"), mName.c_str()); S.AddTitle(text); } S.EndHorizontalLay(); S.StartMultiColumn(2, wxEXPAND); S.SetStretchyCol(0); { if (mLibPath.GetFullPath().IsEmpty()) { text.Printf(_("To find '%s', click here -->"), mName.c_str()); mPathText = S.AddTextBox(wxT(""), text, 0); } else { mPathText = S.AddTextBox(wxT(""), mLibPath.GetFullPath(), 0); } S.Id(ID_FFMPEG_BROWSE).AddButton(_("Browse..."), wxALIGN_RIGHT); S.AddVariableText(_("To get a free copy of FFmpeg, click here -->"), true); S.Id(ID_FFMPEG_DLOAD).AddButton(_("Download"), wxALIGN_RIGHT); } S.EndMultiColumn(); S.AddStandardButtons(); } S.EndVerticalLay(); Layout(); Fit(); SetMinSize(GetSize()); Center(); return; }
void ClickRemovalDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST); vld.SetIncludes(wxArrayString(10, numbers)); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Click and Pop Removal by Craig DeForest")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartMultiColumn(3, wxEXPAND); S.SetStretchyCol(2); { // Threshold mThreshT = S.Id(ID_THRESH_TEXT).AddTextBox(_("Select threshold (lower is more sensitive):"), wxT(""), 10); mThreshT->SetValidator(vld); S.SetStyle(wxSL_HORIZONTAL); mThreshS = S.Id(ID_THRESH_SLIDER).AddSlider(wxT(""), 0, MAX_THRESHOLD); mThreshS->SetName(_("Select threshold")); mThreshS->SetRange(MIN_THRESHOLD, MAX_THRESHOLD); #if defined(__WXGTK__) // Force a minimum size since wxGTK allows it to go to zero mThreshS->SetMinSize(wxSize(100, -1)); #endif // Click width mWidthT = S.Id(ID_WIDTH_TEXT).AddTextBox(_("Max spike width (higher is more sensitive):"), wxT(""), 10); mWidthT->SetValidator(vld); S.SetStyle(wxSL_HORIZONTAL); mWidthS = S.Id(ID_WIDTH_SLIDER).AddSlider(wxT(""), 0, MAX_CLICK_WIDTH); mWidthS->SetName(_("Max spike width")); mWidthS->SetRange(MIN_CLICK_WIDTH, MAX_CLICK_WIDTH); #if defined(__WXGTK__) // Force a minimum size since wxGTK allows it to go to zero mWidthS->SetMinSize(wxSize(100, -1)); #endif } S.EndMultiColumn(); return; }
void DtmfDialog::PopulateOrExchange( ShuttleGui & S ) { wxTextValidator vldDtmf(wxFILTER_INCLUDE_CHAR_LIST); vldDtmf.SetIncludes(wxArrayString(20, dtmfSymbols)); S.AddTitle(_("by Salvo Ventura (2006)")); S.StartMultiColumn(2, wxEXPAND); { mDtmfStringT = S.Id(ID_DTMF_STRING_TEXT).AddTextBox(_("DTMF sequence:"), wxT(""), 10); mDtmfStringT->SetValidator(vldDtmf); S.AddPrompt(_("DTMF duration:")); mDtmfDurationT = new TimeTextCtrl(this, ID_DTMF_DURATION_TEXT, /* use this instead of "seconds" because if a selection is passed to the effect, I want it (dDuration) to be used as the duration, and with "seconds" this does not always work properly. For example, it rounds down to zero... */ TimeTextCtrl::GetBuiltinFormat(dIsSelection==true?(wxT("hh:mm:ss + samples")):(wxT("seconds"))), dDuration, 44100, wxDefaultPosition, wxDefaultSize, true); S.AddWindow(mDtmfDurationT); mDtmfDurationT->EnableMenu(); S.AddFixedText(_("Tone/silence ratio:"), false); S.SetStyle(wxSL_HORIZONTAL | wxEXPAND); mDtmfDutyS = S.Id(ID_DTMF_DUTYCYCLE_SLIDER).AddSlider(wxT(""), (int)dDutyCycle, DUTY_MAX); mDtmfDutyS->SetRange(DUTY_MIN, DUTY_MAX); S.SetSizeHints(-1,-1); } S.EndMultiColumn(); S.StartMultiColumn(2, wxCENTER); { S.AddFixedText(_("Duty cycle:"), false); mDtmfDutyT = S.Id(ID_DTMF_DUTYCYCLE_TEXT).AddVariableText(wxString::Format(wxT("%.1f %%"), (float) dDutyCycle/DUTY_SCALE), false); S.AddFixedText(_("Tone duration:"), false); mDtmfSilenceT = S.Id(ID_DTMF_TONELEN_TEXT).AddVariableText(wxString::Format(wxString(wxT("%d ")) + _("ms"), (int) dTone * 1000), false); S.AddFixedText(_("Silence duration:"), false); mDtmfToneT = S.Id(ID_DTMF_SILENCE_TEXT).AddVariableText(wxString::Format(wxString(wxT("%d ")) + _("ms"), (int) dSilence * 1000), false); } S.EndMultiColumn(); }
void BassBoostDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator vld(wxFILTER_INCLUDE_CHAR_LIST); vld.SetIncludes(wxArrayString(10, numbers)); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Nasca Octavian Paul")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartMultiColumn(3, wxEXPAND); S.SetStretchyCol(2); { // Frequency mFreqT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Frequency (Hz):"), wxT(""), 10); mFreqT->SetValidator(vld); S.SetStyle(wxSL_HORIZONTAL); mFreqS = S.Id(ID_FREQ_SLIDER).AddSlider(wxT(""), 0, FREQ_MAX); mFreqS->SetName(_("Frequency Hertz")); mFreqS->SetRange(FREQ_MIN, FREQ_MAX); // Boost mBoostT = S.Id(ID_BOOST_TEXT).AddTextBox(_("Boost (dB):"), wxT(""), 10); mBoostT->SetValidator(vld); S.SetStyle(wxSL_HORIZONTAL); mBoostS = S.Id(ID_BOOST_SLIDER).AddSlider(wxT(""), 0, BOOST_MAX); mBoostS->SetName(_("Boost dB")); mBoostS->SetRange(BOOST_MIN, BOOST_MAX); } S.EndMultiColumn(); return; }
void NormalizeDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator vld(wxFILTER_NUMERIC); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("by Dominic Mazzoni")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxCENTER, false); { // Add a little space } S.EndHorizontalLay(); S.StartTwoColumn(); { S.StartVerticalLay(false); { mDCCheckBox = S.Id(ID_DC_REMOVE).AddCheckBox(_("Remove any DC offset (center on 0.0 vertically)"), mDC ? wxT("true") : wxT("false")); mGainCheckBox = S.Id(ID_NORMALIZE_AMPLITUDE).AddCheckBox(_("Normalize maximum amplitude to:"), mGain ? wxT("true") : wxT("false")); S.StartHorizontalLay(wxALIGN_CENTER, false); { mLevelTextCtrl = S.Id(ID_LEVEL_TEXT).AddTextBox(wxT(""), wxT(""), 10); mLevelTextCtrl->SetValidator(vld); mLevelTextCtrl->SetName(_("Maximum amplitude dB")); mLeveldB = S.AddVariableText(_("dB"), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT); mWarning = S.AddVariableText( wxT(""), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT); } S.EndHorizontalLay(); mStereoIndCheckBox = S.AddCheckBox(_("Normalize stereo channels independently"), mStereoInd ? wxT("true") : wxT("false")); } S.EndVerticalLay(); } S.EndTwoColumn(); }
void TagsEditor::PopulateOrExchange(ShuttleGui & S) { bool bShow; gPrefs->Read(wxT("/AudioFiles/ShowId3Dialog"), &bShow, true ); S.StartVerticalLay(); { S.StartHorizontalLay(wxALIGN_LEFT, 0); { S.AddUnits(_("Use arrow keys (or ENTER key after editing) to navigate fields.")); } S.EndHorizontalLay(); if (mGrid == NULL) { mGrid = safenew Grid(S.GetParent(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER); mGrid->RegisterDataType(wxT("Combo"), (mStringRenderer = safenew wxGridCellStringRenderer), (mComboEditor = safenew ComboEditor(wxArrayString(), true))); mGrid->SetColLabelSize(mGrid->GetDefaultRowSize()); auto cs = names(); // Build the initial (empty) grid mGrid->CreateGrid(0, 2); mGrid->SetRowLabelSize(0); mGrid->SetDefaultCellAlignment(wxALIGN_LEFT, wxALIGN_CENTER); mGrid->SetColLabelValue(0, _("Tag")); mGrid->SetColLabelValue(1, _("Value")); // Resize the name column and set default row height. wxComboBox tc(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, cs); mGrid->SetColSize(0, tc.GetSize().x); mGrid->SetColMinimalWidth(0, tc.GetSize().x); } S.Prop(1); S.AddWindow(mGrid, wxEXPAND | wxALL); S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(AddID).AddButton(_("&Add")); S.Id(RemoveID).AddButton(_("&Remove")); S.AddTitle( {} ); S.Id(ClearID).AddButton(_("Cl&ear")); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTRE, 0); { S.StartStatic(_("Genres")); { S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(EditID).AddButton(_("E&dit...")); S.Id(ResetID).AddButton(_("Rese&t...")); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Template")); { S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(LoadID).AddButton(_("&Load...")); S.Id(SaveID).AddButton(_("&Save...")); S.AddTitle( {} ); S.Id(SaveDefaultsID).AddButton(_("Set De&fault")); } S.EndMultiColumn(); } S.EndStatic(); } S.EndHorizontalLay(); S.StartHorizontalLay(wxALIGN_LEFT, 0); { S.Id( DontShowID ).AddCheckBox( _("Don't show this when exporting audio"), !bShow ); } S.EndHorizontalLay(); } S.EndVerticalLay(); S.AddStandardButtons(eOkButton | eCancelButton | eHelpButton); }
void EffectChangePitch::PopulateOrExchange(ShuttleGui & S) { DeduceFrequencies(); // Set frequency-related control values based on sample. wxArrayString pitch; for (int ii = 0; ii < 12; ++ii) pitch.Add( PitchName( ii, PitchNameChoice::Both ) ); S.SetBorder(5); S.StartVerticalLay(0); { S.StartVerticalLay(); { S.AddTitle(_("Change Pitch without Changing Tempo")); S.AddTitle( wxString::Format(_("Estimated Start Pitch: %s%d (%.3f Hz)"), pitch[m_nFromPitch], m_nFromOctave, m_FromFrequency)); } S.EndVerticalLay(); /* i18n-hint: (noun) Musical pitch.*/ S.StartStatic(_("Pitch")); { S.StartMultiColumn(6, wxALIGN_CENTER); // 6 controls, because each AddChoice adds a wxStaticText and a wxChoice. { m_pChoice_FromPitch = S.Id(ID_FromPitch).AddChoice(_("from"), wxT(""), &pitch); m_pChoice_FromPitch->SetName(_("from")); m_pChoice_FromPitch->SetSizeHints(80, -1); m_pSpin_FromOctave = S.Id(ID_FromOctave).AddSpinCtrl( {}, m_nFromOctave, INT_MAX, INT_MIN); m_pSpin_FromOctave->SetName(_("from Octave")); m_pSpin_FromOctave->SetSizeHints(50, -1); m_pChoice_ToPitch = S.Id(ID_ToPitch).AddChoice(_("to"), wxT(""), &pitch); m_pChoice_ToPitch->SetName(_("to")); m_pChoice_ToPitch->SetSizeHints(80, -1); m_pSpin_ToOctave = S.Id(ID_ToOctave).AddSpinCtrl( {}, m_nToOctave, INT_MAX, INT_MIN); m_pSpin_ToOctave->SetName(_("to Octave")); m_pSpin_ToOctave->SetSizeHints(50, -1); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTER); { FloatingPointValidator<double> vldSemitones(2, &m_dSemitonesChange, NumValidatorStyle::TWO_TRAILING_ZEROES); m_pTextCtrl_SemitonesChange = S.Id(ID_SemitonesChange).AddTextBox(_("Semitones (half-steps):"), wxT(""), 12); m_pTextCtrl_SemitonesChange->SetName(_("Semitones (half-steps)")); m_pTextCtrl_SemitonesChange->SetValidator(vldSemitones); } S.EndHorizontalLay(); } S.EndStatic(); S.StartStatic(_("Frequency")); { S.StartMultiColumn(5, wxALIGN_CENTER); // 5, because AddTextBox adds a wxStaticText and a wxTextCtrl. { FloatingPointValidator<double> vldFromFrequency(3, &m_FromFrequency, NumValidatorStyle::THREE_TRAILING_ZEROES); vldFromFrequency.SetMin(0.0); m_pTextCtrl_FromFrequency = S.Id(ID_FromFrequency).AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromFrequency->SetName(_("from (Hz)")); m_pTextCtrl_FromFrequency->SetValidator(vldFromFrequency); FloatingPointValidator<double> vldToFrequency(3, &m_ToFrequency, NumValidatorStyle::THREE_TRAILING_ZEROES); vldToFrequency.SetMin(0.0); m_pTextCtrl_ToFrequency = S.Id(ID_ToFrequency).AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToFrequency->SetName(_("to (Hz)")); m_pTextCtrl_ToFrequency->SetValidator(vldToFrequency); S.AddUnits(_("Hz")); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTER); { FloatingPointValidator<double> vldPercentage(3, &m_dPercentChange, NumValidatorStyle::THREE_TRAILING_ZEROES); vldPercentage.SetRange(MIN_Percentage, MAX_Percentage); m_pTextCtrl_PercentChange = S.Id(ID_PercentChange).AddTextBox(_("Percent Change:"), wxT(""), 12); m_pTextCtrl_PercentChange->SetValidator(vldPercentage); } S.EndHorizontalLay(); S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_PercentChange = S.Id(ID_PercentChange) .AddSlider( {}, 0, (int)kSliderMax, (int)MIN_Percentage); m_pSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); } S.EndStatic(); #if USE_SBSMS S.StartMultiColumn(2); { mUseSBSMSCheckBox = S.AddCheckBox(_("Use high quality stretching (slow)"), mUseSBSMS? wxT("true") : wxT("false")); mUseSBSMSCheckBox->SetValidator(wxGenericValidator(&mUseSBSMS)); } S.EndMultiColumn(); #endif } S.EndVerticalLay(); return; }
void NoiseRemovalDialog::PopulateOrExchange(ShuttleGui & S) { wxString step1Label; wxString step1Prompt; wxString step2Label; wxString step2Prompt; bool bCleanSpeechMode = false; AudacityProject * project = GetActiveProject(); if( project && project->GetCleanSpeechMode() ) { bCleanSpeechMode = true; } if (bCleanSpeechMode) { // We're not marking these as translatable because most people // don't use CleanSpeech so it'd be a waste of time for most // translators step1Label = wxT("Preparation Step"); step1Prompt = wxT("Listen carefully to section with some speech " wxT("and some silence to check before/after.\n") wxT("Select a few seconds of just noise ('thinner' ") wxT("part of wave pattern usually between\nspoken ") wxT("phrases or during pauses) so Audacity knows ") wxT("what to filter out, then click")); step2Label = wxT("Actually Remove Noise"); step2Prompt = wxT("Select what part of the audio you want filtered " wxT("(Ctrl-A = All), chose how much noise\nyou want ") wxT("filtered out with sliders below, and then click ") wxT("'OK' to remove noise.\nFind best setting with ") wxT("Ctrl-Z to Undo, Select All, and change ") wxT("the slider positions.")); } else { step1Label = _("Step 1"); step1Prompt = _("Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"); step2Label = _("Step 2"); step2Prompt = _("Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to remove noise.\n"); } S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Noise Removal by Dominic Mazzoni")); } S.EndHorizontalLay(); S.StartStatic(step1Label); { S.AddVariableText(step1Prompt); m_pButton_GetProfile = S.Id(ID_BUTTON_GETPROFILE). AddButton(_("Get Noise Profile")); } S.EndStatic(); S.StartStatic(step2Label); { S.AddVariableText(step2Prompt); S.StartMultiColumn(3, wxEXPAND); S.SetStretchyCol(2); { mGainT = S.Id(ID_GAIN_TEXT).AddTextBox(_("Noise reduction (dB):"), wxT(""), 0); S.SetStyle(wxSL_HORIZONTAL); mGainS = S.Id(ID_GAIN_SLIDER).AddSlider(wxT(""), 0, GAIN_MAX); mGainS->SetName(_("Noise reduction")); mGainS->SetRange(GAIN_MIN, GAIN_MAX); mGainS->SetSizeHints(150, -1); mFreqT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Frequency smoothing (Hz):"), wxT(""), 0); S.SetStyle(wxSL_HORIZONTAL); mFreqS = S.Id(ID_FREQ_SLIDER).AddSlider(wxT(""), 0, FREQ_MAX); mFreqS->SetName(_("Frequency smoothing")); mFreqS->SetRange(FREQ_MIN, FREQ_MAX); mFreqS->SetSizeHints(150, -1); mTimeT = S.Id(ID_FREQ_TEXT).AddTextBox(_("Attack/decay time (secs):"), wxT(""), 0); S.SetStyle(wxSL_HORIZONTAL); mTimeS = S.Id(ID_TIME_SLIDER).AddSlider(wxT(""), 0, TIME_MAX); mTimeS->SetName(_("Attach/decay time")); mTimeS->SetRange(TIME_MIN, TIME_MAX); mTimeS->SetSizeHints(150, -1); } S.EndMultiColumn(); } S.EndStatic(); }
void TagsEditor::PopulateOrExchange(ShuttleGui & S) { S.StartVerticalLay(); { S.StartHorizontalLay(wxALIGN_LEFT, false); { S.AddUnits(_("Use arrow keys (or RETURN key after editing) to navigate fields.")); } S.EndHorizontalLay(); if (mGrid == NULL) { mGrid = new Grid(S.GetParent(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER); mStringRenderer = new wxGridCellStringRenderer; mComboEditor = new ComboEditor(wxArrayString(), true); mGrid->RegisterDataType(wxT("Combo"), mStringRenderer, mComboEditor); mGrid->SetColLabelSize(mGrid->GetDefaultRowSize()); wxArrayString cs(WXSIZEOF(names), names); // Build the initial (empty) grid mGrid->CreateGrid(0, 2); mGrid->SetRowLabelSize(0); mGrid->SetDefaultCellAlignment(wxALIGN_LEFT, wxALIGN_CENTER); mGrid->SetColLabelValue(0, _("Tag")); mGrid->SetColLabelValue(1, _("Value")); // Resize the name column and set default row height. wxComboBox tc(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, cs); mGrid->SetColSize(0, tc.GetSize().x); mGrid->SetColMinimalWidth(0, tc.GetSize().x); } S.Prop(true); S.AddWindow(mGrid, wxEXPAND | wxALL); S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(AddID).AddButton(_("&Add")); S.Id(RemoveID).AddButton(_("&Remove")); S.AddTitle(wxT(" ")); S.Id(ClearID).AddButton(_("Cl&ear")); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTRE, false); { S.StartStatic(_("Genres")); { S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(EditID).AddButton(_("E&dit...")); S.Id(ResetID).AddButton(_("Rese&t...")); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Template")); { S.StartMultiColumn(4, wxALIGN_CENTER); { S.Id(LoadID).AddButton(_("&Load...")); S.Id(SaveID).AddButton(_("&Save...")); S.AddTitle(wxT(" ")); S.Id(SaveDefaultsID).AddButton(_("Set De&fault")); } S.EndMultiColumn(); } S.EndStatic(); } S.EndHorizontalLay(); } S.EndVerticalLay(); S.AddStandardButtons(eOkButton | eCancelButton); }
void ChangePitchDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator nullvld(wxFILTER_INCLUDE_CHAR_LIST); wxTextValidator numvld(wxFILTER_NUMERIC); wxArrayString pitch; pitch.Add(wxT("C")); pitch.Add(wxT("C#/Db")); pitch.Add(wxT("D")); pitch.Add(wxT("D#/Eb")); pitch.Add(wxT("E")); pitch.Add(wxT("F")); pitch.Add(wxT("F#/Gb")); pitch.Add(wxT("G")); pitch.Add(wxT("G#/Ab")); pitch.Add(wxT("A")); pitch.Add(wxT("A#/Bb")); pitch.Add(wxT("B")); S.SetBorder(10); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Change Pitch without Changing Tempo") + wxString(wxT("\n\n")) + _("by Vaughan Johnson && Dominic Mazzoni") + wxString(wxT("\n")) + _("using SoundTouch, by Olli Parviainen")); } S.EndHorizontalLay(); S.SetBorder(5); // S.StartMultiColumn(6, wxCENTER); { // S.AddUnits(_("Pitch:")); S.StartHorizontalLay(wxALIGN_CENTER_VERTICAL); { m_pChoice_FromPitch = S.Id(ID_CHOICE_FROMPITCH) .AddChoice(_("From:"), wxT(""), &pitch); m_pChoice_FromPitch->SetName(_("From Pitch")); m_pChoice_FromPitch->SetSizeHints(100, -1); } S.EndHorizontalLay(); S.StartStatic(wxT("")); { S.StartVerticalLay(); { S.SetBorder(3); m_pRadioButton_PitchUp = S.Id(ID_RADIOBUTTON_PITCHUPDOWN) .AddRadioButton(_("Up")); m_pRadioButton_PitchDown = S.Id(ID_RADIOBUTTON_PITCHUPDOWN) .AddRadioButtonToGroup(_("Down")); S.SetBorder(5); } S.EndVerticalLay(); } S.EndStatic(); S.StartHorizontalLay(wxALIGN_CENTER_VERTICAL); { m_pChoice_ToPitch = S.Id(ID_CHOICE_TOPITCH) .AddChoice(_("To:"), wxT(""), &pitch); m_pChoice_ToPitch->SetName(_("To Pitch")); m_pChoice_ToPitch->SetSizeHints(100, -1); } S.EndHorizontalLay(); } S.EndMultiColumn(); // S.StartMultiColumn(2, wxCENTER); { // S.AddPrompt(_("Semitones (half-steps):")); S.StartHorizontalLay(wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, false); { m_pTextCtrl_SemitonesChange = S.Id(ID_TEXT_SEMITONESCHANGE) .AddTextBox(wxT(""), wxT(""), 12); m_pTextCtrl_SemitonesChange->SetName(_("Semitones in half-steps")); m_pTextCtrl_SemitonesChange->SetValidator(numvld); } S.EndHorizontalLay(); // S.AddPrompt(_("Frequency (Hz):")); S.StartHorizontalLay(wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, false); { m_pTextCtrl_FromFrequency = S.Id(ID_TEXT_FROMFREQUENCY) .AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromFrequency->SetName(_("From frequency in hertz")); m_pTextCtrl_FromFrequency->SetValidator(nullvld); m_pTextCtrl_ToFrequency = S.Id(ID_TEXT_TOFREQUENCY) .AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToFrequency->SetName(_("To frequency in seconds")); m_pTextCtrl_ToFrequency->SetValidator(numvld); } S.EndHorizontalLay(); // S.AddPrompt(_("Percent Change:")); S.StartHorizontalLay(wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, false); { m_pTextCtrl_PercentChange = S.Id(ID_TEXT_PERCENTCHANGE) .AddTextBox(wxT(""), wxT(""), 12); m_pTextCtrl_PercentChange->SetName(_("Percent Change")); m_pTextCtrl_PercentChange->SetValidator(numvld); } S.EndHorizontalLay(); } S.EndMultiColumn(); // S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_PercentChange = S.Id(ID_SLIDER_PERCENTCHANGE) .AddSlider(wxT(""), 0, (int)PERCENTCHANGE_MAX, (int)PERCENTCHANGE_MIN); m_pSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); return; }
void EffectToneGen::PopulateOrExchange(ShuttleGui & S) { wxTextCtrl *t; S.StartMultiColumn(2, wxCENTER); { wxChoice *c = S.AddChoice(_("Waveform:"), wxT(""), &mWaveforms); c->SetValidator(wxGenericValidator(&mWaveform)); if (mChirp) { S.AddFixedText(wxT("")); S.StartHorizontalLay(wxEXPAND); { S.StartHorizontalLay(wxLEFT, 50); { S.AddTitle(_("Start")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxLEFT, 50); { S.AddTitle(_("End")); } S.EndHorizontalLay(); } S.EndHorizontalLay(); S.AddPrompt(_("Frequency (Hz):")); S.StartHorizontalLay(wxEXPAND); { S.StartHorizontalLay(wxLEFT, 50); { FloatingPointValidator<double> vldStartFreq(6, &mFrequency[0], NUM_VAL_NO_TRAILING_ZEROES); vldStartFreq.SetRange(MIN_StartFreq, GetActiveProject()->GetRate() / 2.0); t = S.AddTextBox(wxT(""), wxT(""), 12); t->SetName(_("Frequency Hertz Start")); t->SetValidator(vldStartFreq); } S.EndHorizontalLay(); S.StartHorizontalLay(wxLEFT, 50); { FloatingPointValidator<double> vldEndFreq(6, &mFrequency[1], NUM_VAL_NO_TRAILING_ZEROES); vldEndFreq.SetRange(MIN_EndFreq, GetActiveProject()->GetRate() / 2.0); t = S.AddTextBox(wxT(""), wxT(""), 12); t->SetName(_("Frequency Hertz End")); t->SetValidator(vldEndFreq); } S.EndHorizontalLay(); } S.EndHorizontalLay(); S.AddPrompt(_("Amplitude (Hz):")); S.StartHorizontalLay(wxEXPAND); { S.StartHorizontalLay(wxLEFT, 50); { FloatingPointValidator<double> vldStartAmp(6, &mAmplitude[0], NUM_VAL_NO_TRAILING_ZEROES); vldStartAmp.SetRange(MIN_StartAmp, MAX_StartAmp); t = S.AddTextBox(wxT(""), wxT(""), 12); t->SetName(_("Amplitude Start")); t->SetValidator(vldStartAmp); } S.EndHorizontalLay(); S.StartHorizontalLay(wxLEFT, 50); { FloatingPointValidator<double> vldEndAmp(6, &mAmplitude[1], NUM_VAL_NO_TRAILING_ZEROES); vldEndAmp.SetRange(MIN_EndAmp, MAX_EndAmp); t = S.AddTextBox(wxT(""), wxT(""), 12); t->SetName(_("Amplitude End")); t->SetValidator(vldEndAmp); } S.EndHorizontalLay(); } S.EndHorizontalLay(); c = S.AddChoice(_("Interpolation:"), wxT(""), &mInterpolations); c->SetValidator(wxGenericValidator(&mInterpolation)); } else { FloatingPointValidator<double> vldFrequency(6, &mFrequency[0], NUM_VAL_NO_TRAILING_ZEROES); vldFrequency.SetRange(MIN_Frequency, GetActiveProject()->GetRate() / 2.0); t = S.AddTextBox(_("Frequency (Hz):"), wxT(""), 12); t->SetValidator(vldFrequency); FloatingPointValidator<double> vldAmplitude(6, &mAmplitude[0], NUM_VAL_NO_TRAILING_ZEROES); vldAmplitude.SetRange(MIN_Amplitude, MAX_Amplitude); t = S.AddTextBox(_("Amplitude (0-1):"), wxT(""), 12); t->SetValidator(vldAmplitude); } bool isSelection; double duration = GetDuration(&isSelection); S.AddPrompt(_("Duration:")); mToneDurationT = new NumericTextCtrl(NumericConverter::TIME, S.GetParent(), wxID_ANY, isSelection ? _("hh:mm:ss + samples") : _("hh:mm:ss + milliseconds"), duration, mProjectRate, wxDefaultPosition, wxDefaultSize, true); mToneDurationT->SetName(_("Duration")); mToneDurationT->EnableMenu(); S.AddWindow(mToneDurationT, wxALIGN_LEFT | wxALL); } S.EndMultiColumn(); return; }
void QualityPrefs::PopulateOrExchange( ShuttleGui & S ) { S.SetBorder( 2 ); S.StartStatic(_("Sampling"),0 ); { S.StartTwoColumn(); S.AddPrompt( _("Default Sample Rate:") ); DefineSampleRateControl( S ); // A tricky control. S.TieChoice(_("Default Sample Format:"), wxT("/SamplingRate/DefaultProjectSampleFormat"), floatSample, mmSampleFormatNames, mmSampleFormatLabels ); // JKC For the old style of layout, uncomment the next line. // #define OLD_STYLE_LAYOUT // Once we've chosen which layout to use we'll remove the // other one. (June/2006). #ifdef OLD_STYLE_LAYOUT S.TieChoice(_("Real-time sample rate converter:"), wxT("/Quality/LibresampleSampleRateConverter"), (int)0, mConverterNames, mConverterLabels), S.TieChoice(_("High-quality sample rate converter:"), wxT("/Quality/LibresampleHQSampleRateConverter"), (int)1, mConverterNames, mConverterLabels), S.TieChoice(_("Real-time dither:"), wxT("/Quality/DitherAlgorithm"), Dither::none, mmDitherNames, mmDitherLabels ); S.TieChoice(_("High-quality dither:"), wxT("/Quality/HQDitherAlgorithm"), Dither::shaped, mmDitherNames, mmDitherLabels ); #endif S.EndTwoColumn(); } S.EndStatic(); // The new style of layout has // - columns for converter and dither. // - rows for Real-time and High-quality. #ifndef OLD_STYLE_LAYOUT S.StartStatic( _("Conversion") ); { // We use blank labels here and there to end up with // a three column layout. S.StartMultiColumn(3); S.AddFixedText(wxT("")); S.AddTitle(_("Sample Rate Converter" )); S.AddTitle(_("Dither")); S.TieChoice(_("Real-time:"), wxT("/Quality/LibresampleSampleRateConverter"), (int)0, mConverterNames, mConverterLabels), S.TieChoice(wxT(""), wxT("/Quality/DitherAlgorithm"), Dither::none, mmDitherNames, mmDitherLabels ); S.TieChoice(_("High-quality:"), wxT("/Quality/LibresampleHQSampleRateConverter"), (int)1, mConverterNames, mConverterLabels), S.TieChoice(wxT(""), wxT("/Quality/HQDitherAlgorithm"), Dither::shaped, mmDitherNames, mmDitherLabels ); S.EndMultiColumn(); } S.EndStatic(); #endif }
void EffectChangePitch::PopulateOrExchange(ShuttleGui & S) { DeduceFrequencies(); // Set frequency-related control values based on sample. wxArrayString pitch; pitch.Add(wxT("C")); pitch.Add(wxT("C#/Db")); pitch.Add(wxT("D")); pitch.Add(wxT("D#/Eb")); pitch.Add(wxT("E")); pitch.Add(wxT("F")); pitch.Add(wxT("F#/Gb")); pitch.Add(wxT("G")); pitch.Add(wxT("G#/Ab")); pitch.Add(wxT("A")); pitch.Add(wxT("A#/Bb")); pitch.Add(wxT("B")); S.SetBorder(5); S.StartVerticalLay(0); { S.StartVerticalLay(); { S.AddTitle(_("Change Pitch without Changing Tempo")); S.AddTitle( wxString::Format(_("Estimated Start Pitch: %s%d (%.3f Hz)"), pitch[m_nFromPitch].c_str(), m_nFromOctave, m_FromFrequency)); } S.EndVerticalLay(); /* i18n-hint: (noun) Musical pitch.*/ S.StartStatic(_("Pitch")); { S.StartMultiColumn(6, wxALIGN_CENTER); // 6 controls, because each AddChoice adds a wxStaticText and a wxChoice. { m_pChoice_FromPitch = S.Id(ID_FromPitch).AddChoice(_("from"), wxT(""), &pitch); m_pChoice_FromPitch->SetName(_("from")); m_pChoice_FromPitch->SetSizeHints(80, -1); m_pSpin_FromOctave = S.Id(ID_FromOctave).AddSpinCtrl(wxT(""), m_nFromOctave, INT_MAX, INT_MIN); m_pSpin_FromOctave->SetName(_("from Octave")); m_pSpin_FromOctave->SetSizeHints(50, -1); m_pChoice_ToPitch = S.Id(ID_ToPitch).AddChoice(_("to"), wxT(""), &pitch); m_pChoice_ToPitch->SetName(_("to")); m_pChoice_ToPitch->SetSizeHints(80, -1); m_pSpin_ToOctave = S.Id(ID_ToOctave).AddSpinCtrl(wxT(""), m_nToOctave, INT_MAX, INT_MIN); m_pSpin_ToOctave->SetName(_("to Octave")); m_pSpin_ToOctave->SetSizeHints(50, -1); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTER); { FloatingPointValidator<double> vldSemitones(2, &m_dSemitonesChange, NUM_VAL_TWO_TRAILING_ZEROES); m_pTextCtrl_SemitonesChange = S.Id(ID_SemitonesChange).AddTextBox(_("Semitones (half-steps):"), wxT(""), 12); m_pTextCtrl_SemitonesChange->SetName(_("Semitones (half-steps)")); m_pTextCtrl_SemitonesChange->SetValidator(vldSemitones); } S.EndHorizontalLay(); } S.EndStatic(); S.StartStatic(_("Frequency")); { S.StartMultiColumn(5, wxALIGN_CENTER); // 5, because AddTextBox adds a wxStaticText and a wxTextCtrl. { FloatingPointValidator<double> vldFromFrequency(3, &m_FromFrequency, NUM_VAL_THREE_TRAILING_ZEROES); vldFromFrequency.SetMin(0.0); m_pTextCtrl_FromFrequency = S.Id(ID_FromFrequency).AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromFrequency->SetName(_("from (Hz)")); m_pTextCtrl_FromFrequency->SetValidator(vldFromFrequency); FloatingPointValidator<double> vldToFrequency(3, &m_ToFrequency, NUM_VAL_THREE_TRAILING_ZEROES); vldToFrequency.SetMin(0.0); m_pTextCtrl_ToFrequency = S.Id(ID_ToFrequency).AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToFrequency->SetName(_("to (Hz)")); m_pTextCtrl_ToFrequency->SetValidator(vldToFrequency); S.AddUnits(_("Hz")); } S.EndMultiColumn(); S.StartHorizontalLay(wxALIGN_CENTER); { FloatingPointValidator<double> vldPercentage(3, &m_dPercentChange, NUM_VAL_THREE_TRAILING_ZEROES); vldPercentage.SetRange(MIN_Percentage, MAX_Percentage); m_pTextCtrl_PercentChange = S.Id(ID_PercentChange).AddTextBox(_("Percent Change:"), wxT(""), 12); m_pTextCtrl_PercentChange->SetValidator(vldPercentage); } S.EndHorizontalLay(); S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_PercentChange = S.Id(ID_PercentChange) .AddSlider(wxT(""), 0, (int)kSliderMax, (int)MIN_Percentage); m_pSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); } S.EndStatic(); } S.EndVerticalLay(); return; }
void TimeScaleDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator nullvld(wxFILTER_INCLUDE_CHAR_LIST); wxTextValidator numvld(wxFILTER_NUMERIC); S.SetBorder(10); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Sliding Time Scale/Pitch Shift") + wxString(wxT("\n")) + _("using SBSMS, by Clayton Otey")); } S.EndHorizontalLay(); S.SetBorder(5); S.StartMultiColumn(2, 0); // Rate Start S.StartStatic(_("Initial Tempo Change (%)")); { S.StartMultiColumn(1, wxCENTER); { m_pTextCtrl_RatePercentChangeStart = S.Id(ID_TEXT_RATE_PERCENTCHANGE_START) .AddTextBox(wxT(""), wxT(""), 12); m_pTextCtrl_RatePercentChangeStart->SetValidator(numvld); } S.EndMultiColumn(); S.StartHorizontalLay(wxEXPAND,0); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_RatePercentChangeStart = S.Id(ID_SLIDER_RATE_PERCENTCHANGE_START) .AddSlider(wxT(""), (int)RATE_PERCENTCHANGE_DEFAULT, (int)RATE_PERCENTCHANGE_MAX_SLIDER, (int)RATE_PERCENTCHANGE_MIN_SLIDER); } S.EndHorizontalLay(); } S.EndStatic(); S.StartStatic(_("Final Tempo Change (%)")); { S.StartMultiColumn(1, wxCENTER); { m_pTextCtrl_RatePercentChangeEnd = S.Id(ID_TEXT_RATE_PERCENTCHANGE_END) .AddTextBox(wxT(""), wxT(""), 12); m_pTextCtrl_RatePercentChangeEnd->SetValidator(numvld); } S.EndMultiColumn(); S.StartHorizontalLay(wxEXPAND,0); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_RatePercentChangeEnd = S.Id(ID_SLIDER_RATE_PERCENTCHANGE_END) .AddSlider(wxT(""), (int)RATE_PERCENTCHANGE_DEFAULT, (int)RATE_PERCENTCHANGE_MAX_SLIDER, (int)RATE_PERCENTCHANGE_MIN_SLIDER); } S.EndHorizontalLay(); } S.EndStatic(); // Pitch Start S.StartStatic(_("Initial Pitch Shift")); { S.StartMultiColumn(2, wxCENTER); { m_pTextCtrl_PitchHalfStepsStart = S.Id(ID_TEXT_PITCH_HALFSTEPS_START) .AddTextBox(_("(semitones) [-12 to 12]:"), wxT(""), 12); m_pTextCtrl_PitchHalfStepsStart->SetValidator(numvld); m_pTextCtrl_PitchPercentChangeStart = S.Id(ID_TEXT_PITCH_PERCENTCHANGE_START) .AddTextBox(_("(%) [-50 to 100]:"), wxT(""), 12); m_pTextCtrl_PitchPercentChangeStart->SetValidator(numvld); } S.EndMultiColumn(); } S.EndStatic(); // Pitch End S.StartStatic(_("Final Pitch Shift")); { S.StartMultiColumn(2, wxCENTER); { m_pTextCtrl_PitchHalfStepsEnd = S.Id(ID_TEXT_PITCH_HALFSTEPS_END) .AddTextBox(_("(semitones) [-12 to 12]:"), wxT(""), 12); m_pTextCtrl_PitchHalfStepsEnd->SetValidator(numvld); m_pTextCtrl_PitchPercentChangeEnd = S.Id(ID_TEXT_PITCH_PERCENTCHANGE_END) .AddTextBox(_("(%) [-50 to 100]:"), wxT(""), 12); m_pTextCtrl_PitchPercentChangeEnd->SetValidator(numvld); } S.EndMultiColumn(); } S.EndStatic(); S.EndMultiColumn(); return; }
void ChangeTempoDialog::PopulateOrExchange(ShuttleGui & S) { wxTextValidator nullvld(wxFILTER_INCLUDE_CHAR_LIST); wxTextValidator numvld(wxFILTER_NUMERIC); S.SetBorder(10); S.StartHorizontalLay(wxCENTER, false); { S.AddTitle(_("Change Tempo without Changing Pitch") + wxString(wxT("\n\n")) + _("by Vaughan Johnson && Dominic Mazzoni") + wxString(wxT("\n")) + _("using SoundTouch, by Olli Parviainen")); } S.EndHorizontalLay(); S.SetBorder(5); // S.StartMultiColumn(2, wxCENTER); { m_pTextCtrl_PercentChange = S.Id(ID_TEXT_PERCENTCHANGE) .AddTextBox(_("Percent Change:"), wxT(""), 12); m_pTextCtrl_PercentChange->SetValidator(numvld); } S.EndMultiColumn(); // S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_PercentChange = S.Id(ID_SLIDER_PERCENTCHANGE) .AddSlider(wxT(""), 0, (int)PERCENTCHANGE_MAX, (int)PERCENTCHANGE_MIN); m_pSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); // S.StartMultiColumn(5, wxCENTER); { // S.AddUnits(_("Beats per minute:")); m_pTextCtrl_FromBPM = S.Id(ID_TEXT_FROMBPM) .AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromBPM->SetName(_("From beats per minute")); m_pTextCtrl_FromBPM->SetValidator(numvld); m_pTextCtrl_ToBPM = S.Id(ID_TEXT_TOBPM) .AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToBPM->SetName(_("To beats per minute")); m_pTextCtrl_ToBPM->SetValidator(numvld); // S.AddUnits(_("Length (seconds):")); m_pTextCtrl_FromLength = S.Id(ID_TEXT_FROMLENGTH) .AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromLength->SetName(_("From length in seconds")); m_pTextCtrl_FromLength->SetValidator(nullvld); m_pTextCtrl_ToLength = S.Id(ID_TEXT_TOLENGTH) .AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToLength->SetName(_("To length in seconds")); m_pTextCtrl_ToLength->SetValidator(numvld); } S.EndMultiColumn(); return; }
void EffectChangeSpeed::PopulateOrExchange(ShuttleGui & S) { GetPrivateConfig(GetCurrentSettingsGroup(), wxT("TimeFormat"), mFormat, mFormat); GetPrivateConfig(GetCurrentSettingsGroup(), wxT("VinylChoice"), mFromVinyl, mFromVinyl); S.SetBorder(5); S.StartVerticalLay(0); { S.AddSpace(0, 5); S.AddTitle(_("Change Speed, affecting both Tempo and Pitch")); S.AddSpace(0, 10); // Speed multiplier and percent change controls. S.StartMultiColumn(4, wxCENTER); { FloatingPointValidator<double> vldMultiplier(3, &mMultiplier, NUM_VAL_THREE_TRAILING_ZEROES); vldMultiplier.SetRange(MIN_Percentage / 100.0, ((MAX_Percentage / 100.0) + 1)); mpTextCtrl_Multiplier = S.Id(ID_Multiplier).AddTextBox(_("Speed Multiplier:"), wxT(""), 12); mpTextCtrl_Multiplier->SetValidator(vldMultiplier); FloatingPointValidator<double> vldPercentage(3, &m_PercentChange, NUM_VAL_THREE_TRAILING_ZEROES); vldPercentage.SetRange(MIN_Percentage, MAX_Percentage); mpTextCtrl_PercentChange = S.Id(ID_PercentChange).AddTextBox(_("Percent Change:"), wxT(""), 12); mpTextCtrl_PercentChange->SetValidator(vldPercentage); } S.EndMultiColumn(); // Percent change slider. S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); mpSlider_PercentChange = S.Id(ID_PercentChange).AddSlider(wxT(""), 0, (int)kSliderMax, (int)MIN_Percentage); mpSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); // Vinyl rpm controls. S.StartMultiColumn(5, wxCENTER); { /* i18n-hint: "rpm" is an English abbreviation meaning "revolutions per minute". */ S.AddUnits(_("Standard Vinyl rpm:")); wxASSERT(kNumVinyl == WXSIZEOF(kVinylStrings)); wxArrayString vinylChoices; for (int i = 0; i < kNumVinyl; i++) { if (i == kVinyl_NA) { vinylChoices.Add(wxGetTranslation(kVinylStrings[i])); } else { vinylChoices.Add(kVinylStrings[i]); } } mpChoice_FromVinyl = S.Id(ID_FromVinyl).AddChoice(_("from"), wxT(""), &vinylChoices); mpChoice_FromVinyl->SetName(_("From rpm")); mpChoice_FromVinyl->SetSizeHints(100, -1); mpChoice_ToVinyl = S.Id(ID_ToVinyl).AddChoice(_("to"), wxT(""), &vinylChoices); mpChoice_ToVinyl->SetName(_("To rpm")); mpChoice_ToVinyl->SetSizeHints(100, -1); } S.EndMultiColumn(); // From/To time controls. S.StartStatic(_("Selection Length"), 0); { S.StartMultiColumn(2, wxALIGN_LEFT); { S.AddPrompt(_("Current Length:")); mpFromLengthCtrl = safenew NumericTextCtrl(NumericConverter::TIME, S.GetParent(), wxID_ANY, mFormat, mFromLength, mProjectRate); mpFromLengthCtrl->SetName(_("from")); mpFromLengthCtrl->SetToolTip(_("Current length of selection.")); mpFromLengthCtrl->SetReadOnly(true); mpFromLengthCtrl->EnableMenu(false); S.AddWindow(mpFromLengthCtrl, wxALIGN_LEFT); S.AddPrompt(_("New Length:")); mpToLengthCtrl = safenew NumericTextCtrl(NumericConverter::TIME, S.GetParent(), ID_ToLength, mFormat, mToLength, mProjectRate); mpToLengthCtrl->SetName(_("to")); mpToLengthCtrl->EnableMenu(); S.AddWindow(mpToLengthCtrl, wxALIGN_LEFT); } S.EndMultiColumn(); } S.EndStatic(); } S.EndVerticalLay(); }
/// Normally in classes derived from PrefsPanel this function /// is used both to populate the panel and to exchange data with it. /// With KeyConfigPrefs all the exchanges are handled specially, /// so this is only used in populating the panel. void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartStatic(_("Key Bindings"), 1); { S.StartMultiColumn(3, wxEXPAND); { S.SetStretchyCol(1); S.StartHorizontalLay(wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); { S.AddTitle(_("View by:")); S.StartRadioButtonGroup(wxT("/Prefs/KeyConfig/ViewBy"), wxT("tree")); { mViewByTree = S.Id(ViewByTreeID).TieRadioButton(_("&Tree"), wxT("tree")); mViewByTree->SetName(_("View by tree")); mViewByName = S.Id(ViewByNameID).TieRadioButton(_("&Name"), wxT("name")); mViewByName->SetName(_("View by name")); mViewByKey = S.Id(ViewByKeyID).TieRadioButton(_("&Key"), wxT("key")); mViewByKey->SetName(_("View by key")); } S.EndRadioButtonGroup(); } S.EndHorizontalLay(); S.StartHorizontalLay(wxALIGN_CENTER|wxALIGN_CENTER_VERTICAL, 0); { // just a spacer } S.EndHorizontalLay(); S.StartHorizontalLay(wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 0); { mFilterLabel = S.AddVariableText(_("Searc&h:")); if (!mFilter) { mFilter = safenew wxTextCtrl(this, FilterID, wxT(""), wxDefaultPosition, #if defined(__WXMAC__) wxSize(300, -1), #else wxSize(210, -1), #endif wxTE_PROCESS_ENTER); mFilter->SetName(wxStripMenuCodes(mFilterLabel->GetLabel())); mFilter->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(KeyConfigPrefs::OnFilterKeyDown), NULL, this); mFilter->Connect(wxEVT_CHAR, wxKeyEventHandler(KeyConfigPrefs::OnFilterChar), NULL, this); } S.AddWindow(mFilter, wxALIGN_NOT | wxALIGN_LEFT); } S.EndHorizontalLay(); } S.EndThreeColumn(); S.AddSpace(-1, 2); S.StartHorizontalLay(wxEXPAND, 1); { if (!mView) { mView = safenew KeyView(this, CommandsListID); mView->SetName(_("Bindings")); } S.Prop(true); S.AddWindow(mView, wxEXPAND); } S.EndHorizontalLay(); S.StartThreeColumn(); { if (!mKey) { mKey = safenew wxTextCtrl(this, CurrentComboID, wxT(""), wxDefaultPosition, #if defined(__WXMAC__) wxSize(300, -1), #else wxSize(210, -1), #endif wxTE_PROCESS_ENTER); mKey->SetName(_("Short cut")); mKey->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(KeyConfigPrefs::OnHotkeyKeyDown), NULL, this); mKey->Connect(wxEVT_CHAR, wxKeyEventHandler(KeyConfigPrefs::OnHotkeyChar), NULL, this); mKey->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(KeyConfigPrefs::OnHotkeyKillFocus), NULL, this); } S.AddWindow(mKey); /* i18n-hint: (verb)*/ mSet = S.Id(SetButtonID).AddButton(_("&Set")); mClear = S.Id(ClearButtonID).AddButton(_("Cl&ear")); } S.EndThreeColumn(); #if defined(__WXMAC__) S.AddFixedText(_("Note: Pressing Cmd+Q will quit. All other keys are valid.")); #endif S.StartThreeColumn(); { S.Id(ImportButtonID).AddButton(_("&Import...")); S.Id(ExportButtonID).AddButton(_("&Export...")); S.Id(AssignDefaultsButtonID).AddButton(_("&Defaults")); } S.EndThreeColumn(); } S.EndStatic(); // Need to layout so that the KeyView is properly sized before populating. // Otherwise, the initial selection is not scrolled into view. Layout(); }
void EffectChangeTempo::PopulateOrExchange(ShuttleGui & S) { S.StartVerticalLay(0); { S.AddSpace(0, 5); S.AddTitle(_("Change Tempo without Changing Pitch")); S.SetBorder(5); // S.StartMultiColumn(2, wxCENTER); { FloatingPointValidator<double> vldPercentage(3, &m_PercentChange, NUM_VAL_THREE_TRAILING_ZEROES); vldPercentage.SetRange(MIN_Percentage, MAX_Percentage); m_pTextCtrl_PercentChange = S.Id(ID_PercentChange) .AddTextBox(_("Percent Change:"), wxT(""), 12); m_pTextCtrl_PercentChange->SetValidator(vldPercentage); } S.EndMultiColumn(); // S.StartHorizontalLay(wxEXPAND); { S.SetStyle(wxSL_HORIZONTAL); m_pSlider_PercentChange = S.Id(ID_PercentChange) .AddSlider(wxT(""), 0, (int)kSliderMax, (int)MIN_Percentage); m_pSlider_PercentChange->SetName(_("Percent Change")); } S.EndHorizontalLay(); // S.StartMultiColumn(5, wxCENTER); { // S.AddUnits(_("Beats per minute:")); FloatingPointValidator<double> vldFromBPM(3, &m_FromBPM, NUM_VAL_THREE_TRAILING_ZEROES | NUM_VAL_ZERO_AS_BLANK); m_pTextCtrl_FromBPM = S.Id(ID_FromBPM) .AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromBPM->SetName(_("From beats per minute")); m_pTextCtrl_FromBPM->SetValidator(vldFromBPM); FloatingPointValidator<double> vldToBPM(3, &m_ToBPM, NUM_VAL_THREE_TRAILING_ZEROES | NUM_VAL_ZERO_AS_BLANK); m_pTextCtrl_ToBPM = S.Id(ID_ToBPM) .AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToBPM->SetName(_("To beats per minute")); m_pTextCtrl_ToBPM->SetValidator(vldToBPM); // S.AddUnits(_("Length (seconds):")); int precission = 2; FloatingPointValidator<double> vldFromLength(precission, &m_FromLength, NUM_VAL_TWO_TRAILING_ZEROES); m_pTextCtrl_FromLength = S.Id(ID_FromLength) .AddTextBox(_("from"), wxT(""), 12); m_pTextCtrl_FromLength->SetName(_("From length in seconds")); m_pTextCtrl_FromLength->SetValidator(vldFromLength); m_pTextCtrl_FromLength->Enable(false); // Disable because the value comes from the user selection. FloatingPointValidator<double> vldToLength(2, &m_ToLength, NUM_VAL_TWO_TRAILING_ZEROES); // min and max need same precision as what we're validating (bug 963) double minLength = (m_FromLength * 100.0) / (100.0 + MAX_Percentage); double maxLength = (m_FromLength * 100.0) / (100.0 + MIN_Percentage); minLength = Internat::CompatibleToDouble(Internat::ToString(minLength, precission)); maxLength = Internat::CompatibleToDouble(Internat::ToString(maxLength, precission)); vldToLength.SetRange(minLength, maxLength); m_pTextCtrl_ToLength = S.Id(ID_ToLength) .AddTextBox(_("to"), wxT(""), 12); m_pTextCtrl_ToLength->SetName(_("To length in seconds")); m_pTextCtrl_ToLength->SetValidator(vldToLength); } S.EndMultiColumn(); } S.EndVerticalLay(); return; }