Fandom

WoWWiki

API EasyMenu

104,637pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

WoW API < EasyMenu
Icon-information-22x22This function is implemented by FrameXML in [DEPRECATED http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/EasyMenu.lua FrameXML/EasyMenu.lua].

Populate a context menu with options described in a provided table.

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

ArgumentsEdit

menuList 
Table - an array of tables describing the entries in the menu to be created. The descriptions may use any key-value tables used in a UIDropDownMenu info table; as a bare minimum, each option should specify the "text" key.
menuFrame 
Frame - a Frame object that will be used to store some information about the menu.
anchor 
String/Region - Specify what to anchor the menu relative to: either "cursor", a region name, or a region (frame) reference.
Number - x offset from the anchor.
Number - y offset from the anchor.
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 Edit

  • 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.
  • Fine-grained control over the positioning of the menu is possible by setting the menuFrame.point and menuFrame.relativePoint values to specific anchor points to use when anchoring the frame to a non-cursor region.

ExampleEdit

The following example creates a context menu based on a table description:

local menu = {
    { text = "Select an Option", isTitle = true},
    { text = "Option 1", func = function() print("You've chosen option 1"); end },
    { text = "Option 2", func = function() print("You've chosen option 2"); end },
    { text = "More Options", hasArrow = true,
        menuList = {
            { text = "Option 3", func = function() print("You've chosen option 3"); end }
        } 
    }
}
local menuFrame = CreateFrame("Frame", "ExampleMenuFrame", UIParent, "UIDropDownMenuTemplate")

-- Make the menu appear at the cursor: 
EasyMenu(menu, menuFrame, "cursor", 0 , 0, "MENU");
-- Or make the menu appear at the frame:
menuFrame:SetPoint("Center", UIParent, "Center")
EasyMenu(menu, menuFrame, menuFrame, 0 , 0, "MENU");

NotesEdit

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

See Also Edit

Also on Fandom

Random Wiki