WoWInterface SVN hankui

[/] [Interface/] [AddOns/] [Skinner/] [CharacterFrames2.lua] - Rev 17

Compare with Previous | Blame | View Log

local aName, aObj = ...
local _G = _G
local ftype = "c"
local obj, objName, tex, texName, btn, btnName, tab, tabSF

function aObj:FriendsFrame()
        if not self.db.profile.FriendsFrame or self.initialized.FriendsFrame then return end
        self.initialized.FriendsFrame = true

        self:add2Table(self.charKeys1, "FriendsFrame")

        -- FriendsTabHeader Frame
        -- Tabs
        for i = 1, FriendsTabHeader.numTabs do
                tab = _G["FriendsTabHeaderTab"..i]
                self:keepRegions(tab, {7, 8}) -- N.B. region 7 is text, 8 is highlight
                self:moveObject{obj=_G["FriendsTabHeaderTab"..i.."HighlightTexture"], x=-2, y=4}
                tabSF = self:addSkinFrame{obj=tab, ft=ftype, noBdr=self.isTT, y1=-3, y2=-3}
                tabSF.up = true -- tabs grow upwards
                -- set textures here first time thru as it's LoD
                if i == 1 then
                        if self.isTT then self:setActiveTab(tabSF) end
                else
                        if self.isTT then self:setInactiveTab(tabSF) end
                end
        end
        self.tabFrames[FriendsTabHeader] = true
        --      FriendsList Frame
        self:skinDropDown{obj=FriendsFrameStatusDropDown}
        FriendsFrameStatusDropDownStatus:SetAlpha(1) -- display status icon
        self:adjWidth{obj=_G["FriendsFrameStatusDropDownMiddle"], adj=4}
        -- Add a skin frame to include the icon at the front
        self:skinEditBox{obj=FriendsFrameBroadcastInput, regs={9, 10}, noSkin=true} -- region 10 is icon
        self:addSkinFrame{obj=FriendsFrameBroadcastInput, nb=true, aso={bd=3, ng=true, ebc=true}, x1=-24}
        -- adjust width of FFFSF so it looks right (too thin by default)
        FriendsFrameFriendsScrollFrameScrollBar:SetPoint("BOTTOMLEFT", FriendsFrameFriendsScrollFrame, "BOTTOMRIGHT", -4, 14)
        self:skinSlider{obj=FriendsFrameFriendsScrollFrameScrollBar}

        for i = 1, FRIENDS_FRIENDS_TO_DISPLAY do
                btn = _G["FriendsFrameFriendsScrollFrameButton"..i]
                btn.background:SetAlpha(0)
                self:addButtonBorder{obj=btn, relTo=btn.gameIcon, hide=true, ofs=0}
        end
        self:moveObject{obj=FriendsFrameAddFriendButton, x=3}
        -- Add Friend Frame
        self:addSkinFrame{obj=AddFriendFrame, kfs=true}
        self:skinEditBox{obj=AddFriendNameEditBox, regs={9}}
        self:addSkinFrame{obj=AddFriendNoteFrame, kfs=true}
        self:skinScrollBar{obj=AddFriendNoteFrameScrollFrame}
        self:addSkinFrame{obj=FriendsFrame, ft=ftype, kfs=true, bgen=2, x1=12, y1=-11, x2=-33, y2=71}
        -- Friends Tooltip
        self:addSkinFrame{obj=FriendsTooltip}
        -- FriendsFriends frame
        self:skinDropDown{obj=FriendsFriendsFrameDropDown}
        self:addSkinFrame{obj=FriendsFriendsList, ft=ftype}
        self:skinScrollBar{obj=FriendsFriendsScrollFrame}
        self:addSkinFrame{obj=FriendsFriendsNoteFrame, kfs=true, ft=ftype}
        self:addSkinFrame{obj=FriendsFriendsFrame, ft=ftype}

-->>--  IgnoreList Frame
        self:keepFontStrings(IgnoreListFrame)
        self:skinScrollBar{obj=FriendsFrameIgnoreScrollFrame}

-->>--  PendingList Frame
        self:keepFontStrings(PendingListFrame)
        self:skinDropDown{obj=PendingListFrameDropDown}
        self:skinSlider{obj=FriendsFramePendingScrollFrame.scrollBar}
        for i = 1, PENDING_INVITES_TO_DISPLAY do
                btn = "FriendsFramePendingButton"..i
                self:applySkin{obj=_G[btn]}
                self:applySkin{obj=_G[btn.."AcceptButton"]}
                self:applySkin{obj=_G[btn.."DeclineButton"]}
        end

-->>--  Who Frame
        self:skinFFColHeads("WhoFrameColumnHeader")
        self:skinDropDown{obj=WhoFrameDropDown, noSkin=true}
        self:moveObject{obj=WhoFrameDropDownButton, x=5, y=1}
        self:skinScrollBar{obj=WhoListScrollFrame}
        self:skinEditBox{obj=WhoFrameEditBox, move=true}
        WhoFrameEditBox:SetWidth(WhoFrameEditBox:GetWidth() +  24)
        self:moveObject{obj=WhoFrameEditBox, x=12}

