WoW API: EasyMenu

From AddOn Studio
Revision as of 07:58, 22 September 2009 by WoWWiki>Extaliones (→‎Examples: fix comment)
Jump to navigation Jump to search


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, menuFrame, anchor, x, y, displayMode, autoHideDelay)
menuList
Table (see Details)
menuFrame
the UI frame to populate.
anchor
Just like in the GameTooltip this is the anchor point.
x
X position.
y
Y position.
displayMode
The display mode. Usually "MENU".
autoHideDelay
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 (see HOWTO: Use UIDropDownMenu). To crate standard menu:

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

See Also