contrebasse@0: local addonName, A = ... contrebasse@0: contrebasse@0: -- Create the menu frame contrebasse@0: local MenuFrame = CreateFrame("Frame",nil,UIParent) --, "ReagentMakerDropDownMenu"); -- Needs a global name contrebasse@0: MenuFrame:Hide() contrebasse@0: MenuFrame:SetBackdrop({ contrebasse@0: bgFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Background", -- path to the background texture contrebasse@0: edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", -- path to the border texture contrebasse@0: tile = true, -- true to repeat the background texture to fill the frame, false to scale it contrebasse@0: tileSize = 32, -- size (width or height) of the square repeating background tiles (in pixels) contrebasse@0: edgeSize = 32, -- thickness of edge segments and square size of edge corners (in pixels) contrebasse@0: insets = { -- distance from the edges of the frame to those of the background texture (in pixels) contrebasse@0: left = 11, contrebasse@0: right = 12, contrebasse@0: top = 12, contrebasse@0: bottom = 11 contrebasse@0: } contrebasse@0: }) contrebasse@2: MenuFrame:SetWidth(170) contrebasse@2: MenuFrame:SetFrameStrata("DIALOG") contrebasse@2: contrebasse@2: local MENU_ENTRY_HEIGHT = 12 contrebasse@2: contrebasse@0: local numActiveEntries = 0 contrebasse@0: local menuEntries = {} contrebasse@2: local parentBtn -- The button it's associated with contrebasse@0: contrebasse@2: function A.menuIsOpen(btn) contrebasse@2: if btn then contrebasse@2: return MenuFrame:IsShown() and (btn==parentBtn) contrebasse@2: else contrebasse@2: return MenuFrame:IsShown() contrebasse@2: end contrebasse@2: end contrebasse@1: function A.menuOpen(parent) contrebasse@1: A.DEBUG("menuOpen") contrebasse@1: --if not InCombatLockDown() and numActiveEntries>0 then contrebasse@2: parentBtn = parent contrebasse@1: MenuFrame:ClearAllPoints() contrebasse@2: MenuFrame:SetPoint("LEFT",parent,"RIGHT",0,0) contrebasse@1: contrebasse@2: MenuFrame:SetHeight(240) contrebasse@2: --MenuFrame:SetParent(UIParent) contrebasse@1: contrebasse@0: MenuFrame:Show() contrebasse@1: --end contrebasse@0: end contrebasse@0: function A.menuClose() contrebasse@0: MenuFrame:Hide() contrebasse@0: MenuFrame:ClearAllPoints() contrebasse@0: contrebasse@2: parentBtn = nil contrebasse@0: for i=1,numActiveEntries do contrebasse@0: menuEntries[i]:Hide() contrebasse@0: end contrebasse@0: end contrebasse@0: contrebasse@0: function A.menuAddItem(text,action,itemID) contrebasse@1: A.DEBUG("menuAddItem "..text) contrebasse@0: local btn contrebasse@0: -- Create a button only if necessary contrebasse@0: if numActiveEntries >= #menuEntries then contrebasse@2: btn = CreateFrame("Button", "ReagentMakerMenuButton"..(#menuEntries+1), MenuFrame) --, "SecureActionButtonTemplate") contrebasse@0: table.insert(menuEntries,btn) contrebasse@0: contrebasse@2: btn:SetHeight(MENU_ENTRY_HEIGHT) contrebasse@2: btn:SetWidth(160) contrebasse@0: contrebasse@0: -- Set its position contrebasse@2: if #menuEntries==0 then contrebasse@0: btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0) contrebasse@0: else contrebasse@0: btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0) contrebasse@0: end contrebasse@0: else contrebasse@0: btn = menuEntries[numActiveEntries+1] contrebasse@0: end contrebasse@0: contrebasse@0: -- Set its text contrebasse@2: btn:SetText(text or "???") contrebasse@0: contrebasse@0: -- Set its action contrebasse@0: if type(action)=="function" then contrebasse@0: btn:SetScript("OnClick",action) contrebasse@0: btn:SetAttribute("type", nil) contrebasse@0: btn:SetAttribute("spell", nil) contrebasse@1: btn:SetAttribute("target-item",itemID) contrebasse@0: elseif type(action)=="string" then contrebasse@0: btn:SetScript("OnClick",nil) contrebasse@0: btn:SetAttribute("type", "spell") contrebasse@0: btn:SetAttribute("spell", action) contrebasse@0: btn:SetAttribute("target-item",GetItemInfo(itemID)) contrebasse@0: end -- if contrebasse@0: contrebasse@0: -- Reposition MenuFrame contrebasse@1: --MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0) contrebasse@2: MenuFrame:SetHeight((numActiveEntries+1)*MENU_ENTRY_HEIGHT) contrebasse@0: contrebasse@2: -- Increase the entry number contrebasse@0: numActiveEntries = numActiveEntries + 1 contrebasse@2: A.DEBUG("Item added ") contrebasse@0: end -- function