From 103df625ea06d63630c5c6c1c5a45c0712f7c327 Mon Sep 17 00:00:00 2001 From: shagu Date: Sat, 8 Oct 2016 12:56:15 +0200 Subject: [PATCH] add whisper forwarding --- img/proxy.tga | Bin 0 -> 4140 bytes modules/chat.lua | 134 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 img/proxy.tga diff --git a/img/proxy.tga b/img/proxy.tga new file mode 100644 index 0000000000000000000000000000000000000000..a7380b22d48d8128357fc7d1a064833728d7ef1b GIT binary patch literal 4140 zcmeH~ziSjx5XUz^i17yzi-3rTik&|aEfPi4Dv<+GqQ)PUy%0nUu~3j8s91=NBBF(j zAQANsP;6pjqlMx%QBZ8O5j6OVcz(W{on&s=Lw4_7EOf$W=gqu*GjsFa?p>m&IWk!p z@z-wFzpg8lN;CAryuZ;4@(zGx3O>R(Y@e%I$kh%H!OJgL5=Cyo4;7z}emC zI>@mKv=BMV7^=9Ir) zQ~TQEYryUXd*<|v-GlfULobBT@`-@0ssSzhdvDBY!>>Kr35}2|N&a;%_#?(M?-s^- zAKolLnKiGHb$8KOGMVHba+7gQ_W6ry;$4Spww|$a*#0t%Mf+5vJ8)c0Ifq<+?f->j{sTHM!xl@L^~aJ}rb-M>n~`YsMel*Q4``kL zDIcfkm^h2T%QB39?{H)7St~3C?VZMXY4NqP-sk_WIehA|`kE!`g^<`dj~+?oADs>r zU&}U!b;S8Y4Q~+0pJja)n*3zY;qvRZ=L4Gzq~qt0SnBZ^us$-Zj9PBf_!hu3O$L(p z#CZ%)Q}OO#TiPm(UuXS(>i&@CS%S^%NmcU1U|whZAZU+5iF(nSm9LhM`e~?g1}S}nNB{r; literal 0 HcmV?d00001 diff --git a/modules/chat.lua b/modules/chat.lua index 21f2829e..84f417c6 100644 --- a/modules/chat.lua +++ b/modules/chat.lua @@ -1,4 +1,5 @@ pfUI:RegisterModule("chat", function () + FOOBAR_WHISPER = 1 pfUI.chat = CreateFrame("Frame",nil,UIParent) pfUI.chat.left = CreateFrame("Frame", "pfChatLeft", UIParent) @@ -18,6 +19,139 @@ pfUI:RegisterModule("chat", function () pfUI.chat.left.panelTop:SetBackdrop(pfUI.backdrop) pfUI.chat.left.panelTop:SetBackdropColor(0,0,0,.75) + -- whisper forwarding + pfUI.chat.left.panelTop.proxy = CreateFrame("Button", "leftChatWhisperProxy", pfUI.chat.left.panelTop) + pfUI.chat.left.panelTop.proxy:RegisterEvent("CHAT_MSG_WHISPER") + pfUI.chat.left.panelTop.proxy:SetPoint("TOPRIGHT", pfUI.chat.left, "TOPRIGHT", -20, -6) + pfUI.chat.left.panelTop.proxy:SetWidth(12) + pfUI.chat.left.panelTop.proxy:SetHeight(12) + pfUI.chat.left.panelTop.proxy:SetNormalTexture("Interface\\AddOns\\pfUI\\img\\proxy") + pfUI.chat.left.panelTop.proxy:SetAlpha(0.25) + for i,v in ipairs({pfUI.chat.left.panelTop.proxy:GetRegions()}) do + if v.SetVertexColor then v:SetVertexColor(1,1,1,1) end + end + + pfUI.chat.left.panelTop.proxy.enabled = false + pfUI.chat.left.panelTop.proxy.forwardto = "" + + function pfUI.chat.left.panelTop.proxy.toggle() + if pfUI.chat.left.panelTop.proxy.enabled == true then + -- redirect inactive + pfUI.chat.left.panelTop.proxy.enabled = false + pfUI.chat.left.panelTop.proxy:SetAlpha(0.25) + for i,v in ipairs({pfUI.chat.left.panelTop.proxy:GetRegions()}) do + if v.SetVertexColor then v:SetVertexColor(1,1,1,1) end + end + DEFAULT_CHAT_FRAME:AddMessage("Forwarding to |cff33ffcc" .. pfUI.chat.left.panelTop.proxy.forwardto .. "|r has been disabled") + elseif pfUI.chat.left.panelTop.proxy.forwardto ~= "" then + -- redirect active + pfUI.chat.left.panelTop.proxy.enabled = true + pfUI.chat.left.panelTop.proxy:SetAlpha(1) + for i,v in ipairs({pfUI.chat.left.panelTop.proxy:GetRegions()}) do + if v.SetVertexColor then v:SetVertexColor(1,.25,.25,1) end + end + DEFAULT_CHAT_FRAME:AddMessage("All messages will be forwarded to |cff33ffcc" .. pfUI.chat.left.panelTop.proxy.forwardto) + end + end + + pfUI.chat.left.panelTop.proxy:RegisterForClicks("LeftButtonUp", "RightButtonUp") + pfUI.chat.left.panelTop.proxy:SetScript("OnClick", function() + if arg1 == "RightButton" then + if pfUI.chat.left.panelTop.proxyName:IsShown() then + pfUI.chat.left.panelTop.proxyName:Hide() + else + pfUI.chat.left.panelTop.proxyName:Show() + end + else + pfUI.chat.left.panelTop.proxy.toggle() + end + end) + + pfUI.chat.left.panelTop.proxy:SetScript("OnEvent", function() + local forwardto = pfUI.chat.left.panelTop.proxy.forwardto + if pfUI.chat.left.panelTop.proxy.enabled == false then return end + + if arg2 ~= UnitName("player") and arg2 ~= forwardto and forwardto ~= UnitName("player") then + SendChatMessage("[" .. arg2 .. "]: " .. arg1, "WHISPER", nil, forwardto); + end + + if arg2 == forwardto then + local isForward, _, name, message = string.find(arg1, "(.*): (.*)") + if isForward then + SendChatMessage(message, "WHISPER", nil, name); + SendChatMessage("-> " .. name, "WHISPER", nil, forwardto); + end + end + end) + + pfUI.chat.left.panelTop.proxyName = CreateFrame("Frame", "leftChatWhisperProxyName") + pfUI.chat.left.panelTop.proxyName:SetPoint("CENTER", 0, 0) + pfUI.chat.left.panelTop.proxyName:SetHeight(100) + pfUI.chat.left.panelTop.proxyName:SetWidth(200) + pfUI.chat.left.panelTop.proxyName:SetBackdrop(pfUI.backdrop) + pfUI.chat.left.panelTop.proxyName:SetScript("OnShow", function() + pfUI.chat.left.panelTop.proxyName.input:SetText(pfUI.chat.left.panelTop.proxy.forwardto) + end) + + pfUI.chat.left.panelTop.proxyName.caption = pfUI.chat.left.panelTop.proxyName:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.chat.left.panelTop.proxyName.caption:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", pfUI_config.global.font_size + 2, "OUTLINE") + pfUI.chat.left.panelTop.proxyName.caption:SetPoint("TOP", 0, -20) + pfUI.chat.left.panelTop.proxyName.caption:SetFontObject(GameFontWhite) + pfUI.chat.left.panelTop.proxyName.caption:SetJustifyH("CENTER") + pfUI.chat.left.panelTop.proxyName.caption:SetText("Forward all whispers to:") + + pfUI.chat.left.panelTop.proxyName.input = CreateFrame("EditBox", nil, pfUI.chat.left.panelTop.proxyName) + pfUI.chat.left.panelTop.proxyName.input:SetTextColor(.2,1.1,1) + pfUI.chat.left.panelTop.proxyName.input:SetJustifyH("CENTER") + pfUI.chat.left.panelTop.proxyName.input:SetBackdrop(pfUI.backdrop) + pfUI.chat.left.panelTop.proxyName.input:SetPoint("TOPLEFT" , pfUI.chat.left.panelTop.proxyName, "TOPLEFT", 20, -40) + pfUI.chat.left.panelTop.proxyName.input:SetPoint("BOTTOMRIGHT" , pfUI.chat.left.panelTop.proxyName, "BOTTOMRIGHT", -20, 40) + pfUI.chat.left.panelTop.proxyName.input:SetFontObject(GameFontWhite) + pfUI.chat.left.panelTop.proxyName.input:SetAutoFocus(false) + pfUI.chat.left.panelTop.proxyName.input:SetText(pfUI.chat.left.panelTop.proxy.forwardto) + pfUI.chat.left.panelTop.proxyName.input:SetScript("OnEscapePressed", function(self) + pfUI.chat.left.panelTop.proxyName:Hide() + end) + + pfUI.chat.left.panelTop.proxyName.okay = CreateFrame("Button", nil, pfUI.chat.left.panelTop.proxyName) + pfUI.chat.left.panelTop.proxyName.okay:SetWidth(80) + pfUI.chat.left.panelTop.proxyName.okay:SetHeight(20) + pfUI.chat.left.panelTop.proxyName.okay:SetPoint("BOTTOMRIGHT", -10, 10) + pfUI.chat.left.panelTop.proxyName.okay:SetBackdrop(pfUI.backdrop) + pfUI.chat.left.panelTop.proxyName.okay.text = pfUI.chat.left.panelTop.proxyName.okay:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.chat.left.panelTop.proxyName.okay.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", pfUI_config.global.font_size, "OUTLINE") + pfUI.chat.left.panelTop.proxyName.okay.text:ClearAllPoints() + pfUI.chat.left.panelTop.proxyName.okay.text:SetAllPoints(pfUI.chat.left.panelTop.proxyName.okay) + pfUI.chat.left.panelTop.proxyName.okay.text:SetPoint("CENTER", 0, 0) + pfUI.chat.left.panelTop.proxyName.okay.text:SetFontObject(GameFontWhite) + pfUI.chat.left.panelTop.proxyName.okay.text:SetText("Save") + pfUI.chat.left.panelTop.proxyName.okay:SetScript("OnClick", function() + pfUI.chat.left.panelTop.proxy.forwardto = pfUI.chat.left.panelTop.proxyName.input:GetText() + if pfUI.chat.left.panelTop.proxy.enabled == true then + DEFAULT_CHAT_FRAME:AddMessage("All messages will now be forwarded to |cff33ffcc" .. pfUI.chat.left.panelTop.proxy.forwardto) + end + pfUI.chat.left.panelTop.proxyName:Hide() + end) + + pfUI.chat.left.panelTop.proxyName.abort = CreateFrame("Button", nil, pfUI.chat.left.panelTop.proxyName) + pfUI.chat.left.panelTop.proxyName.abort:SetWidth(80) + pfUI.chat.left.panelTop.proxyName.abort:SetHeight(20) + pfUI.chat.left.panelTop.proxyName.abort:SetPoint("BOTTOMLEFT", 10, 10) + pfUI.chat.left.panelTop.proxyName.abort:SetBackdrop(pfUI.backdrop) + pfUI.chat.left.panelTop.proxyName.abort.text = pfUI.chat.left.panelTop.proxyName.abort:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.chat.left.panelTop.proxyName.abort.text:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", pfUI_config.global.font_size, "OUTLINE") + pfUI.chat.left.panelTop.proxyName.abort.text:ClearAllPoints() + pfUI.chat.left.panelTop.proxyName.abort.text:SetAllPoints(pfUI.chat.left.panelTop.proxyName.abort) + pfUI.chat.left.panelTop.proxyName.abort.text:SetPoint("CENTER", 0, 0) + pfUI.chat.left.panelTop.proxyName.abort.text:SetFontObject(GameFontWhite) + pfUI.chat.left.panelTop.proxyName.abort.text:SetText("Abort") + pfUI.chat.left.panelTop.proxyName.abort:SetScript("OnClick", function() + pfUI.chat.left.panelTop.proxyName:Hide() + end) + + pfUI.chat.left.panelTop.proxyName:Hide() + + pfUI.chat.right = CreateFrame("Frame", "pfChatRight", UIParent) pfUI.chat.right:SetFrameStrata("BACKGROUND") pfUI.chat.right:SetWidth(350)