44 lines
1.2 KiB
Lua
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)
|