| 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@1 | 19 MenuFrame:SetWidth(70) | 
| contrebasse@0 | 20 local numActiveEntries = 0 | 
| contrebasse@0 | 21 local menuEntries = {} | 
| contrebasse@0 | 22 | 
| contrebasse@1 | 23 function A.menuOpen(parent) | 
| contrebasse@1 | 24 	A.DEBUG("menuOpen") | 
| contrebasse@1 | 25 	--if not InCombatLockDown() and numActiveEntries>0 then | 
| contrebasse@1 | 26 		MenuFrame:ClearAllPoints() | 
| contrebasse@1 | 27 		MenuFrame:SetPoint("TOPLEFT",parent,"TOPRIGHT",0,0) | 
| contrebasse@1 | 28 | 
| contrebasse@1 | 29 		MenuFrame:SetSize(50,50) | 
| contrebasse@1 | 30 		MenuFrame:SetParent(UIParent) | 
| contrebasse@1 | 31 | 
| contrebasse@0 | 32 		MenuFrame:Show() | 
| contrebasse@1 | 33 	--end | 
| contrebasse@0 | 34 end | 
| contrebasse@0 | 35 function A.menuClose() | 
| contrebasse@0 | 36 	MenuFrame:Hide() | 
| contrebasse@0 | 37 	MenuFrame:ClearAllPoints() | 
| contrebasse@0 | 38 | 
| contrebasse@0 | 39 	for i=1,numActiveEntries do | 
| contrebasse@0 | 40 		menuEntries[i]:Hide() | 
| contrebasse@0 | 41 	end | 
| contrebasse@0 | 42 end | 
| contrebasse@0 | 43 | 
| contrebasse@0 | 44 function A.menuAddItem(text,action,itemID) | 
| contrebasse@1 | 45 	A.DEBUG("menuAddItem "..text) | 
| contrebasse@0 | 46 	local btn | 
| contrebasse@0 | 47 	-- Create a button only if necessary | 
| contrebasse@0 | 48 	if numActiveEntries >= #menuEntries then | 
| contrebasse@0 | 49 		btn = CreateFrame("Button", nil, MenuFrame, "SecureActionButtonTemplate") | 
| contrebasse@0 | 50 		table.insert(menuEntries,btn) | 
| contrebasse@0 | 51 | 
| contrebasse@0 | 52 		btn:SetHeight(12) | 
| contrebasse@1 | 53 		btn:SetWidth(70) | 
| contrebasse@0 | 54 | 
| contrebasse@0 | 55 		-- Set its position | 
| contrebasse@0 | 56 		if #menuEntries==1 then | 
| contrebasse@0 | 57 			btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0) | 
| contrebasse@0 | 58 		else | 
| contrebasse@0 | 59 			btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0) | 
| contrebasse@0 | 60 		end | 
| contrebasse@0 | 61 	else | 
| contrebasse@0 | 62 		btn = menuEntries[numActiveEntries+1] | 
| contrebasse@0 | 63 	end | 
| contrebasse@0 | 64 | 
| contrebasse@0 | 65 	-- Set its text | 
| contrebasse@0 | 66 	btn:SetText(text or " ") | 
| contrebasse@0 | 67 | 
| contrebasse@0 | 68 	-- Set its action | 
| contrebasse@0 | 69 	if type(action)=="function" then | 
| contrebasse@0 | 70 		btn:SetScript("OnClick",action) | 
| contrebasse@0 | 71 		btn:SetAttribute("type", nil) | 
| contrebasse@0 | 72 		btn:SetAttribute("spell", nil) | 
| contrebasse@1 | 73 		btn:SetAttribute("target-item",itemID) | 
| contrebasse@0 | 74 	elseif type(action)=="string" then | 
| contrebasse@0 | 75 		btn:SetScript("OnClick",nil) | 
| contrebasse@0 | 76 		btn:SetAttribute("type", "spell") | 
| contrebasse@0 | 77 		btn:SetAttribute("spell", action) | 
| contrebasse@0 | 78 		btn:SetAttribute("target-item",GetItemInfo(itemID)) | 
| contrebasse@0 | 79 	end -- if | 
| contrebasse@0 | 80 | 
| contrebasse@0 | 81 	-- Reposition MenuFrame | 
| contrebasse@1 | 82 	--MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0) | 
| contrebasse@1 | 83 	MenuFrame:SetHeight((numActiveEntries+1)*12) | 
| contrebasse@0 | 84 | 
| contrebasse@0 | 85 	-- Increase she entry number | 
| contrebasse@0 | 86 	numActiveEntries = numActiveEntries + 1 | 
| contrebasse@0 | 87 end -- function |