-->>--  Channel Frame
        self:keepFontStrings(ChannelFrame)
        self:skinButton{obj=ChannelFrameNewButton}
        -- hook this to skin channel buttons
        self:SecureHook("ChannelList_Update", function()
                for i = 1, MAX_CHANNEL_BUTTONS do
                        _G["ChannelButton"..i.."NormalTexture"]:SetAlpha(0)
                end
        end)
        ChannelFrameVerticalBar:Hide()
        self:skinScrollBar{obj=ChannelListScrollFrame}
        self:skinScrollBar{obj=ChannelRosterScrollFrame}
        -- Channel Pullout Tab & Frame
        self:keepRegions(ChannelPulloutTab, {4, 5}) -- N.B. region 4 is text, 5 is highlight
        self:addSkinFrame{obj=ChannelPulloutTab, ft=ftype}
        self:addSkinFrame{obj=ChannelPullout, ft=ftype}
-->>--  Daughter Frame
        self:skinEditBox{obj=ChannelFrameDaughterFrameChannelName, regs={9}, noWidth=true}
        self:skinEditBox{obj=ChannelFrameDaughterFrameChannelPassword, regs={9, 10}, noWidth=true}
        self:moveObject{obj=ChannelFrameDaughterFrameOkayButton, x=-2}
        self:addSkinFrame{obj=ChannelFrameDaughterFrame, ft=ftype, kfs=true, x1=2, y1=-6, x2=-5}
        self:skinDropDown{obj=ChannelListDropDown}
        self:skinDropDown{obj=ChannelRosterDropDown}

-->>--  Raid Frame
        self:moveObject{obj=RaidFrameConvertToRaidButton, x=-50}
        self:moveObject{obj=RaidFrameRaidInfoButton, x=50}

        if IsAddOnLoaded("Blizzard_RaidUI") then self:RaidUI() end

-->>--  RaidInfo Frame
        self:addSkinFrame{obj=RaidInfoInstanceLabel, kfs=true}
        self:addSkinFrame{obj=RaidInfoIDLabel, kfs=true}
        self:skinSlider{obj=RaidInfoScrollFrameScrollBar}
        self:addSkinFrame{obj=RaidInfoFrame, ft=ftype, kfs=true, hdr=true}

-->>-- Tabs
        for i = 1, FriendsFrame.numTabs do
                tab = _G["FriendsFrameTab"..i]
                self:keepRegions(tab, {7, 8}) -- N.B. region 7 is text, 8 is highlight
                tabSF = self:addSkinFrame{obj=tab, ft=ftype, noBdr=self.isTT, x1=6, y1=0, x2=-6, y2=2}
                -- set textures here first time thru
                if i == 1 then
                        if self.isTT then self:setActiveTab(tabSF) end
                else
                        if self.isTT then self:setInactiveTab(tabSF) end
                end
        end
        self.tabFrames[FriendsFrame] = true

end

function aObj:TradeSkillUI() -- LoD
        if not self.db.profile.TradeSkillUI or self.initialized.TradeSkillUI then return end
        self.initialized.TradeSkillUI = true

        if self.modBtns then
                -- hook to manage changes to button textures
                self:SecureHook("TradeSkillFrame_Update", function()
                        for i = 1, TRADE_SKILLS_DISPLAYED do
                                self:checkTex(_G["TradeSkillSkill"..i])
                        end
                        self:checkTex(TradeSkillCollapseAllButton)
                end)
        end

        objName = "TradeSkillRankFrame"
        obj = _G[objName]
        _G[objName.."Border"]:SetAlpha(0)
        self:glazeStatusBar(obj, 0, _G[objName.."Background"])
        self:moveObject{obj=obj, x=-2}
        -- Add a skin frame to include the icon at the front
        self:skinEditBox{obj=TradeSkillFrameSearchBox, regs={9}, noSkin=true} -- region 9 is icon
        self:addSkinFrame{obj=TradeSkillFrameSearchBox, nb=true, aso={bd=3, ng=true, ebc=true}, x1=-6}
        self:skinButton{obj=TradeSkillFilterButton}
        self:addButtonBorder{obj=TradeSkillLinkButton, x1=1, y1=-5, x2=-3, y2=2}
        self:removeRegions(TradeSkillExpandButtonFrame)
        self:skinButton{obj=TradeSkillCollapseAllButton, mp=true}
        for i = 1, TRADE_SKILLS_DISPLAYED do
                self:skinButton{obj=_G["TradeSkillSkill"..i], mp=true}
        end
        self:skinScrollBar{obj=TradeSkillListScrollFrame}
        self:skinScrollBar{obj=TradeSkillDetailScrollFrame}
        self:keepFontStrings(TradeSkillDetailScrollChildFrame)
        self:addButtonBorder{obj=TradeSkillSkillIcon}
        self:skinEditBox{obj=TradeSkillInputBox, noHeight=true, x=-5}
        self:addSkinFrame{obj=TradeSkillFrame, ft=ftype, kfs=true, ri=true, x1=-3, y1=2, x2=1, y2=-5}
        self:removeMagicBtnTex(TradeSkillCreateAllButton)
        self:removeMagicBtnTex(TradeSkillCancelButton)
        self:removeMagicBtnTex(TradeSkillCreateButton)
        self:removeMagicBtnTex(TradeSkillViewGuildCraftersButton)
        -- Guild sub frame
        self:addSkinFrame{obj=TradeSkillGuildFrameContainer, ft=ftype}
        self:addSkinFrame{obj=TradeSkillGuildFrame, ft=ftype, kfs=true, ofs=-7}

        for i = 1, MAX_TRADE_SKILL_REAGENTS do
                _G["TradeSkillReagent"..i.."NameFrame"]:SetTexture(nil)
                self:addButtonBorder{obj=_G["TradeSkillReagent"..i], libt=true}
        end

        if self.modBtns then TradeSkillFrame_Update() end -- force update for button textures

end

