From 28f9763e6a01e8db663fdfb95f8ef8afe9da38c2 Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Fri, 2 Jan 2015 22:14:34 -0600 Subject: [PATCH] 5.4.13 --- .../AddOns/SVUI/framework/docks/dock_core.lua | 15 ++- Interface/AddOns/SVUI/packages/chat/SVChat.lua | 120 +++++++++++++++++++- .../SVUI_StyleOMatic/components/blizzard/chat.lua | 4 + 3 files changed, 128 insertions(+), 11 deletions(-) diff --git a/Interface/AddOns/SVUI/framework/docks/dock_core.lua b/Interface/AddOns/SVUI/framework/docks/dock_core.lua index d781dbe..d45dabe 100644 --- a/Interface/AddOns/SVUI/framework/docks/dock_core.lua +++ b/Interface/AddOns/SVUI/framework/docks/dock_core.lua @@ -735,11 +735,9 @@ for location, settings in pairs(DOCK_LOCATIONS) do }; end -local function SetSuperDockStyle(dock, isBottom) +function Dock:SetSuperDockStyle(dock, isBottom) if dock.backdrop then return end - local leftGradient = {} - local backdrop = CreateFrame("Frame", nil, dock) backdrop:SetAllPoints(dock) backdrop:SetFrameStrata("BACKGROUND") @@ -747,7 +745,12 @@ local function SetSuperDockStyle(dock, isBottom) backdrop.bg = backdrop:CreateTexture(nil, "BORDER") backdrop.bg:SetAllPointsIn(backdrop) backdrop.bg:SetTexture(1, 1, 1, 1) - backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0) + + if(isBottom) then + backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0) + else + backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0, 0, 0, 0.8) + end backdrop.left = backdrop:CreateTexture(nil, "OVERLAY") backdrop.left:SetTexture(1, 1, 1, 1) @@ -1124,8 +1127,8 @@ function Dock:Initialize() SV.Mentalo:Add(dock.Bar, location .. " Dock ToolBar"); if(isBottom) then - dock.backdrop = SetSuperDockStyle(dock.Window, isBottom) - dock.Alert.backdrop = SetSuperDockStyle(dock.Alert, isBottom) + dock.backdrop = self:SetSuperDockStyle(dock.Window, isBottom) + dock.Alert.backdrop = self:SetSuperDockStyle(dock.Alert, isBottom) dock.Alert.backdrop:Hide() end diff --git a/Interface/AddOns/SVUI/packages/chat/SVChat.lua b/Interface/AddOns/SVUI/packages/chat/SVChat.lua index eb4150f..bdb0c98 100644 --- a/Interface/AddOns/SVUI/packages/chat/SVChat.lua +++ b/Interface/AddOns/SVUI/packages/chat/SVChat.lua @@ -112,6 +112,7 @@ local ICONARTFILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-CHAT]] local SCROLL_ALERT = [[Interface\AddOns\SVUI\assets\artwork\Chat\CHAT-SCROLL]] local WHISPER_ALERT = [[Interface\AddOns\SVUI\assets\artwork\Chat\CHAT-WHISPER]] local THROTTLE_CACHE = {}; +local COPY_LINES = {}; local ACTIVE_HYPER_LINK; local TABS_DIRTY = false; --[[ @@ -747,6 +748,31 @@ do alert:Hide() chat.WhisperAlert = alert + --copy chat button + chat.button = CreateFrame('Frame', format("SVUI_CopyChatButton%d", id), chat) + chat.button:SetAlpha(0.35) + chat.button:SetSizeToScale(38, 18) + chat.button:SetPoint('TOPRIGHT', chat, 'TOPRIGHT', 0, 0) + chat.button:SetStylePanel('Default', 'Headline') + + chat.button.Title = chat.button:CreateFontString() + chat.button.Title:FontManager("chattab") + chat.button.Title:SetText("copy") + chat.button.Title:SetAllPointsIn(chat.button) + chat.button.Title:SetTextColor(1,0.8,0) + + chat.button:SetScript("OnMouseUp", function(self, btn) + if btn == "RightButton" and id == 1 then + ToggleFrame(ChatMenu) + else + MOD:CopyChat(chat) + end + end) + + chat.button:SetScript("OnEnter", function(self) self:FadeIn() end) + chat.button:SetScript("OnLeave", function(self) self:FadeOut() end) + chat.button:FadeOut() + chat.InitConfig = true end end @@ -1037,6 +1063,42 @@ do end end +local function removeIconFromLine(text) + for i=1, 8 do + text = gsub(text, "|TInterface\\TargetingFrame\\UI%-RaidTargetingIcon_"..i..":0|t", "") + end + text = gsub(text, "(|TInterface(.*)|t)", "") + return text +end + +function MOD:GetLines(...) + local index = 1 + for i = select("#", ...), 1, -1 do + local region = select(i, ...) + if region:GetObjectType() == "FontString" then + local line = tostring(region:GetText()) + COPY_LINES[index] = removeIconFromLine(line) + index = index + 1 + end + end + return index - 1 +end + +function MOD:CopyChat(frame) + if not SVUI_CopyChatFrame:IsShown() then + --local _, fontSize = FCF_GetChatWindowInfo(frame:GetID()); + --if fontSize < 10 then fontSize = 12 end + --FCF_SetChatWindowFontSize(frame, frame, 0.01) + SVUI_CopyChatFrame:Show() + local lineCt = self:GetLines(frame:GetRegions()) + local text = tconcat(COPY_LINES, "\n", 1, lineCt) + --FCF_SetChatWindowFontSize(frame, frame, fontSize) + SVUI_CopyChatFrameEditBox:SetText(text) + else + SVUI_CopyChatFrame:Hide() + end +end + local function DockFadeInChat() local activeChatFrame = FCFDock_GetSelectedWindow(GENERAL_CHAT_DOCK) activeChatFrame:FadeIn(0.2, activeChatFrame:GetAlpha(), 1) @@ -1124,9 +1186,57 @@ function MOD:Load() _G.InterfaceOptionsSocialPanelChatStyleButton:Hide() _G.InterfaceOptionsSocialPanelChatStyle:SetAlpha(0) - -- NewHook(ChatFrame2, "SetPoint", function(self, a1, p, a2, x, y) - -- if(x > 2) then - -- self:SetPoint(a1, p, a2, 2, y) - -- end - -- end) + NewHook(ChatFrame2, "SetPoint", function(self, a1, p, a2, x, y) + if(x > 2) then + self:SetPoint(a1, p, a2, 2, y) + end + end) + + + local frame = CreateFrame("Frame", "SVUI_CopyChatFrame", self.Dock) + --frame:SetStylePanel('Default', 'Transparent') + frame:SetPoint('BOTTOMLEFT', self.Dock, 'TOPLEFT', 0, 0) + frame:SetPoint('BOTTOMRIGHT', self.Dock, 'TOPRIGHT', 0, 0) + frame:SetHeight(self.Dock:GetHeight()) + frame:Hide() + frame:EnableMouse(true) + frame:SetFrameStrata("DIALOG") + SV.Dock:SetSuperDockStyle(frame) + + frame.Title = frame:CreateFontString() + frame.Title:FontManager("header", "LEFT") + frame.Title:SetText("Copy Chat") + frame.Title:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, 4) + frame.Title:SetTextColor(1,0.8,0) + + local scrollArea = CreateFrame("ScrollFrame", "SVUI_CopyChatScrollFrame", frame, "UIPanelScrollFrameTemplate") + scrollArea:SetPoint("TOPLEFT", frame, "TOPLEFT", 8, -30) + scrollArea:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -30, 8) + + local editBox = CreateFrame("EditBox", "SVUI_CopyChatFrameEditBox", frame) + editBox:SetMultiLine(true) + editBox:SetMaxLetters(99999) + editBox:EnableMouse(true) + editBox:SetAutoFocus(false) + editBox:FontManager("chatdialog", "LEFT") + editBox:SetWidth(scrollArea:GetWidth()) + editBox:SetHeight(200) + editBox:SetScript("OnEscapePressed", function() SVUI_CopyChatFrame:Hide() end) + + scrollArea:SetScrollChild(editBox) + + editBox:SetScript("OnTextChanged", function(self, userInput) + if userInput then return end + local _, max = SVUI_CopyChatScrollFrameScrollBar:GetMinMaxValues() + for i=1, max do + ScrollFrameTemplate_OnMouseWheel(SVUI_CopyChatScrollFrame, -1) + end + end) + + local close = CreateFrame("Button", "SVUI_CopyChatFrameCloseButton", frame, "UIPanelCloseButton") + close:SetPoint("TOPRIGHT") + close:SetFrameLevel(close:GetFrameLevel() + 1) + close:EnableMouse(true) + + tinsert(UISpecialFrames, "SVUI_CopyChatFrame") end \ No newline at end of file diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua index bde3ab4..28ea85e 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/chat.lua @@ -477,6 +477,10 @@ local function ChatStyle() PLUGIN:ApplyPaginationStyle(ChatConfigMoveFilterUpButton,true) PLUGIN:ApplyPaginationStyle(ChatConfigMoveFilterDownButton,true) + PLUGIN:ApplyPaginationStyle(CombatLogQuickButtonFrame_CustomAdditionalFilterButton,true) + + PLUGIN:ApplyScrollBarStyle(SVUI_CopyChatScrollFrameScrollBar) + PLUGIN:ApplyCloseButtonStyle(SVUI_CopyChatFrameCloseButton) ChatConfigMoveFilterUpButton:ClearAllPoints() ChatConfigMoveFilterDownButton:ClearAllPoints() -- 1.7.9.5