Files
coa-elvui/ElvUI_AddOnSkins/Skins/Libs.lua
T

1088 lines
27 KiB
Lua

local E, L, V, P, G = unpack(ElvUI)
local S = E:GetModule("Skins")
local AS = E:GetModule("AddOnSkins")
local _G = _G
local ipairs = ipairs
local select = select
local unpack = unpack
local hooksecurefunc = hooksecurefunc
AS.skinnedLibs = {}
local dropdownArrowColor = {1, 0.8, 0}
local function SkinDewdrop(lib, libName)
local dewdropEditBoxFrame
local dewdropSliderFrame
local function DewdropOpen(prefix)
local level = prefix.."Level"
local button = prefix.."Button"
local i = 1
local frame = _G[level .. i]
while frame do
if not frame.isSkinned then
frame:SetTemplate("Transparent")
frame:GetChildren():Hide()
frame.SetBackdropColor = E.noop
frame.SetBackdropBorderColor = E.noop
frame.isSkinned = true
end
i = i + 1
frame = _G[level .. i]
end
i = 1
frame = _G[button .. i]
while frame do
if not frame.isHook then
frame:HookScript("OnEnter", function(self)
if not self.disabled and self.hasArrow then
if not dewdropEditBoxFrame and self.hasEditBox then
dewdropEditBoxFrame = AS:FindFrameBySizeChild({"EditBox"}, 200, 40)
if dewdropEditBoxFrame then
dewdropEditBoxFrame:SetTemplate("Transparent")
S:HandleEditBox(dewdropEditBoxFrame.editBox)
dewdropEditBoxFrame.editBox:DisableDrawLayer("BACKGROUND")
end
end
if not dewdropSliderFrame and self.hasSlider then
dewdropSliderFrame = AS:FindFrameBySizeChild({"Slider", "EditBox"}, 100, 170)
if dewdropSliderFrame then
dewdropSliderFrame:SetTemplate("Transparent")
S:HandleSliderFrame(dewdropSliderFrame.slider)
S:HandleEditBox(dewdropSliderFrame.currentText)
dewdropSliderFrame.currentText:DisableDrawLayer("BACKGROUND")
end
end
DewdropOpen(prefix)
end
end)
frame.isHook = true
end
i = i + 1
frame = _G[button .. i]
end
end
if not S:IsHooked(lib, "Open") then
S:SecureHook(lib, "Open", function()
DewdropOpen(libName == "Dewdrop-2.0" and "Dewdrop20" or "ArkDewdrop30")
end)
end
return true
end
local function SkinTablet2(lib)
local function SkinDetachedFrame(self, fakeParent, parent)
if not parent then
parent = fakeParent
end
if self.registry[parent].data.detached then
local i = 1
local frame = _G["Tablet20DetachedFrame" .. i]
while frame do
if not frame.isSkinned then
frame:SetTemplate("Transparent")
S:HandleSliderFrame(frame.slider)
frame.isSkinned = true
end
i = i + 1
frame = _G["Tablet20DetachedFrame" .. i]
end
end
end
if not S:IsHooked(lib, "Open") then
S:SecureHook(lib, "Open", function(self, fakeParent, parent)
_G["Tablet20Frame"]:SetTemplate("Transparent")
SkinDetachedFrame(self, fakeParent, parent)
end)
end
if not S:IsHooked(lib, "Detach") then
S:SecureHook(lib, "Detach", function(self, parent)
SkinDetachedFrame(self, parent)
end)
end
return true
end
local function SkinLibRockConfig(lib)
local function SkinMainFrame(self)
if self.base.isSkinned then return end
self.base:SetTemplate("Transparent")
self.base.header:StripTextures()
S:HandleCloseButton(self.base.closeButton, self.base)
self.base.treeView:SetTemplate("Transparent")
S:HandleScrollBar(self.base.treeView.scrollBar)
S:HandleDropDownBox(self.base.addonChooser)
self.base.addonChooser.text:Height(20)
self.base.addonChooser.text:SetTemplate("Transparent")
S:HandleNextPrevButton(self.base.addonChooser.button)
local pullout = _G[self.base.mainPane:GetName().."_ChoicePullout"]
if pullout then
pullout:SetTemplate("Transparent")
else
S:SecureHookScript(self.base.addonChooser.button, "OnClick", function(self)
_G[lib.base.mainPane:GetName().."_ChoicePullout"]:SetTemplate("Transparent")
S:Unhook(self, "OnClick")
end)
end
self.base.mainPane:SetTemplate("Transparent")
S:HandleScrollBar(self.base.mainPane.scrollBar)
self.base.treeView.sizer:SetTemplate("Transparent")
self.base.isSkinned = true
end
S:SecureHook(lib, "OpenConfigMenu", function(self)
SkinMainFrame(self)
S:Unhook(self, "OpenConfigMenu")
end)
local LR = LibStub("LibRock-1.0", true)
if LR then
for object in LR:IterateMixinObjects("LibRockConfig-1.0") do
if not S:IsHooked(object, "OpenConfigMenu") then
S:SecureHook(object, "OpenConfigMenu", function(self)
SkinMainFrame(lib)
S:Unhook(self, "OpenConfigMenu")
end)
end
end
end
return true
end
local function SkinConfigator(lib)
local function skinSlider(obj)
obj:StripTextures()
obj:SetTemplate("Default")
obj:Height(12)
obj:SetThumbTexture(E.media.blankTex)
obj:GetThumbTexture():SetVertexColor(0.3, 0.3, 0.3)
obj:GetThumbTexture():Size(10)
end
local function skinEditBox(obj)
if not obj then return end
local objName = obj:GetName()
if objName then
_G[objName.."Left"]:Kill()
_G[objName.."Middle"]:Kill()
_G[objName.."Right"]:Kill()
end
obj:Height(17)
obj:CreateBackdrop("Default")
obj.backdrop:Point("TOPLEFT", -2, 0)
obj.backdrop:Point("BOTTOMRIGHT", 2, 0)
obj.backdrop:SetParent(obj:GetParent())
obj:SetParent(obj.backdrop)
end
local function skinObject(obj)
if not obj then return end
local objType = obj:GetObjectType()
-- if objType == "FontString" then
if objType == "CheckButton" then
S:HandleCheckBox(obj, true)
elseif objType == "Slider" then
skinSlider(obj)
if obj.slave then
skinEditBox(obj.slave)
end
elseif objType == "EditBox" then
skinEditBox(obj)
elseif objType == "Button" then
S:HandleButton(obj, true)
elseif objType == "Frame" then
if obj.stype == "SelectBox" then
obj:StripTextures()
obj:SetTemplate("Default")
obj:Size(159, 22)
local _, _, _, x = obj:GetPoint(2)
obj:Point("LEFT", x + 15, 0)
_G[obj:GetName().."Text"]:Point("RIGHT", -26, 0)
S:HandleNextPrevButton(obj.button, "down", dropdownArrowColor)
obj.button:Point("TOPRIGHT", -2, -2)
elseif obj.stype == "MoneyFrame"
or obj.stype == "PinnedMoney"
or obj.stype == "MoneyFramePinned" then
local objName = obj:GetName()
if objName then
skinEditBox(_G[objName.."Gold"])
skinEditBox(_G[objName.."Silver"])
skinEditBox(_G[objName.."Copper"])
else
for i = 1, obj:GetNumChildren() do
local child = select(i, obj:GetChildren())
if child and child:IsObjectType("EditBox") then
skinEditBox(child)
end
end
end
end
end
end
local function fullsizeSetNormalTexture(self, texture)
if texture == "Interface\\Minimap\\UI-Minimap-ZoomInButton-Up" then
self.normalTexture:SetTexture(E.Media.Textures.Plus)
self.pushedTexture:SetTexture(E.Media.Textures.Plus)
else
self.normalTexture:SetTexture(E.Media.Textures.Minus)
self.pushedTexture:SetTexture(E.Media.Textures.Minus)
end
end
local function skinTab(self)
local frame = self.tabs[#self.tabs].frame
frame:SetTemplate("Default")
S:HandleButton(frame.fullsize)
frame.fullsize:Size(18)
frame.fullsize:Point("BOTTOMLEFT", 4, 4)
frame.fullsize.normalTexture = frame.fullsize:GetNormalTexture()
frame.fullsize.pushedTexture = frame.fullsize:GetPushedTexture()
frame.fullsize.SetNormalTexture = fullsizeSetNormalTexture
frame.fullsize:SetNormalTexture(frame.fullsize.normalTexture:GetTexture())
frame.fullsize:SetHighlightTexture("")
frame.fullsize.SetPushedTexture = E.noop
frame.fullsize.SetHighlightTexture = E.noop
end
local function skinScroll(self, id)
local tab = self.tabs[id]
if tab.scroll.isSkinned then return end
if tab.scroll.vScroll then
S:HandleScrollBar(tab.scroll.vScroll)
tab.scroll.vScroll:Point("TOPLEFT", tab.scroll, "TOPRIGHT", 3, -16)
tab.scroll.vScroll:Point("BOTTOMLEFT", tab.scroll, "BOTTOMRIGHT", 3, 14)
end
if tab.scroll.hScroll then
S:HandleScrollBar(tab.scroll.hScroll, true)
tab.scroll.hScroll:Point("TOPLEFT", tab.scroll, "BOTTOMLEFT", 18, -3)
tab.scroll.hScroll:Point("TOPRIGHT", tab.scroll, "BOTTOMRIGHT", -19, -3)
end
tab.scroll.isSkinned = true
end
local function skinControl(self, id, cType, ...)
local obj = S.hooks[self].AddControl(self, id, cType, ...)
skinObject(obj)
return obj
end
S:RawHook(lib, "Create", function(self, ...)
local gui = S.hooks[self].Create(self, ...)
gui.Backdrop:SetTemplate("Transparent")
gui.DragTop:Point("TOPLEFT", 10, -1)
gui.DragTop:Point("TOPRIGHT", -10, -1)
gui.DragBottom:Point("BOTTOMLEFT", 10, 1)
gui.DragBottom:Point("BOTTOMRIGHT", -10, 1)
S:HandleButton(gui.Done)
gui.Done:Point("BOTTOMRIGHT", gui, "BOTTOMRIGHT", -8, 8)
hooksecurefunc(gui, "AddTab", skinTab)
hooksecurefunc(gui, "MakeScrollable", skinScroll)
S:RawHook(gui, "AddControl", skinControl)
return gui
end)
if #lib.frames > 0 then
for _, frame in ipairs(lib.frames) do
frame.Backdrop:SetTemplate("Transparent")
S:HandleButton(frame.Done)
for _, tab in ipairs(frame.tabs) do
if tab.frame then
tab.frame:SetTemplate("Transparent")
end
if tab.scroll then
if tab.scroll.vScroll then
S:HandleScrollBar(tab.scroll.vScroll)
tab.scroll.vScroll:Point("TOPLEFT", tab.scroll, "TOPRIGHT", 3, -16)
tab.scroll.vScroll:Point("BOTTOMLEFT", tab.scroll, "BOTTOMRIGHT", 3, 14)
end
if tab.scroll.hScroll then
S:HandleScrollBar(tab.scroll.hScroll, true)
tab.scroll.hScroll:Point("TOPLEFT", tab.scroll, "BOTTOMLEFT", 18, -3)
tab.scroll.hScroll:Point("TOPRIGHT", tab.scroll, "BOTTOMRIGHT", -19, -3)
end
end
if tab.frame.ctrls then
for _, entry in ipairs(tab.frame.ctrls) do
for _, object in ipairs(entry.kids) do
skinObject(object)
end
end
end
end
end
end
do -- tooltip
lib.tooltip:SetTemplate("Transparent")
lib.tooltip._SetBackdropColor = lib.tooltip.SetBackdropColor
lib.tooltip.SetBackdropColor = function(self)
self:SetBackdropBorderColor(unpack(E.media.bordercolor, 1, 3))
local r, g, b = unpack(E.media.backdropfadecolor, 1, 3)
self:_SetBackdropColor(r, g, b, E.db.tooltip.colorAlpha)
end
end
do -- help
lib.help:SetTemplate("Transparent")
lib.help.scroll:SetTemplate("Transparent")
lib.help.scroll:Point("TOPLEFT", 8, -25)
lib.help.scroll:Point("BOTTOMRIGHT", -29, 8)
lib.help.content:Width(416)
S:HandleScrollBar(lib.help.scroll.vScroll)
lib.help.scroll.vScroll:Point("TOPLEFT", lib.help.scroll, "TOPRIGHT", 3, -19)
lib.help.scroll.vScroll:Point("BOTTOMLEFT", lib.help.scroll, "BOTTOMRIGHT", 3, 19)
S:HandleCloseButton(lib.help.close)
end
local SelectBox = LibStub("SelectBox", true)
if SelectBox then
SelectBox.menu.back:SetTemplate("Transparent")
SelectBox.menu.isSkinned = true
end
local ScrollSheet = LibStub("ScrollSheet", true)
if ScrollSheet then
S:RawHook(ScrollSheet, "Create", function(self, ...)
local sheet = S.hooks[self].Create(self, ...)
if not sheet.panel.isSkinned then
if sheet.panel.vScroll then
S:HandleScrollBar(sheet.panel.vScroll)
sheet.panel.vScroll:Point("TOPLEFT", sheet.panel, "TOPRIGHT", 3, -18)
sheet.panel.vScroll:Point("BOTTOMLEFT", sheet.panel, "BOTTOMRIGHT", 3, 19)
end
if sheet.panel.hScroll then
S:HandleScrollBar(sheet.panel.hScroll, true)
sheet.panel.hScroll:Point("TOPLEFT", sheet.panel, "BOTTOMLEFT", 18, -3)
sheet.panel.hScroll:Point("TOPRIGHT", sheet.panel, "BOTTOMRIGHT", -19, -3)
end
sheet.panel.isSkinned = true
end
return sheet
end, true)
end
return true
end
local function SkinAceAddon20(lib)
S:SecureHook(lib.prototype, "PrintAddonInfo", function()
AceAddon20AboutFrame:SetTemplate("Transparent")
S:HandleButton(AceAddon20AboutFrameButton)
S:HandleButton(AceAddon20AboutFrameDonateButton)
S:Unhook(lib.prototype, "PrintAddonInfo")
end)
S:SecureHook(lib.prototype, "OpenDonationFrame", function()
AceAddon20Frame:SetTemplate("Transparent")
S:HandleScrollBar(AceAddon20FrameScrollFrameScrollBar)
S:HandleButton(AceAddon20FrameButton)
S:Unhook(lib.prototype, "OpenDonationFrame")
end)
return true
end
local function SkinAzDialog(libName)
local lib = _G[libName]
if not lib then return end
local function skinDialog(frame)
if frame.isSkinned then return end
frame:SetTemplate("Transparent")
frame.edit:SetBackdrop(nil)
S:HandleEditBox(frame.edit)
S:HandleButton(frame.ok)
S:HandleButton(frame.cancel)
frame.isSkinned = true
end
for _, frame in ipairs(lib.dialogs) do
skinDialog(frame)
end
S:SecureHook(lib, "Show", function(self)
skinDialog(self.dialogs[#self.dialogs])
end)
return true
end
local function SkinAzDropDown(libName)
local lib = _G[libName]
if not lib then return end
S:RawHook(lib, "CreateDropDown", function(parent, ...)
local f = S.hooks[lib].CreateDropDown(parent, ...)
f:SetTemplate()
S:HandleNextPrevButton(f.button, "down", dropdownArrowColor)
f.button:Point("TOPRIGHT", -2, -2)
f.button:Point("BOTTOMRIGHT", -2, 2)
f.button:Size(20)
return f
end)
S:SecureHook(lib, "ToggleMenu", function(parent, width, isAutoSelect, initFunc, selectValueFunc)
local scrollFrame = _G["AzDropDownScroll"..lib.vers]
if scrollFrame then
scrollFrame:GetParent():SetTemplate("Default")
S:HandleScrollBar(_G["AzDropDownScroll"..lib.vers.."ScrollBar"])
S:Unhook(lib, "ToggleMenu")
end
end)
return true
end
local function SkinAzOptionsFactory(libName)
local lib = _G[libName]
if not lib then return end
AS:SkinLibrary("AzDropDown")
S:RawHook(lib.makers, "Slider", function(self)
local f = S.hooks[lib.makers].Slider(self)
S:HandleEditBox(f.edit)
S:HandleSliderFrame(f.slider)
f.slider:Point("TOPLEFT", f.edit, "TOPRIGHT", 5, -10)
f.slider:Point("BOTTOMRIGHT", 0, -1)
return f
end)
S:RawHook(lib.makers, "Check", function(self)
local f = S.hooks[lib.makers].Check(self)
S:HandleCheckBox(f)
return f
end)
S:RawHook(lib.makers, "Color", function(self)
local f = S.hooks[lib.makers].Color(self)
S:HandleColorSwatch(f)
return f
end)
S:RawHook(lib.makers, "Text", function(self)
local f = S.hooks[lib.makers].Text(self)
f:SetBackdrop(nil)
f:CreateBackdrop()
f.backdrop:SetFrameLevel(f:GetFrameLevel())
f.backdrop:Point("TOPLEFT", 2, -2)
f.backdrop:Point("BOTTOMRIGHT", -2, 2)
return f
end)
return true
end
local function SkinLibExtraTip(lib)
S:RawHook(lib, "GetFreeExtraTipObject", function(self)
local tooltip = S.hooks[self].GetFreeExtraTipObject(self)
if not tooltip.isSkinned then
tooltip:SetTemplate("Transparent")
tooltip.isSkinned = true
end
return tooltip
end)
return true
end
local function SkinZFrame(lib)
S:RawHook(lib, "Create", function(self, ...)
local frame = S.hooks[self].Create(self, ...)
frame.ZMain:SetTemplate("Transparent")
frame.ZMain.close:Size(32)
S:HandleCloseButton(frame.ZMain.close, frame.ZMain)
return frame
end, true)
return true
end
local function SkinLibCandyBar(lib)
local offset = E:Scale(E.PixelMode and 1 or 3)
local function setPoint(self, point, attachTo, anchorPoint, xOffset, yOffset)
if (point == "BOTTOMLEFT" and yOffset ~= offset) or (point == "TOPLEFT" and yOffset ~= -offset) then
self:SetPoint(point, attachTo, anchorPoint, 0, point == "BOTTOMLEFT" and offset or -offset)
end
end
local function skinBar(bar)
if not bar.isSkinned then
bar:CreateBackdrop("Transparent")
hooksecurefunc(bar, "SetPoint", setPoint)
bar.isSkinned = true
end
end
for _, bar in ipairs(lib.availableBars) do
skinBar(bar)
end
S:RawHook(lib, "New", function(self, ...)
local bar = S.hooks[self].New(self, ...)
skinBar(bar)
return bar
end)
return true
end
local function SkinLibDialog(lib)
local function skinDialog(dialog)
if not dialog.isSkinned then
dialog:SetTemplate("Transparent")
dialog.SetBackdrop = E.noop
S:HandleCloseButton(dialog.close_button, dialog)
dialog.isSkinned = true
end
if dialog.checkboxes then
for _, checkbox in ipairs(dialog.checkboxes) do
S:HandleCheckBox(checkbox)
end
end
if dialog.editboxes then
for _, editbox in ipairs(dialog.editboxes) do
S:HandleEditBox(editbox)
editbox:Height(20)
end
end
if dialog.buttons then
for _, button in ipairs(dialog.buttons) do
S:HandleButton(button)
end
end
end
for _, dialog in ipairs(lib.active_dialogs) do
skinDialog(dialog)
end
S:RawHook(lib, "Spawn", function(self, ...)
local dialog = S.hooks[self].Spawn(self, ...)
if dialog then
skinDialog(dialog)
return dialog
end
end)
return true
end
local function SkinScrollingTable(lib)
local function updateRows(self, num)
if num and num > 0 and #self.rows ~= 0 then
self.rows[1]:Point("TOPRIGHT", self.frame, "TOPRIGHT", -21, -5)
end
end
S:RawHook(lib, "CreateST", function(self, ...)
local st = S.hooks[self].CreateST(self, ...)
st.frame:SetTemplate("Transparent")
local frameName = st.frame:GetName()
local scrollbar = _G[frameName .. "ScrollFrameScrollBar"]
scrollbar:Point("TOPLEFT", st.scrollframe, "TOPRIGHT", 6, -17)
scrollbar:Point("BOTTOMLEFT", st.scrollframe, "BOTTOMRIGHT", 6, 18)
S:HandleScrollBar(scrollbar)
_G[frameName .. "ScrollTrough"]:Kill()
_G[frameName .. "ScrollTroughBorder"]:Kill()
updateRows(st, st.displayRows)
S:SecureHook(st, "SetDisplayRows", updateRows)
return st
end)
return true
end
local function SkinDropDownMenu(libName)
if not _G.Lib_UIDropDownMenu_Initialize then return end
local checkBoxSkin = E.private.skins.dropdownCheckBoxSkin
local menuLevel = 0
local maxButtons = 0
local function dropDownButtonShow(self)
if self.notCheckable then
self.check.backdrop:Hide()
else
self.check.backdrop:Show()
end
end
local function skinDropdownMenu()
local updateButtons = maxButtons < LIB_UIDROPDOWNMENU_MAXBUTTONS
if updateButtons or menuLevel < LIB_UIDROPDOWNMENU_MAXLEVELS then
for i = 1, LIB_UIDROPDOWNMENU_MAXLEVELS do
local frame = _G["Lib_DropDownList"..i]
if not frame.isSkinned then
_G["Lib_DropDownList"..i.."Backdrop"]:SetTemplate("Transparent")
_G["Lib_DropDownList"..i.."MenuBackdrop"]:SetTemplate("Transparent")
frame.isSkinned = true
end
if updateButtons then
for j = 1, LIB_UIDROPDOWNMENU_MAXBUTTONS do
local button = _G["Lib_DropDownList"..i.."Button"..j]
if not button.isSkinned then
S:HandleButtonHighlight(_G["Lib_DropDownList"..i.."Button"..j.."Highlight"])
if checkBoxSkin then
local check = _G["Lib_DropDownList"..i.."Button"..j.."Check"]
check:Size(12)
check:Point("LEFT", 1, 0)
check:CreateBackdrop()
check:SetTexture(E.media.normTex)
check:SetVertexColor(1, 0.82, 0, 0.8)
button.check = check
hooksecurefunc(button, "Show", dropDownButtonShow)
end
S:HandleColorSwatch(_G["Lib_DropDownList"..i.."Button"..j.."ColorSwatch"], 14)
button.isSkinned = true
end
end
end
end
menuLevel = LIB_UIDROPDOWNMENU_MAXLEVELS
maxButtons = LIB_UIDROPDOWNMENU_MAXBUTTONS
end
end
skinDropdownMenu()
hooksecurefunc("Lib_UIDropDownMenu_InitializeHelper", skinDropdownMenu)
return true
end
local function SkinLibQTip(lib)
hooksecurefunc(lib, "Acquire", function(self, key)
if self.activeTooltips[key] then
self.activeTooltips[key]:SetTemplate("Transparent")
end
end)
S:Hook(lib.LabelPrototype, "SetupCell", function(self)
self.fontString:FontTemplate()
end)
hooksecurefunc(lib.tipPrototype, "UpdateScrolling", function(self)
if self.slider and not self.slider.isSkinned then
S:HandleSliderFrame(self.slider)
self.slider.isSkinned = true
end
end)
return true
end
local function SkinWaterfall(lib)
hooksecurefunc(WaterfallFrame.prototype, "init", function(self)
self.frame:SetTemplate("Transparent")
self.titlebar:SetDrawLayer("ARTWORK")
self.titlebar2:SetDrawLayer("ARTWORK")
self.titlebar:Point("TOPLEFT", self.frame, "TOPLEFT", 4, -4)
self.titlebar:Point("TOPRIGHT", self.frame, "TOPRIGHT", -4, -4)
S:HandleCloseButton(self.closebutton)
self.closebutton:SetPoint("TOPRIGHT", 0, 0)
self.treeview:Point("TOPLEFT", self.frame, "TOPLEFT", 8, -33)
self.treeview:Point("BOTTOMLEFT", self.frame, "BOTTOMLEFT", 8, 8)
self.mainpane:Point("TOPLEFT", self.treeview.frame, "TOPRIGHT", 3, 0)
self.mainpane:Point("BOTTOMRIGHT", self.frame, "BOTTOMRIGHT", -8, 8)
end)
S:RawHook(WaterfallFrame.prototype, "ReAnchorTree", function(self)
self.treeview:Point("TOPLEFT", self.frame, "TOPLEFT", 8, -33)
self.treeview:Point("BOTTOMLEFT", self.frame, "BOTTOMLEFT", 8, 8)
end)
hooksecurefunc(WaterfallPane.prototype, "init", function(self, parent)
self.frame:SetTemplate("Transparent")
self.titlebar:SetDrawLayer("ARTWORK")
self.titlebar2:SetDrawLayer("ARTWORK")
S:HandleScrollBar(self.scrollbar)
end)
hooksecurefunc(WaterfallTreeView.prototype, "init", function(self, parent)
self.frame:SetTemplate("Transparent")
S:HandleScrollBar(self.scrollbar)
self.sizer:ClearAllPoints()
self.sizer:Point("TOPLEFT", self.frame, "TOPRIGHT", -2, 0)
self.sizer:Point("BOTTOMLEFT", self.frame, "BOTTOMRIGHT", -2, 0)
end)
hooksecurefunc(WaterfallTreeLine.prototype, "init", function(self)
S:HandleCollapseExpandButton(self.expand)
end)
hooksecurefunc(WaterfallTreeSection.prototype, "init", function(self, parent)
self.frame:SetTemplate("Transparent")
self.titlebar:SetDrawLayer("ARTWORK")
self.titlebar2:SetDrawLayer("ARTWORK")
self.titlebar:Point("TOPLEFT", self.frame, "TOPLEFT", 4, -4)
self.titlebar:Point("TOPRIGHT", self.frame, "TOPRIGHT", -4, -4)
S:HandleCloseButton(self.closebutton)
self.closebutton:SetPoint("TOPRIGHT", 0, 0)
end)
hooksecurefunc(WaterfallColorSwatch.prototype, "init", function(self)
self.frame:CreateBackdrop("Default")
self.frame.backdrop:SetOutside(self.colorSwatch)
self.colorSwatch:SetTexture(nil)
self.colorSwatch:Size(18)
self.colorSwatch.texture:SetParent(self.frame.backdrop)
self.colorSwatch.texture:SetInside()
self.text:Point("LEFT", self.colorSwatch, "RIGHT", 4, 0)
self.text.SetPoint = E.noop
end)
hooksecurefunc(WaterfallCheckBox.prototype, "init", function(self)
self.frame:CreateBackdrop("Default")
self.frame.backdrop:SetOutside(self.checkbg)
self.checkbg:Hide()
self.checkbg:Size(18)
self.check:SetParent(self.frame.backdrop)
self.check:SetAllPoints()
self.text:Point("LEFT", self.check, "RIGHT", 3, 0)
self.text.SetPoint = E.noop
end)
hooksecurefunc(WaterfallCheckBox.prototype, "UpdateTexture", function(self)
if self.isRadio then
self.frame.backdrop:Hide()
self.checkbg:Show()
else
self.frame.backdrop:Show()
self.checkbg:Hide()
end
end)
hooksecurefunc(WaterfallDragLink.prototype, "init", function(self)
self.frame:CreateBackdrop("Default")
self.frame.backdrop:ClearAllPoints()
self.frame.backdrop:SetPoint("LEFT")
self.frame.backdrop:Width(self.iconWidth or WaterfallDragLink.defaultIconSize)
self.frame.backdrop:Height(self.iconHeight or WaterfallDragLink.defaultIconSize)
self.linkIcon:SetParent(self.frame.backdrop)
self.linkIcon:SetInside()
self.linkIcon:SetTexCoord(unpack(E.TexCoords))
end)
hooksecurefunc(WaterfallButton.prototype, "init", function(self)
S:HandleButton(self.frame)
end)
hooksecurefunc(WaterfallKeybinding.prototype, "init", function(self)
S:HandleButton(self.frame)
self.msgframe:SetTemplate("Transparent")
end)
hooksecurefunc(WaterfallSlider.prototype, "init", function(self)
S:HandleSliderFrame(self.slider)
end)
hooksecurefunc(WaterfallTextBox.prototype, "init", function(self)
self.frame:Height(22)
self.frame:SetTemplate("Default")
end)
hooksecurefunc(WaterfallDropdown.prototype, "init", function(self)
self.editbox:SetTemplate("Default")
self.frame:Size(200, 20)
self.frame.SetWidth = E.noop
S:HandleNextPrevButton(self.button, "down", dropdownArrowColor)
self.button:Size(16)
self.button:Point("RIGHT", self.frame, "RIGHT", -22, 0)
self.pullout:SetTemplate("Default")
end)
return true
end
local function SkinLDropDownMenu(lib)
if not _G.L_UIDropDownMenu_Initialize then return end
local checkBoxSkin = E.private.skins.dropdownCheckBoxSkin
local menuLevel = 0
local maxButtons = 0
local function dropDownButtonShow(self)
if self.notCheckable then
self.check.backdrop:Hide()
else
self.check.backdrop:Show()
end
end
local function skinL_DropDownMenu()
local updateButtons = maxButtons < L_UIDROPDOWNMENU_MAXBUTTONS
if updateButtons or menuLevel < L_UIDROPDOWNMENU_MAXLEVELS then
for i = 1, L_UIDROPDOWNMENU_MAXLEVELS do
local frame = _G["L_DropDownList" .. i]
if frame and not frame.isSkinned then
_G["L_DropDownList" .. i .. "Backdrop"]:SetTemplate("Transparent")
_G["L_DropDownList" .. i .. "MenuBackdrop"]:SetTemplate("Transparent")
frame.isSkinned = true
end
if updateButtons then
for j = 1, L_UIDROPDOWNMENU_MAXBUTTONS do
local button = _G["L_DropDownList" .. i .. "Button" .. j]
if button and not button.isSkinned then
S:HandleButtonHighlight(_G["L_DropDownList" .. i .. "Button" .. j .. "Highlight"])
if checkBoxSkin then
local check = _G["L_DropDownList" .. i .. "Button" .. j .. "Check"]
check:Size(12)
check:Point("LEFT", 1, 0)
check:CreateBackdrop()
check:SetTexture(E.media.normTex)
check:SetVertexColor(1, 0.82, 0, 0.8)
local uncheck = _G["L_DropDownList" .. i .. "Button" .. j .. "UnCheck"]
uncheck:Size(12)
uncheck:Point("LEFT", 1, 0)
uncheck:CreateBackdrop()
uncheck:SetTexture(nil)
uncheck:SetVertexColor(1, 0.82, 0, 0.8)
button.check = check
hooksecurefunc(button, "Show", dropDownButtonShow)
end
button.isSkinned = true
end
end
end
end
menuLevel = L_UIDROPDOWNMENU_MAXLEVELS
maxButtons = L_UIDROPDOWNMENU_MAXBUTTONS
end
end
skinL_DropDownMenu()
hooksecurefunc("L_UIDropDownMenu_InitializeHelper", skinL_DropDownMenu)
return true
end
AS.libSkins = {
["AceAddon-2.0"] = {
stub = true,
func = SkinAceAddon20
},
["ArkDewdrop-3.0"] = {
stub = true,
func = SkinDewdrop
},
["AzDialog"] = {
stub = false,
func = SkinAzDialog
},
["AzDropDown"] = {
stub = false,
func = SkinAzDropDown
},
["AzOptionsFactory"] = {
stub = false,
func = SkinAzOptionsFactory
},
["Configator"] = {
stub = true,
func = SkinConfigator
},
["Dewdrop-2.0"] = {
stub = true,
func = SkinDewdrop
},
["DropDownMenu"] = {
stub = false,
func = SkinDropDownMenu
},
["LibCandyBar-3.0"] = {
stub = true,
func = SkinLibCandyBar
},
["LibDialog-1.0"] = {
stub = true,
func = SkinLibDialog
},
["LibExtraTip-1"] = {
stub = true,
func = SkinLibExtraTip
},
["LibRockConfig-1.0"] = {
stub = true,
func = SkinLibRockConfig
},
["LibQTip-1.0"] = {
stub = true,
func = SkinLibQTip
},
["ScrollingTable"] = {
stub = true,
func = SkinScrollingTable
},
["Tablet-2.0"] = {
stub = true,
func = SkinTablet2
},
["Waterfall-1.0"] = {
stub = true,
func = SkinWaterfall
},
["ZFrame-1.0"] = {
stub = true,
func = SkinZFrame
},
["LibUIDropDownMenu"] = {
stub = true,
func = SkinLDropDownMenu
},
}
function AS:SkinLibrary(libName)
if not libName or not self.libSkins[libName] then return end
if self.libSkins[libName].stub then
local lib, minor = LibStub(libName, true)
if lib and (not self.skinnedLibs[libName] or self.skinnedLibs[libName] < minor) then
if self.libSkins[libName].func(lib, libName) then
self.skinnedLibs[libName] = minor or 1
return true
end
end
elseif not self.skinnedLibs[libName] then
if self.libSkins[libName].func(libName) then
self.skinnedLibs[libName] = true
return true
end
end
end