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