From 5b66c8dd704b31c753f33521029bc19094a9aa35 Mon Sep 17 00:00:00 2001 From: probonopd Date: Thu, 1 May 2025 22:18:05 +0200 Subject: [PATCH] Improve menu structure --- src/uimenu.cpp | 16 +++++++++++----- src/uimenu.h | 20 +++++++++++--------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/uimenu.cpp b/src/uimenu.cpp index 5abf42b..e9d41a2 100644 --- a/src/uimenu.cpp +++ b/src/uimenu.cpp @@ -81,9 +81,7 @@ const CUIMenu::TMenuItem CUIMenu::s_TGMenu[] = {"Detune", EditTGParameter, 0, CMiniDexed::TGParameterMasterTune}, {"Cutoff", EditTGParameter, 0, CMiniDexed::TGParameterCutoff}, {"Resonance", EditTGParameter, 0, CMiniDexed::TGParameterResonance}, - {"Unison Voices", EditTGParameter, 0, CMiniDexed::TGParameterUnisonVoices}, - {"Unison Detune", EditTGParameter, 0, CMiniDexed::TGParameterUnisonDetune}, - {"Unison Spread", EditTGParameter, 0, CMiniDexed::TGParameterUnisonSpread}, + {"Unison", MenuHandler, s_UnisonMenu}, {"Pitch Bend", MenuHandler, s_EditPitchBendMenu}, {"Portamento", MenuHandler, s_EditPortamentoMenu}, {"Poly/Mono", EditTGParameter, 0, CMiniDexed::TGParameterMonoMode}, @@ -93,6 +91,14 @@ const CUIMenu::TMenuItem CUIMenu::s_TGMenu[] = {0} }; +const CUIMenu::TMenuItem CUIMenu::s_UnisonMenu[] = +{ + {"Voices", EditTGParameter, 0, CMiniDexed::TGParameterUnisonVoices}, + {"Detune", EditTGParameter, 0, CMiniDexed::TGParameterUnisonDetune}, + {"Spread", EditTGParameter, 0, CMiniDexed::TGParameterUnisonSpread}, + {0} +}; + const CUIMenu::TMenuItem CUIMenu::s_EffectsMenu[] = { {"Compress", EditGlobalParameter, 0, CMiniDexed::ParameterCompressorEnable}, @@ -1104,7 +1110,7 @@ string CUIMenu::GetOPValueString (unsigned nOPParameter, int nValue) string CUIMenu::ToVolume (int nValue) { - static const size_t MaxChars = CConfig::LCDColumns-2; + static const std::size_t MaxChars = CConfig::LCDColumns-2; char VolumeBar[MaxChars+1]; memset (VolumeBar, 0xFF, sizeof VolumeBar); // 0xFF is the block character VolumeBar[nValue * MaxChars / 127] = '\0'; @@ -1115,7 +1121,7 @@ string CUIMenu::ToVolume (int nValue) string CUIMenu::ToPan (int nValue) { assert (CConfig::LCDColumns == 16); - static const size_t MaxChars = CConfig::LCDColumns-3; + static const std::size_t MaxChars = CConfig::LCDColumns-3; char PanMarker[MaxChars+1] = "......:......"; unsigned nIndex = nValue * MaxChars / 127; if (nIndex == MaxChars) diff --git a/src/uimenu.h b/src/uimenu.h index 6c72f36..cbeb6ac 100644 --- a/src/uimenu.h +++ b/src/uimenu.h @@ -57,11 +57,6 @@ public: }; public: - CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig); - - void EventHandler (TMenuEvent Event); - -private: typedef void TMenuHandler (CUIMenu *pUIMenu, TMenuEvent Event); struct TMenuItem @@ -72,6 +67,17 @@ private: unsigned Parameter; }; + static const TMenuItem s_UnisonMenu[]; + static void EditTGParameter(CUIMenu *pUIMenu, TMenuEvent Event); + static void EditVoiceParameter(CUIMenu *pUIMenu, TMenuEvent Event); + static void EditOPParameter(CUIMenu *pUIMenu, TMenuEvent Event); + static void SavePerformance(CUIMenu *pUIMenu, TMenuEvent Event); + +public: + CUIMenu(CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig); + void EventHandler(TMenuEvent Event); + +private: typedef std::string TToString (int nValue); struct TParameter @@ -87,10 +93,6 @@ private: static void EditGlobalParameter (CUIMenu *pUIMenu, TMenuEvent Event); static void EditVoiceBankNumber (CUIMenu *pUIMenu, TMenuEvent Event); static void EditProgramNumber (CUIMenu *pUIMenu, TMenuEvent Event); - static void EditTGParameter (CUIMenu *pUIMenu, TMenuEvent Event); - static void EditVoiceParameter (CUIMenu *pUIMenu, TMenuEvent Event); - static void EditOPParameter (CUIMenu *pUIMenu, TMenuEvent Event); - static void SavePerformance (CUIMenu *pUIMenu, TMenuEvent Event); static void EditTGParameter2 (CUIMenu *pUIMenu, TMenuEvent Event); static void EditTGParameterModulation (CUIMenu *pUIMenu, TMenuEvent Event); static void PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event);