WoWInterface SVN GuildTracker

[/] [trunk/] [Libs/] [AceGUI-3.0/] [widgets/] [AceGUIWidget-Button.lua] - Rev 2

Compare with Previous | Blame | View Log

--[[-----------------------------------------------------------------------------
Button Widget
Graphical Button.
-------------------------------------------------------------------------------]]
local Type, Version = "Button", 22
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

local wowMoP
do
        local _, _, _, interface = GetBuildInfo()
        wowMoP = (interface >= 50000)
end

--[[-----------------------------------------------------------------------------
Scripts
-------------------------------------------------------------------------------]]
local function Button_OnClick(frame, ...)
        AceGUI:ClearFocus()
        PlaySound("igMainMenuOption")
        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: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, wowMoP and "UIPanelButtonTemplate" or "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)

Compare with Previous | Blame