Wikia

WoWWiki

API EasyMenu

Talk0
101,311pages on
this wiki
Revision as of 21:12, May 21, 2010 by Egingell (Talk | contribs)

(diff) ←Older revision | Latest revision (diff) | Newer revision → (diff)
WoW API < EasyMenu
Icon-information-22x22This function is implemented by FrameXML in 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

Around Wikia's network

Random Wiki