diff --git a/src/tracks/labeltrack/ui/LabelTrackControls.cpp b/src/tracks/labeltrack/ui/LabelTrackControls.cpp index 886e3d408..40ca3509b 100644 --- a/src/tracks/labeltrack/ui/LabelTrackControls.cpp +++ b/src/tracks/labeltrack/ui/LabelTrackControls.cpp @@ -72,9 +72,9 @@ enum }; BEGIN_POPUP_MENU(LabelTrackMenuTable) - BEGIN_POPUP_MENU_SECTION( "Basic" ) - POPUP_MENU_ITEM( "Font", OnSetFontID, XO("&Font..."), OnSetFont) - END_POPUP_MENU_SECTION() + BeginSection( "Basic" ); + AppendItem( "Font", OnSetFontID, XO("&Font..."), POPUP_MENU_FN( OnSetFont ) ); + EndSection(); END_POPUP_MENU() void LabelTrackMenuTable::OnSetFont(wxCommandEvent &) diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp index 15bebb14a..ebe52eb73 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackControls.cpp @@ -131,10 +131,10 @@ void NoteTrackMenuTable::OnChangeOctave(wxCommandEvent &event) } BEGIN_POPUP_MENU(NoteTrackMenuTable) - BEGIN_POPUP_MENU_SECTION( "Basic" ) - POPUP_MENU_ITEM( "Up", OnUpOctaveID, XO("Up &Octave"), OnChangeOctave) - POPUP_MENU_ITEM( "Down", OnDownOctaveID, XO("Down Octa&ve"), OnChangeOctave) - END_POPUP_MENU_SECTION() + BeginSection( "Basic" ); + AppendItem( "Up", OnUpOctaveID, XO("Up &Octave"), POPUP_MENU_FN( OnChangeOctave ) ); + AppendItem( "Down", OnDownOctaveID, XO("Down Octa&ve"), POPUP_MENU_FN( OnChangeOctave ) ); + EndSection(); END_POPUP_MENU() PopupMenuTable *NoteTrackControls::GetMenuExtension(Track *) diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp index b53d1c4a4..1857b9551 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp @@ -256,24 +256,24 @@ void NoteTrackVRulerMenuTable::OnZoom( int iZoomCode ){ BEGIN_POPUP_MENU(NoteTrackVRulerMenuTable) - BEGIN_POPUP_MENU_SECTION( "Zoom" ) - BEGIN_POPUP_MENU_SECTION( "Basic" ) - POPUP_MENU_ITEM( "Reset", OnZoomResetID, XO("Zoom Reset\tShift-Right-Click"), OnZoomReset) - POPUP_MENU_ITEM( "Max", OnZoomMaxID, XO("Max Zoom"), OnZoomMax) - END_POPUP_MENU_SECTION() + BeginSection( "Zoom" ); + BeginSection( "Basic" ); + AppendItem( "Reset", OnZoomResetID, XO("Zoom Reset\tShift-Right-Click"), POPUP_MENU_FN( OnZoomReset ) ); + AppendItem( "Max", OnZoomMaxID, XO("Max Zoom"), POPUP_MENU_FN( OnZoomMax ) ); + EndSection(); - BEGIN_POPUP_MENU_SECTION( "InOut" ) - POPUP_MENU_ITEM( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), OnZoomInVertical) - POPUP_MENU_ITEM( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), OnZoomOutVertical) - END_POPUP_MENU_SECTION() - END_POPUP_MENU_SECTION() + BeginSection( "InOut" ); + AppendItem( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) ); + AppendItem( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) ); + EndSection(); + EndSection(); - BEGIN_POPUP_MENU_SECTION( "Pan" ) - BEGIN_POPUP_MENU_SECTION( "Octaves" ) - POPUP_MENU_ITEM( "Up", OnUpOctaveID, XO("Up &Octave"), OnUpOctave) - POPUP_MENU_ITEM( "Down", OnDownOctaveID, XO("Down Octa&ve"), OnDownOctave) - END_POPUP_MENU_SECTION() - END_POPUP_MENU_SECTION() + BeginSection( "Pan" ); + BeginSection( "Octaves" ); + AppendItem( "Up", OnUpOctaveID, XO("Up &Octave"), POPUP_MENU_FN( OnUpOctave) ); + AppendItem( "Down", OnDownOctaveID, XO("Down Octa&ve"), POPUP_MENU_FN( OnDownOctave ) ); + EndSection(); + EndSection(); END_POPUP_MENU() diff --git a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp index f0ce4a59c..c91420d47 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp @@ -277,24 +277,28 @@ void SpectrumVRulerMenuTable::InitMenu(wxMenu *pMenu) BEGIN_POPUP_MENU(SpectrumVRulerMenuTable) -BEGIN_POPUP_MENU_SECTION( "Scales" ) +BeginSection( "Scales" ); { const auto & names = SpectrogramSettings::GetScaleNames(); for (int ii = 0, nn = names.size(); ii < nn; ++ii) { - POPUP_MENU_RADIO_ITEM( names[ii].Internal(), + AppendRadioItem( names[ii].Internal(), OnFirstSpectrumScaleID + ii, names[ii].Msgid(), - OnSpectrumScaleType); + POPUP_MENU_FN( OnSpectrumScaleType ) ); } } -END_POPUP_MENU_SECTION() +EndSection(); -BEGIN_POPUP_MENU_SECTION( "Zoom" ) - POPUP_MENU_ITEM( "Reset", OnZoomResetID, XO("Zoom Reset"), OnZoomReset) - POPUP_MENU_ITEM( "Fit", OnZoomFitVerticalID, XO("Zoom to Fit\tShift-Right-Click"), OnZoomFitVertical) - POPUP_MENU_ITEM( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), OnZoomInVertical) - POPUP_MENU_ITEM( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), OnZoomOutVertical) -END_POPUP_MENU_SECTION() +BeginSection( "Zoom" ); + AppendItem( "Reset", OnZoomResetID, XO("Zoom Reset"), + POPUP_MENU_FN( OnZoomReset ) ); + AppendItem( "Fit", OnZoomFitVerticalID, XO("Zoom to Fit\tShift-Right-Click"), + POPUP_MENU_FN( OnZoomFitVertical ) ); + AppendItem( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), + POPUP_MENU_FN( OnZoomInVertical ) ); + AppendItem( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), + POPUP_MENU_FN( OnZoomOutVertical ) ); +EndSection(); END_POPUP_MENU() diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp index 738d2f39e..f3223479d 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp @@ -206,14 +206,14 @@ const TranslatableString GetWaveColorStr(int colorIndex) BEGIN_POPUP_MENU(WaveColorMenuTable) - POPUP_MENU_RADIO_ITEM( "Instrument1", OnInstrument1ID, - GetWaveColorStr(0), OnWaveColorChange) - POPUP_MENU_RADIO_ITEM( "Instrument2", OnInstrument2ID, - GetWaveColorStr(1), OnWaveColorChange) - POPUP_MENU_RADIO_ITEM( "Instrument3", OnInstrument3ID, - GetWaveColorStr(2), OnWaveColorChange) - POPUP_MENU_RADIO_ITEM( "Instrument4", OnInstrument4ID, - GetWaveColorStr(3), OnWaveColorChange) + AppendRadioItem( "Instrument1", OnInstrument1ID, + GetWaveColorStr(0), POPUP_MENU_FN( OnWaveColorChange ) ); + AppendRadioItem( "Instrument2", OnInstrument2ID, + GetWaveColorStr(1), POPUP_MENU_FN( OnWaveColorChange ) ); + AppendRadioItem( "Instrument3", OnInstrument3ID, + GetWaveColorStr(2), POPUP_MENU_FN( OnWaveColorChange ) ); + AppendRadioItem( "Instrument4", OnInstrument4ID, + GetWaveColorStr(3), POPUP_MENU_FN( OnWaveColorChange ) ); END_POPUP_MENU() /// Converts a WaveColor enumeration to a wxWidgets menu item Id. @@ -300,12 +300,12 @@ void FormatMenuTable::InitMenu(wxMenu *pMenu) } BEGIN_POPUP_MENU(FormatMenuTable) - POPUP_MENU_RADIO_ITEM( "16Bit", On16BitID, - GetSampleFormatStr(int16Sample), OnFormatChange) - POPUP_MENU_RADIO_ITEM("24Bit", On24BitID, - GetSampleFormatStr( int24Sample), OnFormatChange) - POPUP_MENU_RADIO_ITEM( "Float", OnFloatID, - GetSampleFormatStr(floatSample), OnFormatChange) + AppendRadioItem( "16Bit", On16BitID, + GetSampleFormatStr(int16Sample), POPUP_MENU_FN( OnFormatChange ) ); + AppendRadioItem("24Bit", On24BitID, + GetSampleFormatStr( int24Sample), POPUP_MENU_FN( OnFormatChange ) ); + AppendRadioItem( "Float", OnFloatID, + GetSampleFormatStr(floatSample), POPUP_MENU_FN( OnFormatChange ) ); END_POPUP_MENU() /// Converts a format enumeration to a wxWidgets menu item Id. @@ -424,23 +424,23 @@ void RateMenuTable::InitMenu(wxMenu *pMenu) } } -// Because of Bug 1780 we can't use POPUP_MENU_RADIO_ITEM +// Because of Bug 1780 we can't use AppendRadioItem // If we did, we'd get no message when clicking on Other... // when it is already selected. BEGIN_POPUP_MENU(RateMenuTable) - POPUP_MENU_CHECK_ITEM( "8000", OnRate8ID, XO("8000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "11025", OnRate11ID, XO("11025 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "16000", OnRate16ID, XO("16000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "22050", OnRate22ID, XO("22050 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "44100", OnRate44ID, XO("44100 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "48000", OnRate48ID, XO("48000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "88200", OnRate88ID, XO("88200 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "96000", OnRate96ID, XO("96000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "176400", OnRate176ID, XO("176400 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "192000", OnRate192ID, XO("192000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "352800", OnRate352ID, XO("352800 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "384000", OnRate384ID, XO("384000 Hz"), OnRateChange) - POPUP_MENU_CHECK_ITEM( "Other", OnRateOtherID, XO("&Other..."), OnRateOther) + AppendCheckItem( "8000", OnRate8ID, XO("8000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "11025", OnRate11ID, XO("11025 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "16000", OnRate16ID, XO("16000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "22050", OnRate22ID, XO("22050 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "44100", OnRate44ID, XO("44100 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "48000", OnRate48ID, XO("48000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "88200", OnRate88ID, XO("88200 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "96000", OnRate96ID, XO("96000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "176400", OnRate176ID, XO("176400 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "192000", OnRate192ID, XO("192000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "352800", OnRate352ID, XO("352800 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "384000", OnRate384ID, XO("384000 Hz"), POPUP_MENU_FN( OnRateChange ) ); + AppendCheckItem( "Other", OnRateOtherID, XO("&Other..."), POPUP_MENU_FN( OnRateOther ) ); END_POPUP_MENU() const int nRates = 12; @@ -768,20 +768,20 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable) WaveTrack *const pTrack = static_cast(mpTrack); const auto &view = WaveTrackView::Get( *pTrack ); - BEGIN_POPUP_MENU_SECTION( "SubViews" ) + BeginSection( "SubViews" ); if ( WaveTrackSubViews::slots() > 1 ) - POPUP_MENU_CHECK_ITEM( "MultiView", OnMultiViewID, XO("&Multi-view"), OnMultiView) + AppendCheckItem( "MultiView", OnMultiViewID, XO("&Multi-view"), POPUP_MENU_FN( OnMultiView ) ); int id = OnSetDisplayId; for ( const auto &type : AllTypes() ) { if ( view.GetMultiView() ) { - POPUP_MENU_CHECK_ITEM( type.name.Internal(), id++, type.name.Msgid(), OnSetDisplay) + AppendCheckItem( type.name.Internal(), id++, type.name.Msgid(), POPUP_MENU_FN( OnSetDisplay ) ); } else { - POPUP_MENU_RADIO_ITEM( type.name.Internal(), id++, type.name.Msgid(), OnSetDisplay) + AppendRadioItem( type.name.Internal(), id++, type.name.Msgid(), POPUP_MENU_FN( OnSetDisplay ) ); } } - END_POPUP_MENU_SECTION() + EndSection(); if ( pTrack ) { @@ -791,9 +791,9 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable) WaveTrackSubView::Type{ WaveTrackViewConstants::Waveform, {} } ) ); if( hasWaveform ){ - BEGIN_POPUP_MENU_SECTION( "WaveColor" ) + BeginSection( "WaveColor" ); POPUP_MENU_SUB_MENU( "WaveColor", WaveColorMenuTable, mpData ) - END_POPUP_MENU_SECTION() + EndSection(); } bool hasSpectrum = (displays.end() != std::find( @@ -801,36 +801,36 @@ BEGIN_POPUP_MENU(WaveTrackMenuTable) WaveTrackSubView::Type{ WaveTrackViewConstants::Spectrum, {} } ) ); if( hasSpectrum ){ - BEGIN_POPUP_MENU_SECTION( "SpectrogramSettings" ) - POPUP_MENU_ITEM( "SpectrogramSettings", OnSpectrogramSettingsID, XO("S&pectrogram Settings..."), OnSpectrogramSettings) - END_POPUP_MENU_SECTION() + BeginSection( "SpectrogramSettings" ); + AppendItem( "SpectrogramSettings", OnSpectrogramSettingsID, XO("S&pectrogram Settings..."), POPUP_MENU_FN( OnSpectrogramSettings ) ); + EndSection(); } } - BEGIN_POPUP_MENU_SECTION( "Channels" ) + BeginSection( "Channels" ); // If these are enabled again, choose a hot key for Mono that does not conflict // with Multi View - // POPUP_MENU_RADIO_ITEM(OnChannelMonoID, XO("&Mono"), OnChannelChange) - // POPUP_MENU_RADIO_ITEM(OnChannelLeftID, XO("&Left Channel"), OnChannelChange) - // POPUP_MENU_RADIO_ITEM(OnChannelRightID, XO("R&ight Channel"), OnChannelChange) - POPUP_MENU_ITEM( "MakeStereo", OnMergeStereoID, XO("Ma&ke Stereo Track"), OnMergeStereo) + // AppendRadioItem(OnChannelMonoID, XO("&Mono"), OnChannelChange) + // AppendRadioItem(OnChannelLeftID, XO("&Left Channel"), OnChannelChange) + // AppendRadioItem(OnChannelRightID, XO("R&ight Channel"), OnChannelChange) + AppendItem( "MakeStereo", OnMergeStereoID, XO("Ma&ke Stereo Track"), POPUP_MENU_FN( OnMergeStereo ) ); - POPUP_MENU_ITEM( "Swap", OnSwapChannelsID, XO("Swap Stereo &Channels"), OnSwapChannels) - POPUP_MENU_ITEM( "Split", OnSplitStereoID, XO("Spl&it Stereo Track"), OnSplitStereo) + AppendItem( "Swap", OnSwapChannelsID, XO("Swap Stereo &Channels"), POPUP_MENU_FN( OnSwapChannels ) ); + AppendItem( "Split", OnSplitStereoID, XO("Spl&it Stereo Track"), POPUP_MENU_FN( OnSplitStereo ) ); // DA: Uses split stereo track and then drag pan sliders for split-stereo-to-mono #ifndef EXPERIMENTAL_DA - POPUP_MENU_ITEM( "SplitToMono", OnSplitStereoMonoID, XO("Split Stereo to Mo&no"), OnSplitStereoMono) + AppendItem( "SplitToMono", OnSplitStereoMonoID, XO("Split Stereo to Mo&no"), POPUP_MENU_FN( OnSplitStereoMono ) ); #endif - END_POPUP_MENU_SECTION() + EndSection(); - BEGIN_POPUP_MENU_SECTION( "Format" ) + BeginSection( "Format" ); POPUP_MENU_SUB_MENU( "Format", FormatMenuTable, mpData ) - END_POPUP_MENU_SECTION() + EndSection(); - BEGIN_POPUP_MENU_SECTION( "Rate" ) + BeginSection( "Rate" ); POPUP_MENU_SUB_MENU( "Rate", RateMenuTable, mpData ) - END_POPUP_MENU_SECTION() + EndSection(); END_POPUP_MENU() diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp index 4611b9177..b3dfb7777 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp @@ -279,33 +279,33 @@ void WaveformVRulerMenuTable::InitMenu(wxMenu *pMenu) BEGIN_POPUP_MENU(WaveformVRulerMenuTable) - BEGIN_POPUP_MENU_SECTION( "Scales" ) + BeginSection( "Scales" ); { const auto & names = WaveformSettings::GetScaleNames(); for (int ii = 0, nn = names.size(); ii < nn; ++ii) { - POPUP_MENU_RADIO_ITEM( names[ii].Internal(), + AppendRadioItem( names[ii].Internal(), OnFirstWaveformScaleID + ii, names[ii].Msgid(), - OnWaveformScaleType); + POPUP_MENU_FN( OnWaveformScaleType ) ); } } - END_POPUP_MENU_SECTION() + EndSection(); - BEGIN_POPUP_MENU_SECTION( "Zoom" ) - BEGIN_POPUP_MENU_SECTION( "Basic" ) - POPUP_MENU_ITEM( "Reset", OnZoomFitVerticalID, XO("Zoom Reset\tShift-Right-Click"), OnZoomReset) - POPUP_MENU_ITEM( "TimesHalf", OnZoomDiv2ID, XO("Zoom x1/2"), OnZoomDiv2Vertical) - POPUP_MENU_ITEM( "TimesTwo", OnZoomTimes2ID, XO("Zoom x2"), OnZoomTimes2Vertical) + BeginSection( "Zoom" ); + BeginSection( "Basic" ); + AppendItem( "Reset", OnZoomFitVerticalID, XO("Zoom Reset\tShift-Right-Click"), POPUP_MENU_FN( OnZoomReset ) ); + AppendItem( "TimesHalf", OnZoomDiv2ID, XO("Zoom x1/2"), POPUP_MENU_FN( OnZoomDiv2Vertical ) ); + AppendItem( "TimesTwo", OnZoomTimes2ID, XO("Zoom x2"), POPUP_MENU_FN( OnZoomTimes2Vertical ) ); #ifdef EXPERIMENTAL_HALF_WAVE - POPUP_MENU_ITEM( "HalfWave", OnZoomHalfWaveID, XO("Half Wave"), OnZoomHalfWave) + AppendItem( "HalfWave", OnZoomHalfWaveID, XO("Half Wave"), POPUP_MENU_FN( OnZoomHalfWave ) ); #endif - END_POPUP_MENU_SECTION() + EndSection(); - BEGIN_POPUP_MENU_SECTION( "InOut" ) - POPUP_MENU_ITEM( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), OnZoomInVertical) - POPUP_MENU_ITEM( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), OnZoomOutVertical) - END_POPUP_MENU_SECTION() - END_POPUP_MENU_SECTION() + BeginSection( "InOut" ); + AppendItem( "In", OnZoomInVerticalID, XO("Zoom In\tLeft-Click/Left-Drag"), POPUP_MENU_FN( OnZoomInVertical ) ); + AppendItem( "Out", OnZoomOutVerticalID, XO("Zoom Out\tShift-Left-Click"), POPUP_MENU_FN( OnZoomOutVertical ) ); + EndSection(); + EndSection(); END_POPUP_MENU() diff --git a/src/tracks/timetrack/ui/TimeTrackControls.cpp b/src/tracks/timetrack/ui/TimeTrackControls.cpp index ea8d389bb..0b3fc0ba9 100644 --- a/src/tracks/timetrack/ui/TimeTrackControls.cpp +++ b/src/tracks/timetrack/ui/TimeTrackControls.cpp @@ -162,15 +162,15 @@ void TimeTrackMenuTable::OnTimeTrackLogInt(wxCommandEvent & /*event*/) } BEGIN_POPUP_MENU(TimeTrackMenuTable) - BEGIN_POPUP_MENU_SECTION( "Scales" ) - POPUP_MENU_RADIO_ITEM( "Linear", OnTimeTrackLinID, XO("&Linear scale"), OnTimeTrackLin) - POPUP_MENU_RADIO_ITEM( "Log", OnTimeTrackLogID, XO("L&ogarithmic scale"), OnTimeTrackLog) - END_POPUP_MENU_SECTION() + BeginSection( "Scales" ); + AppendRadioItem( "Linear", OnTimeTrackLinID, XO("&Linear scale"), POPUP_MENU_FN( OnTimeTrackLin ) ); + AppendRadioItem( "Log", OnTimeTrackLogID, XO("L&ogarithmic scale"), POPUP_MENU_FN( OnTimeTrackLog ) ); + EndSection(); - BEGIN_POPUP_MENU_SECTION( "Other" ) - POPUP_MENU_ITEM( "Range", OnSetTimeTrackRangeID, XO("&Range..."), OnSetTimeTrackRange) - POPUP_MENU_CHECK_ITEM( "LogInterp", OnTimeTrackLogIntID, XO("Logarithmic &Interpolation"), OnTimeTrackLogInt) - END_POPUP_MENU_SECTION() + BeginSection( "Other" ); + AppendItem( "Range", OnSetTimeTrackRangeID, XO("&Range..."), POPUP_MENU_FN( OnSetTimeTrackRange ) ); + AppendCheckItem( "LogInterp", OnTimeTrackLogIntID, XO("Logarithmic &Interpolation"), POPUP_MENU_FN( OnTimeTrackLogInt) ); + EndSection(); END_POPUP_MENU() PopupMenuTable *TimeTrackControls::GetMenuExtension(Track *) diff --git a/src/tracks/ui/CommonTrackControls.cpp b/src/tracks/ui/CommonTrackControls.cpp index 30d4d7285..2720eabf9 100644 --- a/src/tracks/ui/CommonTrackControls.cpp +++ b/src/tracks/ui/CommonTrackControls.cpp @@ -127,11 +127,11 @@ void TrackMenuTable::InitMenu(wxMenu *pMenu) } BEGIN_POPUP_MENU(TrackMenuTable) - BEGIN_POPUP_MENU_SECTION( "Basic" ) - POPUP_MENU_ITEM( "Name", OnSetNameID, XO("&Name..."), OnSetName) - END_POPUP_MENU_SECTION() - BEGIN_POPUP_MENU_SECTION( "Move" ) - POPUP_MENU_ITEM( "Up", + BeginSection( "Basic" ); + AppendItem( "Name", OnSetNameID, XO("&Name..."), POPUP_MENU_FN( OnSetName ) ); + EndSection(); + BeginSection( "Move" ); + AppendItem( "Up", // It is not correct to use NormalizedKeyString::Display here -- // wxWidgets will apply its equivalent to the key names passed to menu // functions. @@ -143,8 +143,8 @@ BEGIN_POPUP_MENU(TrackMenuTable) GetKeyFromName(wxT("TrackMoveUp")).GET() ), wxT("\t") ), - OnMoveTrack) - POPUP_MENU_ITEM( "Down", + POPUP_MENU_FN( OnMoveTrack ) ); + AppendItem( "Down", OnMoveDownID, XO("Move Track &Down").Join( Verbatim( @@ -153,8 +153,8 @@ BEGIN_POPUP_MENU(TrackMenuTable) GetKeyFromName(wxT("TrackMoveDown")).GET() ), wxT("\t") ), - OnMoveTrack) - POPUP_MENU_ITEM( "Top", + POPUP_MENU_FN( OnMoveTrack ) ); + AppendItem( "Top", OnMoveTopID, XO("Move Track to &Top").Join( Verbatim( @@ -163,8 +163,8 @@ BEGIN_POPUP_MENU(TrackMenuTable) GetKeyFromName(wxT("TrackMoveTop")).GET() ), wxT("\t") ), - OnMoveTrack) - POPUP_MENU_ITEM( "Bottom", + POPUP_MENU_FN( OnMoveTrack ) ); + AppendItem( "Bottom", OnMoveBottomID, XO("Move Track to &Bottom").Join( Verbatim( @@ -173,8 +173,8 @@ BEGIN_POPUP_MENU(TrackMenuTable) GetKeyFromName(wxT("TrackMoveBottom")).GET() ), wxT("\t") ), - OnMoveTrack) - END_POPUP_MENU_SECTION() + POPUP_MENU_FN( OnMoveTrack ) ); + EndSection(); END_POPUP_MENU() diff --git a/src/widgets/PopupMenuTable.cpp b/src/widgets/PopupMenuTable.cpp index 1b8dc32d4..39a210332 100644 --- a/src/widgets/PopupMenuTable.cpp +++ b/src/widgets/PopupMenuTable.cpp @@ -145,6 +145,28 @@ void PopupMenuTable::ExtendMenu( wxMenu &menu, PopupMenuTable &table ) Registry::Visit( visitor, table.Get( theMenu.pUserData ).get() ); } +void PopupMenuTable::Append( + const Identifier &stringId, PopupMenuTableEntry::Type type, int id, + const TranslatableString &string, wxCommandEventFunction memFn) +{ + mStack.back()->items.push_back( std::make_unique( + stringId, type, id, string, memFn + ) ); +} + +void PopupMenuTable::BeginSection( const Identifier &name ) +{ + auto uSection = std::make_unique< PopupMenuSection >( name ); + auto section = uSection.get(); + mStack.back()->items.push_back( std::move( uSection ) ); + mStack.push_back( section ); +} + +void PopupMenuTable::EndSection() +{ + mStack.pop_back(); +} + namespace{ void PopupMenu::DisconnectTable(PopupMenuTable *pTable) { diff --git a/src/widgets/PopupMenuTable.h b/src/widgets/PopupMenuTable.h index b4cd69531..1885d2437 100644 --- a/src/widgets/PopupMenuTable.h +++ b/src/widgets/PopupMenuTable.h @@ -115,6 +115,27 @@ public: protected: virtual void Populate() = 0; + + // To be used in implementations of Populate(): + void Append( + const Identifier &stringId, PopupMenuTableEntry::Type type, int id, + const TranslatableString &string, wxCommandEventFunction memFn); + + void AppendItem( const Identifier &stringId, int id, + const TranslatableString &string, wxCommandEventFunction memFn ) + { Append( stringId, PopupMenuTableEntry::Item, id, string, memFn ); } + + void AppendRadioItem( const Identifier &stringId, int id, + const TranslatableString &string, wxCommandEventFunction memFn ) + { Append( stringId, PopupMenuTableEntry::RadioItem, id, string, memFn ); } + + void AppendCheckItem( const Identifier &stringId, int id, + const TranslatableString &string, wxCommandEventFunction memFn ) + { Append( stringId, PopupMenuTableEntry::CheckItem, id, string, memFn ); } + + void BeginSection( const Identifier &name ); + void EndSection(); + void Clear() { mTop.reset(); } std::shared_ptr< Registry::GroupItem > mTop; @@ -156,9 +177,10 @@ void MyTable::DestroyMenu() BEGIN_POPUP_MENU(MyTable) // This is inside a function and can contain arbitrary code. But usually - // you only need a sequence of macro calls: + // you only need a sequence of calls: - POPUP_MENU_ITEM("Cut", OnCutSelectedTextID, XO("Cu&t"), OnCutSelectedText) + AppendItem("Cut", + OnCutSelectedTextID, XO("Cu&t"), POPUP_MENU_FN( OnCutSelectedText ) ); // etc. END_POPUP_MENU() @@ -192,46 +214,12 @@ void HandlerClass::Populate() { \ mStack.clear(); \ mStack.push_back( mTop.get() ); -#define POPUP_MENU_APPEND(stringId, type, id, string, memFn) \ - mStack.back()->items.push_back( std::make_unique( \ - Identifier{ stringId }, \ - type, \ - id, \ - string, \ - memFn \ - ) ); +#define POPUP_MENU_FN( memFn ) ( (wxCommandEventFunction) (&My::memFn) ) -#define POPUP_MENU_APPEND_ITEM(stringId, type, id, string, memFn) \ - POPUP_MENU_APPEND( stringId, \ - type, \ - id, \ - string, \ - (wxCommandEventFunction) (&My::memFn) ) - -#define POPUP_MENU_ITEM(stringId, id, string, memFn) \ - POPUP_MENU_APPEND_ITEM(stringId, Entry::Item, id, string, memFn); - -#define POPUP_MENU_RADIO_ITEM(stringId, id, string, memFn) \ - POPUP_MENU_APPEND_ITEM(stringId, Entry::RadioItem, id, string, memFn); - -#define POPUP_MENU_CHECK_ITEM(stringId, id, string, memFn) \ - POPUP_MENU_APPEND_ITEM(stringId, Entry::CheckItem, id, string, memFn); - -// classname names a class that derives from MenuTable and defines Instance() #define POPUP_MENU_SUB_MENU(stringId, classname, pUserData ) \ mStack.back()->items.push_back( \ Registry::Shared( classname::Instance().Get( pUserData ) ) ); -#define BEGIN_POPUP_MENU_SECTION( name ) \ - { auto uSection = std::make_unique< PopupMenuSection >( \ - Identifier{ name } ); \ - auto section = uSection.get(); \ - mStack.back()->items.push_back( std::move( uSection ) ); \ - mStack.push_back( section ); \ - } - -#define END_POPUP_MENU_SECTION() mStack.pop_back(); - // ends function #define END_POPUP_MENU() }