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.

167 lines
5.7 KiB

local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE)
local C = SLE.Chat
local NONE, INVITE = NONE, INVITE
local function configTable()
if not SLE.initialized then return end
local ACH = E.Libs.ACH
local function CreateJustify(i)
local config = {
order = i + 1,
type = "select",
name = L["Frame "..i],
get = function(info) return E.db.sle.chat.justify["frame"..i] end,
set = function(info, value) E.db.sle.chat.justify["frame"..i] = value; C:JustifyChat(i) end,
values = {
LEFT = L["Left"],
RIGHT = L["Right"],
CENTER = L["Center"],
},
}
return config
end
E.Options.args.sle.args.modules.args.chat = {
order = 1,
type = "group",
name = L["Chat"],
childGroups = 'tab',
disabled = function() return not E.private.chat.enable end,
args = {
header = ACH:Header(L["Chat"], 1),
spacer1 = ACH:Spacer(4),
guildmaster = {
order = 5, type = "toggle",
name = L["Guild Master Icon"],
desc = L["Displays an icon near your Guild Master in chat.\n\n|cffFF0000Note:|r Some messages in chat history may disappear on login."],
get = function(info) return E.db.sle.chat.guildmaster end,
set = function(info, value) E.db.sle.chat.guildmaster = value; C:GMIconUpdate() end,
},
dpsSpam = {
order = 8, type = "toggle",
name = L["Filter DPS meters' Spam"],
desc = L["Replaces long reports from damage meters with a clickable hyperlink to reduce chat spam.\nWorks correctly only with general reports such as DPS or HPS. May fail to filter the report of other things."],
get = function(info) return E.db.sle.chat.dpsSpam end,
set = function(info, value) E.db.sle.chat.dpsSpam = value; C:SpamFilter() end,
},
combathide = {
order = 9, type = "select",
name = L["Hide In Combat"],
get = function(info) return E.db.sle.chat.combathide end,
set = function(info, value) E.db.sle.chat.combathide = value end,
values = {
["NONE"] = NONE,
["BOTH"] = L["Both"],
["LEFT"] = L["Left"],
["RIGHT"] = L["Right"],
}
},
setupDelay = {
order = 10,
type = "range",
name = L["Chat Setup Delay"],
desc = L["Manages the delay before S&L will execute hooks to ElvUI's chat positioning. Prevents some weird positioning issues."],
hidden = function() return not E.global.sle.advanced.general end,
min = 0.5, max = 10, step = .1,
get = function(info) return E.global.sle.advanced.chat[ info[#info] ] end,
set = function(info, value) E.global.sle.advanced.chat[ info[#info] ] = value; E:StaticPopup_Show("GLOBAL_RL") end,
},
textureAlpha = {
order = 20, type = "group",
name = L["Texture Alpha"],
args = {
enable = {
order = 1, type = "toggle",
name = L["Enable"],
desc = L["Allows separate alpha setting for textures in chat"],
get = function(info) return E.db.sle.chat.textureAlpha.enable end,
set = function(info, value) E.db.sle.chat.textureAlpha.enable = value; E:UpdateMedia() end,
},
alpha = {
order = 2, type = "range",
name = L["Alpha"],
isPercent = true,
disabled = function() return not E.db.sle.chat.textureAlpha.enable end,
min = 0, max = 1, step = 0.01,
get = function(info) return E.db.sle.chat.textureAlpha.alpha end,
set = function(info, value) E.db.sle.chat.textureAlpha.alpha = value; E:UpdateMedia() end,
},
},
},
justify = {
order = 30, type = "group",
name = L["Chat Frame Justify"],
args = {
frame1 = CreateJustify(1),
frame2 = CreateJustify(2),
frame3 = CreateJustify(3),
frame4 = CreateJustify(4),
frame5 = CreateJustify(5),
frame6 = CreateJustify(6),
frame7 = CreateJustify(7),
frame8 = CreateJustify(8),
frame9 = CreateJustify(9),
frame10 = CreateJustify(10),
identify = {
order = 12, type = "execute",
name = L["Identify"],
desc = L["Shows the message in each chat frame containing frame's number."],
func = function() C:IdentifyChatFrames() end,
},
},
},
invite = {
order = 15,
type = "group",
name = INVITE,
get = function(info) return E.db.sle.chat.invite[ info[#info] ] end,
set = function(info, value) E.db.sle.chat.invite[ info[#info] ] = value end,
args = {
altInv = {
order = 1,
type = "toggle",
name = L["Alt-Click Invite"],
desc = L["Allows you to invite people by alt-clicking their name in chat."],
},
invLinks = {
order = 2,
type = "toggle",
name = L["Invite links"],
desc = L["Converts specified keywords to links that automatically invite message's author to group."],
set = function(info, value) E.db.sle.chat.invite[ info[#info] ] = value; C:SpamFilter() end,
},
color = {
type = 'color',
order = 3,
name = L["Link Color"],
hasAlpha = false,
disabled = function() return not E.db.sle.chat.invite.invLinks end,
get = function(info)
local t = E.db.sle.chat.invite[ info[#info] ]
local d = P.sle.chat.invite[info[#info]]
return t.r, t.g, t.b, d.r, d.g, d.b
end,
set = function(info, r, g, b)
E.db.sle.chat.tab[ info[#info] ] = {}
local t = E.db.sle.chat.invite[ info[#info] ]
t.r, t.g, t.b = r, g, b
end,
},
keys = {
order = 4,
type = "input",
name = L["Invite Keywords"],
width = "full",
multiline = true,
disabled = function() return not E.db.sle.chat.invite.invLinks end,
set = function(info, value) E.db.sle.chat.invite[ info[#info] ] = value; C:CreateInvKeys() end,
},
},
},
},
}
end
tinsert(SLE.Configs, configTable)