MenuEX={} local function AdjustSubMenuProperties(tSubMenu, tItemProperties) for nIndex, tItem in tSubMenu do if tItem.ID == tItemProperties.ID then for sKey, vValue in tItem do if tItemProperties[sKey] == nil then tItemProperties[sKey] = vValue; end end tSubMenu[nIndex] = tItemProperties; break; elseif type(tItem.SubMenu) == 'table' and tItem.ID == -1 then tSubMenu[nIndex].SubMenu = AdjustSubMenuProperties(tSubMenu[nIndex].SubMenu, tItemProperties); end end return tSubMenu; end -- function MenuEX.SetChecked(nID, bChecked) tMenu = Application.GetMenu(); tMenu = AdjustSubMenuProperties(tMenu, {ID=nID, Checked=bChecked}); Application.SetMenu(tMenu); end function MenuEX.SetEnabled(nID, bEnabled) tMenu = Application.GetMenu(); tMenu = AdjustSubMenuProperties(tMenu, {ID=nID, Enabled=bEnabled}); Application.SetMenu(tMenu); end function MenuEX.SetText(nID, sText) tMenu = Application.GetMenu(); tMenu = AdjustSubMenuProperties(tMenu, {ID=nID, Text=sText}); Application.SetMenu(tMenu); end function MenuEX.SetIconID(nID, nIconID) tMenu = Application.GetMenu(); tMenu = AdjustSubMenuProperties(tMenu, {ID=nID, IconID=nIconID}); Application.SetMenu(tMenu); end