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
|