Files
ElvUIModernized/ElvUI/Core/Commands.lua
T
2018-11-01 22:32:19 -05:00

183 lines
4.8 KiB
Lua

local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
--Cache global variables
--Lua functions
local _G = _G
local tonumber, type = tonumber, type
local format, len, lower, match = string.format, string.len, string.lower, string.match
--WoW API / Variables
local UIFrameFadeOut, UIFrameFadeIn = UIFrameFadeOut, UIFrameFadeIn
local EnableAddOn, DisableAddOn, DisableAllAddOns = EnableAddOn, DisableAddOn, DisableAllAddOns
local SetCVar = SetCVar
local ReloadUI = ReloadUI
local GetAddOnInfo = GetAddOnInfo
function E:EnableAddon(addon)
local _, _, _, _, _, reason, _ = GetAddOnInfo(addon)
if reason ~= "MISSING" then
EnableAddOn(addon)
ReloadUI()
else
E:Print(format("Addon '%s' not found.", addon))
end
end
function E:DisableAddon(addon)
local _, _, _, _, _, reason, _ = GetAddOnInfo(addon)
if reason ~= "MISSING" then
DisableAddOn(addon)
ReloadUI()
else
E:Print(format("Addon '%s' not found.", addon))
end
end
function FarmMode()
if E.private.general.minimap.enable ~= true then return end
if Minimap:IsShown() then
UIFrameFadeOut(Minimap, 0.3)
UIFrameFadeIn(FarmModeMap, 0.3)
Minimap.fadeInfo.finishedFunc = function()
Minimap:Hide()
Minimap.backdrop:Hide()
_G.MinimapZoomIn:Click()
_G.MinimapZoomOut:Click()
Minimap:SetAlpha(1)
end
FarmModeMap.enabled = true
else
UIFrameFadeOut(FarmModeMap, 0.3)
UIFrameFadeIn(Minimap, 0.3)
FarmModeMap.fadeInfo.finishedFunc = function()
FarmModeMap:Hide()
Minimap.backdrop:Show()
_G.MinimapZoomIn:Click()
_G.MinimapZoomOut:Click()
Minimap:SetAlpha(1)
end
FarmModeMap.enabled = false
end
end
function E:FarmMode(msg)
if E.private.general.minimap.enable ~= true then return end
if msg and type(tonumber(msg)) == "number" and tonumber(msg) <= 500 and tonumber(msg) >= 20 then
E.db.farmSize = tonumber(msg)
E:Size(FarmModeMap, tonumber(msg))
end
FarmMode()
end
function E:Grid(msg)
if msg and type(tonumber(msg)) == "number" and tonumber(msg) <= 256 and tonumber(msg) >= 4 then
E.db.gridSize = msg
E:Grid_Show()
else
if EGrid then
E:Grid_Hide()
else
E:Grid_Show()
end
end
end
function E:LuaError(msg)
msg = lower(msg)
if msg == "on" then
DisableAllAddOns()
EnableAddOn("!Compatibility")
EnableAddOn("!DebugTools")
EnableAddOn("ElvUI")
EnableAddOn("ElvUI_Config")
SetCVar("ShowErrors", "1")
ReloadUI()
elseif msg == "off" then
SetCVar("ShowErrors", "0")
E:Print("Lua errors off.")
else
E:Print("/luaerror on - /luaerror off")
end
end
function E:BGStats()
local DT = E:GetModule("DataTexts")
DT.ForceHideBGStats = nil
DT:LoadDataTexts()
E:Print(L["Battleground datatexts will now show again if you are inside a battleground."])
end
local editbox = CreateFrame("Editbox", "MacroEditBox")
editbox:Hide()
local function OnCallback(command)
local defaulteditbox = ChatFrameEditBox
MacroEditBox.chatType = defaulteditbox.chatType
MacroEditBox.tellTarget = defaulteditbox.tellTarget
MacroEditBox.channelTarget = defaulteditbox.channelTarget
MacroEditBox:SetText(command)
ChatEdit_SendText(MacroEditBox)
end
function E:DelayScriptCall(msg)
local secs, command = match(msg, "^(%S+)%s+(.*)$")
secs = tonumber(secs)
if (not secs) or (len(command) == 0) then
self:Print("usage: /in <seconds> <command>")
self:Print("example: /in 1.5 /say hi")
else
E:Delay(secs, OnCallback, command)
end
end
local BLIZZARD_ADDONS = {
"Blizzard_AuctionUI",
"Blizzard_BattlefieldMinimap",
"Blizzard_BindingUI",
"Blizzard_CombatLog",
"Blizzard_CombatText",
"Blizzard_CraftUI",
"Blizzard_GMSurveyUI",
"Blizzard_GuildBankUI",
"Blizzard_InspectUI",
"Blizzard_ItemSocketingUI",
"Blizzard_MacroUI",
"Blizzard_RaidUI",
"Blizzard_TalentUI",
"Blizzard_TimeManager",
"Blizzard_TradeSkillUI",
"Blizzard_TrainerUI"
}
function E:EnableBlizzardAddOns()
for _, addon in pairs(BLIZZARD_ADDONS) do
local reason = select(5, GetAddOnInfo(addon))
if reason == "DISABLED" then
EnableAddOn(addon)
E:Print("The following addon was re-enabled:", addon)
end
end
end
function E:LoadCommands()
self:RegisterChatCommand("in", "DelayScriptCall")
self:RegisterChatCommand("ec", "ToggleConfig")
self:RegisterChatCommand("elvui", "ToggleConfig")
self:RegisterChatCommand("bgstats", "BGStats")
self:RegisterChatCommand("luaerror", "LuaError")
self:RegisterChatCommand("egrid", "Grid")
self:RegisterChatCommand("moveui", "ToggleConfigMode")
self:RegisterChatCommand("resetui", "ResetUI")
self:RegisterChatCommand("enable", "EnableAddon")
self:RegisterChatCommand("disable", "DisableAddon")
self:RegisterChatCommand("farmmode", "FarmMode")
self:RegisterChatCommand("enableblizzard", "EnableBlizzardAddOns")
self:RegisterChatCommand("estatus", "ShowStatusReport")
if E:GetModule("ActionBars") and E.private.actionbar.enable then
self:RegisterChatCommand("kb", E:GetModule("ActionBars").ActivateBindMode)
end
end