KlazChat/Modules/Style.lua
2024-02-29 00:23:53 -05:00

116 lines
3.6 KiB
Lua

--------------------------------------------------------------------------------
-- # MODULES > STYLE
--------------------------------------------------------------------------------
-- add additional font sizes
CHAT_FONT_HEIGHTS = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}
-- fade chat frame and tabs
CHAT_FRAME_FADE_TIME = .5
CHAT_TAB_SHOW_DELAY = 0
CHAT_TAB_HIDE_DELAY = .5
CHAT_FRAME_FADE_OUT_TIME = .5
CHAT_FRAME_TAB_NORMAL_MOUSEOVER_ALPHA = 1
CHAT_FRAME_TAB_NORMAL_NOMOUSE_ALPHA = .2
CHAT_FRAME_TAB_SELECTED_MOUSEOVER_ALPHA = 1
CHAT_FRAME_TAB_SELECTED_NOMOUSE_ALPHA = .8
CHAT_FRAME_TAB_ALERTING_MOUSEOVER_ALPHA = 1
CHAT_FRAME_TAB_ALERTING_NOMOUSE_ALPHA = 1
local f = CreateFrame('Frame')
f:RegisterEvent('PLAYER_ENTERING_WORLD')
f:SetScript('OnEvent', function(self, event)
-- hide social button
QuickJoinToastButton:HookScript('OnShow', QuickJoinToastButton.Hide)
QuickJoinToastButton:Hide()
-- hide shortcut button for emotes/languages/etc
ChatFrameMenuButton:HookScript('OnShow', ChatFrameMenuButton.Hide)
ChatFrameMenuButton:Hide()
-- hide voice deafen button
ChatFrameToggleVoiceDeafenButton:HookScript('OnShow', ChatFrameToggleVoiceDeafenButton.Hide)
ChatFrameToggleVoiceDeafenButton:Hide()
-- hide voice mute button
ChatFrameToggleVoiceMuteButton:HookScript('OnShow', ChatFrameToggleVoiceMuteButton.Hide)
ChatFrameToggleVoiceMuteButton:Hide()
ChatFrameChannelButton:HookScript('OnShow', ChatFrameChannelButton.Hide)
ChatFrameChannelButton:Hide()
-- keep track of frames we have already seen
local frames = {}
local function SkinChatFrames(frame)
if frames[frame] then return end
local name = frame:GetName()
local editbox = _G[name..'EditBox']
-- hide button frame
_G[name..'ButtonFrame']:Hide()
-- strip edit box textures
for k = 3, 8 do
select(k, editbox:GetRegions()):SetTexture(nil)
end
-- allow arrow keys in edit box
editbox:SetAltArrowKeyMode(false)
-- create backdrop for edit box
Mixin(editbox, BackdropTemplateMixin)
editbox:SetBackdrop( {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Buttons\\WHITE8x8",
tile = true,
tileEdge = true,
tileSize = 8,
edgeSize = 1,
insets = { left = 1, right = 1, top = 1, bottom = 1 },
})
editbox:SetBackdropColor(0, 0, 0, .5)
editbox:SetBackdropBorderColor(0, 0, 0, .8)
-- adjust edit box border based on active chat channel
hooksecurefunc("ChatEdit_UpdateHeader", function(editBox)
local chatType = editBox:GetAttribute("chatType")
if not chatType then
return
end
local info = ChatTypeInfo[chatType]
editbox:SetBackdropBorderColor(info.r, info.g, info.b, .5)
end)
-- reposition edit box
editbox:ClearAllPoints()
editbox:SetPoint('TOPLEFT', ChatFrame1, 'BOTTOMLEFT', -3, -8)
editbox:SetPoint('TOPRIGHT', ChatFrame1, 'BOTTOMRIGHT', 16, -8)
-- hide chat tabs textures
local tab = _G[name..'Tab']
for i = 1, select('#', tab:GetRegions()) do
local texture = select(i, tab:GetRegions())
if texture and texture:GetObjectType() == 'Texture' then
texture:SetTexture(nil)
end
end
frames[frame] = true
end
-- retrieve all permanent chat windows and apply skin
for i = 1, NUM_CHAT_WINDOWS do
SkinChatFrames(_G['ChatFrame' .. i])
end
-- set up a dirty hook to catch temporary windows to apply skin on them
local old_OpenTemporaryWindow = FCF_OpenTemporaryWindow
FCF_OpenTemporaryWindow = function(...)
local frame = old_OpenTemporaryWindow(...)
SkinChatFrames(frame)
return frame
end
end)