Mercurial > wow > buffalo2
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Modules/TalkingHead.lua Mon Oct 24 18:28:40 2016 -0400 @@ -0,0 +1,84 @@ +-- 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 +