Mercurial > wow > buffalo2
view Modules/TalkingHead.lua @ 90:6e2cb847c3c6
Implement a mixin template for the basic visual config widgets.
author | Nenue |
---|---|
date | Mon, 24 Oct 2016 18:28:40 -0400 |
parents | |
children | caded2668701 |
line wrap: on
line source
-- Veneer -- TalkingHead.lua -- Created: 10/23/2016 5:18 AM -- %file-revision% -- local print = DEVIAN_WORKSPACE and function(...) print('VnTalkingHead', ...) end or nop VeneerTalkingHeadMixin = { anchorPoint = 'BOTTOMLEFT', anchorFrom = 'TOPLEFT', anchorX = -4, anchorY = 24, anchorFrame = 'ChatFrame1', addonTrigger = 'Blizzard_TalkingHeadUI' } function VeneerTalkingHeadMixin:OnLoad() Veneer:AddHandler(self, self.anchorPoint) end function VeneerTalkingHeadMixin:Setup() print('|cFF00AAFF'..self:GetName()..'|r:Setup()', TalkingHeadFrame:IsShown(), self:IsShown()) self:SetSize(TalkingHeadFrame:GetSize()) self:SetParent(TalkingHeadFrame) TalkingHeadFrame:ClearAllPoints() TalkingHeadFrame:SetPoint('BOTTOM', self, 'BOTTOM') hooksecurefunc(TalkingHeadFrame, 'SetPoint', function(...) print('SetPoint', ...) print(debugstack()) end) self:SetShown(true) self:ClearAnchor() end function VeneerTalkingHeadMixin:ClearAnchor() UIPARENT_MANAGED_FRAME_POSITIONS["TalkingHeadFrame"] = nil for i, alertSubSystem in pairs(AlertFrame.alertFrameSubSystems) do if alertSubSystem.anchorFrame == TalkingHeadFrame then tremove(AlertFrame.alertFrameSubSystems, i) return end end end function VeneerTalkingHeadMixin:OnShow() if TalkingHeadFrame then print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown()) print(debugstack()) self:Update() end end function VeneerTalkingHeadMixin:Reanchor() self:ClearAllPoints() self:SetPoint('BOTTOMLEFT', _G[self.anchorFrame], 'TOPLEFT', -4, 24) self:SetPoint('RIGHT', _G[self.anchorFrame], 'RIGHT', 2, 0) -- independent module, end function VeneerTalkingHeadMixin:OnHide() if TalkingHeadFrame then print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', TalkingHeadFrame:IsShown(), self:IsShown()) end Veneer:Reanchor() end function VeneerTalkingHeadMixin:Update() print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown()) TalkingHeadFrame:ClearAllPoints() TalkingHeadFrame:SetAllPoints(self) Veneer:InternalReanchor(self) end