function aObj:TradeFrame()
        if not self.db.profile.TradeFrame or self.initialized.TradeFrame then return end
        self.initialized.TradeFrame = true

        self:add2Table(self.charKeys1, "TradeFrame")

        for i = 1, MAX_TRADE_ITEMS do
                for _, v in pairs{"Player", "Recipient"} do
                        btnName = "Trade"..v.."Item"..i
                        _G[btnName.."SlotTexture"]:SetTexture(nil)
                        _G[btnName.."NameFrame"]:SetTexture(nil)
                        self:addButtonBorder{obj=_G[btnName.."ItemButton"], ibt=true}
                end
        end
        self:skinMoneyFrame{obj=TradePlayerInputMoneyFrame}
        self:addSkinFrame{obj=TradeFrame, ft=ftype, kfs=true, x1=10, y1=-11, x2=-28, y2=48}

end

function aObj:QuestLog()
        if not self.db.profile.QuestLog or self.initialized.QuestLog then return end
        self.initialized.QuestLog = true

        self:add2Table(self.charKeys1, "QuestLog")

        self:keepFontStrings(QuestLogCount)
        self:keepFontStrings(EmptyQuestLogFrame)

        if self.modBtns then
                local function qlUpd()

                        for i = 1, #QuestLogScrollFrame.buttons do
                                aObj:checkTex(QuestLogScrollFrame.buttons[i])
                        end

                end
                -- hook to manage changes to button textures
                self:SecureHook("QuestLog_Update", function()
                        qlUpd()
                end)
                -- hook this as well as it's a copy of QuestLog_Update
                self:SecureHook(QuestLogScrollFrame, "update", function()
                        qlUpd()
                end)
                -- skin minus/plus buttons
                for i = 1, #QuestLogScrollFrame.buttons do
                        self:skinButton{obj=QuestLogScrollFrame.buttons[i], mp=true}
                end
        end
        self:skinScrollBar{obj=QuestLogScrollFrame}
        self:skinAllButtons{obj=QuestLogControlPanel} -- Abandon/Push/Track
        self:addButtonBorder{obj=QuestLogFrameShowMapButton, relTo=QuestLogFrameShowMapButton.texture, x1=2, y1=-1, x2=-2, y2=1}
        self:addSkinFrame{obj=QuestLogFrame, ft=ftype, kfs=true, x1=10, y1=-11, x2=-1, y2=8}
        self:removeMagicBtnTex(QuestLogFrameCompleteButton)

-->>-- QuestLogDetail Frame
        QuestLogDetailTitleText:SetTextColor(self.HTr, self.HTg, self.HTb)
        self:skinScrollBar{obj=QuestLogDetailScrollFrame}
        self:addSkinFrame{obj=QuestLogDetailFrame, ft=ftype, kfs=true, x1=10, y1=-11, x2=1}

        self:QuestInfo()

end

function aObj:RaidUI() -- LoD
        if not self.db.profile.RaidUI or self.initialized.RaidUI then return end
        self.initialized.RaidUI = true

        local function skinPulloutFrames()

                local obj, objName
                for i = 1, NUM_RAID_PULLOUT_FRAMES      do
                        objName = "RaidPullout"..i
                        obj = _G[objName]
                        if not self.skinFrame[obj] then
                                self:skinDropDown{obj=_G[objName.."DropDown"]}
                                _G[objName.."MenuBackdrop"]:SetBackdrop(nil)
                                self:addSkinFrame{obj=obj, ft=ftype, kfs=true, x1=3, y1=-1, x2=-1, y2=1}
                        end
                end

        end
        -- hook this to skin the pullout group frames
        self:SecureHook("RaidPullout_GetFrame", function(...)
                skinPulloutFrames()
        end)
        -- hook this to skin the pullout character frames
        self:SecureHook("RaidPullout_Update", function(pullOutFrame)
                local pfName = pullOutFrame:GetName()
                local objName, barName
                for i = 1, pullOutFrame.numPulloutButtons do
                        objName = pfName.."Button"..i
                        if not self.skinFrame[obj] then
                                for _, v in pairs{"HealthBar", "ManaBar", "Target", "TargetTarget"} do
                                        barName = objName..v
                                        self:removeRegions(_G[barName], {2})
                                        self:glazeStatusBar(_G[barName], 0, _G[barName.."Background"])
                                end
                                self:addSkinFrame{obj=_G[objName.."TargetTargetFrame"], ft=ftype, x1=4, x2=-4, y2=2}
                                self:addSkinFrame{obj=_G[objName], ft=ftype, kfs=true, x1=-4, y1=-6, x2=4, y2=-6}
                        end
                end
        end)

        self:moveObject{obj=RaidFrameRaidBrowserButton, x=-30}
        self:skinButton{obj=RaidFrameRaidBrowserButton}
        self:skinButton{obj=RaidFrameReadyCheckButton}
        self:moveObject{obj=RaidGroup1,x= 2}

        -- Raid Groups
        for i = 1, MAX_RAID_GROUPS do
                self:addSkinFrame{obj=_G["RaidGroup"..i], ft=ftype, kfs=true, x1=-2, y1=2, x2=1, y2=-1}
        end
        -- Raid Group Buttons
        for i = 1, MAX_RAID_GROUPS * 5 do
                btn = _G["RaidGroupButton"..i]
                self:removeRegions(btn, {4})
                self:addSkinFrame{obj=btn, ft=ftype, aso={bd=5}, x1=-2, y1=2, x2=1, y2=-1}
        end
        -- Raid Class Tabs (side)
        for i = 1, MAX_RAID_CLASS_BUTTONS do
                self:removeRegions(_G["RaidClassButton"..i], {1}) -- N.B. region 2 is the icon, 3 is the text
        end

        -- skin existing frames
        skinPulloutFrames()

