All pastes #94536 Raw Edit

MessageEvent2.0

public text v1 · immutable
#94536 ·published 2006-07-21 09:23 UTC
rendered paste body
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