vanilla-wow-addons – Rev 1
?pathlinks?
local _G = getfenv(0)
-- Frame multipliers
local FxMult, FyMult = 0.9, 0.84
-- Frame Tab multipliers
local FTxMult, FTyMult = 0.5, 0.75
-- Character subframe names
function oSkin:Tooltips()
if not self.db.profile.Tooltips or self.initialized.Tooltips then return end
self.initialized.Tooltips = true
self:skinTooltip(_G["GameTooltip"])
self:skinTooltip(_G["ItemRefTooltip"])
end
function oSkin:MirrorTimers()
if not self.db.profile.MirrorTimers or self.initialized.MirrorTimers then return end
self.initialized.MirrorTimers = true
for i = 1, MIRRORTIMER_NUMTIMERS do
self:removeRegions(_G["MirrorTimer"..i], {1, 3}) -- N.B. region 2 is text
_G["MirrorTimer"..i]:SetHeight(_G["MirrorTimer"..i]:GetHeight() - 3)
self:moveObject(_G["MirrorTimer"..i.."Text"], nil, nil, "-", 4)
self:moveObject(_G["MirrorTimer"..i.."StatusBar"], nil, nil, "-", 3)
self:applySkin(_G["MirrorTimer"..i])
self:glazeStatusBar(_G["MirrorTimer"..i.."StatusBar"], 0)
end
end
function oSkin:QuestTimers()
if not self.db.profile.MirrorTimers or self.initialized.QuestTimers then return end
self.initialized.QuestTimers = true
self:removeRegions(_G["QuestTimerFrame"], {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) -- N.B. region 11 is text
_G["QuestTimerFrame"]:SetWidth(_G["QuestTimerFrame"]:GetWidth()-40)
_G["QuestTimerFrame"]:SetHeight(_G["QuestTimerFrame"]:GetHeight()-20)
self:moveObject(_G["QuestTimerHeader"], nil, nil, "-", 4)
self:applySkin(_G["QuestTimerFrame"])
end
function oSkin:CastingBar()
if not self.db.profile.CastingBar or self.initialized.CastingBar then return end
self.initialized.CastingBar = true
self:removeRegions(_G["CastingBarFrame"], {1, 3, 6}) -- N.B. region 2 is text, 4 & 5 are overlays
_G["CastingBarFrame"]:SetHeight(_G["CastingBarFrame"]:GetHeight() + 5)
self:moveObject(_G["CastingBarText"], nil, nil, "-", 5)
self:moveObject(_G["CastingBarSpark"], nil, nil, "-", 5)
self:moveObject(_G["CastingBarFlash"], nil, nil, "-", 5)
-- _G["CastingBarFlash"]:SetTexture("Interface\\AddOns\\oSkin\\textures\\glaze")
self:applySkin(_G["CastingBarFrame"])
self:glazeStatusBar(_G["CastingBarFrame"], 0)
end
function oSkin:StaticPopups()
if not self.db.profile.StaticPopups or self.initialized.StaticPopups then return end
self.initialized.StaticPopups = true
self:Hook("StaticPopup_Show")
for i = 1, STATICPOPUP_NUMDIALOGS do
self:applySkin(_G["StaticPopup"..i])
-- skin WideEditBox
local editBox = _G["StaticPopup"..i.."WideEditBox"]
self:removeRegions(editBox, {6, 7}) -- N.B. other regions are scripts
editBox:SetHeight(editBox:GetHeight() / 2)
local left,right,top,bottom = editBox:GetTextInsets()
editBox:SetTextInsets(left + 4, right, top, bottom)
self:applySkin(editBox)
-- skin EditBox
local editBox = _G["StaticPopup"..i.."EditBox"]
self:removeRegions(editBox, {6, 7}) -- N.B. other regions are scripts
local left,right,top,bottom = editBox:GetTextInsets()
editBox:SetTextInsets(left + 4, right, top, bottom)
self:applySkin(editBox)
end
end
function oSkin:StaticPopup_Show(which, text_arg1, text_arg2, data)
if not self.initialized.StaticPopups then
return self.hooks["StaticPopup_Show"].orig(which, text_arg1, text_arg2, data)
end
local info = StaticPopupDialogs[which]
local dialog, width = nil, 320
dialog = StaticPopup_FindVisible(which, data)
if ( not dialog ) then
-- Find a free dialog
local index = 1
if ( StaticPopupDialogs[which].preferredIndex ) then
index = StaticPopupDialogs[which].preferredIndex
end
for i = index, STATICPOPUP_NUMDIALOGS do
local frame = getglobal("StaticPopup"..i)
if ( not frame:IsShown() ) then
dialog = frame
break
end
end
if ( not dialog and StaticPopupDialogs[which].preferredIndex ) then
for i = 1, StaticPopupDialogs[which].preferredIndex do
local frame = getglobal("StaticPopup"..i)
if ( not frame:IsShown() ) then
dialog = frame
break
end
end
end
end
if ( (which == "SET_GUILDMOTD")
or (which == "SET_GUILDPLAYERNOTE")
or (which == "SET_GUILDPLAYERNOTE")
or (which == "SET_GUILDOFFICERNOTE" )) then
width = 420
elseif ( which == "HELP_TICKET" ) then
width = 350
elseif ( info.showAlert ) then
width = 420
end
dialog.tfade:SetWidth(width-8)
return self.hooks["StaticPopup_Show"].orig(which, text_arg1, text_arg2, data)
end
function oSkin:ReadyCheckFrame()
if not self.db.profile.StaticPopups then return end
self:keepRegions(_G["ReadyCheckFrame"], {3}) -- N.B. region 3 is text
_G["ReadyCheckFrame"]:SetWidth(_G["ReadyCheckFrame"]:GetWidth() * FxMult)
_G["ReadyCheckFrame"]:SetHeight(_G["ReadyCheckFrame"]:GetHeight() * FyMult)
self:moveObject(_G["ReadyCheckFrameText"], nil, nil, "+", 15)
self:moveObject(_G["ReadyCheckFrameYesButton"], "-", 20, nil, nil)
self:applySkin(_G["ReadyCheckFrame"])
end
function oSkin:ChatTabs()
if not self.db.profile.ChatTabs or self.initialized.ChatTabs then return end
self.initialized.ChatTabs = true
for i=1, NUM_CHAT_WINDOWS do
self:removeRegions(_G["ChatFrame"..i.."Tab"], {1, 2, 3})
self:createTab(_G["ChatFrame"..i.."Tab"])
end
end
function oSkin:ChatFrames()
if not self.db.profile.ChatFrames or self.initialized.ChatFrames then return end
self.initialized.ChatFrames = true
for i=1, NUM_CHAT_WINDOWS do
self:createCF(_G["ChatFrame"..i])
end
end
function oSkin:createTab(parent)
self:Debug("createTab: [%s]", parent)
oct = CreateFrame("frame", nil, parent)
oct:SetFrameStrata("BACKGROUND")
oct:SetFrameLevel(0)
oct:ClearAllPoints()
oct:SetPoint("TOPLEFT", parent, "TOPLEFT", 0, -8)
oct:SetPoint("TOPRIGHT", parent, "TOPRIGHT", 0, -8)
oct:SetPoint("BOTTOMLEFT", parent, "BOTTOMLEFT", 0, -5)
oct:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", 0, -5)
self:applySkin(oct)
end
function oSkin:createCF(parent)
self:Debug("createCF: [%s]", parent)
ocf = CreateFrame("frame", nil, parent)
ocf:SetFrameStrata("BACKGROUND")
ocf:SetFrameLevel(0)
ocf:ClearAllPoints()
ocf:SetPoint("TOPLEFT", parent, "TOPLEFT", -4, 4)
ocf:SetPoint("TOPRIGHT", parent, "TOPRIGHT", 4, 4)
ocf:SetPoint("BOTTOMLEFT", parent, "BOTTOMLEFT", -4, -8)
ocf:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", 4, -8)
self:applySkin(ocf)
end
function oSkin:ChatEditBox()
if not self.db.profile.ChatEditBox or self.initialized.ChatEditBox then return end
self.initialized.ChatEditBox = true
self:removeRegions(_G["ChatFrameEditBox"], {6, 7, 8})
self:applySkin(_G["ChatFrameEditBox"])
end
function oSkin:LootFrame()
if not self.db.profile.LootFrame or self.initialized.LootFrame then return end
self.initialized.LootFrame = true
self:removeRegions(_G["LootFrame"], {1, 2})
_G["LootFrame"]:SetWidth(_G["LootFrame"]:GetWidth() * 0.66)
_G["LootFrame"]:SetHeight(_G["LootFrame"]:GetHeight() * FyMult)
for i, v in ipairs({ _G["LootFrame"]:GetRegions() }) do
-- region 3 is the title
if i == 3 then
self:moveObject(v, "+", 15, "-", 10)
end
end
self:moveObject(_G["LootCloseButton"], "+", 65, "+", 10)
for i=1, NUM_GROUP_LOOT_FRAMES do
if i == 1 then
self:moveObject(_G["LootButton"..i], "-", 13, "+", 40)
else
self:moveObject(_G["LootButton"..i], nil, nil, nil, nil)
end
end
self:moveObject(_G["LootFramePrev"], "-", 15, nil, nil)
self:moveObject(_G["LootFrameNext"], "-", 0, nil, nil)
self:moveObject(_G["LootFrameUpButton"], "-", 15, nil, nil)
self:moveObject(_G["LootFrameDownButton"], "-", 0, nil, nil)
self:applySkin(_G["LootFrame"], 1)
end
function oSkin:GroupLoot()
if not self.db.profile.GroupLoot.shown or self.initialized.GroupLoot then return end
self.initialized.GroupLoot = true
self:hookDDScript(GroupLootDropDownButton)
self:Hook("GroupLootFrame_OnShow", function()
local texture, name, count, quality, bindOnPickUp = GetLootRollItemInfo(this.rollID)
_G["GroupLootFrame"..this:GetID().."IconFrameIcon"]:SetTexture(texture)
_G["GroupLootFrame"..this:GetID().."Name"]:SetText(name)
local color = ITEM_QUALITY_COLORS[quality]
_G["GroupLootFrame"..this:GetID().."Name"]:SetVertexColor(color.r, color.g, color.b)
_G["GroupLootFrame"..this:GetID().."Timer"]:SetStatusBarColor(color.r, color.g, color.b)
end)
self:keepRegions(_G["GroupLootDropDown"], {4}) -- N.B. region 4 is text
local f = GameFontNormalSmall:GetFont()
for i = 1, NUM_GROUP_LOOT_FRAMES do
local glf = "GroupLootFrame"..i
self:removeRegions(_G[glf], {4, 5}) -- N.B. regions 1-3 are text
if not self.db.profile.GroupLoot.small then
_G[glf]:SetWidth(_G[glf]:GetWidth() * 0.95)
_G[glf]:SetHeight(_G[glf]:GetHeight() * FyMult)
self:moveObject(_G[glf.."SlotTexture"], "-", 3, "+", 5)
self:moveObject(_G[glf.."RollButton"], "+", 6, "+", 6)
else
_G[glf]:SetWidth(_G[glf]:GetWidth() * 0.85)
_G[glf]:SetHeight(_G[glf]:GetHeight() * 0.675)
local xMult, yMult = 0.75, 0.75
_G[glf.."SlotTexture"]:SetWidth(_G[glf.."SlotTexture"]:GetWidth() * xMult)
_G[glf.."SlotTexture"]:SetHeight(_G[glf.."SlotTexture"]:GetHeight() * yMult)
self:moveObject(_G[glf.."SlotTexture"], "-", 2, "+", 4)
-- _G[glf.."NameFrame"]:SetWidth(_G[glf.."NameFrame"]:GetWidth() / xMult) -- ???
_G[glf.."NameFrame"]:SetHeight(_G[glf.."NameFrame"]:GetHeight() * yMult)
self:moveObject(_G[glf.."NameFrame"], "+", 2, "+", 2)
_G[glf.."Name"]:SetFont(f, 7)
self:moveObject(_G[glf.."Name"], "+", 2, "+", 2)
_G[glf.."RollButton"]:SetWidth(_G[glf.."RollButton"]:GetWidth() * xMult)
_G[glf.."RollButton"]:SetHeight(_G[glf.."RollButton"]:GetHeight() * yMult)
self:moveObject(_G[glf.."RollButton"], "+", 10, "+", 7)
_G[glf.."GreedButton"]:SetWidth(_G[glf.."GreedButton"]:GetWidth() * xMult)
_G[glf.."GreedButton"]:SetHeight(_G[glf.."GreedButton"]:GetHeight() * yMult)
_G[glf.."PassButton"]:SetWidth(_G[glf.."PassButton"]:GetWidth() * xMult)
_G[glf.."PassButton"]:SetHeight(_G[glf.."PassButton"]:GetHeight() * yMult)
self:moveObject(_G[glf.."PassButton"], nil, nil, "+", 3)
_G[glf.."IconFrame"]:SetWidth(_G[glf.."IconFrame"]:GetWidth() * xMult)
_G[glf.."IconFrame"]:SetHeight(_G[glf.."IconFrame"]:GetHeight() * yMult)
_G[glf.."IconFrameIcon"]:SetWidth(_G[glf.."IconFrameIcon"]:GetWidth() * 0.8)
_G[glf.."IconFrameIcon"]:SetHeight(_G[glf.."IconFrameIcon"]:GetHeight() * 0.8)
_G[glf.."IconFrameIcon"]:SetAlpha(1)
self:moveObject(_G[glf.."IconFrameIcon"], "-", 5, "+", 5)
_G[glf.."Timer"]:SetWidth(_G[glf.."Timer"]:GetWidth() * xMult)
self:moveObject(_G[glf.."Timer"], "-", 2, "-", 2)
end
self:removeRegions(_G[glf.."Timer"], {1})
self:glazeStatusBar(_G[glf.."Timer"])
self:applySkin(_G[glf])
end
end
function oSkin:containerFrames()
if not self.db.profile.ContainerFrames or self.initialized.ContainerFrames then return end
self.initialized.ContainerFrames = true
self:Hook("ContainerFrame_GenerateFrame")
for i = 1, NUM_CONTAINER_FRAMES do
self:keepRegions(_G["ContainerFrame"..i], {6}) -- N.B. region 6 is text
self:moveObject(_G["ContainerFrame"..i.."Name"], "-", 5, "+", 0)
self:applySkin(_G["ContainerFrame"..i], nil, nil, nil, 100)
end
end
function oSkin:ContainerFrame_GenerateFrame(frame, size, id)
self.hooks["ContainerFrame_GenerateFrame"].orig(frame, size, id)
frame = frame:GetName()
if ( id > NUM_BAG_FRAMES ) then
_G[frame.."Name"]:SetTextColor(.3, .3, 1)
elseif ( id == KEYRING_CONTAINER ) then
_G[frame.."Name"]:SetTextColor(1, .7, 0)
else
_G[frame.."Name"]:SetTextColor(1, 1, 1)
end
end
function oSkin:StackSplit()
if not self.db.profile.StackSplit or self.initialized.StackSplit then return end
self.initialized.StackSplit = true
self:removeRegions(_G["StackSplitFrame"], {1}) -- N.B. region 2 is text
_G["StackSplitFrame"]:SetWidth(_G["StackSplitFrame"]:GetWidth() - 12)
_G["StackSplitFrame"]:SetHeight(_G["StackSplitFrame"]:GetHeight() - 28)
self:moveObject(_G["StackSplitText"], nil, nil, "-", 5)
self:moveObject(_G["StackSplitLeftButton"], "+", 5, "-", 5)
self:moveObject(_G["StackSplitRightButton"], "-", 5, "-", 5)
self:moveObject(_G["StackSplitOkayButton"], nil, nil, "-", 13)
self:moveObject(_G["StackSplitCancelButton"], nil, nil, "-", 13)
self:applySkin(_G["StackSplitFrame"])
end
function oSkin:ItemText()
if not self.db.profile.ItemText or self.initialized.ItemText then return end
self.initialized.ItemText = true
self:Hook("ItemTextFrame_OnEvent", function(event)
self:Debug("ItemTextFrame_OnEvent: [%s]", event)
self.hooks.ItemTextFrame_OnEvent(event)
if event == "ITEM_TEXT_BEGIN" then
_G["ItemTextPageText"]:SetTextColor(0.7, 0.7, 0)
end
end)
self:removeRegions(_G["ItemTextFrame"], {1, 2, 3, 4, 5, 6, 7, 8, 9}) -- N.B. region 10 & 11 are text
_G["ItemTextFrame"]:SetWidth(_G["ItemTextFrame"]:GetWidth() - 30)
_G["ItemTextFrame"]:SetHeight(_G["ItemTextFrame"]:GetHeight() - 60)
self:moveObject(_G["ItemTextTitleText"], nil, nil, "-", 24)
self:removeRegions(_G["ItemTextScrollFrame"])
self:moveObject(_G["ItemTextScrollFrame"], "+", 30, "+", 20)
self:skinScrollBar(_G["ItemTextScrollFrame"])
self:moveObject(_G["ItemTextStatusBar"], nil, nil, "-", 115)
self:glazeStatusBar(_G["ItemTextStatusBar"], 0)
self:moveObject(_G["ItemTextPrevPageButton"], "-", 45, "+", 10)
self:moveObject(_G["ItemTextNextPageButton"], "+", 10, "+", 10)
self:moveObject(_G["ItemTextCloseButton"], "+", 28, "+", 8)
self:applySkin(_G["ItemTextFrame"])
end
function oSkin:WorldMap()
if not self.db.profile.WorldMap or self.initialized.WorldMap then return end
self.initialized.WorldMap = true
self:hookDDScript(WorldMapContinentDropDownButton)
self:hookDDScript(WorldMapZoneDropDownButton)
self:keepRegions(_G["WorldMapFrame"], {14}) -- N.B. region 14 is text
self:keepRegions(_G["WorldMapContinentDropDown"], {4}) -- N.B. region 4 is text
self:keepRegions(_G["WorldMapZoneDropDown"], {4}) -- N.B. region 4 is text
if not IsAddOnLoaded("MetaMap") then
self:moveObject(_G["WorldMapFrameCloseButton"], "+", 98, "-", 4)
self:applySkin(_G["WorldMapFrame"])
end
end