end

function aObj:ReadyCheck()
        if not self.db.profile.ReadyCheck or self.initialized.ReadyCheck then return end
        self.initialized.ReadyCheck = true

        self:add2Table(self.charKeys1, "ReadyCheck")

        self:addSkinFrame{obj=ReadyCheckListenerFrame, ft=ftype, kfs=true}

end

function aObj:Buffs()
        if not self.db.profile.Buffs or self.initialized.Buffs then return end
        self.initialized.Buffs = true

        self:add2Table(self.charKeys1, "Buffs")

        if self.modBtnBs then
                local function skinBuffs()

                        local btn
                        for i= 1, BUFF_MAX_DISPLAY do
                                btn = _G["BuffButton"..i]
                                if btn and not btn.sknrBdr then
                                        -- add button borders
                                        aObj:addButtonBorder{obj=btn}
                                end
                        end

                end
                -- hook this to skin new Buffs
                self:SecureHook("BuffFrame_Update", function()
                        skinBuffs()
                end)
                -- skin any current Buffs/Debuffs
                skinBuffs()

        end

        -- Debuffs already have a coloured border
        -- Temp Enchants already have a coloured border

-->>-- Consolidated Buffs
        -- add button borders
        --[=[
                TODO remove surrounding border
        --]=]
        self:addButtonBorder{obj=ConsolidatedBuffs, ofs=4} -- cover button surround
        self:addSkinFrame{obj=ConsolidatedBuffsTooltip, x1=4, y1=-3, x2=-5, y2=4}

end

function aObj:VehicleMenuBar()
        if not self.db.profile.VehicleMenuBar or self.initialized.VehicleMenuBar then return end
        self.initialized.VehicleMenuBar = true

        self:add2Table(self.charKeys1, "VehicleMenuBar")

        local xOfs1, xOfs2, yOfs1, yOfs2, sf
        local function skinVehicleMenuBar(opts)

                -- aObj:Debug("sVMB: [%s, %s, %s]", opts.src, opts.sn or "nil", opts.pv or "nil")

                -- expand frame width if mechanical vehicle
                if opts.sn == "Mechanical"
                or VehicleMenuBar.currSkin == "Mechanical"
                then
                        xOfs1 = 132
                        yOfs1 = 42
                        yOfs2 = -1
                else
                        -- "Natural" settings
                        xOfs1 = 159
                        yOfs1 = 46
                        yOfs2 = -2
                end
                xOfs2 = xOfs1 * -1

                -- remove all textures
                VehicleMenuBarArtFrame:DisableDrawLayer("BACKGROUND")
                VehicleMenuBarArtFrame:DisableDrawLayer("BORDER")
                VehicleMenuBarArtFrame:DisableDrawLayer("ARTWORK")
                VehicleMenuBarArtFrame:DisableDrawLayer("OVERLAY")
                -- Pitch Slider
                self:moveObject{obj=VehicleMenuBarPitchSlider, y=2}
                VehicleMenuBarPitchSlider:DisableDrawLayer("OVERLAY")
                 -- make it appear above the skin frame
                VehicleMenuBarPitchSlider:SetFrameStrata("MEDIUM")

                if sf then
                        sf:ClearAllPoints()
                        sf:SetPoint("TOPLEFT", VehicleMenuBar, "TOPLEFT", xOfs1, yOfs1)
                        sf:SetPoint("BOTTOMRIGHT", VehicleMenuBar, "BOTTOMRIGHT", xOfs2, yOfs2)
                else
                        sf = aObj:addSkinFrame{obj=VehicleMenuBar, ft=ftype, x1=xOfs1, y1=yOfs1, x2=xOfs2, y2=yOfs2}
                end

        end

        self:SecureHook(VehicleMenuBar, "Show", function(this, ...)
                skinVehicleMenuBar{src=1}
        end)

        self:SecureHook("VehicleMenuBar_SetSkin", function(skinName, pitchVisible)
                skinVehicleMenuBar{src=2, sn=skinName, pv=pitchVisible}
        end)

        if VehicleMenuBar:IsShown() then skinVehicleMenuBar{src=3} end

        if self.modBtnBs then
                self:addButtonBorder{obj=VehicleMenuBarLeaveButton}
                for i = 1, VEHICLE_MAX_ACTIONBUTTONS do
                        btn = _G["VehicleMenuBarActionButton"..i]
                        self:addButtonBorder{obj=btn, abt=true, sec=true, es=20}
                end
        end

end

