|
|
@ -353,7 +353,9 @@ CUIMenu::CUIMenu (CUserInterface *pUI, CMiniDexed *pMiniDexed, CConfig *pConfig) |
|
|
|
m_nCurrentMenuItem (0), |
|
|
|
m_nCurrentMenuItem (0), |
|
|
|
m_nCurrentSelection (0), |
|
|
|
m_nCurrentSelection (0), |
|
|
|
m_nCurrentParameter (0), |
|
|
|
m_nCurrentParameter (0), |
|
|
|
m_nCurrentMenuDepth (0) |
|
|
|
m_nCurrentMenuDepth (0), |
|
|
|
|
|
|
|
m_hPerformanceLoadTimer (0), |
|
|
|
|
|
|
|
m_nPendingPerformanceID (0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
assert (m_pConfig); |
|
|
|
assert (m_pConfig); |
|
|
|
m_nToneGenerators = m_pConfig->GetToneGenerators(); |
|
|
|
m_nToneGenerators = m_pConfig->GetToneGenerators(); |
|
|
@ -1536,7 +1538,15 @@ void CUIMenu::TimerHandler (TKernelTimerHandle hTimer, void *pParam, void *pCont |
|
|
|
CUIMenu *pThis = static_cast<CUIMenu *> (pContext); |
|
|
|
CUIMenu *pThis = static_cast<CUIMenu *> (pContext); |
|
|
|
assert (pThis); |
|
|
|
assert (pThis); |
|
|
|
|
|
|
|
|
|
|
|
pThis->EventHandler (MenuEventBack); |
|
|
|
if (pThis->m_hPerformanceLoadTimer == hTimer) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pThis->m_pMiniDexed->SetNewPerformance(pThis->m_nPendingPerformanceID); |
|
|
|
|
|
|
|
pThis->m_hPerformanceLoadTimer = 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pThis->EventHandler (MenuEventBack); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CUIMenu::TimerHandlerNoBack (TKernelTimerHandle hTimer, void *pParam, void *pContext) |
|
|
|
void CUIMenu::TimerHandlerNoBack (TKernelTimerHandle hTimer, void *pParam, void *pContext) |
|
|
@ -1555,18 +1565,18 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
unsigned nValue = pUIMenu->m_nSelectedPerformanceID; |
|
|
|
unsigned nValue = pUIMenu->m_nSelectedPerformanceID; |
|
|
|
unsigned nStart = nValue; |
|
|
|
unsigned nStart = nValue; |
|
|
|
std::string Value; |
|
|
|
std::string Value; |
|
|
|
|
|
|
|
|
|
|
|
if (Event == MenuEventUpdate) |
|
|
|
if (Event == MenuEventUpdate) |
|
|
|
{ |
|
|
|
{ |
|
|
|
pUIMenu->m_bPerformanceDeleteMode=false; |
|
|
|
pUIMenu->m_bPerformanceDeleteMode = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (pUIMenu->m_bSplashShow) |
|
|
|
if (pUIMenu->m_bSplashShow) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return; |
|
|
|
return; |
|
|
|
}
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!pUIMenu->m_bPerformanceDeleteMode) |
|
|
|
if (!pUIMenu->m_bPerformanceDeleteMode) |
|
|
|
{ |
|
|
|
{ |
|
|
|
switch (Event) |
|
|
|
switch (Event) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1578,7 +1588,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (nValue == 0) |
|
|
|
if (nValue == 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Wrap around
|
|
|
|
|
|
|
|
nValue = nLastPerformance; |
|
|
|
nValue = nLastPerformance; |
|
|
|
} |
|
|
|
} |
|
|
|
else if (nValue > 0) |
|
|
|
else if (nValue > 0) |
|
|
@ -1586,8 +1595,12 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
--nValue; |
|
|
|
--nValue; |
|
|
|
} |
|
|
|
} |
|
|
|
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); |
|
|
|
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); |
|
|
|
pUIMenu->m_nSelectedPerformanceID = nValue; |
|
|
|
pUIMenu->m_nPendingPerformanceID = nValue; |
|
|
|
pUIMenu->m_pMiniDexed->SetNewPerformance(nValue); // Always load on scroll
|
|
|
|
if (pUIMenu->m_hPerformanceLoadTimer) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MenuEventStepUp: |
|
|
|
case MenuEventStepUp: |
|
|
@ -1595,7 +1608,6 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (nValue == nLastPerformance) |
|
|
|
if (nValue == nLastPerformance) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Wrap around
|
|
|
|
|
|
|
|
nValue = 0; |
|
|
|
nValue = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
else if (nValue < nLastPerformance) |
|
|
|
else if (nValue < nLastPerformance) |
|
|
@ -1603,24 +1615,25 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
++nValue; |
|
|
|
++nValue; |
|
|
|
} |
|
|
|
} |
|
|
|
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); |
|
|
|
} while ((pUIMenu->m_pMiniDexed->IsValidPerformance(nValue) != true) && (nValue != nStart)); |
|
|
|
pUIMenu->m_nSelectedPerformanceID = nValue; |
|
|
|
pUIMenu->m_nPendingPerformanceID = nValue; |
|
|
|
pUIMenu->m_pMiniDexed->SetNewPerformance(nValue); // Always load on scroll
|
|
|
|
if (pUIMenu->m_hPerformanceLoadTimer) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CTimer::Get()->CancelKernelTimer(pUIMenu->m_hPerformanceLoadTimer); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
pUIMenu->m_hPerformanceLoadTimer = CTimer::Get()->StartKernelTimer(MSEC2HZ(500), TimerHandler, 0, pUIMenu); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MenuEventSelect:
|
|
|
|
case MenuEventSelect: |
|
|
|
switch (pUIMenu->m_nCurrentParameter) |
|
|
|
if (pUIMenu->m_nCurrentParameter == 1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
case 1: |
|
|
|
|
|
|
|
if (pUIMenu->m_pMiniDexed->IsValidPerformance(pUIMenu->m_nSelectedPerformanceID)) |
|
|
|
if (pUIMenu->m_pMiniDexed->IsValidPerformance(pUIMenu->m_nSelectedPerformanceID)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
pUIMenu->m_bPerformanceDeleteMode=true; |
|
|
|
pUIMenu->m_bPerformanceDeleteMode = true; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance=false; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance = false; |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
default: |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -1633,54 +1646,54 @@ void CUIMenu::PerformanceMenu (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MenuEventStepDown: |
|
|
|
case MenuEventStepDown: |
|
|
|
pUIMenu->m_bConfirmDeletePerformance=false; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance = false; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MenuEventStepUp: |
|
|
|
case MenuEventStepUp: |
|
|
|
pUIMenu->m_bConfirmDeletePerformance=true; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance = true; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case MenuEventSelect:
|
|
|
|
case MenuEventSelect: |
|
|
|
pUIMenu->m_bPerformanceDeleteMode=false; |
|
|
|
pUIMenu->m_bPerformanceDeleteMode = false; |
|
|
|
if (pUIMenu->m_bConfirmDeletePerformance) |
|
|
|
if (pUIMenu->m_bConfirmDeletePerformance) |
|
|
|
{ |
|
|
|
{ |
|
|
|
pUIMenu->m_nSelectedPerformanceID = 0; |
|
|
|
pUIMenu->m_nSelectedPerformanceID = 0; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance=false; |
|
|
|
pUIMenu->m_bConfirmDeletePerformance = false; |
|
|
|
pUIMenu->m_pUI->DisplayWrite ("", "Delete", pUIMenu->m_pMiniDexed->DeletePerformance(nValue) ? "Completed" : "Error", false, false); |
|
|
|
pUIMenu->m_pUI->DisplayWrite("", "Delete", pUIMenu->m_pMiniDexed->DeletePerformance(nValue) ? "Completed" : "Error", false, false); |
|
|
|
pUIMenu->m_bSplashShow=true; |
|
|
|
pUIMenu->m_bSplashShow = true; |
|
|
|
CTimer::Get ()->StartKernelTimer (MSEC2HZ (1500), TimerHandlerNoBack, 0, pUIMenu); |
|
|
|
CTimer::Get()->StartKernelTimer(MSEC2HZ(1500), TimerHandlerNoBack, 0, pUIMenu); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
default: |
|
|
|
return; |
|
|
|
return; |
|
|
|
}
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(!pUIMenu->m_bPerformanceDeleteMode) |
|
|
|
if (!pUIMenu->m_bPerformanceDeleteMode) |
|
|
|
{ |
|
|
|
{ |
|
|
|
Value = pUIMenu->m_pMiniDexed->GetPerformanceName(nValue); |
|
|
|
Value = pUIMenu->m_pMiniDexed->GetPerformanceName(nValue); |
|
|
|
unsigned nBankNum = pUIMenu->m_pMiniDexed->GetPerformanceBank(); |
|
|
|
unsigned nBankNum = pUIMenu->m_pMiniDexed->GetPerformanceBank(); |
|
|
|
|
|
|
|
|
|
|
|
std::string nPSelected = "000"; |
|
|
|
std::string nPSelected = "000"; |
|
|
|
nPSelected += std::to_string(nBankNum+1); // Convert to user-facing bank number rather than index
|
|
|
|
nPSelected += std::to_string(nBankNum + 1); |
|
|
|
nPSelected = nPSelected.substr(nPSelected.length()-3,3); |
|
|
|
nPSelected = nPSelected.substr(nPSelected.length() - 3, 3); |
|
|
|
std::string nPPerf = "000"; |
|
|
|
std::string nPPerf = "000"; |
|
|
|
nPPerf += std::to_string(nValue+1); // Convert to user-facing performance number rather than index
|
|
|
|
nPPerf += std::to_string(nValue + 1); |
|
|
|
nPPerf = nPPerf.substr(nPPerf.length()-3,3); |
|
|
|
nPPerf = nPPerf.substr(nPPerf.length() - 3, 3); |
|
|
|
|
|
|
|
|
|
|
|
nPSelected += ":"+nPPerf; |
|
|
|
nPSelected += ":" + nPPerf; |
|
|
|
|
|
|
|
|
|
|
|
pUIMenu->m_pUI->DisplayWrite (pUIMenu->m_pParentMenu[pUIMenu->m_nCurrentMenuItem].Name, nPSelected.c_str(), |
|
|
|
pUIMenu->m_pUI->DisplayWrite(pUIMenu->m_pParentMenu[pUIMenu->m_nCurrentMenuItem].Name, nPSelected.c_str(), |
|
|
|
Value.c_str (), true, true); |
|
|
|
Value.c_str(), true, true); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
pUIMenu->m_pUI->DisplayWrite ("", "Delete?", pUIMenu->m_bConfirmDeletePerformance ? "Yes" : "No", false, false); |
|
|
|
pUIMenu->m_pUI->DisplayWrite("", "Delete?", pUIMenu->m_bConfirmDeletePerformance ? "Yes" : "No", false, false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1986,3 +1999,4 @@ void CUIMenu::EditTGParameterModulation (CUIMenu *pUIMenu, TMenuEvent Event) |
|
|
|
nValue > rParam.Minimum, nValue < rParam.Maximum); |
|
|
|
nValue > rParam.Minimum, nValue < rParam.Maximum); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
```
|
|
|
|