annotate SecureMenu.lua @ 1:5fc29ed07094

First atempt at using secure menus, it doesn't open yet...
author contrebasse
date Mon, 28 Mar 2011 22:59:20 +0200
parents eba26c900e99
children 04c5b817eead
rev   line source
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