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