WoW API: EasyMenu
Jump to navigation
Jump to search
- This 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.