ElvUI/Developer/Frame.lua
2020-11-13 14:27:50 -05:00

141 lines
3.5 KiB
Lua

--Lua functions
local _G = _G
local print, tostring, select = print, tostring, select
local strlower = strlower
local GetAddOnEnableState = GetAddOnEnableState
local UIParentLoadAddOn = UIParentLoadAddOn
local GetMouseFocus = GetMouseFocus
local IsAddOnLoaded = IsAddOnLoaded
local GetAddOnInfo = GetAddOnInfo
local LoadAddOn = LoadAddOn
local SlashCmdList = SlashCmdList
-- GLOBALS: ElvUIDev, ElvUI, FRAME, SLASH_FRAME1, SLASH_FRAMELIST1, SLASH_TEXLIST1, SLASH_GETPOINT1, SLASH_DEV1
local me = UnitName('player')
local IsDebugDisabled = function()
if GetAddOnEnableState(me, 'Blizzard_DebugTools') == 0 then
print('Blizzard_DebugTools is disabled.')
return true
end
end
_G.SLASH_FRAME1 = '/frame'
SlashCmdList.FRAME = function(arg)
if IsDebugDisabled() then return end
if arg ~= '' then
arg = _G[arg]
else
arg = GetMouseFocus()
end
if arg ~= nil then
_G.FRAME = arg -- Set the global variable FRAME to = whatever we are mousing over to simplify messing with frames that have no name.
end
if not _G.TableAttributeDisplay then
UIParentLoadAddOn('Blizzard_DebugTools')
end
if _G.TableAttributeDisplay then
_G.TableAttributeDisplay:InspectTable(arg)
_G.TableAttributeDisplay:Show()
end
end
_G.SLASH_FRAMELIST1 = '/framelist'
SlashCmdList.FRAMELIST = function(msg)
if IsDebugDisabled() then return end
if not _G.FrameStackTooltip then
UIParentLoadAddOn('Blizzard_DebugTools')
end
local isPreviouslyShown = _G.FrameStackTooltip:IsShown()
if not isPreviouslyShown then
if msg == tostring(true) then
_G.FrameStackTooltip_Toggle(true)
else
_G.FrameStackTooltip_Toggle()
end
end
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
for i = 2, _G.FrameStackTooltip:NumLines() do
local text = _G['FrameStackTooltipTextLeft'..i]:GetText()
if text and text ~= '' then
print(text)
end
end
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
if _G.CopyChatFrame:IsShown() then
_G.CopyChatFrame:Hide()
end
ElvUI[1]:GetModule('Chat'):CopyChat(_G.ChatFrame1)
if not isPreviouslyShown then
_G.FrameStackTooltip_Toggle()
end
end
local function TextureList(frame)
frame = _G[frame] or FRAME
for i = 1, frame:GetNumRegions() do
local region = select(i, frame:GetRegions())
if region.IsObjectType and region:IsObjectType('Texture') then
print(region:GetTexture(), region:GetName(), region:GetDrawLayer())
end
end
end
_G.SLASH_TEXLIST1 = '/texlist'
SlashCmdList.TEXLIST = TextureList
local function GetPoint(frame)
if frame ~= '' then
frame = _G[frame]
else
frame = GetMouseFocus()
end
local point, relativeTo, relativePoint, xOffset, yOffset = frame:GetPoint()
local frameName = frame.GetName and frame:GetName() or 'nil'
local relativeToName = relativeTo.GetName and relativeTo:GetName() or 'nil'
print(frameName, point, relativeToName, relativePoint, xOffset, yOffset)
end
_G.SLASH_GETPOINT1 = '/getpoint'
SlashCmdList.GETPOINT = GetPoint
_G.SLASH_DEV1 = '/dev'
SlashCmdList.DEV = function()
if not IsAddOnLoaded('ElvUIDev') then
local _, _, _, loadable, reason = GetAddOnInfo('ElvUIDev')
if not loadable then
if reason == 'MISSING' then
print('ElvUIDev addon is missing.')
elseif reason == 'DISABLED' then
print('ElvUIDev addon is disabled.')
elseif reason == 'DEMAND_LOADED' then
local loaded, rsn = LoadAddOn('ElvUIDev')
if loaded then
ElvUIDev:ToggleFrame()
else
print('ElvUIDev addon cannot be loaded: %s.', strlower(rsn))
end
end
end
else
if not ElvUIDev.frame:IsShown() then
ElvUIDev.frame:Show()
else
ElvUIDev.frame:Hide()
end
end
end