コード例 #1
0
ファイル: AbstractVstEditor.cpp プロジェクト: aidush/openmpt
void CAbstractVstEditor::UpdateMacroMenu()
//----------------------------------------
{
    CString label, macroName, macroText;
    char paramName[128];
    bool greyed;
    int macroType,nParam,action;

    CModDoc* pModDoc = m_pVstPlugin->GetModDoc();
    if (!pModDoc)
    {
            return;
    }

     CMenu* pInfoMenu = m_pMenu->GetSubMenu(2);
    pInfoMenu->DeleteMenu(2, MF_BYPOSITION);

    if (m_pMacroMenu->m_hMenu)
    {
            m_pMacroMenu->DestroyMenu();
    }
    if (!m_pMacroMenu->m_hMenu)
    {
            m_pMacroMenu->CreatePopupMenu();
    }

    for (int nMacro=0; nMacro<NUM_MACROS; nMacro++)
    {
            action=NULL;
            greyed=true;
            macroText = pModDoc->GetSoundFile()->m_MidiCfg.szMidiSFXExt[nMacro];
             macroType = pModDoc->GetMacroType(macroText);

            switch (macroType)        {
                    case sfx_unused:
                            macroName = "Unused. Learn Param...";
                            action=ID_LEARN_MACRO_FROM_PLUGGUI+nMacro;
                            greyed=false;
                            break;
                    case sfx_cutoff:
                            macroName = "Set Filter Cutoff";
                            break;
                    case sfx_reso:
                            macroName = "Set Filter Resonance";
                            break;
                    case sfx_mode: macroName = "Set Filter Mode";
                            break;
                    case sfx_drywet:
                            macroName = "Set plugin dry/wet ratio";
                            greyed=false;
                            break;
                    case sfx_plug:
                    {
                             nParam = pModDoc->MacroToPlugParam(macroText);
                            m_pVstPlugin->GetParamName(nParam, paramName, sizeof(paramName));

                            if (paramName[0] == 0) {
                                    strcpy(paramName, "N/A for this plug");
                            } else {
                                    greyed=false;
                            }

                            macroName.Format("%d - %s", nParam, paramName);
                            break;
                    }
                    case sfx_custom:
                    default:
                            macroName.Format("Custom: %s", macroText);
                            greyed=false;

            }
            label.Format("SF%X: %s", nMacro, macroName);
            m_pMacroMenu->AppendMenu(MF_STRING|(greyed?MF_GRAYED:0), action, label);
    }

    pInfoMenu->InsertMenu(2, MF_BYPOSITION|MF_POPUP, (UINT)m_pMacroMenu->m_hMenu, "&Macros");
}