You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.8 KiB

local ScrollingDebugMessageFrame = {
numMessagesToDisplay = 30,
backdropSettings = {
bgFile = "Interface/BUTTONS/WHITE8X8",
edgeFile = "Interface/GLUES/Common/Glue-Tooltip-Border",
tile = true,
edgeSize = 8,
tileSize = 8,
insets = {
left = 5,
right = 5,
top = 5,
bottom = 5,
},
},
}
local CopyPastePopup = Rarity.CopyPastePopup
local DebugCache = Rarity.Utils.DebugCache
function ScrollingDebugMessageFrame:OnLoad()
local numSavedLines = DebugCache.cacheSize
local frame =
CreateFrame("Frame", "RarityScrollingDebugMessageFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate")
frame:SetSize(1024, 640)
frame:SetPoint("CENTER")
frame:SetAlpha(0.5)
frame:SetFrameStrata("BACKGROUND")
frame:SetBackdrop(self.backdropSettings)
frame:SetBackdropColor(0, 0, 0)
frame.Close = CreateFrame("Button", "$parentClose", frame)
frame.Close:SetSize(24, 24)
frame.Close:SetPoint("TOPRIGHT")
frame.Close:SetNormalTexture("Interface/Buttons/UI-Panel-MinimizeButton-Up")
frame.Close:SetPushedTexture("Interface/Buttons/UI-Panel-MinimizeButton-Down")
frame.Close:SetHighlightTexture("Interface/Buttons/UI-Panel-MinimizeButton-Highlight", "ADD")
frame.Close:SetScript("OnClick", function(widget)
widget:GetParent():Hide()
end)
frame.Messages = CreateFrame("ScrollingMessageFrame", "$parentMessages", frame)
frame.Messages:SetPoint("TOPLEFT", 15, -25)
frame.Messages:SetPoint("BOTTOMRIGHT", -30, 15)
frame.Messages:SetTextCopyable(true)
frame.Messages:EnableMouse(true)
frame.Messages:SetInsertMode(SCROLLING_MESSAGE_FRAME_INSERT_MODE_TOP)
frame.Messages:SetMaxLines(numSavedLines)
frame.Messages:SetFading(false)
frame.Messages:SetIndentedWordWrap(true)
frame.Messages:SetFontObject(ChatFontNormal)
frame.Messages:SetJustifyH("LEFT")
frame.Scroll = CreateFrame("ScrollFrame", "$parentScroll", frame, "FauxScrollFrameTemplate")
frame.Scroll:SetPoint("TOPLEFT", 15, -25)
frame.Scroll:SetPoint("BOTTOMRIGHT", -30, 15)
local function ScrollList(widget)
local offset = FauxScrollFrame_GetOffset(widget)
widget:GetParent().Messages:SetScrollOffset(offset)
FauxScrollFrame_Update(widget, numSavedLines, 25, 12)
end
frame.Scroll:SetScript("OnVerticalScroll", function(widget, offset)
FauxScrollFrame_OnVerticalScroll(widget, offset, 6, ScrollList)
end)
frame.Select = CreateFrame("Button", "$parentSelect", frame, "UIPanelButtonTemplate")
frame.Select:SetSize(180, 25)
frame.Select:SetPoint("RIGHT", frame.Close, "LEFT")
frame.Select:SetText("Copy ALL the things")
frame.Select:SetScale(0.85)
frame.Select:SetScript("OnClick", function()
local concatenatedMessages = DebugCache:GetCopyableMessageString()
CopyPastePopup:SetEditBoxText(concatenatedMessages)
CopyPastePopup:Show()
end)
frame.Clear = CreateFrame("Button", "$parentClear", frame, "UIPanelButtonTemplate")
frame.Clear:SetSize(180, 25)
frame.Clear:SetPoint("RIGHT", frame.Select, "LEFT")
frame.Clear:SetText("Clear ALL the things")
frame.Clear:SetScale(0.85)
frame.Clear:SetScript("OnClick", function()
DebugCache:Clear()
frame.Messages:Clear()
end)
frame:Hide()
self.frame = frame
end
function ScrollingDebugMessageFrame:AddMessage(message)
self.frame.Messages:AddMessage(message)
if not self.frame:IsShown() then
return -- No need to waste time updating an invisible frame
end
self:UpdateDisplayedMessages()
end
function ScrollingDebugMessageFrame:Toggle()
self.frame:SetShown(not self.frame:IsShown())
end
function ScrollingDebugMessageFrame:UpdateDisplayedMessages()
local numMessagesAvailable = self.frame.Messages:GetNumMessages()
FauxScrollFrame_Update(self.frame.Scroll, numMessagesAvailable, self.numMessagesToDisplay, 12)
end
Rarity.ScrollingDebugMessageFrame = ScrollingDebugMessageFrame
ScrollingDebugMessageFrame:OnLoad()