--[[ optionsToggle.lua A options frame toggle widget --]] local Bagnon = LibStub('AceAddon-3.0'):GetAddon('Bagnon') local L = LibStub('AceLocale-3.0'):GetLocale('Bagnon') local OptionsToggle = Bagnon.Classy:New('Button') Bagnon.OptionsToggle = OptionsToggle local SIZE = 20 local NORMAL_TEXTURE_SIZE = 64 * (SIZE/36) --[[ Constructor ]]-- function OptionsToggle:New(frameID, parent) local b = self:Bind(CreateFrame('Button', nil, parent)) b:SetWidth(SIZE) b:SetHeight(SIZE) b:RegisterForClicks('anyUp') local nt = b:CreateTexture() nt:SetTexture([[Interface\Buttons\UI-Quickslot2]]) nt:SetWidth(NORMAL_TEXTURE_SIZE) nt:SetHeight(NORMAL_TEXTURE_SIZE) nt:SetPoint('CENTER', 0, -1) b:SetNormalTexture(nt) local pt = b:CreateTexture() pt:SetTexture([[Interface\Buttons\UI-Quickslot-Depress]]) pt:SetAllPoints(b) b:SetPushedTexture(pt) local ht = b:CreateTexture() ht:SetTexture([[Interface\Buttons\ButtonHilight-Square]]) ht:SetAllPoints(b) b:SetHighlightTexture(ht) local icon = b:CreateTexture() icon:SetAllPoints(b) icon:SetTexture([[Interface\Icons\Trade_Engineering]]) b:SetScript('OnClick', b.OnClick) b:SetScript('OnEnter', b.OnEnter) b:SetScript('OnLeave', b.OnLeave) b:SetFrameID(frameID) return b end --[[ Frame Events ]]-- function OptionsToggle:OnClick() if LoadAddOn('Bagnon_Config') then Bagnon.FrameOptions:ShowFrame(self:GetFrameID()) end end function OptionsToggle:OnEnter() if self:GetRight() > (GetScreenWidth() / 2) then GameTooltip:SetOwner(self, 'ANCHOR_LEFT') else GameTooltip:SetOwner(self, 'ANCHOR_RIGHT') end self:UpdateTooltip() end function OptionsToggle:OnLeave() if GameTooltip:IsOwned(self) then GameTooltip:Hide() end end --[[ Update Methods ]]-- function OptionsToggle:UpdateTooltip() if GameTooltip:IsOwned(self) then GameTooltip:SetText(L.TipShowFrameConfig) end end --[[ Properties ]]-- function OptionsToggle:SetFrameID(frameID) if self:GetFrameID() ~= frameID then self.frameID = frameID end end function OptionsToggle:GetFrameID() return self.frameID end