function aObj:WatchFrame()
        if not self.db.profile.WatchFrame.skin
        and not self.db.profile.WatchFrame.popups
        or self.initialized.WatchFrame
        then
                return
        end
        self.initialized.WatchFrame = true

        self:add2Table(self.charKeys2, "WatchFrame")

        if self.modBtnBs then
                local btn
                local function skinWFBtns()

                        for i = 1, WATCHFRAME_NUM_ITEMS do
                                btn = _G["WatchFrameItem"..i]
                                if not btn.sknrBdr then
                                        aObj:addButtonBorder{obj=btn, ibt=true}
                                end
                        end

                end
                -- use hooksecurefunc as it may be hooked again if skinned
                hooksecurefunc("WatchFrame_Update", function(this)
                        skinWFBtns()
                end)
                skinWFBtns() -- skin any existing buttons
        end

        if self.db.profile.WatchFrame.skin then
                self:addSkinFrame{obj=WatchFrameLines, ft=ftype, x1=-30, y1=4, x2=10}
                -- hook this to handle displaying of the WatchFrameLines skin frame
                self:SecureHook("WatchFrame_Update", function(this)
                        if not WatchFrameHeader:IsShown() then
                                self.skinFrame[WatchFrameLines]:Hide()
                        else
                                self.skinFrame[WatchFrameLines]:Show()
                        end
                end)
        end
        if self.db.profile.WatchFrame.popups then
                local function skinAutoPopUps()

                        local obj
                        for i = 1, GetNumAutoQuestPopUps() do
                                obj = _G["WatchFrameAutoQuestPopUp"..i].ScrollChild
                                if obj and not aObj.skinned[obj] then
                                        for key, reg in ipairs{obj:GetRegions()} do
                                                if key < 11 or key == 17 then reg:SetTexture(nil) end -- Animated textures
                                        end
                                        aObj:applySkin{obj=obj}
                                end
                        end

                end
                WatchFrameLines.AutoQuestShadow:SetTexture(nil) -- Animated texture
                -- hook this to skin the AutoPopUps
                self:SecureHook("WatchFrameAutoQuest_GetOrCreateFrame", function(parent, index)
                        skinAutoPopUps()
                end)
                skinAutoPopUps()
        end

end

function aObj:GearManager() -- inc. in PaperDollFrame.xml
        if not self.db.profile.GearManager or self.initialized.GearManager then return end
        self.initialized.GearManager = true

        self:add2Table(self.charKeys1, "GearManager")

        self:addSkinFrame{obj=GearManagerDialog, ft=ftype, kfs=true, x1=4, y1=-2, x2=-1, y2=2}
        for i = 1, MAX_EQUIPMENT_SETS_PER_PLAYER do
                btn = _G["GearSetButton"..i]
                if not self.modBtnBs then
                        self:getRegion(btn, 2):SetTexture(self.esTex)
                else
                        btn:DisableDrawLayer("BACKGROUND")
                        self:addButtonBorder{obj=btn, relTo=btn.icon}
                end
        end
-->>-- Popup frame
        self:skinScrollBar{obj=GearManagerDialogPopupScrollFrame}
        self:skinEditBox{obj=GearManagerDialogPopupEditBox, regs={9}}
        self:addSkinFrame{obj=GearManagerDialogPopup, ft=ftype, kfs=true, x1=4, y1=-2, x2=-1, y2=3}

end

function aObj:CompactFrames()
        if not self.db.profile.CompactFrames or self.initialized.CompactFrames then return end
        self.initialized.CompactFrames = true

        local function skinUnit(unit)

                unit:DisableDrawLayer("BACKGROUND")
                unit:DisableDrawLayer("BORDER")

        end
        local function skinGrp(grp)

                grp.borderFrame:SetAlpha(0)
                local grpName = grp:GetName()
                for i = 1, MEMBERS_PER_RAID_GROUP do
                        skinUnit(_G[grpName.."Member"..i])
                end

        end
-->>-- Compact Party Frame
        self:SecureHook("CompactPartyFrame_OnLoad", function()
                self:addSkinFrame{obj=CompactPartyFrame, ft=ftype, x1=2, y1=-10, x2=-3, y2=3}
                self:Unhook("CompactPartyFrame_OnLoad")
        end)
        -- hook this to skin any new CompactRaidGroup(s)
        self:SecureHook("CompactRaidGroup_UpdateBorder", function(frame)
                skinGrp(frame)
        end)
        -- hook this to skin any new CompactRaidFrameContainer entries
        self:SecureHook("FlowContainer_AddObject", function(container, object)
                if container.frameUpdateList.group[object] then
                        skinGrp(object)
                else
                        skinUnit(object)
                end
        end)
        -- skin any existing unit(s) [group, mini, normal]
        for type, frame in ipairs(CompactRaidFrameContainer.frameUpdateList) do
                if type == "group" then
                        skinGrp(frame)
                else
                        skinUnit(frame)
                end
        end

-->>-- Compact RaidFrame Container
        self:addSkinFrame{obj=CompactRaidFrameContainer.borderFrame, ft=ftype, kfs=true, y1=-1, x2=-5, y2=4}

-->>-- Compact RaidFrame Manager
        local function skinButton(btn)

                self:removeRegions(btn, {1, 2, 3})
                self:skinButton{obj=btn}

        end
        -- Buttons
        for _, v in pairs{"Tank", "Healer", "Damager"} do
                skinButton(CompactRaidFrameManager.displayFrame.filterOptions["filterRole"..v])
        end
        for i = 1, 8 do
                skinButton(CompactRaidFrameManager.displayFrame.filterOptions["filterGroup"..i])
        end
        skinButton(CompactRaidFrameManagerDisplayFrameLockedModeToggle)
        skinButton(CompactRaidFrameManagerDisplayFrameHiddenModeToggle)
        -- Leader Options
        skinButton(CompactRaidFrameManagerDisplayFrameLeaderOptionsRaidWorldMarkerButton)
        CompactRaidFrameManagerDisplayFrameLeaderOptionsRaidWorldMarkerButton:GetNormalTexture():SetAlpha(1) -- icon
        skinButton(CompactRaidFrameManager.displayFrame.leaderOptions.readyCheckButton)
        skinButton(CompactRaidFrameManager.displayFrame.leaderOptions.rolePollButton)
        -- Display Frame
        self:keepFontStrings(CompactRaidFrameManager.displayFrame)
        -- Resize Frame
        self:addSkinFrame{obj=CompactRaidFrameManager.containerResizeFrame, ft=ftype, kfs=true, x1=-2, y1=-1, y2=4}
        -- Raid Frame Manager Frame
        self:addSkinFrame{obj=CompactRaidFrameManager, ft=ftype, kfs=true}

