Mercurial > wow > reaction
comparison lib/LibShowActionGrid-1.0/LibShowActionGrid-1.0.lua @ 193:576c50e51fc5
LibShowGrid-1.0 external library --> LibShowActionGrid-1.0 internal library
| author | Flick <flickerstreak@gmail.com> |
|---|---|
| date | Mon, 15 Nov 2010 10:22:45 -0800 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 191:2c05008464e5 | 193:576c50e51fc5 |
|---|---|
| 1 -- | |
| 2 -- A secure proxy for ACTIONBAR_SHOW/HIDEGRID events | |
| 3 -- The events are transmitted via SetAttribute("state-showgrid",count) to frames registered with :AddFrame() | |
| 4 -- and can be handled by an appropriate SecureHandlerStateTemplate or SecureHandlerAttributeTemplate. | |
| 5 -- | |
| 6 | |
| 7 -- This library is internal to ReAction. If an addon author finds another use for this library, PM me on wowace | |
| 8 -- and I'll see about re-exporting it as a standalone library. | |
| 9 | |
| 10 local libName = "ReAction-LibShowActionGrid-1.0" | |
| 11 local minor = 1 | |
| 12 assert(LibStub, libName.." requires LibStub") | |
| 13 local lib = LibStub:NewLibrary(libName, minor) | |
| 14 if not lib then return end | |
| 15 | |
| 16 -- this being v1, no upgrade actions necessary | |
| 17 | |
| 18 local f = CreateFrame("CheckButton","LibShowActionGridProxyFrame-1.0-"..minor,UIParent,"ActionBarButtonTemplate, SecureHandlerAttributeTemplate") | |
| 19 | |
| 20 f:UnregisterAllEvents() | |
| 21 f:RegisterEvent("ACTIONBAR_SHOWGRID"); | |
| 22 f:RegisterEvent("ACTIONBAR_HIDEGRID"); | |
| 23 | |
| 24 f:SetScript("OnEnter",nil) | |
| 25 f:SetScript("OnLeave",nil) | |
| 26 f:SetScript("PostClick",nil) | |
| 27 f:SetScript("OnDragStart",nil) | |
| 28 f:SetScript("OnReceiveDrag",nil) | |
| 29 f:SetScript("OnUpdate",nil) | |
| 30 -- leave OnEvent | |
| 31 | |
| 32 f:SetAttribute("showgrid",10) -- set to >0 to prevent a call to HasAction(nil) that will cause a lua error | |
| 33 f:SetAttribute("action",0) | |
| 34 f:EnableMouse(false) | |
| 35 for _, child in ipairs({f:GetChildren()}) do | |
| 36 child:Hide() | |
| 37 end | |
| 38 for _, region in ipairs({f:GetRegions()}) do | |
| 39 region:Hide() | |
| 40 end | |
| 41 f:SetPoint("TOPLEFT") | |
| 42 f:Hide() | |
| 43 | |
| 44 f:Execute( | |
| 45 [[ | |
| 46 frames = newtable() | |
| 47 ]]) | |
| 48 | |
| 49 f:SetAttribute("_onattributechanged", | |
| 50 -- function _onattributechanged(self,name,value) | |
| 51 [[ | |
| 52 if name == "showgrid" then | |
| 53 for _, f in ipairs(frames) do | |
| 54 f:SetAttribute("state-showgrid",(tonumber(value) or 10) - 10) | |
| 55 end | |
| 56 end | |
| 57 ]]) | |
| 58 | |
| 59 lib.frame = f | |
| 60 lib.framelist = setmetatable({},{__mode="k"}) | |
| 61 | |
| 62 --- | |
| 63 --- library interface | |
| 64 --- | |
| 65 | |
| 66 function lib:AddFrame(frame) | |
| 67 self.framelist[frame] = true | |
| 68 self.frame:SetFrameRef("add-frame",frame) | |
| 69 self.frame:Execute( | |
| 70 [[ | |
| 71 local frame = self:GetFrameRef("add-frame") | |
| 72 for _, f in ipairs(frames) do | |
| 73 if f == frame then return end | |
| 74 end | |
| 75 table.insert(frames,frame) | |
| 76 ]]) | |
| 77 end | |
| 78 | |
| 79 function lib:RemoveFrame(frame) | |
| 80 self.frame:SetFrameRef("remove-frame",frame) | |
| 81 self.frame:Execute( | |
| 82 [[ | |
| 83 local frame = self:GetFrameRef("remove-frame") | |
| 84 for idx, f in ipairs(frames) do | |
| 85 if f == frame then | |
| 86 table.remove(frames,idx) | |
| 87 return | |
| 88 end | |
| 89 end | |
| 90 ]]) | |
| 91 self.framelist[frame] = nil | |
| 92 end | |
| 93 | |
| 94 |
