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
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()
|
|
|