Files
coa-weakauras/WeakAurasOptions/AceGUI-Widgets/AceGUIWidget-WeakAurasInputWithIndentation.lua
T
2025-04-13 16:03:55 +02:00

44 lines
1.2 KiB
Lua

if not WeakAuras.IsLibsOK() then return end
local Type, Version = "WeakAurasInputWithIndentation", 1
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
local eventCallbacks = {
OnEditFocusGained = "OnEditFocusGained",
OnEditFocusLost = "OnEditFocusLost",
OnEnterPressed = "OnEnterPressed",
OnShow = "OnShow"
}
local function EventHandler(frame, event)
local self = frame.obj
local option = self.userdata.option
if option and option.callbacks and option.callbacks[event] then
option.callbacks[event](self)
end
end
local function Constructor()
local widget = AceGUI:Create("EditBox")
widget.type = Type
for event, callback in pairs(eventCallbacks) do
widget.editbox:HookScript(event, function(frame) EventHandler(frame, callback) end)
end
local GetText = widget.editbox.GetText
widget.editbox.GetText = function(self)
return IndentationLib.decode(GetText(self))
end
local SetText = widget.editbox.SetText
widget.editbox.SetText = function(self, text)
SetText(self, IndentationLib.encode(text))
end
return widget
end
AceGUI:RegisterWidgetType(Type, Constructor, Version)