local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local S = E:GetModule("Skins") --Lua functions local _G = _G local ipairs = ipairs local find = string.find --WoW API / Variables local InCombatLockdown = InCombatLockdown local hooksecurefunc = hooksecurefunc S:AddCallback("Skin_BlizzardOptions", function() if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.BlizzardOptions then return end -- Game Menu Interface/Tabs for i = 1, 2 do local tab = _G["InterfaceOptionsFrameTab"..i] tab:StripTextures() S:HandleTab(tab) tab.backdrop:SetTemplate("Transparent") tab.backdrop:Point("TOPLEFT", 10, E.PixelMode and -4 or -6) tab.backdrop:Point("BOTTOMRIGHT", -10, 1) S:SetBackdropHitRect(tab) if i == 1 then tab:Point("BOTTOMLEFT", InterfaceOptionsFrameCategories, "TOPLEFT", -11, -2) end end -- Game Menu Plus / Minus Buttons for _, button in ipairs(InterfaceOptionsFrameAddOns.buttons) do button.toggle:SetNormalTexture("") button.toggle.SetNormalTexture = E.noop button.toggle:SetPushedTexture("") button.toggle.SetPushedTexture = E.noop button.toggle:SetHighlightTexture(nil) local text = button.toggle:CreateFontString(nil, "OVERLAY") text:FontTemplate(nil, 22) text:SetPoint("CENTER") text:SetText("+") button.toggle.text = text hooksecurefunc(button.toggle, "SetNormalTexture", function(self, texture) if find(texture, "MinusButton") then self.text:SetText("-") else self.text:SetText("+") end end) end -- Interface Options Frame local frames = { InterfaceOptionsFrame, AudioOptionsFrame, VideoOptionsFrame } for _, frame in ipairs(frames) do frame:SetTemplate("Transparent") frame:SetClampedToScreen(true) frame:SetMovable(true) frame:EnableMouse(true) frame:RegisterForDrag("LeftButton", "RightButton") frame:SetScript("OnDragStart", function(self) if InCombatLockdown() then return end self:StartMoving() end) frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end) end local optionHeaders = { InterfaceOptionsFrameHeader, AudioOptionsFrameHeader, VideoOptionsFrameHeader, } for _, header in ipairs(optionHeaders) do header:SetTexture("") header:SetPoint("TOP", 0, 0) end local optionFrames = { "InterfaceOptionsFrameCategories", "InterfaceOptionsFrameAddOns", "InterfaceOptionsFramePanelContainer", "AudioOptionsFrameCategoryFrame", "AudioOptionsFramePanelContainer", "AudioOptionsSoundPanelPlayback", "AudioOptionsSoundPanelHardware", "AudioOptionsSoundPanelVolume", "VideoOptionsFrameCategoryFrame", "VideoOptionsFramePanelContainer", "VideoOptionsResolutionPanelBrightness", "VideoOptionsEffectsPanelQuality", "VideoOptionsEffectsPanelShaders", } for _, frame in ipairs(optionFrames) do frame = _G[frame] if frame then frame:StripTextures() frame:CreateBackdrop("Transparent") if frame == VideoOptionsFramePanelContainer or frame == InterfaceOptionsFramePanelContainer then frame.backdrop:Point("TOPLEFT", 0, 0) frame.backdrop:Point("BOTTOMRIGHT", 0, 0) else frame.backdrop:Point("TOPLEFT", -1, 0) frame.backdrop:Point("BOTTOMRIGHT", 0, 1) end end end local checkboxes = { "InterfaceOptionsControlsPanelStickyTargeting", "InterfaceOptionsControlsPanelAutoDismount", "InterfaceOptionsControlsPanelAutoClearAFK", "InterfaceOptionsControlsPanelBlockTrades", "InterfaceOptionsControlsPanelLootAtMouse", "InterfaceOptionsControlsPanelAutoLootCorpse", "InterfaceOptionsControlsPanelTabTargetFacing", "InterfaceOptionsControlsPanelTabTargetCombat", "InterfaceOptionsControlsPanelTabTargetPlayers", "InterfaceOptionsControlsPanelHoldToCast", "InterfaceOptionsCombatPanelAttackOnAssist", "InterfaceOptionsCombatPanelAutoRange", "InterfaceOptionsCombatPanelStopAutoAttack", "InterfaceOptionsCombatPanelNameplateClassColors", "InterfaceOptionsCombatPanelAutoSelfCast", "InterfaceOptionsCombatPanelTargetOfTarget", "InterfaceOptionsCombatPanelEnemyCastBarsOnPortrait", "InterfaceOptionsCombatPanelEnemyCastBarsOnNameplates", "InterfaceOptionsCombatPanelAoEIndicatorsSelf", "InterfaceOptionsCombatPanelAoEIndicatorsEnemies", "InterfaceOptionsCombatPanelAoEIndicatorsFriendly", "InterfaceOptionsDisplayPanelShowCloak", "InterfaceOptionsDisplayPanelShowHelm", "InterfaceOptionsDisplayPanelShowAggroPercentage", "InterfaceOptionsDisplayPanelPlayAggroSounds", "InterfaceOptionsDisplayPanelDetailedLootInfo", "InterfaceOptionsDisplayPanelShowFreeBagSpace", "InterfaceOptionsDisplayPanelCinematicSubtitles", "InterfaceOptionsDisplayPanelRotateMinimap", "InterfaceOptionsDisplayPanelScreenEdgeFlash", "InterfaceOptionsDisplayPanelShowClock", "InterfaceOptionsDisplayPanelColorblindMode", "InterfaceOptionsDisplayPanelShowItemLevel", "InterfaceOptionsDisplayPanelHighlightNewItems", "InterfaceOptionsObjectivesPanelInstantQuestText", "InterfaceOptionsObjectivesPanelAutoQuestTracking", "InterfaceOptionsObjectivesPanelAutoQuestProgress", "InterfaceOptionsObjectivesPanelMapQuestDifficulty", "InterfaceOptionsObjectivesPanelAdvancedWorldMap", "InterfaceOptionsObjectivesPanelWatchFrameWidth", "InterfaceOptionsObjectivesPanelPTAQuests", "InterfaceOptionsSocialPanelProfanityFilter", "InterfaceOptionsSocialPanelSpamFilter", "InterfaceOptionsSocialPanelChatBubbles", "InterfaceOptionsSocialPanelPartyChat", "InterfaceOptionsSocialPanelChatHoverDelay", "InterfaceOptionsSocialPanelGuildMemberAlert", "InterfaceOptionsSocialPanelGuildRecruitment", "InterfaceOptionsSocialPanelChatMouseScroll", "InterfaceOptionsSocialPanelWholeChatWindowClickable", "InterfaceOptionsActionBarsPanelLockActionBars", "InterfaceOptionsActionBarsPanelSecureAbilityToggle", "InterfaceOptionsActionBarsPanelAlwaysShowActionBars", "InterfaceOptionsActionBarsPanelBottomLeft", "InterfaceOptionsActionBarsPanelBottomRight", "InterfaceOptionsActionBarsPanelRight", "InterfaceOptionsActionBarsPanelRightTwo", "InterfaceOptionsNamesPanelMyName", "InterfaceOptionsNamesPanelFriendlyPlayerNames", "InterfaceOptionsNamesPanelFriendlyPets", "InterfaceOptionsNamesPanelFriendlyGuardians", "InterfaceOptionsNamesPanelFriendlyTotems", "InterfaceOptionsNamesPanelGuilds", "InterfaceOptionsNamesPanelNPCNames", "InterfaceOptionsNamesPanelUnitNameplatesAllowOverlap", "InterfaceOptionsNamesPanelTitles", "InterfaceOptionsNamesPanelNonCombatCreature", "InterfaceOptionsNamesPanelEnemyPlayerNames", "InterfaceOptionsNamesPanelEnemyPets", "InterfaceOptionsNamesPanelEnemyGuardians", "InterfaceOptionsNamesPanelEnemyTotems", "InterfaceOptionsCombatTextPanelTargetDamage", "InterfaceOptionsCombatTextPanelPeriodicDamage", "InterfaceOptionsCombatTextPanelPetDamage", "InterfaceOptionsCombatTextPanelHealing", "InterfaceOptionsCombatTextPanelTargetEffects", "InterfaceOptionsCombatTextPanelOtherTargetEffects", "InterfaceOptionsCombatTextPanelEnableFCT", "InterfaceOptionsCombatTextPanelDodgeParryMiss", "InterfaceOptionsCombatTextPanelDamageReduction", "InterfaceOptionsCombatTextPanelRepChanges", "InterfaceOptionsCombatTextPanelReactiveAbilities", "InterfaceOptionsCombatTextPanelFriendlyHealerNames", "InterfaceOptionsCombatTextPanelCombatState", "InterfaceOptionsCombatTextPanelComboPoints", "InterfaceOptionsCombatTextPanelLowManaHealth", "InterfaceOptionsCombatTextPanelEnergyGains", "InterfaceOptionsCombatTextPanelPeriodicEnergyGains", "InterfaceOptionsCombatTextPanelHonorGains", "InterfaceOptionsCombatTextPanelAuras", "InterfaceOptionsBuffsPanelBuffDurations", "InterfaceOptionsBuffsPanelDispellableDebuffs", "InterfaceOptionsBuffsPanelCastableBuffs", "InterfaceOptionsBuffsPanelConsolidateBuffs", "InterfaceOptionsBuffsPanelShowCastableDebuffs", "InterfaceOptionsCameraPanelFollowTerrain", "InterfaceOptionsCameraPanelHeadBob", "InterfaceOptionsCameraPanelWaterCollision", "InterfaceOptionsCameraPanelSmartPivot", "InterfaceOptionsMousePanelInvertMouse", "InterfaceOptionsMousePanelClickToMove", "InterfaceOptionsMousePanelWoWMouse", "InterfaceOptionsHelpPanelShowTutorials", "InterfaceOptionsHelpPanelLoadingScreenTips", "InterfaceOptionsHelpPanelEnhancedTooltips", "InterfaceOptionsHelpPanelBeginnerTooltips", "InterfaceOptionsHelpPanelShowLuaErrors", "InterfaceOptionsStatusTextPanelPlayer", "InterfaceOptionsStatusTextPanelPet", "InterfaceOptionsStatusTextPanelParty", "InterfaceOptionsStatusTextPanelTarget", "InterfaceOptionsStatusTextPanelPercentages", "InterfaceOptionsStatusTextPanelXP", "InterfaceOptionsUnitFramePanelPartyBackground", "InterfaceOptionsUnitFramePanelPartyPets", "InterfaceOptionsUnitFramePanelArenaEnemyFrames", "InterfaceOptionsUnitFramePanelArenaEnemyCastBar", "InterfaceOptionsUnitFramePanelArenaEnemyPets", "InterfaceOptionsUnitFramePanelPartyInRaid", "InterfaceOptionsUnitFramePanelRaidRange", "InterfaceOptionsUnitFramePanelFullSizeFocusFrame", "InterfaceOptionsFeaturesPanelPreviewTalentChanges", "InterfaceOptionsFeaturesPanelEquipmentManager", "InterfaceOptionsAscensionNotificationPanelLootToast", "InterfaceOptionsAscensionLoseControlPanelEnabled", "InterfaceOptionsAscensionLoseControlPanelEnableRoots", "InterfaceOptionsAscensionLoseControlPanelEnableSilence", "InterfaceOptionsAscensionLoseControlPanelEnableIncap", "InterfaceOptionsAscensionLoseControlPanelEnableDisarm", "InterfaceOptionsAscensionLoseControlPanelEnableDisorient", "InterfaceOptionsAscensionLoseControlPanelEnableSlow", "InterfaceOptionsAscensionLoseControlPanelEnableStun", "InterfaceOptionsAscensionLoseControlPanelEnablePacify", "InterfaceOptionsDraftPanelAutoPopupDraft", "InterfaceOptionsDraftPanelAutoRevealDraft", "InterfaceOptionsDraftPanelSkipDraftConfirmation", "InterfaceOptionsDraftPanelSkipDraftSacrificeConfirmation", "InterfaceOptionsDraftPanelShowBuildDraftSpellCards", "InterfaceOptionsNamePlatePanelAllowOverlap", "InterfaceOptionsNamePlatePanelFriends", "InterfaceOptionsNamePlatePanelFriendlyPets", "InterfaceOptionsNamePlatePanelFriendlyGuardians", "InterfaceOptionsNamePlatePanelFriendlyTotems", "InterfaceOptionsNamePlatePanelEnemies", "InterfaceOptionsNamePlatePanelEnemyPets", "InterfaceOptionsNamePlatePanelEnemyGuardians", "InterfaceOptionsNamePlatePanelEnemyTotems", "InterfaceOptionsNamePlatePanelIntersectUseCamera", "InterfaceOptionsActionCameraEnableActionCam", "InterfaceOptionsActionCameraHeadBob", "InterfaceOptionsActionCameraFocusInteractable", "InterfaceOptionsActionCameraFocusTarget", "InterfaceOptionsMouseoverCastPanelMouseoverCastFriendly", "InterfaceOptionsMouseoverCastPanelMouseoverCastHarm", "AudioOptionsSoundPanelEnableSound", "AudioOptionsSoundPanelSoundEffects", "AudioOptionsSoundPanelErrorSpeech", "AudioOptionsSoundPanelEmoteSounds", "AudioOptionsSoundPanelPetSounds", "AudioOptionsSoundPanelMusic", "AudioOptionsSoundPanelLoopMusic", "AudioOptionsSoundPanelAmbientSounds", "AudioOptionsSoundPanelSoundInBG", "AudioOptionsSoundPanelReverb", "AudioOptionsSoundPanelHRTF", "AudioOptionsSoundPanelEnableDSPs", "AudioOptionsSoundPanelUseHardware", "VideoOptionsResolutionPanelVSync", "VideoOptionsResolutionPanelTripleBuffer", "VideoOptionsResolutionPanelHardwareCursor", "VideoOptionsResolutionPanelFixInputLag", "VideoOptionsResolutionPanelUseUIScale", "VideoOptionsResolutionPanelWindowed", "VideoOptionsResolutionPanelMaximized", "VideoOptionsResolutionPanelDisableResize", "VideoOptionsResolutionPanelDesktopGamma", "VideoOptionsEffectsPanelSpecularLighting", "VideoOptionsEffectsPanelFullScreenGlow", "VideoOptionsEffectsPanelDeathEffect", "VideoOptionsEffectsPanelProjectedTextures", "InterfaceOptionsAscensionHelpPanelNewPlayerExperience", "InterfaceOptionsAscensionHelpPanelHelpTips" } for _, checkbox in ipairs(checkboxes) do checkbox = _G[checkbox] if checkbox then S:HandleCheckBox(checkbox) end end local sliders = { "InterfaceOptionsCameraPanelMaxDistanceSlider", "InterfaceOptionsCameraPanelFollowSpeedSlider", "InterfaceOptionsCameraPanelFoV", "InterfaceOptionsControlsPanelTabTargetRange", "InterfaceOptionsControlsPanelTabTargetAngle", "InterfaceOptionsCombatPanelSpellActivationOverlayAlpha", "InterfaceOptionsMousePanelMouseLookSpeedSlider", "InterfaceOptionsMousePanelMouseSensitivitySlider", "InterfaceOptionsNamePlatePanelIntersectOpacity", "InterfaceOptionsNamePlatePanelNameplateDistance", "InterfaceOptionsNamePlatePanelFadeInMin", "InterfaceOptionsNamePlatePanelNameplateZ", "InterfaceOptionsNamePlatePanelFadeInMax", "InterfaceOptionsActionCameraAngle", "InterfaceOptionsActionCameraHeight", "InterfaceOptionsActionCameraMinPitch", "InterfaceOptionsActionCameraDistance", "InterfaceOptionsActionCameraTurnSpeed", "InterfaceOptionsActionCameraMaxPitch", "AudioOptionsSoundPanelSoundQuality", "AudioOptionsSoundPanelSoundChannels", "AudioOptionsSoundPanelMasterVolume", "AudioOptionsSoundPanelSoundVolume", "AudioOptionsSoundPanelMusicVolume", "AudioOptionsSoundPanelAmbienceVolume", "VideoOptionsResolutionPanelUIScaleSlider", "VideoOptionsEffectsPanelQualitySlider", "VideoOptionsEffectsPanelViewDistance", "VideoOptionsEffectsPanelEnvironmentDetail", "VideoOptionsEffectsPanelTextureResolution", "VideoOptionsEffectsPanelTerrainDetail", "VideoOptionsEffectsPanelClutterDensity", "VideoOptionsEffectsPanelTextureFiltering", "VideoOptionsEffectsPanelParticleDensity", "VideoOptionsEffectsPanelShadowQuality", "VideoOptionsEffectsPanelClutterRadius", "VideoOptionsEffectsPanelWeatherIntensity", "VideoOptionsEffectsPanelPlayerTexture", "VideoOptionsExtendedForegroundFPS", "VideoOptionsExtendedBackgroundFPS", "VideoOptionsResolutionPanelGammaSlider", } for _, slider in ipairs(sliders) do S:HandleSliderFrame(_G[slider]) end local buttons = { "InterfaceOptionsFrameDefaults", "InterfaceOptionsFrameOkay", "InterfaceOptionsFrameCancel", --"InterfaceOptionsHelpPanelResetTutorials", "AudioOptionsFrameDefaults", "AudioOptionsFrameOkay", "AudioOptionsFrameCancel", "VideoOptionsFrameDefaults", "VideoOptionsFrameOkay", "VideoOptionsFrameCancel", "VideoOptionsFrameApply", "InterfaceOptionsAscensionLoseControlPanelMoveWindow", "InterfaceOptionsAscensionLoseControlPanelResetWindow", "InterfaceOptionsAscensionHelpPanelResetTutorials", "InterfaceOptionsAscensionHelpPanelResetHelpTips" } for _, button in ipairs(buttons) do S:HandleButton(_G[button]) end local dropdowns = { "InterfaceOptionsControlsPanelAutoLootKeyDropDown", "InterfaceOptionsCombatPanelTOTDropDown", "InterfaceOptionsCombatPanelFocusCastKeyDropDown", "InterfaceOptionsCombatPanelSelfCastKeyDropDown", "InterfaceOptionsDisplayPanelAggroWarningDisplay", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay", "InterfaceOptionsDisplayPanelLocalization", "InterfaceOptionsSocialPanelChatStyle", "InterfaceOptionsSocialPanelTimestamps", "InterfaceOptionsCombatTextPanelFCTDropDown", "InterfaceOptionsCameraPanelStyleDropDown", "InterfaceOptionsMousePanelClickMoveStyleDropDown", "InterfaceOptionsLanguagesPanelLocaleDropDown", "InterfaceOptionsMouseoverCastPanelHotkeyDropDown", "AudioOptionsSoundPanelHardwareDropDown", "VideoOptionsResolutionPanelResolutionDropDown", "VideoOptionsResolutionPanelRefreshDropDown", } for _, dropdown in ipairs(dropdowns) do dropdown = _G[dropdown] if dropdown then S:HandleDropDownBox(dropdown) end end InterfaceOptionsFrameCategoriesList:StripTextures() InterfaceOptionsFrameAddOnsList:StripTextures() S:HandleScrollBar(InterfaceOptionsFrameCategoriesListScrollBar) S:HandleScrollBar(InterfaceOptionsFrameAddOnsListScrollBar) InterfaceOptionsFrameCategoriesListScrollBar:Point("TOPRIGHT", 0, -20) InterfaceOptionsFrameCategoriesListScrollBar:Point("BOTTOMLEFT", 6, 19) InterfaceOptionsFrameAddOnsListScrollBar:Point("TOPRIGHT", 1, -18) InterfaceOptionsFrameAddOnsListScrollBar:Point("BOTTOMLEFT", 7, 19) S:HandleDropDownBox(VideoOptionsResolutionPanelMultiSampleDropDown, 195) VideoOptionsFrameDefaults:Point("BOTTOMLEFT", 21, 16) VideoOptionsFrameApply:Point("BOTTOMRIGHT", -22, 16) VideoOptionsFrameCancel:Point("BOTTOMRIGHT", VideoOptionsFrameApply, "BOTTOMLEFT", -3, 0) VideoOptionsFrameOkay:Point("BOTTOMRIGHT", VideoOptionsFrameCancel, "BOTTOMLEFT", -3, 0) AudioOptionsFrameDefaults:Point("BOTTOMLEFT", 21, 16) AudioOptionsFrameCancel:Point("BOTTOMRIGHT", -22, 16) AudioOptionsFrameOkay:Point("BOTTOMRIGHT", AudioOptionsFrameCancel, "BOTTOMLEFT", -3, 0) InterfaceOptionsFrameDefaults:Point("BOTTOMLEFT", 21, 16) InterfaceOptionsFrameCancel:Point("BOTTOMRIGHT", -22, 16) InterfaceOptionsFrameOkay:Point("BOTTOMRIGHT", InterfaceOptionsFrameCancel, "BOTTOMLEFT", -3, 0) VideoOptionsResolutionPanelBrightnessGrayScale:SetTexture("Interface\\OptionsFrame\\21stepgrayscale") -- Mac Menu if IsMacClient() then S:HandleButton(GameMenuButtonMacOptions) -- Skin main frame and reposition the header MacOptionsFrame:SetTemplate("Default", true) MacOptionsFrameHeader:SetTexture("") MacOptionsFrameHeader:SetPoint("TOP", 0, 0) S:HandleDropDownBox(MacOptionsFrameResolutionDropDown) S:HandleDropDownBox(MacOptionsFrameFramerateDropDown) S:HandleDropDownBox(MacOptionsFrameCodecDropDown) S:HandleSliderFrame(MacOptionsFrameQualitySlider) for i = 1, 8 do S:HandleCheckBox(_G["MacOptionsFrameCheckButton"..i]) end -- Skin internal frames MacOptionsFrameMovieRecording:SetTemplate("Default", true) MacOptionsITunesRemote:SetTemplate("Default", true) -- Skin buttons S:HandleButton(MacOptionsFrameCancel) S:HandleButton(MacOptionsFrameOkay) S:HandleButton(MacOptionsButtonKeybindings) S:HandleButton(MacOptionsFrameDefaults) S:HandleButton(MacOptionsButtonCompress) -- Reposition and resize buttons MacOptionsButtonCompress:Width(136) MacOptionsButtonCompress:Point("TOPLEFT", MacOptionsFrameCheckButton6, "BOTTOMLEFT", 4, -1) MacOptionsFrameCancel:Size(96, 22) MacOptionsFrameCancel:Point("BOTTOMRIGHT", -14, 16) MacOptionsFrameOkay:ClearAllPoints() MacOptionsFrameOkay:Size(96, 22) MacOptionsFrameOkay:Point("LEFT", MacOptionsFrameCancel, -99, 0) MacOptionsButtonKeybindings:ClearAllPoints() MacOptionsButtonKeybindings:Size(96, 22) MacOptionsButtonKeybindings:Point("LEFT", MacOptionsFrameOkay, -99, 0) MacOptionsFrameDefaults:Size(96, 22) MacOptionsCompressFrame:SetTemplate("Default", true) MacOptionsCompressFrameHeader:SetTexture("") MacOptionsCompressFrameHeader:SetPoint("TOP", 0, 0) S:HandleButton(MacOptionsCompressFrameDelete) S:HandleButton(MacOptionsCompressFrameSkip) S:HandleButton(MacOptionsCompressFrameCompress) MacOptionsCancelFrame:SetTemplate("Default", true) MacOptionsCancelFrameHeader:SetTexture("") MacOptionsCancelFrameHeader:SetPoint("TOP", 0, 0) S:HandleButton(MacOptionsCancelFrameNo) S:HandleButton(MacOptionsCancelFrameYes) end -- Chat Config ChatConfigFrame:StripTextures() ChatConfigFrame:SetTemplate("Transparent") ChatConfigCategoryFrame:SetTemplate("Transparent") ChatConfigBackgroundFrame:SetTemplate("Transparent") ChatConfigChatSettingsClassColorLegend:SetTemplate("Transparent") ChatConfigChannelSettingsClassColorLegend:SetTemplate("Transparent") ChatConfigCombatSettingsFilters:SetTemplate("Transparent") ChatConfigCombatSettingsFiltersScrollFrame:StripTextures() S:HandleScrollBar(ChatConfigCombatSettingsFiltersScrollFrameScrollBar) ChatConfigCombatSettingsFiltersScrollFrameScrollBarBorder:Kill() S:HandleButton(ChatConfigCombatSettingsFiltersDeleteButton) S:HandleButton(ChatConfigCombatSettingsFiltersAddFilterButton) S:HandleButton(ChatConfigCombatSettingsFiltersCopyFilterButton) ChatConfigCombatSettingsFiltersDeleteButton:Point("TOPRIGHT", ChatConfigCombatSettingsFilters, "BOTTOMRIGHT", 0, -1) ChatConfigCombatSettingsFiltersAddFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersDeleteButton, "LEFT", -1, 0) ChatConfigCombatSettingsFiltersCopyFilterButton:Point("RIGHT", ChatConfigCombatSettingsFiltersAddFilterButton, "LEFT", -1, 0) S:HandleNextPrevButton(ChatConfigMoveFilterUpButton) ChatConfigMoveFilterUpButton:Size(26) ChatConfigMoveFilterUpButton:Point("TOPLEFT", ChatConfigCombatSettingsFilters, "BOTTOMLEFT", 3, -1) ChatConfigMoveFilterUpButton:SetHitRectInsets(0, 0, 0, 0) S:HandleNextPrevButton(ChatConfigMoveFilterDownButton) ChatConfigMoveFilterDownButton:Size(26) ChatConfigMoveFilterDownButton:Point("LEFT", ChatConfigMoveFilterUpButton, "RIGHT", 1, 0) ChatConfigMoveFilterDownButton:SetHitRectInsets(0, 0, 0, 0) CombatConfigColorsHighlighting:StripTextures() CombatConfigColorsColorizeUnitName:StripTextures() CombatConfigColorsColorizeSpellNames:StripTextures() CombatConfigColorsColorizeDamageNumber:StripTextures() CombatConfigColorsColorizeDamageSchool:StripTextures() CombatConfigColorsColorizeEntireLine:StripTextures() S:HandleEditBox(CombatConfigSettingsNameEditBox) S:HandleButton(CombatConfigSettingsSaveButton) local combatCheckboxes = { "CombatConfigColorsHighlightingLine", "CombatConfigColorsHighlightingAbility", "CombatConfigColorsHighlightingDamage", "CombatConfigColorsHighlightingSchool", "CombatConfigColorsColorizeUnitNameCheck", "CombatConfigColorsColorizeSpellNamesCheck", "CombatConfigColorsColorizeSpellNamesSchoolColoring", "CombatConfigColorsColorizeDamageNumberCheck", "CombatConfigColorsColorizeDamageNumberSchoolColoring", "CombatConfigColorsColorizeDamageSchoolCheck", "CombatConfigColorsColorizeEntireLineCheck", "CombatConfigFormattingShowTimeStamp", "CombatConfigFormattingShowBraces", "CombatConfigFormattingUnitNames", "CombatConfigFormattingSpellNames", "CombatConfigFormattingItemNames", "CombatConfigFormattingFullText", "CombatConfigSettingsShowQuickButton", "CombatConfigSettingsSolo", "CombatConfigSettingsParty", "CombatConfigSettingsRaid" } for i = 1, #combatCheckboxes do S:HandleCheckBox(_G[combatCheckboxes[i]]) end for i = 1, 5 do local tab = _G["CombatConfigTab"..i] tab:StripTextures() tab:CreateBackdrop("Default", true) tab.backdrop:Point("TOPLEFT", 1, -10) tab.backdrop:Point("BOTTOMRIGHT", -1, 2) tab:HookScript("OnEnter", S.SetModifiedBackdrop) tab:HookScript("OnLeave", S.SetOriginalBackdrop) end S:HandleButton(ChatConfigFrameDefaultButton) S:HandleButton(CombatLogDefaultButton) S:HandleButton(ChatConfigFrameCancelButton) S:HandleButton(ChatConfigFrameOkayButton) ChatConfigFrameDefaultButton:Width(125) ChatConfigFrameDefaultButton:Point("BOTTOMLEFT", 12, 8) ChatConfigFrameCancelButton:Point("BOTTOMRIGHT", -1, 8) S:HandleColorSwatch(CombatConfigColorsColorizeSpellNamesColorSwatch) S:HandleColorSwatch(CombatConfigColorsColorizeDamageNumberColorSwatch) hooksecurefunc("ChatConfig_CreateCheckboxes", function(frame, checkBoxTable, checkBoxTemplate) frame:SetTemplate("Transparent") local checkBoxNameString = frame:GetName().."CheckBox" local checkBoxName, checkbox for index in ipairs(checkBoxTable) do checkBoxName = checkBoxNameString..index checkbox = _G[checkBoxName] if not checkbox.backdrop then checkbox:StripTextures() checkbox:CreateBackdrop() checkbox.backdrop:Point("TOPLEFT", 3, -1) checkbox.backdrop:Point("BOTTOMRIGHT", -3, 1) checkbox.backdrop:SetFrameLevel(checkbox:GetParent():GetFrameLevel() + 1) S:HandleCheckBox(_G[checkBoxName.."Check"]) if checkBoxTemplate == "ChatConfigCheckBoxWithSwatchTemplate" or checkBoxTemplate == "ChatConfigCheckBoxWithSwatchAndClassColorTemplate" then if checkBoxTemplate == "ChatConfigCheckBoxWithSwatchAndClassColorTemplate" then S:HandleCheckBox(_G[checkBoxName.."ColorClasses"]) end S:HandleColorSwatch(_G[checkBoxName.."ColorSwatch"]) end end end end) hooksecurefunc("ChatConfig_CreateTieredCheckboxes", function(frame, checkBoxTable) local checkBoxNameString = frame:GetName().."CheckBox" local checkBoxName for index, value in ipairs(checkBoxTable) do checkBoxName = checkBoxNameString..index if _G[checkBoxName] then S:HandleCheckBox(_G[checkBoxName]) if value.subTypes then local subCheckBox for i in ipairs(value.subTypes) do subCheckBox = _G[checkBoxName.."_"..i] if subCheckBox then S:HandleCheckBox(subCheckBox) end end end end end end) hooksecurefunc("ChatConfig_CreateColorSwatches", function(frame, swatchTable) frame:SetTemplate("Transparent") local nameString = frame:GetName().."Swatch" local swatch for index in ipairs(swatchTable) do swatch = _G[nameString..index] if not swatch.backdrop then swatch:StripTextures() swatch:CreateBackdrop() swatch.backdrop:Point("TOPLEFT", 3, -1) swatch.backdrop:Point("BOTTOMRIGHT", -3, 1) swatch.backdrop:SetFrameLevel(swatch:GetParent():GetFrameLevel() + 1) S:HandleColorSwatch(_G[nameString..index.."ColorSwatch"]) end end end) end)