WoW API: EasyMenu

Revision as of 08:30, 2 December 2009 by WoWWiki>Iamcal (a note about naming frames)

WoW API < EasyMenu

"I" iconThis function is implemented in Lua here FrameXML/EasyMenu.lua.

Easily create context menus on the fly with clickable items.

EasyMenu(menuList, menuFrame, anchor, x, y, displayMode, autoHideDelay)

Arguments

menuList
Table - see Details for key/value descriptions.
menuFrame
Frame - the UI frame to populate.
anchor
String - Just like in the GameTooltip this is the anchor point.
x
Number - x offset.
y
Number - y offset
displayMode
String - "MENU" enables a tooltip-styled context menu, any other value the dropdown style.
autoHideDelay
Number - Automatically hide the menu after this many seconds.

Details

menuList
This needs to be a table in the following format.
{
    {
        text = "Menu Item 1", -- string. This is the text to put on this menu item.
        func = function() DoStuff() end, -- function. This is the function that will fire when you click on this menu item.
    },
    {
        text = "Menu Item 2",
        func = function() DoOtherStuff() end,
    },
    -- ...
}
See "List of button attributes" in the FrameXML file UIDropDownMenu.lua for the full list of available table elements.

Notes

  • The menu becomes visible as soon as you call the function and goes away after you click a menu item unless keepShownOnClick in menuList was set to 1.

Examples

local menu_frame = CreateFrame("Frame", "ExampleMenuFrame", UIParent, "UIDropDownMenuTemplate")

local function onOption1()
  -- do stuff
end
local function onOption2()
  -- do stuff
end

local menuList = {
  { text = "Option 1", func = onOption1 },
  { text = "Option 2", func = onOption2 }
}

menu_frame:SetPoint("Center", UIParent, "Center") -- setup position of menu. Not needed if 'cursor' is used as anchor in EasyMenu
EasyMenu(menuList, menuFrame, "ExampleMenuFrame", 0 , 0, "MENU")

Above example creates "MENU" type poupup menu. To crate standard menu:

local menu_frame = CreateFrame("Frame", "ExampleMenuFrame", UIParent)
...
EasyMenu(menuList, menuFrame, "ExampleMenuFrame", 0 , 0)

Note: You must give the frame a name (argument 2 to CreateFrame()) for menus to work.

See Also