vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        Anchoring Code by Ammo - taken from BigWigs
]]

function HotCandy:SetupFrames()
        local f, t      

        f, _, _ = GameFontNormal:GetFont()

        self.frames = {}
        self.frames.anchor = CreateFrame("Frame", "HotCandyBarAnchor", UIParent)
        self.frames.anchor.owner = self
        self.frames.anchor:Hide()

        self.frames.anchor:SetWidth(175)
        self.frames.anchor:SetHeight(75)
        self.frames.anchor:SetBackdrop({
                bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16,
                edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
                insets = {left = 4, right = 4, top = 4, bottom = 4},
                })
        self.frames.anchor:SetBackdropBorderColor(.5, .5, .5)
        self.frames.anchor:SetBackdropColor(0,0,0)
        self.frames.anchor:ClearAllPoints()
        self.frames.anchor:SetPoint("CENTER", UIParent, "CENTER", 0, 0)
        self.frames.anchor:EnableMouse(true)
        self.frames.anchor:RegisterForDrag("LeftButton")
        self.frames.anchor:SetMovable(true)
        self.frames.anchor:SetScript("OnDragStart", function() this:StartMoving() end)
        self.frames.anchor:SetScript("OnDragStop", function() this:StopMovingOrSizing() this.owner:SavePosition() end)


        self.frames.cfade = self.frames.anchor:CreateTexture(nil, "BORDER")
        self.frames.cfade:SetWidth(169)
        self.frames.cfade:SetHeight(25)
        self.frames.cfade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground")
        self.frames.cfade:SetPoint("TOP", self.frames.anchor, "TOP", 0, -4)
        self.frames.cfade:SetBlendMode("ADD")
        self.frames.cfade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1)
        self.frames.anchor.Fade = self.frames.fade

        self.frames.cheader = self.frames.anchor:CreateFontString(nil,"OVERLAY")
        self.frames.cheader:SetFont(f, 14)
        self.frames.cheader:SetWidth(150)
        self.frames.cheader:SetText("Bars")
        self.frames.cheader:SetTextColor(1, .8, 0)
        self.frames.cheader:ClearAllPoints()
        self.frames.cheader:SetPoint("TOP", self.frames.anchor, "TOP", 0, -10)
        
        self.frames.leftbutton = CreateFrame("Button", nil, self.frames.anchor)
        self.frames.leftbutton.owner = self
        self.frames.leftbutton:SetWidth(40)
        self.frames.leftbutton:SetHeight(25)
        self.frames.leftbutton:SetPoint("RIGHT", self.frames.anchor, "CENTER", -10, -15)
        self.frames.leftbutton:SetScript( "OnClick", function() self:TestBars() end )

        
        t = self.frames.leftbutton:CreateTexture()
        t:SetWidth(50)
        t:SetHeight(32)
        t:SetPoint("CENTER", self.frames.leftbutton, "CENTER")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        self.frames.leftbutton:SetNormalTexture(t)

        t = self.frames.leftbutton:CreateTexture(nil, "BACKGROUND")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.leftbutton)
        self.frames.leftbutton:SetPushedTexture(t)
        
        t = self.frames.leftbutton:CreateTexture()
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.leftbutton)
        t:SetBlendMode("ADD")
        self.frames.leftbutton:SetHighlightTexture(t)
        self.frames.leftbuttontext = self.frames.leftbutton:CreateFontString(nil,"OVERLAY")
        self.frames.leftbuttontext:SetFontObject(GameFontHighlight)
        self.frames.leftbuttontext:SetText("Test")
        self.frames.leftbuttontext:SetAllPoints(self.frames.leftbutton)

        self.frames.rightbutton = CreateFrame("Button", nil, self.frames.anchor)
        self.frames.rightbutton.owner = self
        self.frames.rightbutton:SetWidth(40)
        self.frames.rightbutton:SetHeight(25)
        self.frames.rightbutton:SetPoint("LEFT", self.frames.anchor, "CENTER", 10, -15)
        self.frames.rightbutton:SetScript( "OnClick", function() self:HideAnchors() end )

        
        t = self.frames.rightbutton:CreateTexture()
        t:SetWidth(50)
        t:SetHeight(32)
        t:SetPoint("CENTER", self.frames.rightbutton, "CENTER")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        self.frames.rightbutton:SetNormalTexture(t)

        t = self.frames.rightbutton:CreateTexture(nil, "BACKGROUND")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.rightbutton)
        self.frames.rightbutton:SetPushedTexture(t)
        
        t = self.frames.rightbutton:CreateTexture()
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.rightbutton)
        t:SetBlendMode("ADD")
        self.frames.rightbutton:SetHighlightTexture(t)
        self.frames.rightbuttontext = self.frames.rightbutton:CreateFontString(nil,"OVERLAY")
        self.frames.rightbuttontext:SetFontObject(GameFontHighlight)
        self.frames.rightbuttontext:SetText("Close")
        self.frames.rightbuttontext:SetAllPoints(self.frames.rightbutton)

        self:RestorePosition()
end

function HotCandy:ShowAnchors()
        self.frames.anchor:Show()
end


function HotCandy:HideAnchors()
        self.frames.anchor:Hide()
end

function HotCandy:SavePosition()
        local f = self.frames.anchor
        local s = f:GetEffectiveScale()
                
        self.db.profile.posx = f:GetLeft() * s
        self.db.profile.posy = f:GetTop() * s   
end

function HotCandy:TestBars()
        for i=1,4 do
                self:ShowCandyBar("Test "..i, 15+(i*4))
        end
end

function HotCandy:RestorePosition()
        local x = self.db.profile.posx
        local y = self.db.profile.posy
                
        if not x or not y then return end
                                
        local f = self.frames.anchor
        local s = f:GetEffectiveScale()

        f:ClearAllPoints()
        f:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", x / s, y / s)
end