comparison 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
comparison
equal deleted inserted replaced
89:74e714637d6a 90:6e2cb847c3c6
1 -- Veneer
2 -- TalkingHead.lua
3 -- Created: 10/23/2016 5:18 AM
4 -- %file-revision%
5 --
6
7
8 local print = DEVIAN_WORKSPACE and function(...) print('VnTalkingHead', ...) end or nop
9
10 VeneerTalkingHeadMixin = {
11
12 anchorPoint = 'BOTTOMLEFT',
13 anchorFrom = 'TOPLEFT',
14 anchorX = -4,
15 anchorY = 24,
16 anchorFrame = 'ChatFrame1',
17 addonTrigger = 'Blizzard_TalkingHeadUI'
18
19 }
20 function VeneerTalkingHeadMixin:OnLoad()
21 Veneer:AddHandler(self, self.anchorPoint)
22 end
23
24
25
26 function VeneerTalkingHeadMixin:Setup()
27 print('|cFF00AAFF'..self:GetName()..'|r:Setup()', TalkingHeadFrame:IsShown(), self:IsShown())
28
29 self:SetSize(TalkingHeadFrame:GetSize())
30 self:SetParent(TalkingHeadFrame)
31 TalkingHeadFrame:ClearAllPoints()
32 TalkingHeadFrame:SetPoint('BOTTOM', self, 'BOTTOM')
33
34 hooksecurefunc(TalkingHeadFrame, 'SetPoint', function(...)
35 print('SetPoint', ...)
36 print(debugstack())
37 end)
38
39 self:SetShown(true)
40 self:ClearAnchor()
41 end
42
43 function VeneerTalkingHeadMixin:ClearAnchor()
44
45 UIPARENT_MANAGED_FRAME_POSITIONS["TalkingHeadFrame"] = nil
46 for i, alertSubSystem in pairs(AlertFrame.alertFrameSubSystems) do
47 if alertSubSystem.anchorFrame == TalkingHeadFrame then
48 tremove(AlertFrame.alertFrameSubSystems, i)
49 return
50 end
51 end
52 end
53
54 function VeneerTalkingHeadMixin:OnShow()
55 if TalkingHeadFrame then
56 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown())
57 print(debugstack())
58 self:Update()
59 end
60 end
61
62 function VeneerTalkingHeadMixin:Reanchor()
63 self:ClearAllPoints()
64 self:SetPoint('BOTTOMLEFT', _G[self.anchorFrame], 'TOPLEFT', -4, 24)
65 self:SetPoint('RIGHT', _G[self.anchorFrame], 'RIGHT', 2, 0)
66 -- independent module,
67 end
68
69 function VeneerTalkingHeadMixin:OnHide()
70 if TalkingHeadFrame then
71 print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', TalkingHeadFrame:IsShown(), self:IsShown())
72 end
73 Veneer:Reanchor()
74 end
75
76 function VeneerTalkingHeadMixin:Update()
77
78 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown())
79 TalkingHeadFrame:ClearAllPoints()
80 TalkingHeadFrame:SetAllPoints(self)
81
82 Veneer:InternalReanchor(self)
83 end
84