WoWInterface SVN NeedyGreedy

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

Go to most recent revision | Compare with Previous | Blame | View Log

local AceGUI = LibStub("AceGUI-3.0")

--------------------------
-- Button                       --
--------------------------
do
        local Type = "Button"
        local Version = 10
        
        local function OnAcquire(self)
                -- restore default values
                self:SetHeight(24)
                self:SetWidth(200)
        end
        
        local function OnRelease(self)
                self.frame:ClearAllPoints()
                self.frame:Hide()
                self:SetDisabled(false)
        end
        
        local function Button_OnClick(this)
                this.obj:Fire("OnClick")
                AceGUI:ClearFocus()
        end
        
        local function Button_OnEnter(this)
                this.obj:Fire("OnEnter")
        end
        
        local function Button_OnLeave(this)
                this.obj:Fire("OnLeave")
        end
        
        local function SetText(self, text)
                self.text:SetText(text or "")
        end
        
        local function SetDisabled(self, disabled)
                self.disabled = disabled
                if disabled then
                        self.frame:Disable()
                else
                        self.frame:Enable()
                end
        end
        
        local function Constructor()
                local num  = AceGUI:GetNextWidgetNum(Type)
                local name = "AceGUI30Button"..num
                local frame = CreateFrame("Button",name,UIParent,"UIPanelButtonTemplate2")
                local self = {}
                self.num = num
                self.type = Type
                self.frame = frame
                
                local left = _G[name .. "Left"]
                local right = _G[name .. "Right"]
                local middle = _G[name .. "Middle"]
                
                left:SetPoint("TOP", frame, "TOP", 0, -1)
                left:SetPoint("BOTTOM", frame, "BOTTOM", 0, 1)
                
                right:SetPoint("TOP", frame, "TOP", 0, -1)
                right:SetPoint("BOTTOM", frame, "BOTTOM", 0, 1)
                
                middle:SetPoint("TOP", frame, "TOP", 0, -1)
                middle:SetPoint("BOTTOM", frame, "BOTTOM", 0, 1)

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

                frame:SetScript("OnClick",Button_OnClick)
                frame:SetScript("OnEnter",Button_OnEnter)
                frame:SetScript("OnLeave",Button_OnLeave)

                self.SetText = SetText
                self.SetDisabled = SetDisabled
                
                frame:EnableMouse(true)

                frame:SetHeight(24)
                frame:SetWidth(200)
        
                self.OnRelease = OnRelease
                self.OnAcquire = OnAcquire
                
                self.frame = frame
                frame.obj = self

                AceGUI:RegisterAsWidget(self)
                return self
        end
        
        AceGUI:RegisterWidgetType(Type,Constructor,Version)
end

Go to most recent revision | Compare with Previous | Blame