void GUIPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartStatic(_("Display")); { S.TieCheckBox(_("&Ergonomic order of Transport Toolbar buttons"), wxT("/GUI/ErgonomicTransportButtons"), true); S.TieCheckBox(_("S&how 'How to Get Help' dialog box at program start up"), wxT("/GUI/ShowSplashScreen"), true); S.AddSpace(10); S.StartMultiColumn(2); { const wxString defaultRange = wxString::Format(wxT("%d"), ENV_DB_RANGE); S.TieChoice(_("Meter dB &range:"), ENV_DB_KEY, defaultRange, mRangeChoices, mRangeCodes); S.SetSizeHints(mRangeChoices); S.TieChoice(_("&Language:"), wxT("/Locale/Language"), wxT(""), mLangNames, mLangCodes); S.SetSizeHints(mLangNames); S.TieChoice(_("Location of &Manual:"), wxT("/GUI/Help"), wxT("Local"), mHtmlHelpChoices, mHtmlHelpCodes); S.SetSizeHints(mHtmlHelpChoices); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Behaviors")); { S.TieCheckBox(_("&Beep on completion of longer activities"), wxT("/GUI/BeepOnCompletion"), false); S.TieCheckBox(_("Re&tain labels if selection snaps to a label edge"), wxT("/GUI/RetainLabels"), false); #ifdef EXPERIMENTAL_OUTPUT_DISPLAY S.TieCheckBox(_("&Display a mono channel as virtual stereo"), wxT("/GUI/MonoAsVirtualStereo"), false); #endif } S.EndStatic(); }
void ExportFFmpegWMAOptions::PopulateOrExchange(ShuttleGui & S) { S.StartHorizontalLay(wxEXPAND, 0); { S.StartStatic(_("WMA Export Setup"), 0); { S.StartTwoColumn(); { S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/WMABitRate"), 180189, mBitRateNames, mBitRateLabels); } S.EndTwoColumn(); } S.EndStatic(); } S.EndHorizontalLay(); S.AddStandardButtons(); Layout(); Fit(); SetMinSize(GetSize()); Center(); return; }
void NoiseDialog::PopulateOrExchange( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Noise type:"), nType, nTypeList); S.TieNumericTextBox(_("Amplitude (0-1)") + wxString(wxT(":")), nAmplitude, 10); S.AddPrompt(_("Duration") + wxString(wxT(":"))); if (mNoiseDurationT == NULL) { mNoiseDurationT = new NumericTextCtrl(NumericConverter::TIME, this, wxID_ANY, wxT(""), nDuration, mEffect->mProjectRate, wxDefaultPosition, wxDefaultSize, true); /* use this instead of "seconds" because if a selection is passed to * the effect, I want it (nDuration) to be used as the duration, and * with "seconds" this does not always work properly. For example, * it rounds down to zero... */ mNoiseDurationT->SetName(_("Duration")); mNoiseDurationT->SetFormatString(mNoiseDurationT->GetBuiltinFormat(nIsSelection==true?(_("hh:mm:ss + samples")):(_("hh:mm:ss + milliseconds")))); mNoiseDurationT->EnableMenu(); } S.AddWindow(mNoiseDurationT, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL); } 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 NoiseDialog::PopulateOrExchange( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.AddFixedText(_("Duration"), false); if (mNoiseDurationT == NULL) { mNoiseDurationT = new TimeTextCtrl(this, wxID_ANY, wxT(""), nDuration, 44100, wxDefaultPosition, wxDefaultSize, true); /* use this instead of "seconds" because if a selection is passed to * the effect, I want it (nDuration) to be used as the duration, and * with "seconds" this does not always work properly. For example, * it rounds down to zero... */ mNoiseDurationT->SetFormatString(mNoiseDurationT->GetBuiltinFormat(nIsSelection==true?(wxT("hh:mm:ss + samples")):(wxT("seconds")))); mNoiseDurationT->EnableMenu(); } S.AddWindow(mNoiseDurationT); S.TieTextBox(_("Amplitude (0-1)"), nAmplitude, 10); S.TieChoice(_("Noise type"), nType, nTypeList); S.SetSizeHints(-1, -1); } S.EndMultiColumn(); }
void ModulePrefs::PopulateOrExchange(ShuttleGui & S) { wxArrayString StatusChoices; StatusChoices.Add( _("Disabled" ) ); StatusChoices.Add( _("Enabled" ) ); StatusChoices.Add( _("Ask" ) ); StatusChoices.Add( _("Failed" ) ); StatusChoices.Add( _("New" ) ); S.SetBorder(2); S.StartStatic(wxT("")); { S.AddFixedText(_("These are experimental modules. Enable them only if you've read the Audacity Manual\nand know what you are doing.") ); S.AddFixedText(wxString(wxT(" ")) + _("'Ask' means Audacity will ask if you want to load the module each time it starts.") ); S.AddFixedText(wxString(wxT(" ")) + _("'Failed' means Audacity thinks the module is broken and won't run it.") ); S.AddFixedText(wxString(wxT(" ")) + _("'New' means no choice has been made yet.") ); S.AddFixedText(_("Changes to these settings only take effect when Audacity starts up.")); S.StartScroller(); { S.StartMultiColumn( 2 ); int i; for(i=0;i<(int)mModules.GetCount();i++) S.TieChoice( mModules[i], mStatuses[i], &StatusChoices ); S.EndMultiColumn(); } if( mModules.GetCount() < 1 ) { S.AddFixedText( _("No modules were found") ); } S.EndScroller(); } S.EndStatic(); }
void TruncSilenceDialog::PopulateOrExchange(ShuttleGui & S) { S.AddSpace(0, 5); S.StartHorizontalLay(); { // Action choices wxArrayString processChoices; processChoices.Add(_("Truncate Detected Silence")); processChoices.Add(_("Compress Excess Silence")); S.Id(ID_PROCESS_CHOICE).TieChoice(wxT(""), mEffect->mProcessIndex, &processChoices); S.SetSizeHints(-1, -1); } S.EndHorizontalLay(); S.StartStatic(_("Detect Silence")); { S.StartMultiColumn(3, wxALIGN_CENTER_HORIZONTAL); { // Threshold wxArrayString choices(Enums::NumDbChoices, Enums::GetDbChoices()); S.TieChoice(_("Level:"), mEffect->mTruncDbChoiceIndex, &choices); S.SetSizeHints(-1, -1); S.AddSpace(0); // 'choices' aleady includes units. // Ignored silence S.Id(ID_DETECT_SILENCE).TieNumericTextBox(_("Duration:"), mEffect->mInitialAllowedSilence, 12); S.AddUnits(wxT("seconds")); } S.EndMultiColumn(); } S.EndStatic(); S.StartMultiColumn(3, wxALIGN_CENTER_HORIZONTAL); { // Truncation / Compression factor S.Id( ID_TRUNCATION_DURATION ).TieNumericTextBox(_("Truncate to:"), mEffect->mTruncLongestAllowedSilence, 12); S.AddUnits(wxT("seconds")); S.Id( ID_COMPRESS_FACTOR ).TieNumericTextBox(_("Compress to:"), mEffect->mSilenceCompressPercent, 12); S.AddUnits(wxT("percent")); } S.EndMultiColumn(); // Warnings pWarning = S.AddVariableText( wxT("") ); UpdateUI(); }
void NoiseDialog::PopulateOrExchange( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { // 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.TieChoice(_("Noise type") + wxString(wxT(":")), nType, nTypeList); S.TieTextBox(_("Amplitude (0-1)") + wxString(wxT(":")), nAmplitude, 10); S.AddPrompt(_("Duration") + wxString(wxT(":"))); if (mNoiseDurationT == NULL) { mNoiseDurationT = new TimeTextCtrl(this, wxID_ANY, wxT(""), nDuration, mEffect->mProjectRate, wxDefaultPosition, wxDefaultSize, true); /* use this instead of "seconds" because if a selection is passed to * the effect, I want it (nDuration) to be used as the duration, and * with "seconds" this does not always work properly. For example, * it rounds down to zero... */ mNoiseDurationT->SetName(_("Duration")); mNoiseDurationT->SetFormatString(mNoiseDurationT->GetBuiltinFormat(nIsSelection==true?(_("hh:mm:ss + samples")):(_("seconds")))); mNoiseDurationT->EnableMenu(); } S.AddWindow(mNoiseDurationT, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxALL); } S.EndMultiColumn(); }
/// Populates simple dialog that has a single tone. void ToneGenDialog::PopulateOrExchangeStandard( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Waveform") + wxString(wxT(":")), waveform, waveforms); S.SetSizeHints(-1, -1); // 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], 5); S.TieNumericTextBox(_("Amplitude (0-1)") + wxString(wxT(":")), amplitude[0], 5); 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(); }
/// Add a compound control made up from a choice and an edit /// box. void QualityPrefs::DefineSampleRateControl( ShuttleGui & S ) { // We use a sizer within a sizer to get the effect we want. // We also use the SetIfCreated idiom to get pointers to // the controls, so that we can drive them from // our own code. S.SetBorder(2); S.StartHorizontalLay(wxALIGN_LEFT ); // If the value in Prefs isn't in the list, then we want // the last item, 'Other...' to be shown. S.SetNoMatchSelector( mmSampleRateNames.GetCount()-1 ); // First the choice... // We make sure it uses the ID we want, so that we get changes S.Id( ID_SAMPLE_RATE_CHOICE ); // We make sure we have a pointer to it, so that we can drive it. mSampleRates = S.TieChoice( wxT(""), wxT("/SamplingRate/DefaultProjectSampleRate"), AudioIO::GetOptimalSupportedSampleRate(), mmSampleRateNames, mmSampleRateLabels ); // Now do the edit box... mOtherSampleRate = S.TieTextBox(wxT(""), mOtherSampleRateValue, 9); S.EndHorizontalLay(); }
/// 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 ModulePrefs::PopulateOrExchange(ShuttleGui & S) { wxArrayString StatusChoices; StatusChoices.Add( _("Disabled" ) ); StatusChoices.Add( _("Enabled" ) ); StatusChoices.Add( _("Ask" ) ); StatusChoices.Add( _("Failed" ) ); StatusChoices.Add( _("New" ) ); S.SetBorder(2); S.StartStatic(_("")); { S.AddFixedText(_("These are experimental Modules. Enable them only if you've read the manual\nand know what you are doing.") ); S.AddFixedText(wxString(wxT(" ")) + _("'Ask' means Audacity will ask if you want to load the plug-each time it starts.") ); S.AddFixedText(wxString(wxT(" ")) + _("'Failed' means Audacity thinks the plug-in is broken and won't run it.") ); S.AddFixedText(wxString(wxT(" ")) + _("'New' is like 'Ask', but asks just once.") ); S.StartMultiColumn( 2 ); int i; for(i=0;i<(int)mModules.GetCount();i++) S.TieChoice( mModules[i], mStatuses[i], &StatusChoices ); S.EndMultiColumn(); lse); } S.EndStatic(); }
void MidiIOPrefs::PopulateOrExchange( ShuttleGui & S ) { wxArrayString empty; S.SetBorder(2); S.StartStatic(_("Interface")); { S.StartMultiColumn(2); { S.Id(HostID); mHost = S.TieChoice(_("Host") + wxString(wxT(":")), wxT("/MidiIO/Host"), wxT(""), mHostNames, mHostLabels); S.SetSizeHints(mHostNames); S.AddPrompt(_("Using:")); S.AddFixedText(wxString(Pa_GetVersionText(), wxConvLocal)); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Playback")); { S.StartMultiColumn(2); { S.Id(PlayID); mPlay = S.AddChoice(_("Device") + wxString(wxT(":")), wxEmptyString, &empty); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Recording")); { S.StartMultiColumn(2); { S.Id(RecordID); mRecord = S.AddChoice(_("Device") + wxString(wxT(":")), wxEmptyString, &empty); S.Id(ChannelsID); /* mChannels = S.AddChoice(_("Channels") + wxString(wxT(":")), wxEmptyString, &empty); */ } S.EndMultiColumn(); } S.EndStatic(); }
void GetTrackInfoCommand::PopulateOrExchange(ShuttleGui & S) { wxArrayString types( nTypes, kTypes ); S.AddSpace(0, 5); S.StartMultiColumn(2, wxALIGN_CENTER); { S.TieChoice( _("Types:"), mInfoType, &types); } S.EndMultiColumn(); }
void TracksBehaviorsPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartScroller(); S.StartStatic(_("Behaviors")); { S.TieCheckBox(_("A&uto-select, if selection required"), wxT("/GUI/SelectAllOnNone"), false); /* i18n-hint: Cut-lines are lines that can expand to show the cut audio.*/ S.TieCheckBox(_("Enable cut &lines"), wxT("/GUI/EnableCutLines"), false); S.TieCheckBox(_("Enable &dragging selection edges"), wxT("/GUI/AdjustSelectionEdges"), true); S.TieCheckBox(_("Editing a clip can &move other clips"), wxT("/GUI/EditClipCanMove"), true); S.TieCheckBox(_("\"Move track focus\" c&ycles repeatedly through tracks"), wxT("/GUI/CircularTrackNavigation"), false); S.TieCheckBox(_("&Type to create a label"), wxT("/GUI/TypeToCreateLabel"), true); S.TieCheckBox(_("Use dialog for the &name of a new label"), wxT("/GUI/DialogForNameNewLabel"), false); #ifdef EXPERIMENTAL_SCROLLING_LIMITS S.TieCheckBox(_("Enable scrolling left of &zero"), ScrollingPreferenceKey(), ScrollingPreferenceDefault()); #endif S.TieCheckBox(_("Advanced &vertical zooming"), wxT("/GUI/VerticalZooming"), false); S.AddSpace(10); S.StartMultiColumn(2); { S.TieChoice(_("Solo &Button:"), wxT("/GUI/Solo"), wxT("Standard"), mSoloChoices, mSoloCodes); } S.EndMultiColumn(); } S.EndStatic(); S.EndScroller(); }
/// Populates simple dialog that has a single tone. void ToneGenDialog::PopulateOrExchangeStandard( ShuttleGui & S ) { S.StartMultiColumn(2, wxCENTER); { S.TieChoice( _("Waveform:"), waveform, waveforms); S.SetSizeHints(-1,-1); S.TieTextBox( _("Frequency / Hz"),frequency[0], 5); S.TieTextBox( _("Amplitude (0-1)"),amplitude[0], 5); S.TieTextBox( _("Length (seconds)"),length, 5 ); } S.EndMultiColumn(); }
void ExportFLACOptions::PopulateOrExchange(ShuttleGui & S) { wxArrayString flacLevelNames, flacLevelLabels; flacLevelLabels.Add(wxT("0")); flacLevelNames.Add(_("0 (fastest)")); flacLevelLabels.Add(wxT("1")); flacLevelNames.Add(_("1")); flacLevelLabels.Add(wxT("2")); flacLevelNames.Add(_("2")); flacLevelLabels.Add(wxT("3")); flacLevelNames.Add(_("3")); flacLevelLabels.Add(wxT("4")); flacLevelNames.Add(_("4")); flacLevelLabels.Add(wxT("5")); flacLevelNames.Add(_("5")); flacLevelLabels.Add(wxT("6")); flacLevelNames.Add(_("6")); flacLevelLabels.Add(wxT("7")); flacLevelNames.Add(_("7")); flacLevelLabels.Add(wxT("8")); flacLevelNames.Add(_("8 (best)")); wxArrayString flacBitDepthNames, flacBitDepthLabels; flacBitDepthLabels.Add(wxT("16")); flacBitDepthNames.Add(_("16 bit")); flacBitDepthLabels.Add(wxT("24")); flacBitDepthNames.Add(_("24 bit")); S.StartVerticalLay(); { S.StartHorizontalLay(wxCENTER); { S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Level:"), wxT("/FileFormats/FLACLevel"), wxT("5"), flacLevelNames, flacLevelLabels); S.TieChoice(_("Bit depth:"), wxT("/FileFormats/FLACBitDepth"), wxT("16"), flacBitDepthNames, flacBitDepthLabels); } S.EndMultiColumn(); } S.EndHorizontalLay(); } S.EndVerticalLay(); return; }
void ExportMP2Options::PopulateOrExchange(ShuttleGui & S) { S.StartVerticalLay(); { S.StartHorizontalLay(wxCENTER); { S.StartMultiColumn(2, wxCENTER); { S.TieChoice(_("Bit Rate:"), wxT("/FileFormats/MP2Bitrate"), 160, mBitRateNames, mBitRateLabels); } S.EndMultiColumn(); } S.EndHorizontalLay(); } S.EndVerticalLay(); }
void SelectTracksCommand::PopulateOrExchange(ShuttleGui & S) { S.AddSpace(0, 5); S.StartMultiColumn(3, wxEXPAND); { S.SetStretchyCol( 2 ); S.Optional( bHasFirstTrack).TieTextBox(_("First Track:"),mFirstTrack); S.Optional( bHasNumTracks).TieTextBox(_("Track Count:"),mNumTracks); } S.EndMultiColumn(); S.StartMultiColumn(2, wxALIGN_CENTER); { // Always used, so no check box. S.TieChoice( _("Mode:"), mMode, LocalizedStrings( kModes, nModes )); } S.EndMultiColumn(); }
void EffectsPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartScroller(); S.StartStatic(_("Enable Effects")); { #if USE_AUDIO_UNITS S.TieCheckBox(_("Audio Unit"), wxT("/AudioUnit/Enable"), true); #endif // JKC: LADSPA, LV2, Nyquist, VST, VAMP should not be translated. #if USE_LADSPA S.TieCheckBox(wxT("&LADSPA"), wxT("/Ladspa/Enable"), true); #endif #if USE_LV2 S.TieCheckBox(wxT("LV&2"), wxT("/LV2/Enable"), true); #endif #if USE_NYQUIST S.TieCheckBox(wxT("N&yquist"), wxT("/Nyquist/Enable"), true); #endif #if USE_VAMP S.TieCheckBox(wxT("&Vamp"), wxT("/VAMP/Enable"), true); #endif #if USE_VST S.TieCheckBox(wxT("V&ST"), wxT("/VST/Enable"), true); #endif } S.EndStatic(); S.StartStatic(_("Effect Options")); { S.StartMultiColumn(2); { wxArrayString visualgroups; wxArrayString prefsgroups; visualgroups.Add(_("Sorted by Effect Name")); visualgroups.Add(_("Sorted by Publisher and Effect Name")); visualgroups.Add(_("Sorted by Type and Effect Name")); visualgroups.Add(_("Grouped by Publisher")); visualgroups.Add(_("Grouped by Type")); prefsgroups.Add(wxT("sortby:name")); prefsgroups.Add(wxT("sortby:publisher:name")); prefsgroups.Add(wxT("sortby:type:name")); prefsgroups.Add(wxT("groupby:publisher")); prefsgroups.Add(wxT("groupby:type")); wxChoice *c = S.TieChoice(_("S&ort or Group:"), wxT("/Effects/GroupBy"), wxT("name"), visualgroups, prefsgroups); c->SetMinSize(c->GetBestSize()); S.TieNumericTextBox(_("&Maximum effects per group (0 to disable):"), wxT("/Effects/MaxPerGroup"), #if defined(__WXGTK__) 15, #else 0, #endif 5); } S.EndMultiColumn(); } S.EndStatic(); #ifndef EXPERIMENTAL_EFFECT_MANAGEMENT S.StartStatic(_("Plugin Options")); { S.TieCheckBox(_("Check for updated plugins when Audacity starts"), wxT("/Plugins/CheckForUpdates"), true); S.TieCheckBox(_("Rescan plugins next time Audacity is started"), wxT("/Plugins/Rescan"), false); } S.EndStatic(); #endif #ifdef EXPERIMENTAL_EQ_SSE_THREADED S.StartStatic(_("Instruction Set")); { S.TieCheckBox(_("&Use SSE/SSE2/.../AVX"), wxT("/SSE/GUI"), true); } S.EndStatic(); #endif S.EndScroller(); }
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 SpectrumPrefs::PopulateOrExchange( ShuttleGui & S ) { wxArrayString windowTypeList; for(int i=0; i<NumWindowFuncs(); i++) windowTypeList.Add(WindowFuncName(i)); S.SetBorder( 2 ); S.StartHorizontalLay(wxEXPAND, 0 ); S.StartStatic( _("FFT Size"), 0 ); { S.StartRadioButtonGroup( wxT("/Spectrum/FFTSize"), 256 ); S.TieRadioButton( _("8 - most wideband"), 8); S.TieRadioButton( wxT("16"), 16); S.TieRadioButton( wxT("32"), 32); S.TieRadioButton( wxT("64"), 64); S.TieRadioButton( wxT("128"), 128); S.TieRadioButton( _("256 - default"), 256); S.TieRadioButton( wxT("512"), 512); S.TieRadioButton( wxT("1024"), 1024); S.TieRadioButton( wxT("2048"), 2048); #ifdef EXPERIMENTAL_FIND_NOTES S.TieRadioButton( wxT("4096"), 4096); S.TieRadioButton( wxT("8192"), 8192); S.TieRadioButton( wxT("16384"), 16384); S.TieRadioButton( _("32768 - most narrowband"),32768); #else S.TieRadioButton( _("4096 - most narrowband"),4096); #endif //LOGARITHMIC_SPECTRUM S.EndRadioButtonGroup(); // add choice for windowtype S.StartMultiColumn(2, wxCENTER); { S.TieChoice( _("Window type:"), windowType, &windowTypeList); S.SetSizeHints(-1,-1); } S.EndMultiColumn(); } S.EndStatic(); #ifdef EXPERIMENTAL_FFT_SKIP_POINTS S.StartHorizontalLay(wxEXPAND, 0 ); S.StartStatic( _("FFT Skip Points"), 0 ); { S.StartRadioButtonGroup(wxT("/Spectrum/FFTSkipPoints"), 0); S.TieRadioButton(wxT("0"), 0); S.TieRadioButton(wxT("1"), 1); S.TieRadioButton(wxT("3"), 3); S.TieRadioButton(wxT("7"), 7); S.TieRadioButton(wxT("15"), 15); S.TieRadioButton(wxT("31"), 31); S.TieRadioButton(wxT("63"), 63); S.EndRadioButtonGroup(); } S.EndStatic(); #endif //EXPERIMENTAL_FFT_SKIP_POINTS S.StartStatic( _("Display"),1 ); { // JC: For layout of mixtures of controls I prefer checkboxes on the right, // with everything in two columns over what we have here. S.TieCheckBox( _("&Grayscale"), wxT("/Spectrum/Grayscale"), false); S.StartTwoColumn(); // 2 cols because we have a control with a separate label. S.Id(ID_MINFREQUENCY).TieTextBox( _("Minimum Frequency (Hz):"), // prompt minFreqStr, // String to exchange with 12 // max number of characters (used to size the control). ); S.Id(ID_MAXFREQUENCY).TieTextBox( _("Maximum Frequency (Hz):"), // prompt maxFreqStr, // String to exchange with 12 // max number of characters (used to size the control). ); S.EndTwoColumn(); #ifdef EXPERIMENTAL_FFT_Y_GRID S.TieCheckBox( _("&Y-Grid"), wxT("/Spectrum/FFTYGrid"), false); #endif //EXPERIMENTAL_FFT_Y_GRID #ifdef EXPERIMENTAL_FIND_NOTES S.TieCheckBox( _("&Find Notes"), wxT("/Spectrum/FFTFindNotes"), false); S.TieCheckBox( _("&Quantize Notes"), wxT("/Spectrum/FindNotesQuantize"), false); S.StartTwoColumn(); // 2 cols because we have a control with a separate label. S.Id(ID_FIND_NOTES_MIN_A).TieTextBox( _("Minimum Amplitude (dB):"), // prompt findNotesMinAStr, // String to exchange with 8 // max number of characters (used to size the control). ); S.Id(ID_FIND_NOTES_N).TieTextBox( _("Max. Number of Notes (1..128):"), // prompt findNotesNStr, // String to exchange with 8 // max number of characters (used to size the control). ); S.EndTwoColumn(); #endif //EXPERIMENTAL_FIND_NOTES } S.EndStatic(); S.EndHorizontalLay(); }
void SpectrumPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartStatic(_("FFT Window")); { S.StartMultiColumn(2); { S.TieChoice(_("Window size") + wxString(wxT(":")), wxT("/Spectrum/FFTSize"), 256, mSizeChoices, mSizeCodes); S.SetSizeHints(mSizeChoices); S.TieChoice(_("Window type") + wxString(wxT(":")), wxT("/Spectrum/WindowType"), 3, mTypeChoices, mTypeCodes); S.SetSizeHints(mTypeChoices); } S.EndMultiColumn(); } S.EndStatic(); #ifdef EXPERIMENTAL_FFT_SKIP_POINTS wxArrayString wskipn; wxArrayInt wskipv; for (size_t i = 0; i < 7; i++) { wskipn.Add(wxString::Format(wxT("%d"), (1 << i) - 1)); wskipv.Add((1 << i) - 1); } S.StartStatic(_("FFT Skip Points")); { S.StartMultiColumn(2); { S.TieChoice(_("Skip Points") + wxString(wxT(":")), wxT("/Spectrum/FFTSkipPoints"), 0, wskipn, wskipv); S.SetSizeHints(wskipn); } S.EndMultiColumn(); } S.EndStatic(); #endif //EXPERIMENTAL_FFT_SKIP_POINTS S.StartStatic(_("Display")); { S.StartTwoColumn(); { mMinFreq = S.TieTextBox(_("Minimum Frequency (Hz):"), wxT("/Spectrum/MinFreq"), 0, 12); mMaxFreq = S.TieTextBox(_("Maximum Frequency (Hz):"), wxT("/Spectrum/MaxFreq"), 8000, 12); mGain = S.TieTextBox(_("Gain (dB):"), wxT("/Spectrum/Gain"), 20, 8); mRange = S.TieTextBox(_("Range (dB):"), wxT("/Spectrum/Range"), 80, 8); mFrequencyGain = S.TieTextBox(_("Frequency gain: (dB/dec)"), wxT("/Spectrum/FrequencyGain"), 0, 4); } S.EndTwoColumn(); S.TieCheckBox(_("Show the spectrum using &grayscale colors"), wxT("/Spectrum/Grayscale"), false); #ifdef EXPERIMENTAL_FFT_Y_GRID S.TieCheckBox(_("Show a grid along the &Y-axis"), wxT("/Spectrum/FFTYGrid"), false); #endif //EXPERIMENTAL_FFT_Y_GRID } S.EndStatic(); #ifdef EXPERIMENTAL_FIND_NOTES S.StartStatic(_("FFT Find Notes")); { S.StartTwoColumn(); { mFindNotesMinA = S.TieTextBox(_("Minimum Amplitude (dB):"), wxT("/Spectrum/FindNotesMinA"), -30L, 8); mFindNotesN = S.TieTextBox(_("Max. Number of Notes (1..128):"), wxT("/Spectrum/FindNotesN"), 5L, 8); } S.EndTwoColumn(); S.TieCheckBox(_("&Find Notes"), wxT("/Spectrum/FFTFindNotes"), false); S.TieCheckBox(_("&Quantize Notes"), wxT("/Spectrum/FindNotesQuantize"), false); } S.EndStatic(); #endif //EXPERIMENTAL_FIND_NOTES }
void QualityPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartStatic(_("Sampling")); { S.StartMultiColumn(2); { S.AddPrompt(_("Default Sample &Rate:")); S.StartMultiColumn(2); { // If the value in Prefs isn't in the list, then we want // the last item, 'Other...' to be shown. S.SetNoMatchSelector(mSampleRateNames.GetCount() - 1); // First the choice... // We make sure it uses the ID we want, so that we get changes S.Id(ID_SAMPLE_RATE_CHOICE); // We make sure we have a pointer to it, so that we can drive it. mSampleRates = S.TieChoice(wxT(""), wxT("/SamplingRate/DefaultProjectSampleRate"), AudioIO::GetOptimalSupportedSampleRate(), mSampleRateNames, mSampleRateLabels); S.SetSizeHints(mSampleRateNames); // Now do the edit box... mOtherSampleRate = S.TieNumericTextBox(wxT(""), mOtherSampleRateValue, 15); } S.EndHorizontalLay(); S.TieChoice(_("Default Sample &Format:"), wxT("/SamplingRate/DefaultProjectSampleFormat"), floatSample, mSampleFormatNames, mSampleFormatLabels); S.SetSizeHints(mSampleFormatNames); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Real-time Conversion")); { S.StartMultiColumn(2, wxEXPAND); { S.SetStretchyCol(2); S.TieChoice(_("Sample Rate Con&verter:"), Resample::GetFastMethodKey(), Resample::GetFastMethodDefault(), mConverterNames, mConverterLabels), S.SetSizeHints(mConverterNames); S.TieChoice(_("&Dither:"), wxT("/Quality/DitherAlgorithm"), Dither::none, mDitherNames, mDitherLabels); S.SetSizeHints(mDitherNames); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("High-quality Conversion")); { S.StartMultiColumn(2); { S.TieChoice(_("Sample Rate Conver&ter:"), Resample::GetBestMethodKey(), Resample::GetBestMethodDefault(), mConverterNames, mConverterLabels), S.SetSizeHints(mConverterNames); S.TieChoice(_("Dit&her:"), wxT("/Quality/HQDitherAlgorithm"), Dither::shaped, mDitherNames, mDitherLabels); S.SetSizeHints(mDitherNames); } S.EndMultiColumn(); } S.EndStatic(); }
void MidiIOPrefs::PopulateOrExchange( ShuttleGui & S ) { wxArrayString empty; S.SetBorder(2); S.StartStatic(_("Interface")); { S.StartMultiColumn(2); { S.Id(HostID); /* i18n-hint: (noun) */ mHost = S.TieChoice(_("Host") + wxString(wxT(":")), wxT("/MidiIO/Host"), wxT(""), mHostNames, mHostLabels); S.SetSizeHints(mHostNames); S.AddPrompt(_("Using: PortMidi")); } S.EndMultiColumn(); } S.EndStatic(); S.StartStatic(_("Playback")); { S.StartMultiColumn(2); { S.Id(PlayID); mPlay = S.AddChoice(_("Device") + wxString(wxT(":")), wxEmptyString, &empty); int latency = gPrefs->Read(wxT("/MidiIO/OutputLatency"), DEFAULT_SYNTH_LATENCY); mLatency = S.TieNumericTextBox(_("MIDI Synthesizer Latency (ms):"), wxT("/MidiIO/SynthLatency"), latency, 3); } S.EndMultiColumn(); } S.EndStatic(); #ifdef EXPERIMENTAL_MIDI_IN S.StartStatic(_("Recording")); { S.StartMultiColumn(2); { S.Id(RecordID); mRecord = S.AddChoice(_("Device") + wxString(wxT(":")), wxEmptyString, &empty); S.Id(ChannelsID); /* mChannels = S.AddChoice(_("Channels") + wxString(wxT(":")), wxEmptyString, &empty); */ } S.EndMultiColumn(); } S.EndStatic(); #endif }
void GUIPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartScroller(); S.StartStatic(_("Display")); { S.StartMultiColumn(2); { #ifdef EXPERIMENTAL_DA const wxString defaultTheme = wxT("dark"); #else const wxString defaultTheme = wxT("light"); #endif const wxString defaultRange = wxString::Format(wxT("%d"), ENV_DB_RANGE); S.TieChoice(_("&Language:"), wxT("/Locale/Language"), wxT(""), mLangNames, mLangCodes); S.SetSizeHints(mLangNames); S.TieChoice(_("Location of &Manual:"), wxT("/GUI/Help"), wxT("Local"), mHtmlHelpChoices, mHtmlHelpCodes); S.SetSizeHints(mHtmlHelpChoices); S.TieChoice(_("Th&eme:"), wxT("/GUI/Theme"), defaultTheme, mThemeChoices, mThemeCodes); S.SetSizeHints(mThemeChoices); S.TieChoice(_("Meter dB &range:"), ENV_DB_KEY, defaultRange, mRangeChoices, mRangeCodes); S.SetSizeHints(mRangeChoices); } S.EndMultiColumn(); // S.AddSpace(10); // JKC: This is a silly preference. Kept here as a reminder that we may // later want to have configurable button order. // S.TieCheckBox(_("&Ergonomic order of Transport Toolbar buttons"), // wxT("/GUI/ErgonomicTransportButtons"), // true); } S.EndStatic(); S.StartStatic(_("Show")); { S.TieCheckBox(_("'How to Get &Help' at launch"), wxT("/GUI/ShowSplashScreen"), true); S.TieCheckBox(_("E&xtra menus"), wxT("/GUI/ShowExtraMenus"), false); #ifdef EXPERIMENTAL_THEME_PREFS // We do not want to make this option mainstream. It's a // convenience for developers. S.TieCheckBox(_("Show alternative &styling (Mac vs PC)"), wxT("/GUI/ShowMac"), false); #endif } S.EndStatic(); S.StartStatic(_("Behaviors")); { S.TieCheckBox(_("&Beep on completion of longer activities"), wxT("/GUI/BeepOnCompletion"), false); S.TieCheckBox(_("Re&tain labels if selection snaps to a label"), wxT("/GUI/RetainLabels"), false); S.TieCheckBox(_("B&lend system and Audacity theme"), wxT("/GUI/BlendThemes"), true); } S.EndStatic(); S.EndScroller(); }
void TracksPrefs::PopulateOrExchange(ShuttleGui & S) { S.SetBorder(2); S.StartStatic(_("Display")); { S.TieCheckBox(_("&Update display while playing"), wxT("/GUI/AutoScroll"), true); S.TieCheckBox(_("Automatically &fit tracks vertically zoomed"), wxT("/GUI/TracksFitVerticallyZoomed"), false); S.AddSpace(10); S.StartMultiColumn(2); { S.TieChoice(_("Default &view mode:"), wxT("/GUI/DefaultViewModeNew"), 0, mViewChoices, mViewCodes); S.SetSizeHints(mViewChoices); S.TieTextBox(_("Default audio track &name:"), wxT("/GUI/TrackNames/DefaultTrackName"), _("Audio Track"), 30); } S.EndMultiColumn(); S.TieCheckBox(_("Sho&w audio track name as overlay"), wxT("/GUI/ShowTrackNameInWaveform"), false); } S.EndStatic(); S.StartStatic(_("Behaviors")); { S.TieCheckBox(_("&Select all audio in project, if none selected"), wxT("/GUI/SelectAllOnNone"), true); /* i18n-hint: cut-lines are a lines indicating where to cut.*/ S.TieCheckBox(_("Enable cu&t lines"), wxT("/GUI/EnableCutLines"), false); S.TieCheckBox(_("Enable &dragging of left and right selection edges"), wxT("/GUI/AdjustSelectionEdges"), true); S.TieCheckBox(_("\"Move track focus\" c&ycles repeatedly through tracks"), wxT("/GUI/CircularTrackNavigation"), false); S.TieCheckBox(_("Editing a clip can &move other clips"), wxT("/GUI/EditClipCanMove"), true); #ifdef EXPERIMENTAL_SCROLLING_LIMITS S.TieCheckBox(_("Enable scrolling left of &zero"), wxT("/GUI/ScrollBeyondZero"), false); #endif S.AddSpace(10); S.StartMultiColumn(2); { S.TieChoice(_("Solo &Button:"), wxT("/GUI/Solo"), wxT("Standard"), mSoloChoices, mSoloCodes); S.SetSizeHints(mSoloChoices); } S.EndMultiColumn(); } S.EndStatic(); }
void AudioIOPrefs::PopulateOrExchange( ShuttleGui & S ) { /// \todo /// JKC: I think setting paths in gPrefs is bad practice. /// Suppose we are using gPrefs from elsewhere at the same time? /// Change these all to full paths? gPrefs->SetPath(wxT("/AudioIO")); S.SetBorder( 2 ); S.StartHorizontalLay(wxEXPAND, 0 ); S.StartStatic( _("Playback"),1 ); { S.StartMultiColumn(2, wxEXPAND); S.SetStretchyCol(1); S.TieChoice( _("Device") + wxString(wxT(":")), wxT("PlaybackDevice"), wxT(""), mmPlayNames, mmPlayLabels ); S.AddPrompt( _("Using:") ); wxString ver = _("Portaudio v"); #if USE_PORTAUDIO_V19 ver += wxT("19"); #else ver += wxT("18"); #endif S.AddFixedText( ver ); S.EndMultiColumn(); } S.EndStatic(); S.StartStatic( _("Recording"), 1 ); { S.StartMultiColumn(2, wxEXPAND); S.SetStretchyCol(1); S.TieChoice( _("Device") + wxString(wxT(":")), wxT("RecordingDevice"), wxT(""), mmRecordNames, mmRecordLabels ); S.TieChoice( _("Channels") + wxString(wxT(":")), wxT("RecordChannels"), 2, mmChannelNames, mmChannelLabels ); S.EndMultiColumn(); } S.EndStatic(); S.EndHorizontalLay(); S.StartStatic( _("Playthrough") ); { S.TieCheckBox( _("&Play other tracks while recording new one"), wxT("Duplex"),true); #ifdef __MACOSX__ S.TieCheckBox( _("&Hardware Playthrough (Play new track while recording it)"), wxT("Playthrough"),false); #endif S.TieCheckBox( _("&Software Playthrough (Play new track while recording it)"), wxT("SWPlaythrough"),false); } S.EndStatic(); S.StartHorizontalLay( wxEXPAND, 0 ); S.StartStatic( _("Cut Preview"),1 ); { S.StartThreeColumn(); S.TieTextBox( _("Play before cut region:"), wxT("CutPreviewBeforeLen"),1.0,9); S.AddUnits( _("seconds") ); S.TieTextBox( _("Play after cut region:"),wxT("CutPreviewAfterLen"), 1.0,9); S.AddUnits( _("seconds") ); S.EndThreeColumn(); } S.EndStatic(); S.StartStatic( _("Latency"),1 ); { S.StartThreeColumn(); #if USE_PORTAUDIO_V19 // only show the following controls if we use Portaudio v19, because // for Portaudio v19 we always use default buffer sizes S.TieTextBox( _("Audio to buffer:"),wxT("LatencyDuration"),100.0,9); S.AddUnits( _("milliseconds") ); #endif S.TieTextBox( _("Latency correction:"),wxT("LatencyCorrection"),0.0,9); S.AddUnits( _("milliseconds") ); S.EndThreeColumn(); } S.EndStatic(); S.EndHorizontalLay(); S.StartHorizontalLay( wxEXPAND, 0 ); S.StartStatic( _("Seek Time"),1 ); { S.StartThreeColumn(); S.TieTextBox( _("Short period:"), wxT("SeekShortPeriod"),1.0,9); S.AddUnits( _("seconds") ); S.TieTextBox( _("Long period:"),wxT("SeekLongPeriod"), 15.0,9); S.AddUnits( _("seconds") ); S.EndThreeColumn(); } S.EndStatic(); S.StartStatic( _("Effects Preview"),1 ); { S.StartThreeColumn(); S.TieTextBox( _("Play when previewing:"), wxT("EffectsPreviewLen"), 3.0,9); S.AddUnits( _("seconds") ); S.EndThreeColumn(); } gPrefs->SetPath(wxT("/")); }