| contrebasse@0 | 1 local addonName, A = ... | 
| contrebasse@0 | 2 | 
| contrebasse@0 | 3 -- Create the menu frame | 
| contrebasse@0 | 4 local MenuFrame = CreateFrame("Frame",nil,UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name | 
| contrebasse@0 | 5 MenuFrame:Hide() | 
| contrebasse@0 | 6 MenuFrame:SetBackdrop({ | 
| contrebasse@0 | 7 	bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background",  -- path to the background texture | 
| contrebasse@0 | 8 	edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border",    -- path to the border texture | 
| contrebasse@0 | 9 	tile = true,      -- true to repeat the background texture to fill the frame, false to scale it | 
| contrebasse@0 | 10 	tileSize = 32,    -- size (width or height) of the square repeating background tiles (in pixels) | 
| contrebasse@0 | 11 	edgeSize = 32,    -- thickness of edge segments and square size of edge corners (in pixels) | 
| contrebasse@0 | 12 	insets = {        -- distance from the edges of the frame to those of the background texture (in pixels) | 
| contrebasse@0 | 13 		left = 11, | 
| contrebasse@0 | 14 		right = 12, | 
| contrebasse@0 | 15 		top = 12, | 
| contrebasse@0 | 16 		bottom = 11 | 
| contrebasse@0 | 17 	} | 
| contrebasse@0 | 18 }) | 
| contrebasse@0 | 19 local numActiveEntries = 0 | 
| contrebasse@0 | 20 local menuEntries = {} | 
| contrebasse@0 | 21 | 
| contrebasse@0 | 22 function A.menuOpen() | 
| contrebasse@0 | 23 	if not InCombatLockDown() and numActiveEntries>0 then | 
| contrebasse@0 | 24 		MenuFrame:Show() | 
| contrebasse@0 | 25 	end | 
| contrebasse@0 | 26 end | 
| contrebasse@0 | 27 function A.menuClose() | 
| contrebasse@0 | 28 	MenuFrame:Hide() | 
| contrebasse@0 | 29 	MenuFrame:ClearAllPoints() | 
| contrebasse@0 | 30 | 
| contrebasse@0 | 31 	for i=1,numActiveEntries do | 
| contrebasse@0 | 32 		menuEntries[i]:Hide() | 
| contrebasse@0 | 33 	end | 
| contrebasse@0 | 34 end | 
| contrebasse@0 | 35 | 
| contrebasse@0 | 36 function A.menuAddItem(text,action,itemID) | 
| contrebasse@0 | 37 	local btn | 
| contrebasse@0 | 38 	-- Create a button only if necessary | 
| contrebasse@0 | 39 	if numActiveEntries >= #menuEntries then | 
| contrebasse@0 | 40 		btn = CreateFrame("Button", nil, MenuFrame, "SecureActionButtonTemplate") | 
| contrebasse@0 | 41 		table.insert(menuEntries,btn) | 
| contrebasse@0 | 42 | 
| contrebasse@0 | 43 		btn:SetHeight(12) | 
| contrebasse@0 | 44 | 
| contrebasse@0 | 45 		-- Set its position | 
| contrebasse@0 | 46 		if #menuEntries==1 then | 
| contrebasse@0 | 47 			btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0) | 
| contrebasse@0 | 48 		else | 
| contrebasse@0 | 49 			btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0) | 
| contrebasse@0 | 50 		end | 
| contrebasse@0 | 51 	else | 
| contrebasse@0 | 52 		btn = menuEntries[numActiveEntries+1] | 
| contrebasse@0 | 53 	end | 
| contrebasse@0 | 54 | 
| contrebasse@0 | 55 	-- Set its text | 
| contrebasse@0 | 56 	btn:SetText(text or " ") | 
| contrebasse@0 | 57 | 
| contrebasse@0 | 58 	-- Set its action | 
| contrebasse@0 | 59 	if type(action)=="function" then | 
| contrebasse@0 | 60 		btn:SetScript("OnClick",action) | 
| contrebasse@0 | 61 		btn:SetAttribute("type", nil) | 
| contrebasse@0 | 62 		btn:SetAttribute("spell", nil) | 
| contrebasse@0 | 63 		btn:SetAttribute("target-item",nil) | 
| contrebasse@0 | 64 	elseif type(action)=="string" then | 
| contrebasse@0 | 65 		btn:SetScript("OnClick",nil) | 
| contrebasse@0 | 66 		btn:SetAttribute("type", "spell") | 
| contrebasse@0 | 67 		btn:SetAttribute("spell", action) | 
| contrebasse@0 | 68 		btn:SetAttribute("target-item",GetItemInfo(itemID)) | 
| contrebasse@0 | 69 	end -- if | 
| contrebasse@0 | 70 | 
| contrebasse@0 | 71 	-- Reposition MenuFrame | 
| contrebasse@0 | 72 	MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0) | 
| contrebasse@0 | 73 | 
| contrebasse@0 | 74 	-- Increase she entry number | 
| contrebasse@0 | 75 	numActiveEntries = numActiveEntries + 1 | 
| contrebasse@0 | 76 end -- function |