comparison Devent.lua @ 107:8dc0c1917890

- Test fix for frames getting stuck in hidden state when zoning on the move
author Nenue
date Tue, 17 Oct 2017 16:57:38 -0400
parents
children 7a36f5a92f0a
comparison
equal deleted inserted replaced
106:f8ed212558c1 107:8dc0c1917890
1 --
2 -- Created by IntelliJ IDEA.
3 -- User: Nick
4 -- Date: 4/12/2017
5 -- Time: 5:07 PM
6 -- To change this template use File | Settings | File Templates.
7 --
8 local tooltip = GameTooltip
9 local traces = {} -- frames
10 local eventLog = {} -- events received
11 local selectedEvents = {} -- events selected
12 local print = function(...) print('Devent', ...) end
13
14 --print('Devent script')
15 --print('Devent:OnLoad()')
16 SLASH_DTRACE1 = "/dtrace"
17
18 SlashCmdList.DTRACE = function(args)
19 if #traces == 0 then
20 local trace = CreateFrame('Frame', 'DevianTraceLog'.. (#traces+1), UIParent, 'DevianEventTraceTemplate')
21 tinsert(traces, trace)
22 trace:Setup()
23 end
24
25 traces[1]:Show()
26 end
27 DevianEventTraceMixin = {
28 events = {},
29 selected = {},
30 }
31 local tracer = DevianEventTraceMixin
32
33 function tracer:OnLoad()
34 self:SetMaxResize(GetScreenWidth(), GetScreenHeight())
35 self:SetMinResize(100, 24)
36 self:EnableMouse(true)
37 self:RegisterForDrag('LeftButton')
38 self:SetMovable(true)
39 self:SetResizable(true)
40 self:SetClampedToScreen(true)
41 self:SetFont("Interface\\Addons\\Devian\\font\\SourceCodePro-Regular.ttf", 13, 'NORMAL')
42 self:SetJustifyH('LEFT')
43 self:SetHyperlinksEnabled(true)
44 self:SetPoint('CENTER')
45 self:SetSize(400,400)
46 end
47
48 function tracer:Setup(info)
49 if not info then
50 self:RegisterAllEvents()
51 return
52 end
53
54 for _, event in ipairs(self.events) do
55 self:UnregisterEvent(event)
56 end
57
58 for _, event in ipairs(info.events) do
59 self:RegisterEvent(event)
60 end
61 end
62
63 function tracer:OnHyperlinkEnter(linkdata, link)
64 local messageID = tonumber(linkdata:match('%d+'))
65 if messageID and self.events[messageID] then
66 local data = self.events[messageID]
67 tooltip:SetOwner(self, 'ANCHOR_RIGHT')
68 tooltip:AddLine(data.event)
69 for i, arg in ipairs(data.args) do
70 local argtype = data.argtypes[i]
71 tooltip:AddLine('|cFFAAAAAA'..tostring(argtype)..'|r ' .. tostring(arg))
72 end
73 tooltip:Show()
74 end
75
76 end
77
78 function tracer:OnHyperlinkLeave(linkdata, link)
79 end
80
81 function tracer:OnHyperlinkClick(linkdata, link)
82
83 local messageID = tonumber(linkdata:match('%d+'))
84 if messageID and self.events[messageID] then
85 local data = self.events[messageID]
86
87 if self.selected[data.event] then
88 self.selected[data.event] = nil
89 else
90 self.selected[data.event] = true
91 end
92 end
93 self:Update()
94 end
95
96 function tracer:OnLeave()
97 if tooltip:IsOwned(self) then
98 tooltip:Hide()
99 end
100 end
101
102 function tracer:OnEvent(event, ...)
103 local entry = {
104 index = #self.events + 1,
105 ts = time(),
106 event = event,
107 args = {},
108 argtypes = {}
109 }
110 for i = 1, select('#', ...) do
111 local arg = select(i,...)
112 entry.argtypes[i] = type(arg)
113 entry.args[i] = tostring(arg)
114 end
115 self.events[entry.index] = entry
116 self:Update()
117 end
118
119 function tracer:Update()
120 local startingLine = self.CurrentLine or #self.events
121 local prevLine
122 for i = 0, 20 do
123 local index = startingLine - i
124 local line = self.lines[i]
125 if not line then
126 line = self:CreateFontString('EventLine'..i)
127 line:SetFont([[Fonts\ARIALN__.TTF]], 14, 'THIN')
128 line:SetTextColor(1,1,1)
129 self.lines[i] = line
130 end
131 local entry = self.events[index]
132
133 if entry then
134 line:SetText('|Hdevent:'..entry.index..'|h'..entry.event..'|h')
135 line:ClearAllPoints()
136 if prevLine then
137 line:SetPoint('BOTTOMLEFT', prevLine, 'TOPLEFT', 0, 0)
138 else
139 line:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT')
140 end
141 line:Show()
142 prevLine = line
143 else
144 line:Hide()
145 end
146 end
147
148 end