contrebasse@0: local addonName, A = ... contrebasse@0: contrebasse@0: -- Create the menu frame contrebasse@0: local MenuFrame = CreateFrame("Frame",nil,UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name contrebasse@0: MenuFrame:Hide() contrebasse@0: MenuFrame:SetBackdrop({ contrebasse@0: bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background", -- path to the background texture contrebasse@0: edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", -- path to the border texture contrebasse@0: tile = true, -- true to repeat the background texture to fill the frame, false to scale it contrebasse@0: tileSize = 32, -- size (width or height) of the square repeating background tiles (in pixels) contrebasse@0: edgeSize = 32, -- thickness of edge segments and square size of edge corners (in pixels) contrebasse@0: insets = { -- distance from the edges of the frame to those of the background texture (in pixels) contrebasse@0: left = 11, contrebasse@0: right = 12, contrebasse@0: top = 12, contrebasse@0: bottom = 11 contrebasse@0: } contrebasse@0: }) contrebasse@0: local numActiveEntries = 0 contrebasse@0: local menuEntries = {} contrebasse@0: contrebasse@0: function A.menuOpen() contrebasse@0: if not InCombatLockDown() and numActiveEntries>0 then contrebasse@0: MenuFrame:Show() contrebasse@0: end contrebasse@0: end contrebasse@0: function A.menuClose() contrebasse@0: MenuFrame:Hide() contrebasse@0: MenuFrame:ClearAllPoints() contrebasse@0: contrebasse@0: for i=1,numActiveEntries do contrebasse@0: menuEntries[i]:Hide() contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: function A.menuAddItem(text,action,itemID) contrebasse@0: local btn contrebasse@0: -- Create a button only if necessary contrebasse@0: if numActiveEntries >= #menuEntries then contrebasse@0: btn = CreateFrame("Button", nil, MenuFrame, "SecureActionButtonTemplate") contrebasse@0: table.insert(menuEntries,btn) contrebasse@0: contrebasse@0: btn:SetHeight(12) contrebasse@0: contrebasse@0: -- Set its position contrebasse@0: if #menuEntries==1 then contrebasse@0: btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0) contrebasse@0: else contrebasse@0: btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0) contrebasse@0: end contrebasse@0: else contrebasse@0: btn = menuEntries[numActiveEntries+1] contrebasse@0: end contrebasse@0: contrebasse@0: -- Set its text contrebasse@0: btn:SetText(text or " ") contrebasse@0: contrebasse@0: -- Set its action contrebasse@0: if type(action)=="function" then contrebasse@0: btn:SetScript("OnClick",action) contrebasse@0: btn:SetAttribute("type", nil) contrebasse@0: btn:SetAttribute("spell", nil) contrebasse@0: btn:SetAttribute("target-item",nil) contrebasse@0: elseif type(action)=="string" then contrebasse@0: btn:SetScript("OnClick",nil) contrebasse@0: btn:SetAttribute("type", "spell") contrebasse@0: btn:SetAttribute("spell", action) contrebasse@0: btn:SetAttribute("target-item",GetItemInfo(itemID)) contrebasse@0: end -- if contrebasse@0: contrebasse@0: -- Reposition MenuFrame contrebasse@0: MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0) contrebasse@0: contrebasse@0: -- Increase she entry number contrebasse@0: numActiveEntries = numActiveEntries + 1 contrebasse@0: end -- function