TradeSkillMaster/Core/UI/Elements/SecureMacroActionButton.lua

62 lines
2.7 KiB
Lua
Raw Normal View History

2020-11-13 14:13:12 -05:00
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster --
-- https://tradeskillmaster.com --
-- All Rights Reserved - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
--- SecureMacroActionButton UI Element Class.
-- A secure macro action button builds on top of WoW's `SecureActionButtonTemplate` to allow executing scripts which
-- addon buttons would otherwise be forbidden from running. It is a subclass of the @{ActionButton} class.
-- @classmod SecureMacroActionButton
local _, TSM = ...
local ScriptWrapper = TSM.Include("Util.ScriptWrapper")
local SecureMacroActionButton = TSM.Include("LibTSMClass").DefineClass("SecureMacroActionButton", TSM.UI.ActionButton)
local UIElements = TSM.Include("UI.UIElements")
UIElements.Register(SecureMacroActionButton)
TSM.UI.SecureMacroActionButton = SecureMacroActionButton
-- ============================================================================
-- Public Class Methods
-- ============================================================================
function SecureMacroActionButton.__init(self, name)
self.__super:__init(name, true)
local frame = self:_GetBaseFrame()
frame:SetAttribute("type1", "macro")
frame:SetAttribute("macrotext1", "")
end
function SecureMacroActionButton.Release(self)
local frame = self:_GetBaseFrame()
ScriptWrapper.Clear(frame, "PreClick")
frame:SetAttribute("macrotext1", "")
self.__super:Release()
end
--- Registers a script handler.
-- @tparam SecureMacroActionButton self The secure macro action button object
-- @tparam string script The script to register for (supported scripts: `PreClick`)
-- @tparam function handler The script handler which will be called with the secure macro action button object followed
-- by any arguments to the script
-- @treturn SecureMacroActionButton The secure macro action button object
function SecureMacroActionButton.SetScript(self, script, handler)
if script == "PreClick" or script == "PostClick" then
self.__super.__super:SetScript(script, handler)
else
error("Unknown SecureActionButton script: "..tostring(script))
end
return self
end
--- Sets the macro text which clicking the button executes.
-- @tparam SecureMacroActionButton self The secure macro action button object
-- @tparam string text THe macro text
-- @treturn SecureMacroActionButton The secure macro action button object
function SecureMacroActionButton.SetMacroText(self, text)
self:_GetBaseFrame():SetAttribute("macrotext1", text)
return self
end