| 
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
 |