annotate 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
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@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