You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.8 KiB
178 lines
5.8 KiB
local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE)
|
|
local Sk = SLE.Skins
|
|
local S = E.Skins
|
|
|
|
--GLOBALS: CreateFrame
|
|
local _G = _G
|
|
|
|
Sk.additionalTextures = {}
|
|
|
|
local function GetElement(frame, element, useParent)
|
|
if useParent then frame = frame:GetParent() end
|
|
local child = frame[element]
|
|
if child then return child end
|
|
|
|
local name = frame:GetName()
|
|
if name then return _G[name..element] end
|
|
end
|
|
|
|
local function GetButton(frame, buttons)
|
|
for _, data in ipairs(buttons) do
|
|
if type(data) == 'string' then
|
|
local found = GetElement(frame, data)
|
|
if found then return found end
|
|
else -- has useParent
|
|
local found = GetElement(frame, data[1], data[2])
|
|
if found then return found end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function ThumbStatus(frame)
|
|
if not frame.Thumb then
|
|
return
|
|
elseif not frame:IsEnabled() then
|
|
frame.Thumb.backdrop:SetBackdropColor(0.3, 0.3, 0.3)
|
|
return
|
|
end
|
|
|
|
local _, max = frame:GetMinMaxValues()
|
|
if max == 0 then
|
|
frame.Thumb.backdrop:SetBackdropColor(0.3, 0.3, 0.3)
|
|
else
|
|
frame.Thumb.backdrop:SetBackdropColor(unpack(E.media.rgbvaluecolor))
|
|
end
|
|
end
|
|
|
|
local function ThumbWatcher(frame)
|
|
hooksecurefunc(frame, 'Enable', ThumbStatus)
|
|
hooksecurefunc(frame, 'Disable', ThumbStatus)
|
|
hooksecurefunc(frame, 'SetEnabled', ThumbStatus)
|
|
hooksecurefunc(frame, 'SetMinMaxValues', ThumbStatus)
|
|
ThumbStatus(frame)
|
|
end
|
|
|
|
local upButtons = {'ScrollUpButton', 'UpButton', 'ScrollUp', {'scrollUp', true}, 'Back'}
|
|
local downButtons = {'ScrollDownButton', 'DownButton', 'ScrollDown', {'scrollDown', true}, 'Forward'}
|
|
local thumbButtons = {'ThumbTexture', 'thumbTexture', 'Thumb'}
|
|
|
|
function Sk:CreateUnderline(frame, texture, shadow, height)
|
|
if frame.SL_Underline then return end
|
|
local line = CreateFrame('Frame', nil, frame, 'BackdropTemplate')
|
|
line:SetPoint('BOTTOM', frame, -1, 1)
|
|
line:SetSize(frame:GetWidth(), height or 1)
|
|
line.Texture = line:CreateTexture(nil, 'OVERLAY')
|
|
line.Texture:SetTexture(texture)
|
|
if shadow then
|
|
if shadow == 'backdrop' then
|
|
line:CreateShadow()
|
|
else
|
|
line:CreateBackdrop()
|
|
end
|
|
end
|
|
line.Texture:SetAllPoints(line)
|
|
frame.SL_Underline = line
|
|
|
|
return frame.SL_Underline
|
|
end
|
|
|
|
function Sk:Media()
|
|
if E.private.skins.blizzard.enable and E.private.skins.blizzard.merchant and E.private.sle.skins.merchant.enable and E.private.sle.skins.merchant.style == 'List' then
|
|
for i = 1, 10 do
|
|
local button = _G['SLE_ListMerchantFrame_Button'..i]
|
|
if not button then break end
|
|
button.itemname:FontTemplate(E.LSM:Fetch('font', E.db.sle.skins.merchant.list.nameFont), E.db.sle.skins.merchant.list.nameSize, E.db.sle.skins.merchant.list.nameOutline)
|
|
button.iteminfo:FontTemplate(E.LSM:Fetch('font', E.db.sle.skins.merchant.list.subFont), E.db.sle.skins.merchant.list.subSize, E.db.sle.skins.merchant.list.subOutline)
|
|
end
|
|
end
|
|
end
|
|
|
|
function Sk:UpdateObjectiveFrameLogos()
|
|
local db = E.private.sle.skins.objectiveTracker
|
|
Sk:UpdateAdditionalTexture(Sk.additionalTextures['ScenarioLogo'], SLE.ScenarioBlockLogos[db.skinnedTextureLogo] or db.customTextureLogo)
|
|
Sk:UpdateAdditionalTexture(Sk.additionalTextures['ChallengeModeLogo'], SLE.ScenarioBlockLogos[db.skinnedTextureLogo] or db.customTextureLogo)
|
|
if Sk.additionalTextures['WarfrontLogo'] then
|
|
Sk:UpdateAdditionalTexture(Sk.additionalTextures['WarfrontLogo'], SLE.ScenarioBlockLogos[db.skinnedTextureLogo] or db.customTextureLogo)
|
|
end
|
|
end
|
|
|
|
function Sk:UpdateAdditionalTexture(textureObject, newTexture)
|
|
if textureObject then
|
|
textureObject:SetTexture(newTexture)
|
|
end
|
|
end
|
|
|
|
function Sk:ConvertScrollBarToThin(frame, thumbY, thumbX, template, thinWidth)
|
|
assert(frame, 'doesnt exist!')
|
|
|
|
if frame.backdrop then return end
|
|
|
|
local upButton, downButton = GetButton(frame, upButtons), GetButton(frame, downButtons)
|
|
local thumb = GetButton(frame, thumbButtons) or (frame.GetThumbTexture and frame:GetThumbTexture())
|
|
|
|
frame:StripTextures()
|
|
frame:CreateBackdrop(template or 'Transparent', nil, nil, nil, nil, nil, nil, nil, true)
|
|
|
|
frame.backdrop:SetPoint('TOP', upButton or frame, upButton and 'BOTTOM' or 'TOP', 0, 0)
|
|
frame.backdrop:SetPoint('BOTTOM', downButton or frame, upButton and 'TOP' or 'BOTTOM', 0, 0)
|
|
frame.backdrop:SetWidth(thinWidth or 8)
|
|
if frame.Background then frame.Background:Hide() end
|
|
if frame.ScrollUpBorder then frame.ScrollUpBorder:Hide() end
|
|
if frame.ScrollDownBorder then frame.ScrollDownBorder:Hide() end
|
|
|
|
local frameLevel = frame:GetFrameLevel()
|
|
if upButton then
|
|
S:HandleNextPrevButton(upButton, 'up')
|
|
upButton:SetFrameLevel(frameLevel + 2)
|
|
end
|
|
if downButton then
|
|
S:HandleNextPrevButton(downButton, 'down')
|
|
downButton:SetFrameLevel(frameLevel + 2)
|
|
end
|
|
|
|
if thumb and not thumb.backdrop then
|
|
thumb:SetTexture()
|
|
thumb:CreateBackdrop(nil, true, true, nil, nil, nil, nil, nil, frameLevel + 1)
|
|
|
|
if not frame.Thumb then
|
|
frame.Thumb = thumb
|
|
end
|
|
|
|
if thumb.backdrop then
|
|
if not thumbX then thumbX = 0 end
|
|
if not thumbY then thumbY = 0 end
|
|
|
|
thumb.backdrop:Point('TOPLEFT', thumb, thumbX, -thumbY)
|
|
thumb.backdrop:Point('BOTTOMRIGHT', thumb, -thumbX, thumbY)
|
|
|
|
if frame.SetEnabled then
|
|
ThumbWatcher(frame)
|
|
else
|
|
thumb.backdrop:SetBackdropColor(unpack(E.media.rgbvaluecolor))
|
|
end
|
|
end
|
|
thumb:SetWidth(thinWidth or 8)
|
|
end
|
|
end
|
|
|
|
function Sk:Initialize()
|
|
local LQT = LibStub("LibQTip-1.0", true)
|
|
if LQT then
|
|
hooksecurefunc(LQT, 'Acquire', function()
|
|
for _, Tooltip in LQT:IterateTooltips() do
|
|
if not Tooltip.isSkinned then
|
|
Tooltip.NineSlice:Kill()
|
|
Tooltip:CreateBackdrop('Transparent')
|
|
Tooltip.isSkinned = true
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
function Sk:ForUpdateAll()
|
|
Sk:Update_ObjectiveTrackerUnderlinesVisibility()
|
|
Sk:Update_ObjectiveTrackerUnderlinesColor()
|
|
Sk:Media()
|
|
end
|
|
end
|
|
|
|
SLE:RegisterModule(Sk:GetName())
|
|
|