57a5cdabdf
Imported from /srv/add01/wow-ascension/Interface/AddOns/Bartender4 — the build Ascension's WotLK 3.3.5 client ships. Single vendored drop: Ascension's build process bundles their custom patches with the standard CurseForge packager output (embedded libs), and the individual patches aren't published separately. Net delta vs Nevcairiel 4.4.2, excluding bundled libs and CRLF normalization: 21 files, 2213+/52- — the Ascension-specific adaptations for WotLK 3.3.5 hero classes / custom action systems. License: All rights reserved (per .toc).
93 lines
2.5 KiB
Lua
93 lines
2.5 KiB
Lua
--[[-----------------------------------------------------------------------------
|
|
Button Widget
|
|
Graphical Button.
|
|
-------------------------------------------------------------------------------]]
|
|
local Type, Version = "Button", 20
|
|
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, ...)
|
|
PlaySound("igMainMenuOption")
|
|
frame.obj:Fire("OnClick", ...)
|
|
AceGUI:ClearFocus()
|
|
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:SetText()
|
|
end,
|
|
|
|
-- ["OnRelease"] = nil,
|
|
|
|
["SetText"] = function(self, text)
|
|
self.text:SetText(text)
|
|
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, "UIPanelButtonTemplate2")
|
|
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)
|