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
|