84 lines
2.8 KiB
Lua
84 lines
2.8 KiB
Lua
local mod = Chatter:NewModule("Automatic Whisper Windows", "AceHook-3.0", "AceEvent-3.0")
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
|
|
mod.modName = L["Automatic Whisper Windows"]
|
|
|
|
function mod:OnEnable()
|
|
self:RegisterEvent("CHAT_MSG_WHISPER","ProcessWhisper")
|
|
self:RegisterEvent("CHAT_MSG_WHISPER_INFORM","ProcessWhisper")
|
|
self:RegisterEvent("CHAT_MSG_BN_WHISPER_INFORM", "ProcessWhisper")
|
|
self:RegisterEvent("CHAT_MSG_BN_WHISPER","ProcessWhisper")
|
|
end
|
|
|
|
function mod:OnDisable()
|
|
self:UnregisterEvent("CHAT_MSG_WHISPER")
|
|
self:UnregisterEvent("CHAT_MSG_WHISPER_INFORM")
|
|
self:UnregisterEvent("CHAT_MSG_BNWHISPER")
|
|
self:UnregisterEvent("CHAT_MSG_BNWHISPER_INFORM")
|
|
end
|
|
|
|
function mod:AlwaysDecorate(frame)
|
|
if not self:IsEnabled() then
|
|
local t = frame.chatType
|
|
local a = frame.chatTarget
|
|
local accessID = ChatHistory_GetAccessID(t, a)
|
|
local chatFrame = nil
|
|
for i= 1,NUM_CHAT_WINDOWS do
|
|
local cf = _G["ChatFrame"..i]
|
|
local i = cf:GetNumMessages(accessID)
|
|
if i > 0 then
|
|
chatFrame = cf
|
|
end
|
|
end
|
|
if chatFrame then
|
|
Chatter.loading = true
|
|
for i = 1, chatFrame:GetNumMessages(accessID) do
|
|
local text, accessID, lineID, extraData = chatFrame:GetMessageInfo(i, accessID);
|
|
local cType, cTarget = ChatHistory_GetChatType(extraData);
|
|
local info = ChatTypeInfo[cType];
|
|
frame:AddMessage(text, info.r, info.g, info.b, lineID, false, accessID, extraData);
|
|
end
|
|
Chatter.loading = false
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function mod:ProcessWhisper(event,message,sender,language,channelString,target,flags,arg7,arg8,...)
|
|
-- Do we have a temp window already for this target
|
|
local type = "WHISPER"
|
|
if event == "CHAT_MSG_BN_WHISPER" or event == "CHAT_MSG_BN_WHISPER_INFORM" then
|
|
type = "BN_WHISPER"
|
|
end
|
|
if FCFManager_GetNumDedicatedFrames(type, sender) == 0 then
|
|
local chatFrame = nil
|
|
local foundSrc = false
|
|
local accessID = ChatHistory_GetAccessID(type, sender)
|
|
for i= 1,NUM_CHAT_WINDOWS do
|
|
local cf = _G["ChatFrame"..i]
|
|
if not foundSrc then
|
|
for i = 1, cf:GetNumMessages(accessID) do
|
|
chatFrame = cf
|
|
foundSrc = true
|
|
end
|
|
end
|
|
end
|
|
if not chatFrame then
|
|
return true
|
|
end
|
|
Chatter.loading = true
|
|
local t = FCF_OpenTemporaryWindow(type, sender, chatFrame, true)
|
|
-- lets hand copy the shit over
|
|
for i = 1, chatFrame:GetNumMessages(accessID) do
|
|
local text, accessID, lineID, extraData = chatFrame:GetMessageInfo(i, accessID);
|
|
local cType, cTarget = ChatHistory_GetChatType(extraData);
|
|
local info = ChatTypeInfo[cType];
|
|
t:AddMessage(text, info.r, info.g, info.b, lineID, false, accessID, extraData);
|
|
end
|
|
Chatter.loading = false
|
|
-- was a fix for an issue in the editbox, no longer needed
|
|
--for i=1,NUM_CHAT_WINDOWS do
|
|
-- local cf = _G["ChatFrame"..i.."EditBox"]
|
|
-- cf:Show()
|
|
--end
|
|
end
|
|
end |