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@2
|
19 MenuFrame:SetWidth(170)
|
contrebasse@2
|
20 MenuFrame:SetFrameStrata("DIALOG")
|
contrebasse@2
|
21
|
contrebasse@2
|
22 local MENU_ENTRY_HEIGHT = 12
|
contrebasse@2
|
23
|
contrebasse@0
|
24 local numActiveEntries = 0
|
contrebasse@0
|
25 local menuEntries = {}
|
contrebasse@2
|
26 local parentBtn -- The button it's associated with
|
contrebasse@0
|
27
|
contrebasse@2
|
28 function A.menuIsOpen(btn)
|
contrebasse@2
|
29 if btn then
|
contrebasse@2
|
30 return MenuFrame:IsShown() and (btn==parentBtn)
|
contrebasse@2
|
31 else
|
contrebasse@2
|
32 return MenuFrame:IsShown()
|
contrebasse@2
|
33 end
|
contrebasse@2
|
34 end
|
contrebasse@1
|
35 function A.menuOpen(parent)
|
contrebasse@1
|
36 A.DEBUG("menuOpen")
|
contrebasse@1
|
37 --if not InCombatLockDown() and numActiveEntries>0 then
|
contrebasse@2
|
38 parentBtn = parent
|
contrebasse@1
|
39 MenuFrame:ClearAllPoints()
|
contrebasse@2
|
40 MenuFrame:SetPoint("LEFT",parent,"RIGHT",0,0)
|
contrebasse@1
|
41
|
contrebasse@2
|
42 MenuFrame:SetHeight(240)
|
contrebasse@2
|
43 --MenuFrame:SetParent(UIParent)
|
contrebasse@1
|
44
|
contrebasse@0
|
45 MenuFrame:Show()
|
contrebasse@1
|
46 --end
|
contrebasse@0
|
47 end
|
contrebasse@0
|
48 function A.menuClose()
|
contrebasse@0
|
49 MenuFrame:Hide()
|
contrebasse@0
|
50 MenuFrame:ClearAllPoints()
|
contrebasse@0
|
51
|
contrebasse@2
|
52 parentBtn = nil
|
contrebasse@0
|
53 for i=1,numActiveEntries do
|
contrebasse@0
|
54 menuEntries[i]:Hide()
|
contrebasse@0
|
55 end
|
contrebasse@0
|
56 end
|
contrebasse@0
|
57
|
contrebasse@0
|
58 function A.menuAddItem(text,action,itemID)
|
contrebasse@1
|
59 A.DEBUG("menuAddItem "..text)
|
contrebasse@0
|
60 local btn
|
contrebasse@0
|
61 -- Create a button only if necessary
|
contrebasse@0
|
62 if numActiveEntries >= #menuEntries then
|
contrebasse@2
|
63 btn = CreateFrame("Button", "ReagentMakerMenuButton"..(#menuEntries+1), MenuFrame) --, "SecureActionButtonTemplate")
|
contrebasse@0
|
64 table.insert(menuEntries,btn)
|
contrebasse@0
|
65
|
contrebasse@2
|
66 btn:SetHeight(MENU_ENTRY_HEIGHT)
|
contrebasse@2
|
67 btn:SetWidth(160)
|
contrebasse@0
|
68
|
contrebasse@0
|
69 -- Set its position
|
contrebasse@2
|
70 if #menuEntries==0 then
|
contrebasse@0
|
71 btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0)
|
contrebasse@0
|
72 else
|
contrebasse@0
|
73 btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0)
|
contrebasse@0
|
74 end
|
contrebasse@0
|
75 else
|
contrebasse@0
|
76 btn = menuEntries[numActiveEntries+1]
|
contrebasse@0
|
77 end
|
contrebasse@0
|
78
|
contrebasse@0
|
79 -- Set its text
|
contrebasse@2
|
80 btn:SetText(text or "???")
|
contrebasse@0
|
81
|
contrebasse@0
|
82 -- Set its action
|
contrebasse@0
|
83 if type(action)=="function" then
|
contrebasse@0
|
84 btn:SetScript("OnClick",action)
|
contrebasse@0
|
85 btn:SetAttribute("type", nil)
|
contrebasse@0
|
86 btn:SetAttribute("spell", nil)
|
contrebasse@1
|
87 btn:SetAttribute("target-item",itemID)
|
contrebasse@0
|
88 elseif type(action)=="string" then
|
contrebasse@0
|
89 btn:SetScript("OnClick",nil)
|
contrebasse@0
|
90 btn:SetAttribute("type", "spell")
|
contrebasse@0
|
91 btn:SetAttribute("spell", action)
|
contrebasse@0
|
92 btn:SetAttribute("target-item",GetItemInfo(itemID))
|
contrebasse@0
|
93 end -- if
|
contrebasse@0
|
94
|
contrebasse@0
|
95 -- Reposition MenuFrame
|
contrebasse@1
|
96 --MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0)
|
contrebasse@2
|
97 MenuFrame:SetHeight((numActiveEntries+1)*MENU_ENTRY_HEIGHT)
|
contrebasse@0
|
98
|
contrebasse@2
|
99 -- Increase the entry number
|
contrebasse@0
|
100 numActiveEntries = numActiveEntries + 1
|
contrebasse@2
|
101 A.DEBUG("Item added ")
|
contrebasse@0
|
102 end -- function
|