Mercurial > wow > reagentmaker
changeset 2:04c5b817eead
The try to build my own secure menu continues...
author | contrebasse |
---|---|
date | Tue, 29 Mar 2011 22:06:36 +0200 |
parents | 5fc29ed07094 |
children | ed0582126cae |
files | ReagentMaker.lua SecureMenu.lua |
diffstat | 2 files changed, 40 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/ReagentMaker.lua Mon Mar 28 22:59:20 2011 +0200 +++ b/ReagentMaker.lua Tue Mar 29 22:06:36 2011 +0200 @@ -46,7 +46,7 @@ -- Register clics on reagent's buttons for i=1,7 do local button = _G["TradeSkillReagent"..i]; - button:HookScript("OnClick", function() self:ToggleMenu(button, i) end); + button:HookScript("OnClick", function(btn) A.ToggleMenu(btn, i) end); --button:HookScript("OnEnter", function() self:Entered(button, i) end) --button:HookScript("OnLeave", function() self:Left(button, i) end) end -- for @@ -142,17 +142,24 @@ local IsModifierKeyDown = IsModifierKeyDown local GetTradeSkillReagentItemLink = GetTradeSkillReagentItemLink local GetTradeSkillSelectionIndex = GetTradeSkillSelectionIndex - local ToggleDropDownMenu = ToggleDropDownMenu -- Toggles the reagent's menu - function A:ToggleMenu(button, index) + function A.ToggleMenu(button, index) -- We want no modifiers if IsModifierKeyDown() then return end - local itemID = A.link2ID(GetTradeSkillReagentItemLink(GetTradeSkillSelectionIndex(), index)) - if itemID and A.data[itemID] then - A.FillMenu(itemID) - A.menuOpen(button) + if A.menuIsOpen(button) then + A.menuClose() + else + local itemID = A.link2ID(GetTradeSkillReagentItemLink(GetTradeSkillSelectionIndex(), index)) + if itemID and A.data[itemID] then + A.FillMenu(itemID) + A.menuOpen(button) + else + if A.menuIsOpen() then + A.menuClose() + end + end -- if end -- if end -- function end -- do
--- a/SecureMenu.lua Mon Mar 28 22:59:20 2011 +0200 +++ b/SecureMenu.lua Tue Mar 29 22:06:36 2011 +0200 @@ -16,18 +16,31 @@ bottom = 11 } }) -MenuFrame:SetWidth(70) +MenuFrame:SetWidth(170) +MenuFrame:SetFrameStrata("DIALOG") + +local MENU_ENTRY_HEIGHT = 12 + local numActiveEntries = 0 local menuEntries = {} +local parentBtn -- The button it's associated with +function A.menuIsOpen(btn) + if btn then + return MenuFrame:IsShown() and (btn==parentBtn) + else + return MenuFrame:IsShown() + end +end function A.menuOpen(parent) A.DEBUG("menuOpen") --if not InCombatLockDown() and numActiveEntries>0 then + parentBtn = parent MenuFrame:ClearAllPoints() - MenuFrame:SetPoint("TOPLEFT",parent,"TOPRIGHT",0,0) + MenuFrame:SetPoint("LEFT",parent,"RIGHT",0,0) - MenuFrame:SetSize(50,50) - MenuFrame:SetParent(UIParent) + MenuFrame:SetHeight(240) + --MenuFrame:SetParent(UIParent) MenuFrame:Show() --end @@ -36,6 +49,7 @@ MenuFrame:Hide() MenuFrame:ClearAllPoints() + parentBtn = nil for i=1,numActiveEntries do menuEntries[i]:Hide() end @@ -46,14 +60,14 @@ local btn -- Create a button only if necessary if numActiveEntries >= #menuEntries then - btn = CreateFrame("Button", nil, MenuFrame, "SecureActionButtonTemplate") + btn = CreateFrame("Button", "ReagentMakerMenuButton"..(#menuEntries+1), MenuFrame) --, "SecureActionButtonTemplate") table.insert(menuEntries,btn) - btn:SetHeight(12) - btn:SetWidth(70) + btn:SetHeight(MENU_ENTRY_HEIGHT) + btn:SetWidth(160) -- Set its position - if #menuEntries==1 then + if #menuEntries==0 then btn:SetPoint("TOPLEFT",MenuFrame,"TOPLEFT",0,0) else btn:SetPoint("TOPLEFT",menuEntries[#menuEntries-1],"BOTTOMLEFT",0,0) @@ -63,7 +77,7 @@ end -- Set its text - btn:SetText(text or " ") + btn:SetText(text or "???") -- Set its action if type(action)=="function" then @@ -80,8 +94,9 @@ -- Reposition MenuFrame --MenuFrame:SetPoint("BOTTOMRIGHT",btn,"BOTTOMRIGHT",0,0) - MenuFrame:SetHeight((numActiveEntries+1)*12) + MenuFrame:SetHeight((numActiveEntries+1)*MENU_ENTRY_HEIGHT) - -- Increase she entry number + -- Increase the entry number numActiveEntries = numActiveEntries + 1 + A.DEBUG("Item added ") end -- function