MessageEvent = AceLibrary("AceAddon-2.0"):new("AceHook-2.0", "AceConsole-2.0")
function MessageEvent:OnInitialize()
self:RegisterChatCommand({"/mess", "/messevent"}, {
type = "group",
args = {
show = {
name = 'show', type = 'text',
desc = 'Enable event messages for a single chatFrame, or all chatFrames.',
validate = { 'all', '1', '2', '3', '4', '5', '6', '7' },
get = false,
set = function(frame)
self:EventsToggle(true, frame)
self:Print("Events now shown for ["..frame.."].")
end,
},
hide = {
name = 'hide', type = 'text',
desc = 'Disable event messages for a single chatFrame, or all chatFrames.',
validate = { 'all', '1', '2', '3', '4', '5', '6', '7' },
get = false,
set = function(frame)
self:EventsToggle(false, frame)
self:Print("Events now hidden for ["..frame.."].")
end,
},
report = {
name = 'report', type = 'execute',
desc = 'Reports the hook status of all the chatFrames.',
func = function()
for i=1,7 do
local frame = getglobal("ChatFrame"..i)
self:Print("ChatFrame"..i.." is hooked: ["..tostring(self:IsHooked(frame, "AddMessage")).."].")
end
end,
},
},
})
end
function MessageEvent:OnDisable()
self:UnhookAll()
end
function MessageEvent:EventsToggle(aShow, aFrame)
if string.lower(aFrame) == "all" then
for i=1,7 do
local frame = getglobal("ChatFrame"..i)
if not aShow and self:IsHooked(frame, "AddMessage") then
self:Unhook(frame, "AddMessage")
elseif not self:IsHooked(frame, "AddMessage") then
self:Hook(frame, "AddMessage")
end
end
return
end
local num = tonumber(aFrame)
local frame = getglobal("ChatFrame"..num)
if not aShow and self:IsHooked(frame, "AddMessage") then
self:Unhook(frame, "AddMessage")
elseif not self:IsHooked(frame, "AddMessage") then
self:Hook(frame, "AddMessage")
end
end
function MessageEvent:AddMessage(frame, text, r, g, b, id)
self.hooks[frame]["AddMessage"].orig(frame,
text.." ["..tostring(event).."]",
r, g, b, id)
end