--[[
File Author: @file-author@
File Revision: @file-abbreviated-hash@
File Date: @file-date-iso@
]]--
local TradeFilter3 = LibStub("AceAddon-3.0"):GetAddon("TradeFilter3")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeFilter3")
local TF3 = TradeFilter3
--[[ Locals ]]--
local ipairs = ipairs
local pairs = pairs
local format = string.format
local insert = table.insert
local sort = table.sort
local sub = string.sub
--[[ Options Table ]]--
local options
function TF3:getOptions()
if not options then
options = {
type="group",
name = TF3.name,
handler = TF3,
childGroups = "tab",
args = {
generalGroup = {
type = "group",
name = TF3.name,
args = {
mainHeader = {
type = "description",
name = " " .. L["NJAOF"] .. "\n " .. TF3.version .. "\n " .. sub(TF3.date,6,7) .. "-" .. sub(TF3.date,9,10) .. "-" .. sub(TF3.date,1,4),
order = 1,
image = "Interface\\Icons\\Ability_Warrior_RallyingCry",
imageWidth = 32, imageHeight = 32,
},
turnOn = {
type = 'toggle',
order = 2,
width = "double",
name = L["TurnOn"],
desc = L["TurnOnDesc"],
get = function() return TF3.db.profile.turnOn end,
set = function()
if not (TF3.db.profile.turnOn) then
print(L.TOC.Title .. " " .. TF3.version .. " " .. L["ENABLED"])
TF3.db.profile.turnOn = not TF3.db.profile.turnOn
else
print(L.TOC.Title .. " " .. TF3.version .. " " .. L["DISABLED"])
TF3.db.profile.turnOn = not TF3.db.profile.turnOn
end
end,
},
channelGroup = {
type = "group",
handler = TF3,
order = 1,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["channelGroup"],
desc = L["channelGroup"],
args = {
optionsHeader1 = {
type = "header",
order = 1,
name = L["channelGroup"],
},
tradeChannel = {
type = 'toggle',
order = 2,
width = "double",
disabled = false,
name = L["TC"],
desc = L["TCD"],
get = function() return TF3.db.profile.filterTrade end,
set = function() TF3.db.profile.filterTrade = not TF3.db.profile.filterTrade end,
},
generalChannel = {
type = 'toggle',
order = 3,
width = "double",
disabled = false,
name = L["GC"],
desc = L["GCD"],
get = function() return TF3.db.profile.filterGeneral end,
set = function() TF3.db.profile.filterGeneral = not TF3.db.profile.filterGeneral end,
},
LFGChannel = {
type = 'toggle',
order = 4,
width = "double",
disabled = false,
name = L["LFGC"],
desc = L["LFGCD"],
get = function() return TF3.db.profile.filterLFG end,
set = function() TF3.db.profile.filterLFG = not TF3.db.profile.filterLFG end,
},
Battlegrounds = {
type = 'toggle',
order = 4,
width = "double",
disabled = false,
name = L["BGC"],
desc = L["BGCD"],
get = function() return TF3.db.profile.filterBG end,
set = function() TF3.db.profile.filterBG = not TF3.db.profile.filterBG end,
},
SAYChannel = {
type = 'toggle',
order = 5,
width = "double",
disabled = false,
name = L["SAYC"],
desc = L["SAYCD"],
get = function() return TF3.db.profile.filterSAY end,
set = function() TF3.db.profile.filterSAY = not TF3.db.profile.filterSAY end,
},
YELLChannel = {
type = 'toggle',
order = 6,
width = "double",
disabled = false,
name = L["YELLC"],
desc = L["YELLCD"],
get = function() return TF3.db.profile.filterYELL end,
set = function() TF3.db.profile.filterYELL = not TF3.db.profile.filterYELL end,
},
optionsHeader1a = {
type = "header",
order = 7,
name = L["FDS"],
},
filterDuelSpam = {
type = 'toggle',
order = 8,
width = "double",
disabled = false,
name = L["FDS"],
desc = L["FDSD"],
get = function() return TF3.db.profile.filterDuelSpam end,
set = function() TF3.db.profile.filterDuelSpam = not TF3.db.profile.filterDuelSpam; TF3:DuelFilter()end,
},
optionsHeader1b = {
type = "header",
order = 9,
name = L["SPCS"],
},
GuildAddOnsChannel = {
type = 'toggle',
order = 10,
width = "double",
disabled = false,
name = L["GAC"],
desc = L["GACD"],
get = function() return TF3.db.profile.filterGAC end,
set = function() TF3.db.profile.filterGAC = not TF3.db.profile.filterGAC end,
},
special_enable = {
type = 'toggle',
order = 11,
width = "double",
disabled = false,
name = L["SPCST"],
desc = L["SPCSTD"],
get = function() return TF3.db.profile.special_enable end,
set = function() TF3.db.profile.special_enable = not TF3.db.profile.special_enable end,
},
specialfilters = {
type = 'input',
hidden = function()
return not TF3.db.profile.special_enable
end,
disabled = function()
return not TF3.db.profile.special_enable
end,
multiline = 4,
order = 12,
width = "full",
name = L["SPCST"],
desc = L["SPCSTD"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.filters.SPECIAL) then
TF3.db.profile.filters.SPECIAL = L.FILTERS.SPECIAL
end
for _,v in pairs(TF3.db.profile.filters.SPECIAL) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.filters.SPECIAL)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "FILTER"
TF3.db.profile.filters.SPECIAL[key..k] = v
end
end
end,
},
reset_specialfilters = {
type = 'execute',
hidden = function()
return not TF3.db.profile.special_enable
end,
disabled = function()
return not TF3.db.profile.special_enable
end,
order = 13,
name = L["RSF"],
desc = L["RSF"],
func = function() TF3.db.profile.filters.SPECIAL = TF3:CopyTable(L.FILTERS.SPECIAL) end,
},
},
},
editFilterGroup = {
type = "group",
childGroups = "tab",
handler = TF3,
order = 2,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["EditFilterGroup"],
desc = L["EditFilterGD"],
args = {
editFilterGroupTRADE = {
type = "group",
handler = TF3,
order = 1,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["TRADE Filters"],
args = {
optionsHeader1 = {
type = "header",
order = 1,
name = L["EditFilter"],
},
editfilter_enable = {
type = 'toggle',
order = 2,
width = "double",
name = L["EditFilter"],
desc = L["EditFilterD"],
get = function() return TF3.db.profile.addfilterTRADE_enable end,
set = function() TF3.db.profile.addfilterTRADE_enable = not TF3.db.profile.addfilterTRADE_enable end,
},
optionsHeader2 = {
type = "header",
order = 3,
name = L["BTF"],
},
tradefilters = {
type = 'input',
disabled = function()
return not TF3.db.profile.addfilterTRADE_enable
end,
multiline = 10,
order = 4,
width = "full",
name = L["BTF"],
desc = L["BTFD"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.filters.TRADE) then
TF3.db.profile.filters.TRADE = L.FILTERS.TRADE
end
for _,v in pairs(TF3.db.profile.filters.TRADE) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.filters.TRADE)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "FILTER"
TF3.db.profile.filters.TRADE[key..k] = v
end
end
end,
},
reset_tradefilters = {
type = 'execute',
disabled = function()
return not TF3.db.profile.addfilterTRADE_enable
end,
order = 5,
name = L["RTF"],
desc = L["RTF"],
func = function() TF3.db.profile.filters.TRADE = TF3:CopyTable(L.FILTERS.TRADE) end,
},
},
},
editFilterGroupBASE = {
type = "group",
handler = TF3,
order = 2,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["BASE Filters"],
args = {
optionsHeader1 = {
type = "header",
order = 1,
name = L["EditFilter"],
},
editfilter_enable = {
type = 'toggle',
order = 2,
width = "double",
name = L["EditFilter"],
desc = L["EditFilterD"],
get = function() return TF3.db.profile.addfilterBASE_enable end,
set = function() TF3.db.profile.addfilterBASE_enable = not TF3.db.profile.addfilterBASE_enable end,
},
optionsHeader2 = {
type = "header",
order = 6,
name = L["BCF"],
},
basefilters = {
type = 'input',
disabled = function()
return not TF3.db.profile.addfilterBASE_enable
end,
multiline = 10,
order = 7,
width = "full",
name = L["BCF"],
desc = L["BCFD"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.filters.BASE) then
TF3.db.profile.filters.BASE = L.FILTERS.BASE
end
for _,v in pairs(TF3.db.profile.filters.BASE) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.filters.BASE)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "FILTER"
TF3.db.profile.filters.BASE[key..k] = v
end
end
end,
},
reset_basefilters = {
type = 'execute',
disabled = function()
return not TF3.db.profile.addfilterBASE_enable
end,
order = 8,
name = L["RBF"],
desc = L["RBF"],
func = function() TF3.db.profile.filters.BASE = TF3:CopyTable(L.FILTERS.BASE) end,
},
},
},
editFilterGroupBG = {
type = "group",
handler = TF3,
order = 3,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["BG Filters"],
args = {
optionsHeader1 = {
type = "header",
order = 1,
name = L["EditFilter"],
},
editfilter_enable = {
type = 'toggle',
order = 2,
width = "double",
name = L["EditFilter"],
desc = L["EditFilterD"],
get = function() return TF3.db.profile.addfilterBG_enable end,
set = function() TF3.db.profile.addfilterBG_enable = not TF3.db.profile.addfilterBG_enable end,
},
optionsHeader2 = {
type = "header",
order = 6,
name = L["BG"],
},
bgfilters = {
type = 'input',
disabled = function()
return not TF3.db.profile.addfilterBG_enable
end,
multiline = 10,
order = 7,
width = "full",
name = L["BG"],
desc = L["BGD"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.filters.BG) then
TF3.db.profile.filters.BG = L.FILTERS.BG
end
for _,v in pairs(TF3.db.profile.filters.BG) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.filters.BG)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "FILTER"
TF3.db.profile.filters.BG[key..k] = v
end
end
end,
},
reset_bgfilters = {
type = 'execute',
disabled = function()
return not TF3.db.profile.addfilterBG_enable
end,
order = 8,
name = L["RBF"],
desc = L["RBF"],
func = function() TF3.db.profile.filters.BG = TF3:CopyTable(L.FILTERS.BG) end,
},
},
},
},
},
listsGroup = {
type = "group",
childGroups = "tab",
handler = TF3,
order = 3,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["listsGroup"],
desc = L["listsGD"],
args = {
listsGroupBlack = {
type = "group",
handler = TF3,
order = 1,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["bLists"],
desc = L["listsGD"],
args = {
optionsHeader1 = {
type = "header",
order = 1,
name = L["bLists"],
},
blacklist_enable = {
type = 'toggle',
order = 2,
width = "double",
name = L["BLE"],
desc = L["BLE"],
get = function() return TF3.db.profile.blacklist_enable end,
set = function() TF3.db.profile.blacklist_enable = not TF3.db.profile.blacklist_enable end,
},
editblacklist = {
type = 'toggle',
order = 3,
disabled = function()
return not TF3.db.profile.blacklist_enable
end,
width = "double",
name = L["EBL"],
desc = L["EBL"],
get = function() return TF3.db.profile.ebl end,
set = function() TF3.db.profile.ebl = not TF3.db.profile.ebl end,
},
blist = {
type = 'input',
disabled = function()
return not TF3.db.profile.ebl
end,
multiline = 10,
order = 4,
width = "full",
name = L["bLists"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.blacklist) then
TF3.db.profile.blacklist = L.BLACKLIST
end
for _,v in pairs(TF3.db.profile.blacklist) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.blacklist)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "BLIST"
TF3.db.profile.blacklist[key..k] = v
end
end
end,
},
reset_blist = {
type = 'execute',
disabled = function()
return not TF3.db.profile.ebl
end,
order = 5,
name = L["RBLS"],
desc = L["RBLS"],
func = function() TF3.db.profile.blacklist = TF3:CopyTable(L.BLACKLIST) end,
},
},
},
listsGroupWhite = {
type = "group",
handler = TF3,
order = 2,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["wLists"],
desc = L["listsGD"],
args = {
optionsHeader3b = {
type = "header",
order = 1,
name = L["wLists"],
},
whitelist_enable = {
type = 'toggle',
order = 2,
width = "double",
name = L["WLE"],
desc = L["WLE"],
get = function() return TF3.db.profile.whitelist_enable end,
set = function() TF3.db.profile.whitelist_enable = not TF3.db.profile.whitelist_enable end,
},
editwhitelist = {
type = 'toggle',
order = 3,
disabled = function()
return not TF3.db.profile.whitelist_enable
end,
width = "double",
name = L["EWL"],
desc = L["EWL"],
get = function() return TF3.db.profile.ewl end,
set = function() TF3.db.profile.ewl = not TF3.db.profile.ewl end,
},
whitelist_blacklist_bypass = {
type = 'toggle',
order = 5,
disabled = function()
return not TF3.db.profile.whitelist_enable
end,
width = "double",
name = L["BLBYPASS"],
desc = L["BLBYPASSD"],
get = function() return TF3.db.profile.wlblbp end,
set = function() TF3.db.profile.wlblbp = not TF3.db.profile.wlblbp end,
},
wlist = {
type = 'input',
disabled = function()
return not TF3.db.profile.ewl
end,
multiline = 10,
order = 6,
width = "full",
name = L["wLists"],
usage = L["INPUSAGE"],
get = function(info)
local a = {}
local ret = ""
if not (TF3.db.profile.whitelist) then
TF3.db.profile.whitelist = L.WHITELIST
end
for _,v in pairs(TF3.db.profile.whitelist) do
insert(a, v)
end
sort(a)
for _,v in ipairs(a) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
set = function(info, value)
TF3:WipeTable(TF3.db.profile.whitelist)
local tbl = { strsplit("\n", value) }
for k, v in pairs(tbl) do
if (v ~= "") then
key = "WLIST"
TF3.db.profile.whitelist[key..k] = v
end
end
end,
},
reset_wlist = {
type = 'execute',
disabled = function()
return not TF3.db.profile.ewl
end,
order = 7,
name = L["RWLS"],
desc = L["RWLS"],
func = function() TF3.db.profile.whitelist = TF3:CopyTable(L.WHITELIST) end,
},
},
},
},
},
exemptGroupMain = {
type = "group",
handler = TF3,
childGroups = "tab",
order = 5,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["Exempt List"],
desc = L["Current Exempt List"],
args = {
enable_exempt_party = {
type = 'toggle',
order = 1,
disabled = false,
name = L["Party Members"],
desc = L["If enabled party members will be exempt from filtration."],
get = function() return TF3.db.profile.exmptparty end,
set = function() TF3.db.profile.exmptparty = not TF3.db.profile.exmptparty end,
},
enable_exempt_friends = {
type = 'toggle',
order = 2,
disabled = false,
name = L["Friends"],
desc = L["If enabled your friends list will be exempt from filtration."],
get = function() return TF3.db.profile.exmptfriendslist end,
set = function() TF3.db.profile.exmptfriendslist = not TF3.db.profile.exmptfriendslist end,
},
exemptGroupFriends = {
type = "group",
handler = TF3,
order = 3,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["Exempt Friend List"],
args = {
currentFriends_table_content = {
type = 'description',
fontSize = "medium",
disabled = true,
order = 1,
name = function()
local ret = ""
for k,v in pairs(TF3.db.profile.friendslist) do
if ret == "" then
ret = v
else
ret = ret .. "\n" .. v
end
end
return ret
end,
},
},
},
},
},
outputGroup = {
type = "group",
handler = TF3,
order = 6,
disabled = function()
return not TF3.db.profile.turnOn
end,
name = L["OUTPUT"],
desc = L["OUTPUT"],
args = {
optionsHeader5 = {
type = "header",
order = 1,
name = L["OUTPUT"],
},
redirect = {
type = 'toggle',
order = 2,
width = "full",
name = L["Redir"],
desc = L["RedirDesc"],
get = function() return TF3.db.profile.redirect end,
set = function() TF3.db.profile.redirect = not TF3.db.profile.redirect end,
},
redirect_blacklist = {
type = 'toggle',
order = 3,
width = "full",
name = L["RedirBL"],
desc = L["RedirDesc"],
get = function() return TF3.db.profile.redirect_blacklist end,
set = function() TF3.db.profile.redirect_blacklist = not TF3.db.profile.redirect_blacklist end,
},
optionsHeader6 = {
type = "header",
order = 4,
name = L["DEBUGGING"],
},
debug = {
type = 'toggle',
order = 5,
width = "full",
disabled = false,
hidden = false,
name = L["Debug"],
desc = L["DebugDesc"],
get = function() return TF3.db.profile.debug end,
set = function() TF3.db.profile.debug = not TF3.db.profile.debug end,
},
debug_checking = {
type = 'toggle',
order = 6,
width = "full",
disabled = false,
hidden = false,
name = L["DebugChecking"],
desc = L["DebugCheckingD"],
get = function() return TF3.db.profile.debug_checking end,
set = function() TF3.db.profile.debug_checking = not TF3.db.profile.debug_checking end,
},
optionsHeader4 = {
type = "header",
order = 7,
name = L["FSELF"],
desc = L["FSELFD"],
},
filterSELF = {
type = 'toggle',
order = 8,
width = "double",
disabled = false,
name = L["FSELF"],
desc = L["FSELFD"],
get = function() return TF3.db.profile.filterSELF end,
set = function() TF3.db.profile.filterSELF = not TF3.db.profile.filterSELF end,
},
},
},
Profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(TF3.db),
},
},
},
}
end
return options
end