local p,K="\066\117\116\116\111\110",24 local a=LibStub and LibStub("\065\099\101\071\085\073-\051\046\048",true)if not a or(a:GetWidgetVersion(p)or 0)>=K then return end local w=pairs local R=_G local H,C,c=PlaySound,CreateFrame,UIParent local function f(p,...)a:ClearFocus()H(852)p.obj:Fire("\079\110\067\108\105\099\107",...)end local function U(p)p.obj:Fire("\079\110\069\110\116\101\114")end local function W(p)p.obj:Fire("\079\110\076\101\097\118\101")end local G={OnAcquire=function(p)p:SetHeight(24)p:SetWidth(200)p:SetDisabled(false)p:SetAutoWidth(false)p:SetText()end,SetText=function(p,K)p.text:SetText(K)if p.autoWidth then p:SetWidth(p.text:GetStringWidth()+30)end end,SetAutoWidth=function(p,K)p.autoWidth=K if p.autoWidth then p:SetWidth(p.text:GetStringWidth()+30)end end,SetDisabled=function(p,K)p.disabled=K if K then p.frame:Disable()else p.frame:Enable()end end}local function M()local K="\065\099\101\071\085\073\051\048\066\117\116\116\111\110"..a:GetNextWidgetNum(p)local R=C("\066\117\116\116\111\110",K,c,"\085\073\080\097\110\101\108\066\117\116\116\111\110\084\101\109\112\108\097\116\101")R:Hide()R:EnableMouse(true)R:SetScript("\079\110\067\108\105\099\107",f)R:SetScript("\079\110\069\110\116\101\114",U)R:SetScript("\079\110\076\101\097\118\101",W)local H=R:GetFontString()H:ClearAllPoints()H:SetPoint("\084\079\080\076\069\070\084",15,-1)H:SetPoint("\066\079\084\084\079\077\082\073\071\072\084",-15,1)H:SetJustifyV("\077\073\068\068\076\069")local M={text=H;frame=R;type=p}for p,K in w(G)do M[p]=K end return a:RegisterAsWidget(M)end a:RegisterWidgetType(p,M,K)
--[[-----------------------------------------------------------------------------
Button Widget
Graphical Button.
-------------------------------------------------------------------------------]]
local Type, Version = "Button", 24
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end

-- Lua APIs
local pairs = pairs

-- WoW APIs
local _G = _G
local PlaySound, CreateFrame, UIParent = PlaySound, CreateFrame, UIParent

--[[-----------------------------------------------------------------------------
Scripts
-------------------------------------------------------------------------------]]
local function Button_OnClick(frame, ...)
	AceGUI:ClearFocus()
	PlaySound(852) -- SOUNDKIT.IG_MAINMENU_OPTION
	frame.obj:Fire("OnClick", ...)
end

local function Control_OnEnter(frame)
	frame.obj:Fire("OnEnter")
end

local function Control_OnLeave(frame)
	frame.obj:Fire("OnLeave")
end

--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
	["OnAcquire"] = function(self)
		-- restore default values
		self:SetHeight(24)
		self:SetWidth(200)
		self:SetDisabled(false)
		self:SetAutoWidth(false)
		self:SetText()
	end,

	-- ["OnRelease"] = nil,

	["SetText"] = function(self, text)
		self.text:SetText(text)
		if self.autoWidth then
			self:SetWidth(self.text:GetStringWidth() + 30)
		end
	end,

	["SetAutoWidth"] = function(self, autoWidth)
		self.autoWidth = autoWidth
		if self.autoWidth then
			self:SetWidth(self.text:GetStringWidth() + 30)
		end
	end,

	["SetDisabled"] = function(self, disabled)
		self.disabled = disabled
		if disabled then
			self.frame:Disable()
		else
			self.frame:Enable()
		end
	end
}

--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
	local name = "AceGUI30Button" .. AceGUI:GetNextWidgetNum(Type)
	local frame = CreateFrame("Button", name, UIParent, "UIPanelButtonTemplate")
	frame:Hide()

	frame:EnableMouse(true)
	frame:SetScript("OnClick", Button_OnClick)
	frame:SetScript("OnEnter", Control_OnEnter)
	frame:SetScript("OnLeave", Control_OnLeave)

	local text = frame:GetFontString()
	text:ClearAllPoints()
	text:SetPoint("TOPLEFT", 15, -1)
	text:SetPoint("BOTTOMRIGHT", -15, 1)
	text:SetJustifyV("MIDDLE")

	local widget = {
		text  = text,
		frame = frame,
		type  = Type
	}
	for method, func in pairs(methods) do
		widget[method] = func
	end

	return AceGUI:RegisterAsWidget(widget)
end

AceGUI:RegisterWidgetType(Type, Constructor, Version)