end

function aObj:ArchaeologyUI() -- LoD
        if not self.db.profile.ArchaeologyUI or self.initialized.ArchaeologyUI then return end
        self.initialized.ArchaeologyUI = true

        self:moveObject{obj=ArchaeologyFrame.infoButton, x=-25}
        self:skinDropDown{obj=ArchaeologyFrame.raceFilterDropDown}
        ArchaeologyFrameRankBarBackground:SetAllPoints(ArchaeologyFrame.rankBar)
        ArchaeologyFrameRankBarBorder:Hide()
        self:glazeStatusBar(ArchaeologyFrame.rankBar, 0,  ArchaeologyFrameRankBarBackground)
        self:addSkinFrame{obj=ArchaeologyFrame, ft=ftype, kfs=true, ri=true, x1=30, y1=2, x2=1}
-->>-- Summary Page
        self:keepFontStrings(ArchaeologyFrame.summaryPage) -- remove title textures
        ArchaeologyFrameSummaryPageTitle:SetTextColor(self.HTr, self.HTg, self.HTb)
        for i = 1, ARCHAEOLOGY_MAX_RACES do
                ArchaeologyFrame.summaryPage["race"..i].raceName:SetTextColor(self.BTr, self.BTg, self.BTb)
        end
-->>-- Completed Page
        self:keepFontStrings(ArchaeologyFrame.completedPage) -- remove title textures
        ArchaeologyFrame.completedPage.infoText:SetTextColor(self.BTr, self.BTg, self.BTb)
        ArchaeologyFrame.completedPage.titleBig:SetTextColor(self.HTr, self.HTg, self.HTb)
        ArchaeologyFrame.completedPage.titleTop:SetTextColor(self.BTr, self.BTg, self.BTb)
        ArchaeologyFrame.completedPage.titleMid:SetTextColor(self.BTr, self.BTg, self.BTb)
        ArchaeologyFrame.completedPage.pageText:SetTextColor(self.BTr, self.BTg, self.BTb)
        for i = 1, ARCHAEOLOGY_MAX_COMPLETED_SHOWN do
                ArchaeologyFrame.completedPage["artifact"..i].artifactName:SetTextColor(self.HTr, self.HTg, self.HTb)
                ArchaeologyFrame.completedPage["artifact"..i].artifactSubText:SetTextColor(self.BTr, self.BTg, self.BTb)
                ArchaeologyFrame.completedPage["artifact"..i].border:Hide()
                _G["ArchaeologyFrameCompletedPageArtifact"..i.."Bg"]:Hide()
        end
-->>-- Artifact Page
        self:removeRegions(ArchaeologyFrame.artifactPage, {2, 3}) -- title textures
        ArchaeologyFrame.artifactPage:DisableDrawLayer("BACKGROUND")
        ArchaeologyFrame.artifactPage:DisableDrawLayer("BORDER")
        ArchaeologyFrame.artifactPage.historyTitle:SetTextColor(self.HTr, self.HTg, self.HTb)
        ArchaeologyFrame.artifactPage.historyScroll.child.text:SetTextColor(self.BTr, self.BTg, self.BTb)
        self:skinScrollBar{obj=ArchaeologyFrame.artifactPage.historyScroll}
        -- Solve Frame
        ArchaeologyFrameArtifactPageSolveFrameStatusBarBarBG:Hide()
        self:glazeStatusBar(ArchaeologyFrame.artifactPage.solveFrame.statusBar, 0, nil)
        ArchaeologyFrame.artifactPage.solveFrame.statusBar:SetStatusBarColor(0.75, 0.45, 0, 0.7)
-->>-- Help Page
        self:removeRegions(ArchaeologyFrame.helpPage, {2, 3}) -- title textures
        ArchaeologyFrame.helpPage.titleText:SetTextColor(self.HTr, self.HTg, self.HTb)
        ArchaeologyFrameHelpPageDigTex:SetTexCoord(0.05, 0.885, 0.055, 0.9) -- remove texture surrounds
        ArchaeologyFrameHelpPageDigTitle:SetTextColor(self.HTr, self.HTg, self.HTb)
        ArchaeologyFrameHelpPageHelpScrollHelpText:SetTextColor(self.BTr, self.BTg, self.BTb)

end

function aObj:GuildUI() -- LoD
        if not self.db.profile.GuildUI or self.initialized.GuildUI then return end
        self.initialized.GuildUI = true

