vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
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