You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
7.9 KiB

local AS, L, S, R = unpack(AddOnSkins)
local _G = _G
local ipairs, pairs, next = ipairs, pairs, next
local FCF_GetCurrentChatFrame = FCF_GetCurrentChatFrame
local hooksecurefunc = hooksecurefunc
local function ReskinPickerOptions(self)
local scrollTarget = self.ScrollBox.ScrollTarget
if scrollTarget then
for _, child in next, { scrollTarget:GetChildren() } do
if not child.IsSkinned then
child.UnCheck:SetTexture(nil)
child.Highlight:SetColorTexture(1, .82, 0, 0.4)
local check = child.Check
if check then
check:SetColorTexture(1, .82, 0, 0.8)
check:SetSize(10, 10)
S:Point(check, 'LEFT', 2, 0)
S:CreateBackdrop(check)
end
child.IsSkinned = true
end
end
end
end
local function HandleVoicePicker(voicePicker)
local customFrame = voicePicker:GetChildren()
S:HandleFrame(customFrame, true)
voicePicker:HookScript('OnShow', ReskinPickerOptions)
end
function R:Blizzard_ChatConfig()
if not AS:IsSkinEnabled('Blizzard_ChatConfig', 'blizzardOptions') then return end
local ChatConfigFrame = _G.ChatConfigFrame
S:HandleFrame(ChatConfigFrame)
S:StripTextures(ChatConfigFrame.Header)
hooksecurefunc('ChatConfig_UpdateCheckboxes', function(frame)
if not FCF_GetCurrentChatFrame() then return end
local nameString = frame:GetName()..'CheckBox'
for index in ipairs(frame.checkBoxTable) do
local checkBoxName = nameString..index
local checkbox = _G[checkBoxName]
if checkbox and not checkbox.IsSkinned then
S:StripTextures(checkbox)
S:HandleCheckBox(_G[checkBoxName..'Check'])
checkbox.IsSkinned = true
end
end
end)
hooksecurefunc('ChatConfig_CreateTieredCheckboxes', function(frame, checkBoxTable)
if frame.IsSkinned then return end
local nameString = frame:GetName()..'CheckBox'
for index, value in ipairs(checkBoxTable) do
local checkBoxName = nameString..index
S:HandleCheckBox(_G[checkBoxName])
if value.subTypes then
for i in ipairs(value.subTypes) do
S:HandleCheckBox(_G[checkBoxName..'_'..i])
end
end
end
frame.IsSkinned = true
end)
hooksecurefunc(_G.ChatConfigFrameChatTabManager, 'UpdateWidth', function(frame)
for tab in frame.tabPool:EnumerateActive() do
if not tab.IsSkinned then
S:StripTextures(tab)
tab.IsSkinned = true
end
end
end)
for i = 1, 5 do
local tab = _G['CombatConfigTab'..i]
if tab then
S:StripTextures(tab)
local text = tab.Text
if text then
text:SetWidth(text:GetWidth() + 10)
end
end
end
for _, frame in pairs({ -- backdrops
_G.ChatConfigCategoryFrame,
_G.ChatConfigBackgroundFrame,
_G.ChatConfigCombatSettingsFilters,
_G.CombatConfigColorsHighlighting,
_G.CombatConfigColorsColorizeUnitName,
_G.CombatConfigColorsColorizeSpellNames,
_G.CombatConfigColorsColorizeDamageNumber,
_G.CombatConfigColorsColorizeDamageSchool,
_G.CombatConfigColorsColorizeEntireLine,
_G.ChatConfigChatSettingsLeft,
_G.ChatConfigOtherSettingsCombat,
_G.ChatConfigOtherSettingsPVP,
_G.ChatConfigOtherSettingsSystem,
_G.ChatConfigOtherSettingsCreature,
_G.ChatConfigChannelSettingsLeft,
_G.CombatConfigMessageSourcesDoneBy,
_G.CombatConfigColorsUnitColors,
_G.CombatConfigMessageSourcesDoneTo,
}) do
S:StripTextures(frame)
end
S:CreateBackdrop(_G.ChatConfigCategoryFrame)
S:SetInside(_G.ChatConfigCategoryFrame.backdrop)
S:CreateBackdrop(_G.ChatConfigBackgroundFrame)
S:SetInside(_G.ChatConfigBackgroundFrame.backdrop)
S:CreateBackdrop(_G.ChatConfigCombatSettingsFilters)
S:SetInside(_G.ChatConfigCombatSettingsFilters.backdrop)
for _, box in pairs({ -- combat boxes
_G.CombatConfigColorsHighlightingLine,
_G.CombatConfigColorsHighlightingAbility,
_G.CombatConfigColorsHighlightingDamage,
_G.CombatConfigColorsHighlightingSchool,
_G.CombatConfigColorsColorizeUnitNameCheck,
_G.CombatConfigColorsColorizeSpellNamesCheck,
_G.CombatConfigColorsColorizeSpellNamesSchoolColoring,
_G.CombatConfigColorsColorizeDamageNumberCheck,
_G.CombatConfigColorsColorizeDamageNumberSchoolColoring,
_G.CombatConfigColorsColorizeDamageSchoolCheck,
_G.CombatConfigColorsColorizeEntireLineCheck,
_G.CombatConfigFormattingShowTimeStamp,
_G.CombatConfigFormattingShowBraces,
_G.CombatConfigFormattingUnitNames,
_G.CombatConfigFormattingSpellNames,
_G.CombatConfigFormattingItemNames,
_G.CombatConfigFormattingFullText,
_G.CombatConfigSettingsShowQuickButton,
_G.CombatConfigSettingsSolo,
_G.CombatConfigSettingsParty,
_G.CombatConfigSettingsRaid
}) do
S:HandleCheckBox(box)
end
hooksecurefunc('ChatConfig_UpdateSwatches', function(frame)
if not frame.swatchTable then return end
local nameString = frame:GetName()..'Swatch'
for index in ipairs(frame.swatchTable) do
local bu = _G[nameString..index]
if bu and not bu.backdrop then
S:HandleFrame(bu, true)
S:SetInside(bu.backdrop)
bu.backdrop = true
end
end
end)
S:HandleButton(_G.CombatLogDefaultButton)
S:HandleButton(_G.ChatConfigCombatSettingsFiltersCopyFilterButton)
S:HandleButton(_G.ChatConfigCombatSettingsFiltersAddFilterButton)
S:HandleButton(_G.ChatConfigCombatSettingsFiltersDeleteButton)
S:HandleButton(_G.CombatConfigSettingsSaveButton)
S:HandleButton(_G.ChatConfigFrameOkayButton)
S:HandleButton(_G.ChatConfigFrameDefaultButton)
S:HandleButton(_G.ChatConfigFrameRedockButton)
S:HandleButton(_G.ChatConfigFrame.ToggleChatButton)
S:HandleNextPrevButton(_G.ChatConfigMoveFilterUpButton, 'up')
S:HandleNextPrevButton(_G.ChatConfigMoveFilterDownButton, 'down')
_G.ChatConfigMoveFilterUpButton:SetSize(22, 22)
_G.ChatConfigMoveFilterDownButton:SetSize(22, 22)
S:Point(_G.ChatConfigCombatSettingsFiltersAddFilterButton, 'RIGHT', _G.ChatConfigCombatSettingsFiltersDeleteButton, 'LEFT', -1, 0)
S:Point(_G.ChatConfigCombatSettingsFiltersCopyFilterButton, 'RIGHT', _G.ChatConfigCombatSettingsFiltersAddFilterButton, 'LEFT', -1, 0)
S:Point(_G.ChatConfigMoveFilterUpButton, 'TOPLEFT', _G.ChatConfigCombatSettingsFilters, 'BOTTOMLEFT', 3, 0)
S:Point(_G.ChatConfigMoveFilterDownButton, 'LEFT', _G.ChatConfigMoveFilterUpButton, 'RIGHT', 1, 0)
S:HandleEditBox(_G.CombatConfigSettingsNameEditBox)
S:HandleRadioButton(_G.CombatConfigColorsColorizeEntireLineBySource)
S:HandleRadioButton(_G.CombatConfigColorsColorizeEntireLineByTarget)
S:HandleTrimScrollBar(_G.ChatConfigCombatSettingsFilters.ScrollBar)
-- TextToSpeech
S:StripTextures(_G.TextToSpeechButton)
S:HandleButton(_G.TextToSpeechFramePlaySampleButton)
S:HandleButton(_G.TextToSpeechFramePlaySampleAlternateButton)
S:HandleButton(_G.TextToSpeechDefaultButton)
S:HandleCheckBox(_G.TextToSpeechCharacterSpecificButton)
S:HandleDropDownBox(_G.TextToSpeechFrameTtsVoiceDropdown)
S:HandleDropDownBox(_G.TextToSpeechFrameTtsVoiceAlternateDropdown)
S:HandleSliderFrame(_G.TextToSpeechFrameAdjustRateSlider)
S:HandleSliderFrame(_G.TextToSpeechFrameAdjustVolumeSlider)
for _, checkbox in pairs({ -- check boxes
'PlayActivitySoundWhenNotFocusedCheckButton',
'PlaySoundSeparatingChatLinesCheckButton',
'AddCharacterNameToSpeechCheckButton',
'NarrateMyMessagesCheckButton',
'UseAlternateVoiceForSystemMessagesCheckButton',
}) do
S:HandleCheckBox(_G.TextToSpeechFramePanelContainer[checkbox])
end
hooksecurefunc('TextToSpeechFrame_UpdateMessageCheckboxes', function(frame)
if not frame.checkBoxTable then return end
local nameString = frame:GetName()..'CheckBox'
for index in ipairs(frame.checkBoxTable) do
local checkBox = _G[nameString..index]
if checkBox and not checkBox.IsSkinned then
S:HandleCheckBox(checkBox)
checkBox.IsSkinned = true
end
end
end)
HandleVoicePicker(_G.TextToSpeechFrameTtsVoicePicker)
HandleVoicePicker(_G.TextToSpeechFrameTtsVoiceAlternatePicker)
S:StripTextures(_G.ChatConfigTextToSpeechChannelSettingsLeft)
end
AS:RegisterSkin('Blizzard_ChatConfig')