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 local cfSubframes = { "PaperDollFrame", "PetPaperDollFrame", "ReputationFrame", "SkillFrame", "HonorFrame" } -- CharacterFrame / ReputationFrame / SkillFrame function oSkin:characterFrames() if not self.db.profile.CharacterFrames or self.initialized.CharacterFrames then return end self.initialized.CharacterFrames = true -- hook this to adjust the widths of the Tabs self:Hook("CharacterFrame_ShowSubFrame", function(frameName) self:Debug("CF_SSF: [%s, %s, %s]", frameName, floor(_G["CharacterFrameTab1"]:GetWidth()), self.initialized.CF_SSF) self.hooks.CharacterFrame_ShowSubFrame(frameName) -- tabs need resizing each time they are reset and the ignore flag is set if floor(_G["CharacterFrameTab1"]:GetWidth()) == 89 and self.initialized.CF_SSF then self.initialized.CF_SSF = nil end if self.initialized.CF_SSF then return end self.initialized.CF_SSF = true for i = 1, table.getn(CHARACTERFRAME_SUBFRAMES) do local tabName = _G["CharacterFrameTab"..i] tabName:SetWidth(tabName:GetWidth() * 0.8) end end) -- hook this to move tabs when Pet is called self:Hook("PetTab_Update", function() self:Debug("PetTab_Update") self.hooks.PetTab_Update() local point,relativeTo,relativePoint,xOfs,yOfs = _G["CharacterFrameTab3"]:GetPoint() self:Debug("PTU: [%s, %s, %s, %s, %s]", point,relativeTo:GetName(),relativePoint,xOfs,yOfs) if floor(xOfs) == -17 then self:moveObject(_G["CharacterFrameTab3"], "+", 11, nil, nil) local tabName = _G["CharacterFrameTab2"] -- resize tab if required if floor(tabName:GetWidth()) == 57 then tabName:SetWidth(tabName:GetWidth() * 0.8) end end end) -- handle each frame self:CharacterFrame() self:PaperDollFrame() self:PetPaperDollFrame() self:ReputationFrame() self:SkillFrame() self:HonorFrame() end function oSkin:CharacterFrame() self:removeRegions(_G["CharacterFrame"]) _G["CharacterFrame"]:SetWidth(_G["CharacterFrame"]:GetWidth() * FxMult) _G["CharacterFrame"]:SetHeight(_G["CharacterFrame"]:GetHeight() * FyMult) self:moveObject(_G["CharacterNameText"], nil, nil, "-", 30) self:moveObject(_G["CharacterFrameCloseButton"], "+", 28, "+", 8) -- CharacterFrameTab1-5 for i = 1, table.getn(CHARACTERFRAME_SUBFRAMES) do local tabName = _G["CharacterFrameTab"..i] oSkin:keepRegions(tabName, {7, 8}) -- N.B. region 7 is the Text, 8 is the highlight if i == 1 then self:moveObject(tabName, nil, nil, "-", 71) else -- handle no pet out or not a pet class self:moveObject(tabName, "+", ((i == 3 and not HasPetUI()) and 0 or 11), nil, nil) end oSkin:applySkin(tabName) end self:applySkin(_G["CharacterFrame"]) end function oSkin:PaperDollFrame() self:keepRegions(_G["PaperDollFrame"], {5, 6, 7}) -- N.B. regions 5-7 are text _G["CharacterModelFrameRotateLeftButton"]:Hide() _G["CharacterModelFrameRotateRightButton"]:Hide() local xOfs, yOfs = 9, 20 self:moveObject(_G["CharacterModelFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["CharacterHeadSlot"], "-", xOfs, "+", yOfs) self:moveObject(_G["CharacterHandsSlot"], "-", xOfs, "+", yOfs) self:moveObject(_G["CharacterResistanceFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["CharacterAttributesFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["CharacterMainHandSlot"], "-", 20, "-", 60) self:removeRegions(_G["CharacterAmmoSlot"], {1}) self:applySkin(_G["PaperDollFrame"]) end function oSkin:PetPaperDollFrame() self:removeRegions(_G["PetPaperDollFrame"], {1, 2, 3, 4}) -- N.B. regions 5-9 are text _G["PetModelFrameRotateLeftButton"]:Hide() _G["PetModelFrameRotateRightButton"]:Hide() self:moveObject(_G["PetNameText"], nil, nil, "-", 30) local xOfs, yOfs = 10, 25 self:moveObject(_G["PetModelFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["PetAttributesFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["PetResistanceFrame"], "-", xOfs, "+", yOfs) -- move outside the Model Frame otherwise the tooltip doesn't work self:moveObject(_G["PetPaperDollPetInfo"], nil, nil, "+", 90) self:keepRegions(_G["PetPaperDollFrameExpBar"], {3, 4}) -- N.B. region 3 is text self:moveObject(_G["PetPaperDollFrameExpBar"], "-", 10, "-", 72) self:glazeStatusBar(_G["PetPaperDollFrameExpBar"], 0) self:moveObject(_G["PetTrainingPointText"], nil, nil, "-", 72) self:moveObject(_G["PetPaperDollCloseButton"], "-", 5, "+", 9) self:applySkin(_G["PetPaperDollFrame"]) end function oSkin:ReputationFrame() self:keepRegions(_G["ReputationFrame"], {5, 6}) -- N.B. regions 5 & 6 are text local xOfs, yOfs = 5, 20 self:moveObject(_G["ReputationFrameFactionLabel"], "-", xOfs, "+", yOfs) self:moveObject(_G["ReputationFrameStandingLabel"], "-", xOfs, "+", yOfs) self:moveObject(_G["ReputationBar1"], "-", xOfs, "+", yOfs) for i = 1 , NUM_FACTIONS_DISPLAYED do self:removeRegions(_G["ReputationBar"..i], {1, 2}) -- N.B. regions 3 & 4 are text self:glazeStatusBar(_G["ReputationBar"..i], 0) end self:removeRegions(_G["ReputationListScrollFrame"]) self:moveObject(_G["ReputationListScrollFrame"], "+", 35, "+", 20) self:skinScrollBar(_G["ReputationListScrollFrame"]) self:keepRegions(_G["ReputationDetailFrame"], {10, 11}) -- N.B. regions 10 & 11 are text self:moveObject(_G["ReputationDetailFrame"], "+", 30, nil, nil) self:applySkin(_G["ReputationDetailFrame"]) self:applySkin(_G["ReputationFrame"]) end function oSkin:SkillFrame() self:removeRegions(_G["SkillFrame"]) local xOfs, yOfs = 5, 20 self:removeRegions(_G["SkillFrameExpandButtonFrame"]) self:moveObject(_G["SkillFrameExpandButtonFrame"], "-", xOfs, "+", yOfs) self:moveObject(_G["SkillTypeLabel1"], "-", xOfs, "+", yOfs) self:moveObject(_G["SkillRankFrame1"], "-", xOfs, "+", yOfs) self:removeRegions(_G["SkillListScrollFrame"]) self:moveObject(_G["SkillListScrollFrame"], "+", 35, "+", 20) self:skinScrollBar(_G["SkillListScrollFrame"]) for i = 1, SKILLS_TO_DISPLAY do self:removeRegions(_G["SkillRankFrame"..i.."Border"], {1}) -- N.B. region 2 is highlight self:glazeStatusBar(_G["SkillRankFrame"..i], 0) end self:removeRegions(_G["SkillDetailScrollFrame"]) self:applySkin(_G["SkillDetailScrollFrame"]) self:skinScrollBar(_G["SkillDetailScrollFrame"]) self:removeRegions(_G["SkillDetailStatusBar"], {1, 4, 5}) -- N.B. regions 2 & 3 are text self:glazeStatusBar(_G["SkillDetailStatusBar"], 0) self:moveObject(_G["SkillFrameCancelButton"], "-", 5, "+", 9) self:applySkin(_G["SkillFrame"]) end function oSkin:HonorFrame() self:removeRegions(_G["HonorFrame"], {1, 2, 3, 4, 7, 8, 9, 10}) -- N.B. other regions are text local xOfs, yOfs = 5, 20 self:moveObject(_G["HonorFrameCurrentPVPTitle"], "-", xOfs, "+", yOfs) self:moveObject(_G["HonorFrameProgressBar"], "-", xOfs, "+", yOfs) self:glazeStatusBar(_G["HonorFrameProgressBar"], 0) self:moveObject(_G["HonorFrameCurrentSessionTitle"], "-", xOfs, "+", yOfs) self:applySkin(_G["HonorFrame"]) end function oSkin:PetStableFrame() if not self.db.profile.PetStableFrame or self.initialized.PetStableFrame then return end self.initialized.PetStableFrame = true self:removeRegions(_G["PetStableFrame"], {1, 2, 3, 4, 5}) -- N.B. regions 6-10 are text _G["PetStableFrame"]:SetWidth(_G["PetStableFrame"]:GetWidth() * FxMult) _G["PetStableFrame"]:SetHeight(_G["PetStableFrame"]:GetHeight() * FyMult) self:moveObject(_G["PetStableFrameCloseButton"], "+", 28, "+", 8) _G["PetStableModelRotateLeftButton"]:Hide() _G["PetStableModelRotateRightButton"]:Hide() self:moveObject(_G["PetStableTitleLabel"], nil, nil, "+", 6) local xOfs, yOfs = 0, 60 self:moveObject(_G["PetStableCurrentPet"], "-", xOfs, "-", yOfs) self:moveObject(_G["PetStableSlotText"], "-", xOfs, "-", yOfs) self:moveObject(_G["PetStableCostLabel"], "-", xOfs, "-", yOfs) self:moveObject(_G["PetStablePurchaseButton"], "-", xOfs, "-", yOfs) self:moveObject(_G["PetStableMoneyFrame"], "-", xOfs, "-", yOfs) -- move outside the Model Frame otherwise the tooltip doesn't work self:moveObject(_G["PetStablePetInfo"], nil, nil, "+", 90) self:applySkin(_G["PetStableFrame"]) end function oSkin:SpellBookFrame() if not self.db.profile.SpellBookFrame or self.initialized.SpellBookFrame then return end self.initialized.SpellBookFrame = true self:keepRegions(_G["SpellBookFrame"], {6, 7}) -- N.B. regions 6 & 7 are text _G["SpellBookFrame"]:SetWidth(_G["SpellBookFrame"]:GetWidth() * 0.9) _G["SpellBookFrame"]:SetHeight(_G["SpellBookFrame"]:GetHeight() * 0.84) self:moveObject(_G["SpellBookCloseButton"], "+", 28, "+", 8) self:moveObject(_G["SpellBookTitleText"], nil, nil, "-", 25) self:moveObject(_G["SpellBookPageText"], nil, nil, "-", 70) self:moveObject(_G["SpellBookPrevPageButton"], "-", 20, "-", 70) self:moveObject(_G["SpellBookNextPageButton"], nil, nil, "-", 70) for i = 1, SPELLS_PER_PAGE do self:removeRegions(_G["SpellButton"..i], {1}) if i == 1 then self:moveObject(_G["SpellButton"..i], "-" , 10, "+", 20) end _G["SpellButton"..i.."SpellName"]:SetTextColor(0.8,0.8,0) _G["SpellButton"..i.."SubSpellName"]:SetTextColor(0.7,0.7,0) end for i = 1, MAX_SKILLLINE_TABS do local tabName = _G["SpellBookSkillLineTab"..i] self:removeRegions(tabName, {1}) -- N.B. other regions are icon and highlight self:Debug("SBSLT: [%s, %s]", tabName:GetWidth(), tabName:GetHeight()) tabName:SetWidth(tabName:GetWidth() * 1.25) tabName:SetHeight(tabName:GetHeight() * 1.25) if i == 1 then self:moveObject(tabName, "+", 28, nil, nil) end oSkin:applySkin(tabName) end for i = 1, 3 do local tabName = _G["SpellBookFrameTabButton"..i] oSkin:keepRegions(tabName, {1, 3}) -- N.B. region 1 is the Text, 3 is the highlight tabName:SetWidth(tabName:GetWidth() * FTyMult) tabName:SetHeight(tabName:GetHeight() * FTxMult) local left, right, top, bottom = tabName:GetHitRectInsets() self:Debug("SBFTB: [%s, %s, %s, %s, %s]", i, left, right, top, bottom) tabName:SetHitRectInsets(left * FTyMult, right * FTyMult, top * FTxMult, bottom * FTxMult) if i == 1 then self:moveObject(tabName, "-", 18, "-", 70) else self:moveObject(tabName, "+", 15, nil, nil) end oSkin:applySkin(tabName) end self:applySkin( _G["SpellBookFrame"]) end function oSkin:TalentFrame() if not self.db.profile.TalentFrame or self.initialized.TalentFrame then return end self.initialized.TalentFrame = true self:Hook("TalentFrame_Update", function() self:Debug("TalentFrame_Update") self.hooks.TalentFrame_Update() for i = 1, MAX_TALENT_TABS do local tabName = _G["TalentFrameTab"..i] tabName:SetWidth(tabName:GetWidth() * FTyMult) end end) self:removeRegions(_G["TalentFrame"], {1, 2, 3, 4, 5, 11, 12, 13}) -- N.B. 6, 7, 8 & 9 are the background picture, 10, 14, 15 & 16 are text regions _G["TalentFrame"]:SetWidth(_G["TalentFrame"]:GetWidth() * FxMult) _G["TalentFrame"]:SetHeight(_G["TalentFrame"]:GetHeight() * FyMult) self:moveObject(_G["TalentFrameTitleText"], nil, nil, "+", 6) self:moveObject(_G["TalentFrameCloseButton"], "+", 28, "+", 8) self:moveObject(_G["TalentFrameSpentPoints"], "-", 35, "+", 15) self:moveObject(_G["TalentFrameTalentPointsText"], "-", 10, "-", 70) self:moveObject(_G["TalentFrameBackgroundTopLeft"], "-", 10, "+", 15) self:removeRegions(_G["TalentFrameScrollFrame"]) self:moveObject(_G["TalentFrameScrollFrame"], "+", 35, "+", 15) self:skinScrollBar(_G["TalentFrameScrollFrame"]) self:moveObject(_G["TalentFrameCancelButton"], "-", 10, "+", 8) for i=1,MAX_TALENT_TABS do local tabName = _G["TalentFrameTab"..i] oSkin:keepRegions(tabName, {7, 8}) -- N.B. region 7 is text, 8 is highlight tabName:SetWidth(tabName:GetWidth() * FTyMult) if i == 1 then self:moveObject(tabName, "-", 8, "-", 71) else self:moveObject(tabName, "+", 10, nil, nil) end oSkin:applySkin(_G["TalentFrameTab"..i]) end self:applySkin(_G["TalentFrame"]) end