-->>-- Guild Frame
        GuildFrameBottomInset:DisableDrawLayer("BACKGROUND")
        GuildFrameBottomInset:DisableDrawLayer("BORDER")
        self:skinDropDown{obj=GuildDropDown}
        GuildLevelFrame:DisableDrawLayer("BACKGROUND")
        -- XP Bar
        GuildXPBar:DisableDrawLayer("BORDER")
        GuildXPBarProgress:SetTexture(self.sbTexture)
        GuildXPBarShadow:SetAlpha(0)
        GuildXPBarCap:SetTexture(self.sbTexture)
        GuildXPBarCapMarker:SetAlpha(0)
        -- Faction Bar
        GuildFactionBar:DisableDrawLayer("BORDER")
        GuildFactionBarProgress:SetTexture(self.sbTexture)
        GuildFactionBarShadow:SetAlpha(0)
        GuildFactionBarCap:SetTexture(self.sbTexture)
        GuildFactionBarCapMarker:SetAlpha(0)
        self:keepRegions(GuildFrame, {8, 19, 20, 18, 21, 22}) -- regions 8, 19, 20 are text, 18, 21 & 22 are tabard
        self:moveObject{obj=GuildFrameTabardBackground, x=6, y=-10}
        self:moveObject{obj=GuildFrameTabardEmblem, x=6, y=-10}
        self:moveObject{obj=GuildFrameTabardBorder, x=6, y=-10}
        self:addSkinFrame{obj=GuildFrame, ft=ftype, ri=true, x1=-5, y1=2, x2=1, y2=-6}
        self:removeMagicBtnTex(GuildAddMemberButton)
        self:removeMagicBtnTex(GuildControlButton)
        self:removeMagicBtnTex(GuildViewLogButton)
        -- Tabs
        for i = 1, GuildFrame.numTabs do
                tab = _G["GuildFrameTab"..i]
                self:keepRegions(tab, {7, 8}) -- N.B. region 7 is text, 8 is highlight
                tabSF = self:addSkinFrame{obj=tab, ft=ftype, noBdr=self.isTT, x1=6, y1=0, x2=-6, y2=2}
                -- set textures here first time thru as it's LoD
                if i == 1 then
                        if self.isTT then self:setActiveTab(tabSF) end
                else
                        if self.isTT then self:setInactiveTab(tabSF) end
                end
        end
        self.tabFrames[GuildFrame] = true
        -- GuildMain Frame
        GuildPerksToggleButton:DisableDrawLayer("BACKGROUND")
        GuildNewPerksFrame:DisableDrawLayer("BACKGROUND")
        GuildUpdatesNoNews:SetTextColor(self.BTr, self.BTg, self.BTb)
        GuildUpdatesDivider:SetAlpha(0)
        GuildUpdatesNoEvents:SetTextColor(self.BTr, self.BTg, self.BTb)
        self:removeRegions(GuildLatestPerkButton, {2, 5, 6}) -- region2 is NameFrame, 5-6 are borders
        self:addButtonBorder{obj=GuildLatestPerkButton, libt=true}
        GuildNextPerkButtonNameFrame:SetTexture(nil)
        self:addButtonBorder{obj=GuildNextPerkButton, libt=true, reParent={GuildNextPerkButtonLockTexture}}
        GuildAllPerksFrame:DisableDrawLayer("BACKGROUND")
        self:skinSlider{obj=GuildPerksContainerScrollBar, size=2}
        for i = 1, #GuildPerksContainer.buttons do
                -- can't use DisableDrawLayer as the update code uses it
                btn = GuildPerksContainer.buttons[i]
                self:removeRegions(btn, {1, 2, 3, 4, 5, 6})
                self:addButtonBorder{obj=btn, relTo=btn.icon, reParent={btn.lock}}
        end

-->>-- GuildRoster Frame
        self:skinDropDown{obj=GuildRosterViewDropdown}
        self:skinFFColHeads("GuildRosterColumnButton", 5)
        self:skinSlider{obj=GuildRosterContainerScrollBar, size=2}
        for i = 1, #GuildRosterContainer.buttons do
                btn = GuildRosterContainer.buttons[i]
                btn:DisableDrawLayer("BACKGROUND")
                btn.barTexture:SetTexture(self.sbTexture)
                btn.header.leftEdge:SetAlpha(0)
                btn.header.rightEdge:SetAlpha(0)
                btn.header.middle:SetAlpha(0)
                self:applySkin{obj=btn.header}
                self:addButtonBorder{obj=btn, relTo=btn.icon, hide=true, es=12}
        end
        if self.isPatch then
                self:skinDropDown{obj=GuildMemberRankDropdown}
        end
        self:addSkinFrame{obj=GuildMemberDetailFrame, ft=ftype, kfs=true, nb=true, ofs=-6}

-->>-- GuildNews Frame
        GuildNewsFrame:DisableDrawLayer("BACKGROUND")
        self:skinSlider{obj=GuildNewsContainerScrollBar, size=2}
        for i = 1, #GuildNewsContainer.buttons do
                GuildNewsContainer.buttons[i].header:SetAlpha(0)
        end
        self:skinDropDown{obj=GuildNewsDropDown}
        self:addSkinFrame{obj=GuildNewsFiltersFrame, ft=ftype, kfs=true, ofs=-7}
        self:keepFontStrings(GuildNewsBossModelTextFrame)
        self:addSkinFrame{obj=GuildNewsBossModel, ft=ftype, kfs=true, ofs=4, y2=-81} -- similar to QuestNPCModel
        -- Rewards Panel
        GuildRewardsFrame:DisableDrawLayer("BACKGROUND")
        self:skinSlider{obj=GuildRewardsContainerScrollBar, size=2}
        for i = 1, #GuildRewardsContainer.buttons do
                btn = GuildRewardsContainer.buttons[i]
                btn:GetNormalTexture():SetAlpha(0)
                btn.disabledBG:SetAlpha(0)
                self:addButtonBorder{obj=btn, relTo=btn.icon, reParent={btn.lock}}
        end
        self:skinDropDown{obj=GuildRewardsDropDown}

