ElvUI/Modules/Skins/Blizzard/BlizzardOptions.lua

390 lines
14 KiB
Lua

local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule('Skins')
local _G = _G
local select = select
local ipairs = ipairs
local pairs = pairs
local hooksecurefunc = hooksecurefunc
local InCombatLockdown = InCombatLockdown
local UnitIsUnit = UnitIsUnit
local function HandlePushToTalkButton(button)
button:Size(button:GetSize())
button.TopLeft:Hide()
button.TopRight:Hide()
button.BottomLeft:Hide()
button.BottomRight:Hide()
button.TopMiddle:Hide()
button.MiddleLeft:Hide()
button.MiddleRight:Hide()
button.BottomMiddle:Hide()
button.MiddleMiddle:Hide()
button:SetHighlightTexture('')
button:CreateBackdrop(nil, true)
button:HookScript('OnEnter', S.SetModifiedBackdrop)
button:HookScript('OnLeave', S.SetOriginalBackdrop)
end
function S.AudioOptionsVoicePanel_InitializeCommunicationModeUI(btn)
HandlePushToTalkButton(btn.PushToTalkKeybindButton)
end
function S:BlizzardOptions()
if not (E.private.skins.blizzard.enable and E.private.skins.blizzard.blizzardOptions) then return end
-- here we reskin all 'normal' buttons
S:HandleButton(_G.ReadyCheckFrameYesButton)
S:HandleButton(_G.ReadyCheckFrameNoButton)
S:HandleButton(_G.RolePollPopupAcceptButton)
S:HandleButton(_G.LFDReadyCheckPopup.YesButton)
S:HandleButton(_G.LFDReadyCheckPopup.NoButton)
local ReadyCheckFrame = _G.ReadyCheckFrame
_G.ReadyCheckFrameYesButton:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameNoButton:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameYesButton:ClearAllPoints()
_G.ReadyCheckFrameNoButton:ClearAllPoints()
_G.ReadyCheckFrameYesButton:Point('TOPRIGHT', ReadyCheckFrame, 'CENTER', -3, -5)
_G.ReadyCheckFrameNoButton:Point('TOPLEFT', ReadyCheckFrame, 'CENTER', 3, -5)
_G.ReadyCheckFrameText:SetParent(ReadyCheckFrame)
_G.ReadyCheckFrameText:ClearAllPoints()
_G.ReadyCheckFrameText:Point('TOP', 0, -15)
_G.ReadyCheckListenerFrame:SetAlpha(0)
ReadyCheckFrame:HookScript('OnShow', function(rcf)
-- bug fix, don't show it if player is initiator
if rcf.initiator and UnitIsUnit('player', rcf.initiator) then
rcf:Hide()
end
end)
_G.RolePollPopup:StripTextures()
_G.RolePollPopup:CreateBackdrop('Transparent')
S:HandleCloseButton(_G.RolePollPopupCloseButton)
_G.InterfaceOptionsFrame:SetClampedToScreen(true)
_G.InterfaceOptionsFrame:SetMovable(true)
_G.InterfaceOptionsFrame:EnableMouse(true)
_G.InterfaceOptionsFrame:RegisterForDrag('LeftButton', 'RightButton')
_G.InterfaceOptionsFrame:SetScript('OnDragStart', function(iof)
if InCombatLockdown() then return end
iof:StartMoving()
iof.isMoving = true
end)
_G.InterfaceOptionsFrame:SetScript('OnDragStop', function(iof)
iof:StopMovingOrSizing()
iof.isMoving = false
end)
--Chat Config
local ChatConfigFrame = _G.ChatConfigFrame
ChatConfigFrame.Header = ChatConfigFrame.Header
ChatConfigFrame.Header:StripTextures()
ChatConfigFrame.Header:Point('TOP', ChatConfigFrame, 0, 0)
hooksecurefunc(_G.ChatConfigFrameChatTabManager, 'UpdateWidth', function(tm)
for tab in tm.tabPool:EnumerateActive() do
if not tab.IsSkinned then
tab:StripTextures()
tab.IsSkinned = true
end
end
end)
-- Chat Config
local ChatFrames = {
_G.ChatConfigFrame,
_G.ChatConfigCategoryFrame,
_G.ChatConfigBackgroundFrame,
_G.ChatConfigCombatSettingsFilters,
_G.ChatConfigCombatSettingsFiltersScrollFrame,
_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,
}
local ChatButtons = {
_G.ChatConfigFrameDefaultButton,
_G.ChatConfigFrameRedockButton,
_G.ChatConfigFrameOkayButton,
_G.ChatConfigCombatSettingsFiltersDeleteButton,
_G.ChatConfigCombatSettingsFiltersAddFilterButton,
_G.ChatConfigCombatSettingsFiltersCopyFilterButton,
_G.CombatConfigSettingsSaveButton,
_G.CombatLogDefaultButton,
}
local ChatCheckBoxs = {
_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,
}
for _, Frame in pairs(ChatFrames) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
for _, CheckBox in pairs(ChatCheckBoxs) do
S:HandleCheckBox(CheckBox)
end
for _, Button in pairs(ChatButtons) do
S:HandleButton(Button)
end
for i in pairs(_G.COMBAT_CONFIG_TABS) do
S:HandleTab(_G['CombatConfigTab'..i])
_G['CombatConfigTab'..i].backdrop:Point('TOPLEFT', 0, -10)
_G['CombatConfigTab'..i].backdrop:Point('BOTTOMRIGHT', -2, 3)
_G['CombatConfigTab'..i..'Text']:Point('BOTTOM', 0, 10)
end
_G.CombatConfigTab1:ClearAllPoints()
_G.CombatConfigTab1:Point('BOTTOMLEFT', _G.ChatConfigBackgroundFrame, 'TOPLEFT', 6, -2)
S:HandleEditBox(_G.CombatConfigSettingsNameEditBox)
S:HandleNextPrevButton(_G.ChatConfigMoveFilterUpButton)
S:HandleNextPrevButton(_G.ChatConfigMoveFilterDownButton)
_G.ChatConfigMoveFilterUpButton:Size(19, 19)
_G.ChatConfigMoveFilterDownButton:Size(19, 19)
_G.ChatConfigMoveFilterUpButton:Point('TOPLEFT', '$parent', 'BOTTOMLEFT', 0, -3)
_G.ChatConfigMoveFilterDownButton:Point('LEFT', _G.ChatConfigMoveFilterUpButton, 'RIGHT', 3, 0)
_G.ChatConfigFrameOkayButton:Point('RIGHT', '$parentCancelButton', 'RIGHT', -1, -3)
_G.ChatConfigFrameDefaultButton:Point('BOTTOMLEFT', 12, 10)
_G.ChatConfigCombatSettingsFiltersDeleteButton:Point('TOPRIGHT', '$parent', 'BOTTOMRIGHT', -3, -1)
_G.ChatConfigCombatSettingsFiltersAddFilterButton:Point('RIGHT', '$parentDeleteButton', 'LEFT', -2, 0)
_G.ChatConfigCombatSettingsFiltersCopyFilterButton:Point('RIGHT', '$parentAddFilterButton', 'LEFT', -2, 0)
S:HandleScrollBar(_G.ChatConfigCombatSettingsFiltersScrollFrameScrollBar)
hooksecurefunc('ChatConfig_UpdateCheckboxes', function(frame)
if not _G.FCF_GetCurrentChatFrame() then return end
for index in ipairs(frame.checkBoxTable) do
local checkBoxNameString = frame:GetName()..'CheckBox'
local checkBoxName = checkBoxNameString..index
local checkBox = _G[checkBoxName]
local check = _G[checkBoxName..'Check']
if checkBox and not checkBox.isSkinned then
checkBox:StripTextures()
S:HandleCheckBox(check)
if _G[checkBoxName..'ColorClasses'] then
S:HandleCheckBox(_G[checkBoxName..'ColorClasses'])
end
checkBox.isSkinned = true
end
end
end)
hooksecurefunc('ChatConfig_UpdateTieredCheckboxes', function(frame, index)
local group = frame.checkBoxTable[index]
local checkBox = _G[frame:GetName()..'CheckBox'..index]
if checkBox then
S:HandleCheckBox(checkBox)
end
if group.subTypes then
for k in ipairs(group.subTypes) do
S:HandleCheckBox(_G[frame:GetName()..'CheckBox'..index..'_'..k])
end
end
end)
hooksecurefunc('ChatConfig_UpdateSwatches', function(frame)
if not _G.FCF_GetCurrentChatFrame() then return end
for index in ipairs(frame.swatchTable) do
_G[frame:GetName()..'Swatch'..index]:StripTextures()
end
end)
local OptionsFrames = { _G.InterfaceOptionsFrame, _G.InterfaceOptionsFrameCategories, _G.InterfaceOptionsFramePanelContainer, _G.InterfaceOptionsFrameAddOns, _G.VideoOptionsFrame, _G.VideoOptionsFrameCategoryFrame, _G.VideoOptionsFramePanelContainer, _G.Display_, _G.Graphics_, _G.RaidGraphics_ }
local OptionsFrameBackdrops = { _G.AudioOptionsSoundPanelHardware, _G.AudioOptionsSoundPanelVolume, _G.AudioOptionsSoundPanelPlayback, _G.AudioOptionsVoicePanelTalking, _G.AudioOptionsVoicePanelListening, _G.AudioOptionsVoicePanelBinding }
local OptionsButtons = { _G.GraphicsButton, _G.RaidButton }
local InterfaceOptions = {
_G.InterfaceOptionsFrame,
_G.InterfaceOptionsControlsPanel,
_G.InterfaceOptionsCombatPanel,
_G.InterfaceOptionsCombatPanelEnemyCastBars,
_G.InterfaceOptionsCombatTextPanel,
_G.InterfaceOptionsDisplayPanel,
_G.InterfaceOptionsObjectivesPanel,
_G.InterfaceOptionsSocialPanel,
_G.InterfaceOptionsActionBarsPanel,
_G.InterfaceOptionsNamesPanel,
_G.InterfaceOptionsNamesPanelFriendly,
_G.InterfaceOptionsNamesPanelEnemy,
_G.InterfaceOptionsNamesPanelUnitNameplates,
_G.InterfaceOptionsBattlenetPanel,
_G.InterfaceOptionsCameraPanel,
_G.InterfaceOptionsMousePanel,
_G.InterfaceOptionsHelpPanel,
_G.InterfaceOptionsAccessibilityPanel,
_G.VideoOptionsFrame,
_G.Display_,
_G.Graphics_,
_G.RaidGraphics_,
_G.Advanced_,
_G.NetworkOptionsPanel,
_G.InterfaceOptionsLanguagesPanel,
_G.AudioOptionsSoundPanel,
_G.AudioOptionsSoundPanelHardware,
_G.AudioOptionsSoundPanelVolume,
_G.AudioOptionsSoundPanelPlayback,
_G.AudioOptionsVoicePanel,
_G.AudioOptionsVoicePanelTalking,
_G.AudioOptionsVoicePanelListening,
_G.AudioOptionsVoicePanelBinding,
_G.AudioOptionsVoicePanelMicTest,
_G.AudioOptionsVoicePanelChatMode1,
_G.AudioOptionsVoicePanelChatMode2,
_G.CompactUnitFrameProfiles,
_G.CompactUnitFrameProfilesGeneralOptionsFrame,
}
for _, Frame in pairs(OptionsFrames) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
local InterfaceOptionsFrame = _G.InterfaceOptionsFrame
InterfaceOptionsFrame.Header = InterfaceOptionsFrame.Header
InterfaceOptionsFrame.Header:StripTextures()
InterfaceOptionsFrame.Header:ClearAllPoints()
InterfaceOptionsFrame.Header:Point('TOP', InterfaceOptionsFrame, 0, 0)
local VideoOptionsFrame = _G.VideoOptionsFrame
VideoOptionsFrame.Header:StripTextures()
VideoOptionsFrame.Header:ClearAllPoints()
VideoOptionsFrame.Header:Point('TOP', VideoOptionsFrame, 0, 0)
for _, Frame in pairs(OptionsFrameBackdrops) do
Frame:StripTextures()
Frame:CreateBackdrop('Transparent')
end
for _, Tab in pairs(OptionsButtons) do
S:HandleButton(Tab)
end
for _, Panel in pairs(InterfaceOptions) do
if Panel then
for i = 1, Panel:GetNumChildren() do
local Child = select(i, Panel:GetChildren())
if Child:IsObjectType('CheckButton') then
S:HandleCheckBox(Child)
elseif Child:IsObjectType('Button') then
S:HandleButton(Child)
elseif Child:IsObjectType('Slider') then
S:HandleSliderFrame(Child)
elseif Child:IsObjectType('Tab') then
S:HandleTab(Child)
elseif Child:IsObjectType('Frame') and Child.Left and Child.Middle and Child.Right then
S:HandleDropDownBox(Child)
end
end
end
end
_G.InterfaceOptionsFrameTab1:Point('BOTTOMLEFT', _G.InterfaceOptionsFrameCategories, 'TOPLEFT', 6, 1)
_G.InterfaceOptionsFrameTab1:StripTextures()
_G.InterfaceOptionsFrameTab2:Point('TOPLEFT', _G.InterfaceOptionsFrameTab1, 'TOPRIGHT', 1, 0)
_G.InterfaceOptionsFrameTab2:StripTextures()
_G.InterfaceOptionsSocialPanel.EnableTwitter.Logo:SetAtlas('WoWShare-TwitterLogo')
--Create New Raid Profle
local newProfileDialog = _G.CompactUnitFrameProfilesNewProfileDialog
if newProfileDialog then
newProfileDialog:StripTextures()
newProfileDialog:CreateBackdrop('Transparent')
S:HandleDropDownBox(_G.CompactUnitFrameProfilesNewProfileDialogBaseProfileSelector)
S:HandleButton(_G.CompactUnitFrameProfilesNewProfileDialogCreateButton)
S:HandleButton(_G.CompactUnitFrameProfilesNewProfileDialogCancelButton)
if newProfileDialog.editBox then
S:HandleEditBox(newProfileDialog.editBox)
newProfileDialog.editBox:Size(210, 25)
end
end
--Delete Raid Profile
local deleteProfileDialog = _G.CompactUnitFrameProfilesDeleteProfileDialog
if deleteProfileDialog then
deleteProfileDialog:StripTextures()
deleteProfileDialog:CreateBackdrop('Transparent')
S:HandleButton(_G.CompactUnitFrameProfilesDeleteProfileDialogDeleteButton)
S:HandleButton(_G.CompactUnitFrameProfilesDeleteProfileDialogCancelButton)
end
local AudioOptionsFrame = _G.AudioOptionsFrame
AudioOptionsFrame.Header = AudioOptionsFrame.Header
AudioOptionsFrame.Header:SetAlpha(0)
AudioOptionsFrame.Header:ClearAllPoints()
AudioOptionsFrame.Header:Point('TOP', AudioOptionsFrame, 0, 0)
-- Toggle Test Audio Button - Wow 8.0
S:HandleButton(_G.AudioOptionsVoicePanel.TestInputDevice.ToggleTest)
local VUMeter = _G.AudioOptionsVoicePanelTestInputDevice.VUMeter
VUMeter:SetBackdrop()
VUMeter.Status:CreateBackdrop()
VUMeter.Status:SetStatusBarTexture(E.media.normTex)
E:RegisterStatusBar(VUMeter.Status)
-- PushToTalk KeybindButton - Wow 8.0
hooksecurefunc('AudioOptionsVoicePanel_InitializeCommunicationModeUI', S.AudioOptionsVoicePanel_InitializeCommunicationModeUI)
--What's New
local SplashFrame = _G.SplashFrame
SplashFrame:CreateBackdrop('Transparent')
SplashFrame.Header:FontTemplate(nil, 22)
S:HandleButton(SplashFrame.BottomCloseButton)
S:HandleCloseButton(SplashFrame.TopCloseButton)
SplashFrame.BottomCloseButton:SetFrameLevel(SplashFrame.BottomCloseButton:GetFrameLevel() + 1)
-- New Voice Sliders
S:HandleSliderFrame(_G.UnitPopupVoiceSpeakerVolume.Slider)
S:HandleSliderFrame(_G.UnitPopupVoiceMicrophoneVolume.Slider)
S:HandleSliderFrame(_G.UnitPopupVoiceUserVolume.Slider)
end
S:AddCallback('BlizzardOptions')