comparison SecureMenu.lua @ 0:eba26c900e99

Initial commit, save state before using secure menus
author contrebasse
date Mon, 28 Mar 2011 22:32:26 +0200
parents
children 5fc29ed07094
comparison
equal deleted inserted replaced
-1:000000000000 0:eba26c900e99
1 local addonName, A = ...
2
3 -- Create the menu frame
4 local MenuFrame = CreateFrame("Frame",nil,UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name
5 MenuFrame:Hide()
6 MenuFrame:SetBackdrop({
7 bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background", -- path to the background texture
8 edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", -- path to the border texture
9 tile = true, -- true to repeat the background texture to fill the frame, false to scale it
10 tileSize = 32, -- size (width or height) of the square repeating background tiles (in pixels)
11 edgeSize = 32, -- thickness of edge segments and square size of edge corners (in pixels)
12 insets = { -- distance from the edges of the frame to those of the background texture (in pixels)
13 left = 11,
14 right = 12,
15 top = 12,
16 bottom = 11
17 }
18 })
19 local numActiveEntries = 0
20 local menuEntries = {}
21
22 function A.menuOpen()
23 if not InCombatLockDown() and numActiveEntries>0 then
24 MenuFrame:Show()
25 end
26 end
27 function A.menuClose()
28 MenuFrame:Hide()
29 MenuFrame:ClearAllPoints()
30
31 for i=1,numActiveEntries do
32 menuEntries[i]:Hide()
33 end
34 end
35
36 function A.menuAddItem(text,action,itemID)
37 local btn
38 -- Create a button only if necessary
39 if numActiveEntries >= #menuEntries then
40 btn = CreateFrame("Button", nil, MenuFrame, "SecureActionButtonTemplate")
41 table.insert(menuEntries,btn)
42
43 btn:SetHeight(12)
44
45 -- Set its position
46 if #menuEntries==1 then
47 btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0)
48 else
49 btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0)
50 end
51 else
52 btn = menuEntries[numActiveEntries+1]
53 end
54
55 -- Set its text
56 btn:SetText(text or " ")
57
58 -- Set its action
59 if type(action)=="function" then
60 btn:SetScript("OnClick",action)
61 btn:SetAttribute("type", nil)
62 btn:SetAttribute("spell", nil)
63 btn:SetAttribute("target-item",nil)
64 elseif type(action)=="string" then
65 btn:SetScript("OnClick",nil)
66 btn:SetAttribute("type", "spell")
67 btn:SetAttribute("spell", action)
68 btn:SetAttribute("target-item",GetItemInfo(itemID))
69 end -- if
70
71 -- Reposition MenuFrame
72 MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0)
73
74 -- Increase she entry number
75 numActiveEntries = numActiveEntries + 1
76 end -- function