|
|
|
|
local _, S = ...
|
|
|
|
|
local pairs, ipairs, string, type, time = pairs, ipairs, string, type, time
|
|
|
|
|
local LSM = LibStub("LibSharedMedia-3.0")
|
|
|
|
|
|
|
|
|
|
S.FrameTools = {}
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.CreateCloseButton(parent)
|
|
|
|
|
local b = CreateFrame("BUTTON", nil, parent)
|
|
|
|
|
b.parent = parent
|
|
|
|
|
b:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
|
|
|
b:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
|
|
|
b:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
|
|
|
b:GetNormalTexture():SetTexCoord(0.1484375, 0.296875, 0, 0.3125)
|
|
|
|
|
b:GetHighlightTexture():SetTexCoord(0.59375, 0.7421875, 0, 0.3125)
|
|
|
|
|
b:GetPushedTexture():SetTexCoord(0.1484375, 0.296875, 0.625, 0.9375)
|
|
|
|
|
b:SetSize(34, 34)
|
|
|
|
|
b:SetPoint("CENTER", parent, "TOPRIGHT", -13, -12)
|
|
|
|
|
b:RegisterForClicks("LeftButtonUp")
|
|
|
|
|
b:SetScript("OnClick", function(self)
|
|
|
|
|
self.parent:Hide()
|
|
|
|
|
end)
|
|
|
|
|
return b
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.AddInnerShadow(frame, inset)
|
|
|
|
|
frame.innerShadow = CreateFrame("FRAME", nil, frame)
|
|
|
|
|
frame.innerShadow:SetFrameLevel(frame:GetFrameLevel() + 10)
|
|
|
|
|
frame.innerShadow:SetAllPoints()
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.tl = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.tl:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.tl:SetTexCoord(0, 0.25, 0, 0.25)
|
|
|
|
|
frame.innerShadow.tl:SetPoint("TOPLEFT", 0, 0)
|
|
|
|
|
frame.innerShadow.tl:SetPoint("BOTTOMRIGHT", frame.innerShadow, "TOPLEFT", inset, -inset)
|
|
|
|
|
frame.innerShadow.tl:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.t = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.t:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.t:SetTexCoord(0.25, 0.75, 0, 0.25)
|
|
|
|
|
frame.innerShadow.t:SetPoint("TOPLEFT", inset, 0)
|
|
|
|
|
frame.innerShadow.t:SetPoint("BOTTOMRIGHT", frame.innerShadow, "TOPRIGHT", -inset, -inset)
|
|
|
|
|
frame.innerShadow.t:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.tr = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.tr:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.tr:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.tr:SetTexCoord(0.75, 1, 0, 0.25)
|
|
|
|
|
frame.innerShadow.tr:SetPoint("TOPLEFT", frame.innerShadow, "TOPRIGHT", -inset, 0)
|
|
|
|
|
frame.innerShadow.tr:SetPoint("BOTTOMRIGHT", frame.innerShadow, "TOPRIGHT", 0, -inset)
|
|
|
|
|
frame.innerShadow.tr:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.r = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.r:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.r:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.r:SetTexCoord(0.75, 1, 0.25, 0.75)
|
|
|
|
|
frame.innerShadow.r:SetPoint("TOPLEFT", frame.innerShadow, "TOPRIGHT", -inset, -inset)
|
|
|
|
|
frame.innerShadow.r:SetPoint("BOTTOMRIGHT", 0, inset)
|
|
|
|
|
frame.innerShadow.r:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.br = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.br:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.br:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.br:SetTexCoord(0.75, 1, 0.75, 1)
|
|
|
|
|
frame.innerShadow.br:SetPoint("TOPLEFT", frame.innerShadow, "BOTTOMRIGHT", -inset, inset)
|
|
|
|
|
frame.innerShadow.br:SetPoint("BOTTOMRIGHT", 0, 0)
|
|
|
|
|
frame.innerShadow.br:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.b = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.b:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.b:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.b:SetTexCoord(0.25, 0.75, 0.75, 1)
|
|
|
|
|
frame.innerShadow.b:SetPoint("TOPLEFT", frame.innerShadow, "BOTTOMLEFT", inset, inset)
|
|
|
|
|
frame.innerShadow.b:SetPoint("BOTTOMRIGHT", -inset, 0)
|
|
|
|
|
frame.innerShadow.b:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.bl = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.bl:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.bl:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.bl:SetTexCoord(0, 0.25, 0.75, 1)
|
|
|
|
|
frame.innerShadow.bl:SetPoint("TOPLEFT", frame.innerShadow, "BOTTOMLEFT", 0, inset)
|
|
|
|
|
frame.innerShadow.bl:SetPoint("BOTTOMRIGHT", frame.innerShadow, "BOTTOMLEFT", inset, 0)
|
|
|
|
|
frame.innerShadow.bl:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.innerShadow.l = frame.innerShadow:CreateTexture()
|
|
|
|
|
frame.innerShadow.l:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.innerShadow.l:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Inner")
|
|
|
|
|
frame.innerShadow.l:SetTexCoord(0, 0.25, 0.25, 0.75)
|
|
|
|
|
frame.innerShadow.l:SetPoint("TOPLEFT", 0, -inset)
|
|
|
|
|
frame.innerShadow.l:SetPoint("BOTTOMRIGHT", frame.innerShadow, "BOTTOMLEFT", inset, inset)
|
|
|
|
|
frame.innerShadow.l:SetBlendMode("MOD")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.AddOuterShadow(frame, outset)
|
|
|
|
|
local inset = 2
|
|
|
|
|
frame.outerShadow = CreateFrame("FRAME", nil, frame)
|
|
|
|
|
frame.outerShadow:SetFrameLevel(frame:GetFrameLevel() - 10)
|
|
|
|
|
frame.outerShadow:SetAllPoints()
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.tl = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.tl:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.tl:SetTexCoord(0, 0.333, 0, 0.333)
|
|
|
|
|
frame.outerShadow.tl:SetPoint("TOPLEFT", -outset, outset)
|
|
|
|
|
frame.outerShadow.tl:SetPoint("BOTTOMRIGHT", frame.outerShadow, "TOPLEFT", inset, -inset)
|
|
|
|
|
frame.outerShadow.tl:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.t = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.t:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.t:SetTexCoord(0.333, 0.666, 0, 0.333)
|
|
|
|
|
frame.outerShadow.t:SetPoint("TOPLEFT", inset, outset)
|
|
|
|
|
frame.outerShadow.t:SetPoint("BOTTOMRIGHT", frame.outerShadow, "TOPRIGHT", -inset, -inset)
|
|
|
|
|
frame.outerShadow.t:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.tr = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.tr:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.tr:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.tr:SetTexCoord(0.666, 1, 0, 0.333)
|
|
|
|
|
frame.outerShadow.tr:SetPoint("TOPLEFT", frame.outerShadow, "TOPRIGHT", -inset, outset)
|
|
|
|
|
frame.outerShadow.tr:SetPoint("BOTTOMRIGHT", frame.outerShadow, "TOPRIGHT", outset, -inset)
|
|
|
|
|
frame.outerShadow.tr:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.r = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.r:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.r:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.r:SetTexCoord(0.666, 1, 0.333, 0.666)
|
|
|
|
|
frame.outerShadow.r:SetPoint("TOPLEFT", frame.outerShadow, "TOPRIGHT", -inset, -inset)
|
|
|
|
|
frame.outerShadow.r:SetPoint("BOTTOMRIGHT", outset, inset)
|
|
|
|
|
frame.outerShadow.r:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.br = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.br:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.br:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.br:SetTexCoord(0.666, 1, 0.666, 1)
|
|
|
|
|
frame.outerShadow.br:SetPoint("TOPLEFT", frame.outerShadow, "BOTTOMRIGHT", -inset, inset)
|
|
|
|
|
frame.outerShadow.br:SetPoint("BOTTOMRIGHT", outset, -outset)
|
|
|
|
|
frame.outerShadow.br:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.b = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.b:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.b:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.b:SetTexCoord(0.333, 0.666, 0.666, 1)
|
|
|
|
|
frame.outerShadow.b:SetPoint("TOPLEFT", frame.outerShadow, "BOTTOMLEFT", inset, inset)
|
|
|
|
|
frame.outerShadow.b:SetPoint("BOTTOMRIGHT", -inset, -outset)
|
|
|
|
|
frame.outerShadow.b:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.bl = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.bl:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.bl:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.bl:SetTexCoord(0, 0.333, 0.666, 1)
|
|
|
|
|
frame.outerShadow.bl:SetPoint("TOPLEFT", frame.outerShadow, "BOTTOMLEFT", -outset, inset)
|
|
|
|
|
frame.outerShadow.bl:SetPoint("BOTTOMRIGHT", frame.outerShadow, "BOTTOMLEFT", inset, -outset)
|
|
|
|
|
frame.outerShadow.bl:SetBlendMode("MOD")
|
|
|
|
|
|
|
|
|
|
frame.outerShadow.l = frame.outerShadow:CreateTexture()
|
|
|
|
|
frame.outerShadow.l:SetDrawLayer("OVERLAY")
|
|
|
|
|
frame.outerShadow.l:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Shadow-Outer")
|
|
|
|
|
frame.outerShadow.l:SetTexCoord(0, 0.333, 0.333, 0.666)
|
|
|
|
|
frame.outerShadow.l:SetPoint("TOPLEFT", -outset, -inset)
|
|
|
|
|
frame.outerShadow.l:SetPoint("BOTTOMRIGHT", frame.outerShadow, "BOTTOMLEFT", inset, inset)
|
|
|
|
|
frame.outerShadow.l:SetBlendMode("MOD")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.AddBorder(frame, key, texture, inset, outset, includeMiddle)
|
|
|
|
|
frame[key] = CreateFrame("FRAME", nil, frame)
|
|
|
|
|
frame[key]:SetAllPoints()
|
|
|
|
|
frame[key]:SetFrameLevel(frame:GetFrameLevel() + 10)
|
|
|
|
|
|
|
|
|
|
frame[key].parts = {}
|
|
|
|
|
local parts = frame[key].parts
|
|
|
|
|
|
|
|
|
|
parts[1] = frame[key]:CreateTexture()
|
|
|
|
|
parts[1]:SetTexture(texture)
|
|
|
|
|
parts[1]:SetTexCoord(0, 0.33, 0, 0.33)
|
|
|
|
|
parts[1]:SetPoint("TOPLEFT", -outset, outset)
|
|
|
|
|
parts[1]:SetPoint("BOTTOMRIGHT", frame[key], "TOPLEFT", inset, -inset)
|
|
|
|
|
|
|
|
|
|
parts[2] = frame[key]:CreateTexture()
|
|
|
|
|
parts[2]:SetTexture(texture)
|
|
|
|
|
parts[2]:SetTexCoord(0.33, 0.66, 0, 0.33)
|
|
|
|
|
parts[2]:SetPoint("TOPLEFT", inset, outset)
|
|
|
|
|
parts[2]:SetPoint("BOTTOMRIGHT", frame[key], "TOPRIGHT", -inset, -inset)
|
|
|
|
|
|
|
|
|
|
parts[3] = frame[key]:CreateTexture()
|
|
|
|
|
parts[3]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[3]:SetTexture(texture)
|
|
|
|
|
parts[3]:SetTexCoord(0.66, 1, 0, 0.33)
|
|
|
|
|
parts[3]:SetPoint("TOPLEFT", frame[key], "TOPRIGHT", -inset, outset)
|
|
|
|
|
parts[3]:SetPoint("BOTTOMRIGHT", frame[key], "TOPRIGHT", outset, -inset)
|
|
|
|
|
|
|
|
|
|
parts[4] = frame[key]:CreateTexture()
|
|
|
|
|
parts[4]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[4]:SetTexture(texture)
|
|
|
|
|
parts[4]:SetTexCoord(0.66, 1, 0.33, 0.66)
|
|
|
|
|
parts[4]:SetPoint("TOPLEFT", frame[key], "TOPRIGHT", -inset, -inset)
|
|
|
|
|
parts[4]:SetPoint("BOTTOMRIGHT", outset, inset)
|
|
|
|
|
|
|
|
|
|
parts[5] = frame[key]:CreateTexture()
|
|
|
|
|
parts[5]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[5]:SetTexture(texture)
|
|
|
|
|
parts[5]:SetTexCoord(0.66, 1, 0.66, 1)
|
|
|
|
|
parts[5]:SetPoint("TOPLEFT", frame[key], "BOTTOMRIGHT", -inset, inset)
|
|
|
|
|
parts[5]:SetPoint("BOTTOMRIGHT", outset, -outset)
|
|
|
|
|
|
|
|
|
|
parts[6] = frame[key]:CreateTexture()
|
|
|
|
|
parts[6]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[6]:SetTexture(texture)
|
|
|
|
|
parts[6]:SetTexCoord(0.33, 0.66, 0.66, 1)
|
|
|
|
|
parts[6]:SetPoint("TOPLEFT", frame[key], "BOTTOMLEFT", inset, inset)
|
|
|
|
|
parts[6]:SetPoint("BOTTOMRIGHT", -inset, -outset)
|
|
|
|
|
|
|
|
|
|
parts[7] = frame[key]:CreateTexture()
|
|
|
|
|
parts[7]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[7]:SetTexture(texture)
|
|
|
|
|
parts[7]:SetTexCoord(0, 0.33, 0.66, 1)
|
|
|
|
|
parts[7]:SetPoint("TOPLEFT", frame[key], "BOTTOMLEFT", -outset, inset)
|
|
|
|
|
parts[7]:SetPoint("BOTTOMRIGHT", frame[key], "BOTTOMLEFT", inset, -outset)
|
|
|
|
|
|
|
|
|
|
parts[8] = frame[key]:CreateTexture()
|
|
|
|
|
parts[8]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[8]:SetTexture(texture)
|
|
|
|
|
parts[8]:SetTexCoord(0, 0.33, 0.33, 0.66)
|
|
|
|
|
parts[8]:SetPoint("TOPLEFT", -outset, -inset)
|
|
|
|
|
parts[8]:SetPoint("BOTTOMRIGHT", frame[key], "BOTTOMLEFT", inset, inset)
|
|
|
|
|
|
|
|
|
|
if includeMiddle then
|
|
|
|
|
parts[9] = frame[key]:CreateTexture()
|
|
|
|
|
parts[9]:SetDrawLayer("OVERLAY")
|
|
|
|
|
parts[9]:SetTexture(texture)
|
|
|
|
|
parts[9]:SetTexCoord(0.33, 0.33, 0.66, 0.66)
|
|
|
|
|
parts[9]:SetPoint("TOPLEFT", inset, -inset)
|
|
|
|
|
parts[9]:SetPoint("BOTTOMRIGHT", -inset, inset)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.AddMetalBorder(frame)
|
|
|
|
|
S.FrameTools.AddBorder(frame, "border", "Interface\\Addons\\Sorted\\Textures\\UI-Frame", 88, 8)
|
|
|
|
|
frame.border:SetFrameLevel(frame:GetFrameLevel() + 10)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- UNUSED
|
|
|
|
|
-- Frame used to have a different border when minimised, but no longer
|
|
|
|
|
local function SwitchMetalBorder(frame, minimised)
|
|
|
|
|
--[[if minimised then
|
|
|
|
|
for i,v in ipairs(frame.border.parts) do
|
|
|
|
|
v:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Frame-Minimise")
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
for i,v in ipairs(frame.border.parts) do
|
|
|
|
|
v:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Frame")
|
|
|
|
|
end
|
|
|
|
|
end]]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function SetCircleButtonIconTexture(self, texture)
|
|
|
|
|
self.icon:SetTexture(texture)
|
|
|
|
|
if normalTex then
|
|
|
|
|
normalTex:AddMaskTexture(self.mask)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
function S.FrameTools.CreateCircleButton(frameType, parent, gold, iconTexture, useLargeNormalMask, template)
|
|
|
|
|
local b = CreateFrame(frameType, nil, parent, template)
|
|
|
|
|
if template then -- Only want to inherit methods, not any textures or children
|
|
|
|
|
b:ClearAllPoints()
|
|
|
|
|
for k,v in pairs(b) do
|
|
|
|
|
if type(v) == "table" and v.Hide then
|
|
|
|
|
v:Hide()
|
|
|
|
|
v:ClearAllPoints()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
b:SetSize(32, 32)
|
|
|
|
|
|
|
|
|
|
b.icon = b:CreateTexture()
|
|
|
|
|
b.icon:SetAllPoints()
|
|
|
|
|
b.icon:SetDrawLayer("ARTWORK")
|
|
|
|
|
b.SetIconTexture = SetCircleButtonIconTexture
|
|
|
|
|
|
|
|
|
|
b:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
|
|
|
if gold then
|
|
|
|
|
b:GetNormalTexture():SetTexCoord(0, 0.25, 0, 0.25)
|
|
|
|
|
else
|
|
|
|
|
b:GetNormalTexture():SetTexCoord(0.25, 0.5, 0, 0.25)
|
|
|
|
|
end
|
|
|
|
|
b:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
|
|
|
b:GetHighlightTexture():SetTexCoord(0.75, 1, 0.25, 0.5)
|
|
|
|
|
if frameType == "CheckButton" then
|
|
|
|
|
b:SetCheckedTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
|
|
|
b:GetCheckedTexture():SetTexCoord(0, 0.25, 0.25, 0.5)
|
|
|
|
|
end
|
|
|
|
|
b.mask = b:CreateMaskTexture()
|
|
|
|
|
if useLargeNormalMask then
|
|
|
|
|
b.mask:SetTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button-Mask-Large")
|
|
|
|
|
else
|
|
|
|
|
b.mask:SetTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button-Mask-Small")
|
|
|
|
|
end
|
|
|
|
|
b.mask:SetAllPoints()
|
|
|
|
|
if iconTexture then
|
|
|
|
|
b.icon:SetTexture(iconTexture)
|
|
|
|
|
else
|
|
|
|
|
b.icon:SetTexture("Interface\\Addons\\Sorted\\Textures\\Transparent") -- Set a texture anyway so the mask can be applied
|
|
|
|
|
end
|
|
|
|
|
if useLargeNormalMask then -- Zoom normal texture out, zoom out further for the smaller mask
|
|
|
|
|
b.icon:SetTexCoord(-0.13, 1.13, -0.13, 1.13)
|
|
|
|
|
else
|
|
|
|
|
b.icon:SetTexCoord(-0.2, 1.2, -0.2, 1.2)
|
|
|
|
|
end
|
|
|
|
|
b.icon:AddMaskTexture(b.mask)
|
|
|
|
|
return b
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function S.FrameTools.CreateMoneyFrame(parent)
|
|
|
|
|
f = CreateFrame("FRAME", nil, parent)
|
|
|
|
|
f:SetSize(128, 30)
|
|
|
|
|
|
|
|
|
|
f.bgLeft = f:CreateTexture()
|
|
|
|
|
f.bgLeft:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.bgLeft:SetTexCoord(0, 0.25, 0, 1)
|
|
|
|
|
f.bgLeft:SetPoint("TOPLEFT")
|
|
|
|
|
f.bgLeft:SetPoint("BOTTOMRIGHT", f, "BOTTOMLEFT", 16, 0)
|
|
|
|
|
f.bgRight = f:CreateTexture()
|
|
|
|
|
f.bgRight:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.bgRight:SetTexCoord(0.75, 1, 0, 1)
|
|
|
|
|
f.bgRight:SetPoint("TOPLEFT", f, "TOPRIGHT", -16, 0)
|
|
|
|
|
f.bgRight:SetPoint("BOTTOMRIGHT")
|
|
|
|
|
f.bgCenter = f:CreateTexture()
|
|
|
|
|
f.bgCenter:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.bgCenter:SetTexCoord(0.25, 0.75, 0, 1)
|
|
|
|
|
f.bgCenter:SetPoint("TOPLEFT", 16, 0)
|
|
|
|
|
f.bgCenter:SetPoint("BOTTOMRIGHT", -16, 0)
|
|
|
|
|
|
|
|
|
|
f.highlightLeft = f:CreateTexture()
|
|
|
|
|
f.highlightLeft:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.highlightLeft:SetTexCoord(0, 0.25, 0, 1)
|
|
|
|
|
f.highlightLeft:SetPoint("TOPLEFT")
|
|
|
|
|
f.highlightLeft:SetPoint("BOTTOMRIGHT", f, "BOTTOMLEFT", 16, 0)
|
|
|
|
|
f.highlightLeft:SetBlendMode("ADD")
|
|
|
|
|
f.highlightLeft:Hide()
|
|
|
|
|
f.highlightRight = f:CreateTexture()
|
|
|
|
|
f.highlightRight:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.highlightRight:SetTexCoord(0.75, 1, 0, 1)
|
|
|
|
|
f.highlightRight:SetPoint("TOPLEFT", f, "TOPRIGHT", -16, 0)
|
|
|
|
|
f.highlightRight:SetPoint("BOTTOMRIGHT")
|
|
|
|
|
f.highlightRight:SetBlendMode("ADD")
|
|
|
|
|
f.highlightRight:Hide()
|
|
|
|
|
f.highlightCenter = f:CreateTexture()
|
|
|
|
|
f.highlightCenter:SetTexture("Interface\\Addons\\Sorted\\Textures\\Money-Border")
|
|
|
|
|
f.highlightCenter:SetTexCoord(0.25, 0.75, 0, 1)
|
|
|
|
|
f.highlightCenter:SetPoint("TOPLEFT", 16, 0)
|
|
|
|
|
f.highlightCenter:SetPoint("BOTTOMRIGHT", -16, 0)
|
|
|
|
|
f.highlightCenter:SetBlendMode("ADD")
|
|
|
|
|
f.highlightCenter:Hide()
|
|
|
|
|
f:HookScript("OnEnter", function(self)
|
|
|
|
|
self.highlightLeft:Show()
|
|
|
|
|
self.highlightCenter:Show()
|
|
|
|
|
self.highlightRight:Show()
|
|
|
|
|
end)
|
|
|
|
|
f:HookScript("OnLeave", function(self)
|
|
|
|
|
self.highlightLeft:Hide()
|
|
|
|
|
self.highlightCenter:Hide()
|
|
|
|
|
self.highlightRight:Hide()
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
f.text = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.text:SetPoint("CENTER", 0, 1)
|
|
|
|
|
|
|
|
|
|
return f
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Used in the settings frame
|
|
|
|
|
local buttonTexHeight = 0.1875
|
|
|
|
|
function S.FrameTools.CreateBasicTextButton(parent, name, OnClick)
|
|
|
|
|
local b = CreateFrame("BUTTON", nil, parent)
|
|
|
|
|
b:SetSize(96, 32)
|
|
|
|
|
b:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Buttons")
|
|
|
|
|
b:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Buttons")
|
|
|
|
|
b:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Buttons")
|
|
|
|
|
b:GetNormalTexture():SetTexCoord(0, 1, 0, buttonTexHeight)
|
|
|
|
|
b:GetHighlightTexture():SetTexCoord(0, 1, buttonTexHeight, buttonTexHeight * 2)
|
|
|
|
|
b:GetPushedTexture():SetTexCoord(0, 1, buttonTexHeight * 3, buttonTexHeight * 4)
|
|
|
|
|
b.text = b:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
b.text:SetText(name)
|
|
|
|
|
b.text:SetPoint("CENTER", 0, 2)
|
|
|
|
|
b.text:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
b:SetScript("OnClick", OnClick)
|
|
|
|
|
return b
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function UpdateInstruction(self)
|
|
|
|
|
self.instruction:SetShown(#self:GetText() == 0)
|
|
|
|
|
end
|
|
|
|
|
function S.FrameTools.CreateEditBox(parent, name, instruction)
|
|
|
|
|
local f = CreateFrame("FRAME", nil, parent)
|
|
|
|
|
f:SetSize(224, 72)
|
|
|
|
|
|
|
|
|
|
f.nameString = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.nameString:SetText(name)
|
|
|
|
|
f.nameString:SetPoint("TOPLEFT", 0, -16)
|
|
|
|
|
f.nameString:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
f.nameString:SetTextScale(1.2)
|
|
|
|
|
|
|
|
|
|
local eb = CreateFrame("EditBox", nil, f)
|
|
|
|
|
eb:SetFontObject("SortedFont")
|
|
|
|
|
eb:SetSize(224, 16)
|
|
|
|
|
eb:SetPoint("TOPLEFT", 0, -48)
|
|
|
|
|
eb:SetAutoFocus(false)
|
|
|
|
|
eb:SetFrameLevel(parent:GetFrameLevel() + 2)
|
|
|
|
|
S.FrameTools.AddBorder(eb, "border", "Interface\\Addons\\Sorted\\Textures\\Rounded-Border", 2, 8, true)
|
|
|
|
|
eb.border:SetFrameLevel(parent:GetFrameLevel() + 1)
|
|
|
|
|
for k,v in pairs(eb.border.parts) do
|
|
|
|
|
v:SetVertexColor(0.8, 0.8, 0.8)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
eb.instruction = eb:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
eb.instruction:SetText(instruction)
|
|
|
|
|
eb.instruction:SetPoint("LEFT", 2, 0)
|
|
|
|
|
eb.instruction:SetTextColor(0.5, 0.5, 0.5)
|
|
|
|
|
eb.instruction:SetTextScale(1.1)
|
|
|
|
|
eb:SetScript("OnShow", UpdateInstruction)
|
|
|
|
|
eb:SetScript("OnTextChanged", UpdateInstruction)
|
|
|
|
|
|
|
|
|
|
f.editBox = eb
|
|
|
|
|
return f
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function OnDropdownButtonClick(self)
|
|
|
|
|
S.Dropdown.Reset()
|
|
|
|
|
self.BuildDropdown(self.data1, self.data2)
|
|
|
|
|
S.Dropdown.Show(self, "TOPRIGHT", "BOTTOM")
|
|
|
|
|
end
|
|
|
|
|
-- Creates a dropdown menu button, to be used with DropdownMenu.lua
|
|
|
|
|
-- When clicked, BuildDropdown is called, with data1 and data2 passed
|
|
|
|
|
function S.FrameTools.CreateDropdown(parent, name, BuildDropdown, data1, data2)
|
|
|
|
|
local f = CreateFrame("FRAME", nil, parent)
|
|
|
|
|
f:SetSize(224, 72)
|
|
|
|
|
f.nameString = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.nameString:SetText(name)
|
|
|
|
|
f.nameString:SetPoint("TOP", 0, -8)
|
|
|
|
|
f.nameString:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
f.nameString:SetTextScale(1.3)
|
|
|
|
|
|
|
|
|
|
S.FrameTools.AddBorder(f, "border", "Interface\\Addons\\Sorted\\Textures\\Rounded-Border", 16, 4, true)
|
|
|
|
|
f.border:ClearAllPoints()
|
|
|
|
|
f.border:SetPoint("TOPLEFT", 0, -32)
|
|
|
|
|
f.border:SetPoint("BOTTOMRIGHT", 0, 8)
|
|
|
|
|
for k,v in pairs(f.border.parts) do
|
|
|
|
|
v:SetVertexColor(0.5, 0.5, 0.5)
|
|
|
|
|
v:SetAlpha(0.6)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local b = CreateFrame("BUTTON", nil, f.border)
|
|
|
|
|
b:SetSize(24, 24)
|
|
|
|
|
b:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
|
|
|
b:GetNormalTexture():SetDesaturated(true)
|
|
|
|
|
b:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
|
|
|
b:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
|
|
|
b:SetPoint("RIGHT", -6, 0)
|
|
|
|
|
b:SetScript("OnClick", OnDropdownButtonClick)
|
|
|
|
|
b.text = b:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
b.text:SetPoint("LEFT", f.border, 6, 0)
|
|
|
|
|
b.text:SetPoint("RIGHT", b, "LEFT", -4, 0)
|
|
|
|
|
b.text:SetWordWrap(false)
|
|
|
|
|
b.text:SetTextColor(1, 1, 1)
|
|
|
|
|
b.text:SetTextScale(1.2)
|
|
|
|
|
b.BuildDropdown = BuildDropdown
|
|
|
|
|
b.data1 = data1
|
|
|
|
|
b.data2 = data2
|
|
|
|
|
f.button = b
|
|
|
|
|
return f
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- Add Sorted's customisable backdrop to frames, and keep a record of them to update them when the backdrop is changed
|
|
|
|
|
local framesWithBackdrops = {}
|
|
|
|
|
function S.FrameTools.AddSortedBackdrop(frame)
|
|
|
|
|
framesWithBackdrops[#framesWithBackdrops + 1] = frame
|
|
|
|
|
frame.sortedBackdrop = frame:CreateTexture()
|
|
|
|
|
frame.sortedBackdrop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Abstract", "REPEAT", "REPEAT")
|
|
|
|
|
frame.sortedBackdrop:SetVertexColor(0.6, 0.6, 0.6)
|
|
|
|
|
frame.sortedBackdrop:SetDrawLayer("BACKGROUND")
|
|
|
|
|
frame.sortedBackdrop:SetAllPoints()
|
|
|
|
|
frame.sortedBackdrop:SetVertTile(true)
|
|
|
|
|
frame.sortedBackdrop:SetHorizTile(true)
|
|
|
|
|
end
|
|
|
|
|
function S.FrameTools.UpdateBackdrops(backdrop)
|
|
|
|
|
if S.Skinning.GetSkin() == S.Skinning.ADDONSKINS then
|
|
|
|
|
for k,v in pairs(framesWithBackdrops) do
|
|
|
|
|
v.sortedBackdrop:Hide()
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
if not backdrop then
|
|
|
|
|
backdrop = S.Utils.GetBackgroundPath(S.Settings.Get("backdrop"))
|
|
|
|
|
else
|
|
|
|
|
backdrop = S.Utils.GetBackgroundPath(backdrop)
|
|
|
|
|
end
|
|
|
|
|
local backdropColor = S.Settings.Get("backdropColor")
|
|
|
|
|
for k,v in pairs(framesWithBackdrops) do
|
|
|
|
|
v.sortedBackdrop:SetTexture(backdrop, "REPEAT", "REPEAT")
|
|
|
|
|
v.sortedBackdrop:SetVertexColor(unpack(backdropColor))
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
S.Utils.RunOnEvent(nil, "SettingChanged-backdrop", S.FrameTools.UpdateBackdrops)
|
|
|
|
|
S.Utils.RunOnEvent(nil, "SettingChanged-backdropColor", S.FrameTools.UpdateBackdrops)
|