mirror of
https://github.com/Relintai/Relintais-Enemy-Kooldown-Tracker-WotLK.git
synced 2024-11-08 10:12:11 +01:00
111 lines
2.6 KiB
Lua
111 lines
2.6 KiB
Lua
|
|
||
|
-- This file is only there in standalone Ace3 and provides handy dev tool stuff I guess
|
||
|
-- for now only /rl to reload your UI :)
|
||
|
-- note the complete overkill use of AceAddon and console, ain't it cool?
|
||
|
|
||
|
-- GLOBALS: next, loadstring, ReloadUI, geterrorhandler
|
||
|
-- GLOBALS: BINDING_HEADER_ACE3, BINDING_NAME_RELOADUI, Ace3, LibStub
|
||
|
|
||
|
-- BINDINGs labels
|
||
|
BINDING_HEADER_ACE3 = "Ace3"
|
||
|
BINDING_NAME_RELOADUI = "ReloadUI"
|
||
|
--
|
||
|
|
||
|
local gui = LibStub("AceGUI-3.0")
|
||
|
local reg = LibStub("AceConfigRegistry-3.0")
|
||
|
local dialog = LibStub("AceConfigDialog-3.0")
|
||
|
|
||
|
Ace3 = LibStub("AceAddon-3.0"):NewAddon("Ace3", "AceConsole-3.0")
|
||
|
local Ace3 = Ace3
|
||
|
|
||
|
local selectedgroup
|
||
|
local frame
|
||
|
local select
|
||
|
local status = {}
|
||
|
local configs = {}
|
||
|
|
||
|
local function frameOnClose()
|
||
|
gui:Release(frame)
|
||
|
frame = nil
|
||
|
end
|
||
|
|
||
|
local function RefreshConfigs()
|
||
|
for name in reg:IterateOptionsTables() do
|
||
|
configs[name] = name
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function ConfigSelected(widget, event, value)
|
||
|
selectedgroup = value
|
||
|
dialog:Open(value, widget)
|
||
|
end
|
||
|
|
||
|
local old_CloseSpecialWindows
|
||
|
|
||
|
-- GLOBALS: CloseSpecialWindows, next
|
||
|
function Ace3:Open()
|
||
|
if not old_CloseSpecialWindows then
|
||
|
old_CloseSpecialWindows = CloseSpecialWindows
|
||
|
CloseSpecialWindows = function()
|
||
|
local found = old_CloseSpecialWindows()
|
||
|
if frame then
|
||
|
frame:Hide()
|
||
|
return true
|
||
|
end
|
||
|
return found
|
||
|
end
|
||
|
end
|
||
|
RefreshConfigs()
|
||
|
if next(configs) == nil then
|
||
|
self:Print("No Configs are Registered")
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if not frame then
|
||
|
frame = gui:Create("Frame")
|
||
|
frame:ReleaseChildren()
|
||
|
frame:SetTitle("Ace3 Options")
|
||
|
frame:SetLayout("FILL")
|
||
|
frame:SetCallback("OnClose", frameOnClose)
|
||
|
|
||
|
select = gui:Create("DropdownGroup")
|
||
|
select:SetGroupList(configs)
|
||
|
select:SetCallback("OnGroupSelected", ConfigSelected)
|
||
|
frame:AddChild(select)
|
||
|
end
|
||
|
if not selectedgroup then
|
||
|
selectedgroup = next(configs)
|
||
|
end
|
||
|
select:SetGroup(selectedgroup)
|
||
|
frame:Show()
|
||
|
end
|
||
|
|
||
|
local function RefreshOnUpdate(this)
|
||
|
select:SetGroup(selectedgroup)
|
||
|
this:SetScript("OnUpdate", nil)
|
||
|
end
|
||
|
|
||
|
function Ace3:ConfigTableChanged(event, appName)
|
||
|
if selectedgroup == appName and frame then
|
||
|
frame.frame:SetScript("OnUpdate", RefreshOnUpdate)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
reg.RegisterCallback(Ace3, "ConfigTableChange", "ConfigTableChanged")
|
||
|
|
||
|
function Ace3:PrintCmd(input)
|
||
|
input = input:trim():match("^(.-);*$")
|
||
|
local func, err = loadstring("LibStub(\"AceConsole-3.0\"):Print(" .. input .. ")")
|
||
|
if not func then
|
||
|
LibStub("AceConsole-3.0"):Print("Error: " .. err)
|
||
|
else
|
||
|
func()
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function Ace3:OnInitialize()
|
||
|
self:RegisterChatCommand("ace3", function() self:Open() end)
|
||
|
self:RegisterChatCommand("rl", function() ReloadUI() end)
|
||
|
self:RegisterChatCommand("print", "PrintCmd")
|
||
|
end
|