--[[ 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