Asa@0: local AceGUI = LibStub("AceGUI-3.0") Asa@0: Asa@0: -- WoW APIs Asa@0: local _G = _G Asa@0: local CreateFrame, UIParent = CreateFrame, UIParent Asa@0: Asa@0: -------------------------- Asa@0: -- Button -- Asa@0: -------------------------- Asa@0: do Asa@0: local Type = "Button" Asa@0: local Version = 12 Asa@0: Asa@0: local function OnAcquire(self) Asa@0: -- restore default values Asa@0: self:SetHeight(24) Asa@0: self:SetWidth(200) Asa@0: end Asa@0: Asa@0: local function OnRelease(self) Asa@0: self.frame:ClearAllPoints() Asa@0: self.frame:Hide() Asa@0: self:SetDisabled(false) Asa@0: end Asa@0: Asa@0: local function Button_OnClick(this, ...) Asa@0: this.obj:Fire("OnClick", ...) Asa@0: AceGUI:ClearFocus() Asa@0: end Asa@0: Asa@0: local function Button_OnEnter(this) Asa@0: this.obj:Fire("OnEnter") Asa@0: end Asa@0: Asa@0: local function Button_OnLeave(this) Asa@0: this.obj:Fire("OnLeave") Asa@0: end Asa@0: Asa@0: local function SetText(self, text) Asa@0: self.text:SetText(text or "") Asa@0: end Asa@0: Asa@0: local function SetDisabled(self, disabled) Asa@0: self.disabled = disabled Asa@0: if disabled then Asa@0: self.frame:Disable() Asa@0: else Asa@0: self.frame:Enable() Asa@0: end Asa@0: end Asa@0: Asa@0: local function Constructor() Asa@0: local num = AceGUI:GetNextWidgetNum(Type) Asa@0: local name = "AceGUI30Button"..num Asa@0: local frame = CreateFrame("Button",name,UIParent,"UIPanelButtonTemplate2") Asa@0: local self = {} Asa@0: self.num = num Asa@0: self.type = Type Asa@0: self.frame = frame Asa@0: Asa@0: local left = _G[name .. "Left"] Asa@0: local right = _G[name .. "Right"] Asa@0: local middle = _G[name .. "Middle"] Asa@0: Asa@0: left:SetPoint("TOP", frame, "TOP", 0, 0) Asa@0: left:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0) Asa@0: Asa@0: right:SetPoint("TOP", frame, "TOP", 0, 0) Asa@0: right:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0) Asa@0: Asa@0: middle:SetPoint("TOP", frame, "TOP", 0, 0) Asa@0: middle:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0) Asa@0: Asa@0: local text = frame:GetFontString() Asa@0: self.text = text Asa@0: text:ClearAllPoints() Asa@0: text:SetPoint("TOPLEFT",frame,"TOPLEFT", 15, -1) Asa@0: text:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT", -15, 1) Asa@0: text:SetJustifyV("MIDDLE") Asa@0: Asa@0: frame:SetScript("OnClick",Button_OnClick) Asa@0: frame:SetScript("OnEnter",Button_OnEnter) Asa@0: frame:SetScript("OnLeave",Button_OnLeave) Asa@0: Asa@0: self.SetText = SetText Asa@0: self.SetDisabled = SetDisabled Asa@0: Asa@0: frame:EnableMouse(true) Asa@0: Asa@0: frame:SetHeight(24) Asa@0: frame:SetWidth(200) Asa@0: Asa@0: self.OnRelease = OnRelease Asa@0: self.OnAcquire = OnAcquire Asa@0: Asa@0: self.frame = frame Asa@0: frame.obj = self Asa@0: Asa@0: AceGUI:RegisterAsWidget(self) Asa@0: return self Asa@0: end Asa@0: Asa@0: AceGUI:RegisterWidgetType(Type,Constructor,Version) Asa@0: end