-->>-- GuildInfo Frame
        self:removeRegions(GuildInfoFrame, {1, 2, 3, 4, 5, 6 ,7, 8}) -- Background textures and bars
        if self.isPatch then
                -- Tabs
                for i = 1, GuildInfoFrame.numTabs do
                        tab = _G["GuildInfoFrameTab"..i]
                        self:keepRegions(tab, {7, 8}) -- N.B. region 7 is text, 8 is highlight
                        tabSF = self:addSkinFrame{obj=tab, ft=ftype, noBdr=self.isTT, x1=2, y1=-5, x2=2, y2=-5}
                        tabSF.up = true -- tabs grow upwards
                        -- set textures here first time thru as it's LoD
                        if i == 1 then
                                if self.isTT then self:setActiveTab(tabSF) end
                        else
                                if self.isTT then self:setInactiveTab(tabSF) end
                        end
                end
                self.tabFrames[GuildInfoFrame] = true
        end
        -- GuildInfoFrameInfo Frame
        if self.isPatch then
                self:keepFontStrings(GuildInfoFrameInfo)
        end
        self:skinSlider{obj=GuildInfoEventsContainerScrollBar, size=2}
        GuildInfoNoEvents:SetTextColor(self.BTr, self.BTg, self.BTb)
        self:skinSlider{obj=GuildInfoDetailsFrameScrollBar, size=2}
        if self.isPatch then
                -- GuildInfoFrameRecruitment Frame
                GuildRecruitmentInterestFrameBg:SetAlpha(0)
                GuildRecruitmentAvailabilityFrameBg:SetAlpha(0)
                GuildRecruitmentRolesFrameBg:SetAlpha(0)
                GuildRecruitmentLevelFrameBg:SetAlpha(0)
                GuildRecruitmentCommentFrameBg:SetAlpha(0)
                self:skinScrollBar{obj=GuildRecruitmentCommentInputFrameScrollFrame}
                self:addSkinFrame{obj=GuildRecruitmentCommentFrame, ft=ftype, kfs=true}
                self:removeMagicBtnTex(GuildRecruitmentListGuildButton)
                -- GuildInfoFrameApplicants Frame
                for i = 1, #GuildInfoFrameApplicantsContainer.buttons do
                        btn = GuildInfoFrameApplicantsContainer.buttons[i]
                        self:applySkin{obj=btn}
                        btn.ring:SetAlpha(0)
                        btn.PointsSpentBgGold:SetAlpha(0)
                        self:moveObject{obj=btn.PointsSpentBgGold, x=3, y=-3}
                end
                self:skinSlider{obj=GuildInfoFrameApplicantsContainerScrollBar}
                self:removeMagicBtnTex(GuildRecruitmentInviteButton)
                self:removeMagicBtnTex(GuildRecruitmentDeclineButton)
                self:removeMagicBtnTex(GuildRecruitmentMessageButton)
        end
        -- Guild Text Edit frame
        self:skinSlider{obj=GuildTextEditScrollFrameScrollBar, size=2}
        self:addSkinFrame{obj=GuildTextEditContainer, ft=ftype, nb=true}
        self:addSkinFrame{obj=GuildTextEditFrame, ft=ftype, kfs=true, nb=true, ofs=-7}
        -- Guild Log Frame
        self:skinSlider{obj=GuildLogScrollFrameScrollBar, size=2}
        self:addSkinFrame{obj=GuildLogContainer, ft=ftype, nb=true}
        self:addSkinFrame{obj=GuildLogFrame, ft=ftype, kfs=true, nb=true, ofs=-7}

end

function aObj:GuildControlUI() -- LoD
        if not self.db.profile.GuildControlUI or self.initialized.GuildControlUI then return end
        self.initialized.GuildControlUI = true

        GuildControlUI:DisableDrawLayer("BACKGROUND")
        GuildControlUIHbar:SetAlpha(0)
        self:skinDropDown{obj=GuildControlUI.dropdown}
        self:addSkinFrame{obj=GuildControlUI, ft=ftype, kfs=true, x1=10, y1=-10, x2=-10, y2=10}
        -- Guild Ranks Panel
        local function skinROFrames()

                local obj
                for i = 1, MAX_GUILDRANKS do
                        obj = _G["GuildControlUIRankOrderFrameRank"..i]
                        if obj and not aObj.skinned[obj] then
                                aObj:skinEditBox{obj=obj.nameBox, regs={9}, x=-5}
                        end
                end

        end
        self:SecureHook("GuildControlUI_RankOrder_Update", function(...)
                skinROFrames()
        end)
        skinROFrames()
        -- Rank Permissions Panel
        GuildControlUI.rankPermFrame:DisableDrawLayer("BACKGROUND")
        self:skinDropDown{obj=GuildControlUI.rankPermFrame.dropdown}
        self:skinEditBox{obj=GuildControlUI.rankPermFrame.goldBox, regs={9}}
        -- Bank Tab Permissions panel
        self:keepFontStrings(GuildControlUI.bankTabFrame.scrollFrame)
        self:skinSlider{obj=GuildControlUIRankBankFrameInsetScrollFrameScrollBar}
        self:skinDropDown{obj=GuildControlUI.bankTabFrame.dropdown}
        GuildControlUI.bankTabFrame.inset:DisableDrawLayer("BACKGROUND")
        GuildControlUI.bankTabFrame.inset:DisableDrawLayer("BORDER")
        -- hook this as buttons are created as required
        self:SecureHook("GuildControlUI_BankTabPermissions_Update", function(this)
                self:Debug("GuildControlUI_BankTabPermissions_Update: [%s]", this)
                for i = 1, MAX_BUY_GUILDBANK_TABS do
                        btn = _G["GuildControlBankTab"..i]
                        if btn
                        and not self.skinned[btn]
                        then
                                btn:DisableDrawLayer("BACKGROUND")
                                self:skinEditBox{obj=btn.owned.editBox, regs={9}}
                                self:skinButton{obj=btn.buy.button, as=true}
                        end
                end
        end)

end

Compare with Previous | Blame