From 1965e12d1ff8fc4906dbe87b301f655737caeeec Mon Sep 17 00:00:00 2001 From: "Erik L. Vonderscheer" Date: Mon, 16 Nov 2009 08:06:48 +0000 Subject: [PATCH] Added BG Filters Config GUI reorganization --- Docs/changelog.txt | 3 + TradeFilter3.lua | 113 ++++++-- TradeFilter3Options.lua | 694 +++++++++++++++++++++++++++++------------------ 3 files changed, 512 insertions(+), 298 deletions(-) diff --git a/Docs/changelog.txt b/Docs/changelog.txt index 27a8af5..6c4d851 100644 --- a/Docs/changelog.txt +++ b/Docs/changelog.txt @@ -1,4 +1,7 @@ == ChangeLog +*r192 +**++Added BG Filters++ +**++Config GUI reorganization++ *r167 **++Added simple duel spam block++ *r159 diff --git a/TradeFilter3.lua b/TradeFilter3.lua index 943e772..4ff5d6d 100644 --- a/TradeFilter3.lua +++ b/TradeFilter3.lua @@ -75,9 +75,12 @@ defaults = { filterGAC = false, filterSELF = false, filterLFG = false, + filterBG = false, filterGeneral = false, filterTrade = true, - editfilter_enable = false, + editfilterTRADE_enable = false, + editfilterBASE_enable = false, + editfilterBG_enable = false, ebl = false, ewl = false, blacklist_enable = true, @@ -94,9 +97,6 @@ defaults = { whitelist = {}, blacklist = {}, filters = {}, - basefilters = {}, - tradefilters = {}, - specialfilters = {}, }, } @@ -531,10 +531,10 @@ local function PreFilterFunc_Say(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("0. " .. L["Say/Yell"], ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("0. " .. L["Say/Yell"], ...) end elseif (event == "CHAT_MSG_SAY" and not TF3.db.profile.filterSAY) then filtered = false @@ -566,10 +566,10 @@ local function PreFilterFunc_Yell(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("0. " .. L["Say/Yell"], ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("0. " .. L["Say/Yell"], ...) end elseif (event == "CHAT_MSG_YELL" and not TF3.db.profile.filterYELL) then filtered = false @@ -577,6 +577,41 @@ local function PreFilterFunc_Yell(self, event, ...) return filtered end +--[[ Check for Battleground Channel and User setting ]]-- +local function PreFilterFunc_BG(self, event, ...) + local filtered = false + local msg = arg1 or select(1, ...) + local userID = arg2 or select(2, ...) + local msgID = arg11 or select(11, ...) + local cName = arg12 or select(12, ...) + local coloredName = TF3:GetColoredName(userID, cName) + if not (repeatdata[userID]) then + repeatdata[userID] = {} + repeatdata[userID].lastmsg = msg + repeatdata[userID].lastmsgID = msgID + repeatdata[userID].lastIndex = 1 + repeatdata[userID].repeats = 1 + end + if (TF3.db.profile.filterBG and TF3:IsFriend(userID) == false and event == "CHAT_MSG_BATTLEGROUND" or event == "CHAT_MSG_BATTLEGROUND_LEADER") then + if (userID == UnitName("Player") and TF3.db.profile.filterSELF == false or TF3:WhiteList(msg, userID, msgID, coloredName) == true) then + filtered = false + elseif (TF3:BlackList(msg, userID, msgID, coloredName) == true) then + filtered = true + elseif (TF3.db.profile.repeat_enable) then + if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then + filtered = true + else + filtered = TF3:FilterFunc("0. BG", ...) + end + else + filtered = TF3:FilterFunc("0. BG", ...) + end + elseif (not TF3.db.profile.filterBG and event == "CHAT_MSG_BATTLEGROUND" or event == "CHAT_MSG_BATTLEGROUND_LEADER") then + filtered = false + end + return filtered +end + --[[ Check for Trade/General/LFG Channel and User setting ]]-- local function PreFilterFunc(self, event, ...) local filtered = false @@ -605,10 +640,10 @@ local function PreFilterFunc(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("2. " .. L["Trade"], ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("2. " .. L["Trade"], ...) end elseif (zoneID == 2 and not TF3.db.profile.filterTrade) then filtered = false @@ -623,10 +658,10 @@ local function PreFilterFunc(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("1. " .. L["General"], ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("1. " .. L["General"], ...) end elseif (chanID == 1 and not TF3.db.profile.filterGeneral) then filtered = false @@ -641,10 +676,10 @@ local function PreFilterFunc(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("26. " .. L["LFG"], ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("26. " .. L["LFG"], ...) end elseif (chanID == 26 and not TF3.db.profile.filterLFG) then filtered = false @@ -659,10 +694,10 @@ local function PreFilterFunc(self, event, ...) if (TF3:FindRepeat(msg, userID, msgID, coloredName) == true) then filtered = true else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("X. " .. chanName, ...) end else - filtered = TF3:FilterFunc(...) + filtered = TF3:FilterFunc("X. " .. chanName, ...) end elseif (TF3:SpecialChans(chanName) == true and not TF3.db.profile.special_enable) then filtered = false @@ -671,7 +706,7 @@ local function PreFilterFunc(self, event, ...) end --[[ Filter Func ]]-- -function TF3:FilterFunc(...) +function TF3:FilterFunc(chan, ...) local filterFuncList = ChatFrame_GetMessageEventFilters("CHAT_MSG_CHANNEL") local msg = arg1 or select(1, ...) local userID = arg2 or select(2, ...) @@ -682,17 +717,17 @@ function TF3:FilterFunc(...) local cName = arg12 or select(12, ...) local coloredName = TF3:GetColoredName(userID, cName) local msg = lower(msg) - if (chanID == 1) then - chan = "1. " .. L["General"] - elseif (zoneID == 2) then - chan = "2. " .. L["Trade"] - elseif (zoneID == 26) then - chan = "26. " .. L["LFG"] - elseif (TF3:SpecialChans(chanName) == true) then - chan = "X. Special Channel" - else - chan = "0. " .. L["Say/Yell"] - end +--~ if (chanID == 1) then +--~ chan = "1. " .. L["General"] +--~ elseif (zoneID == 2) then +--~ chan = "2. " .. L["Trade"] +--~ elseif (zoneID == 26) then +--~ chan = "26. " .. L["LFG"] +--~ elseif (TF3:SpecialChans(chanName) == true) then +--~ chan = "X. Special Channel" +--~ else +--~ chan = "0. " .. L["Say/Yell"] +--~ end if (filterFuncList and TF3.db.profile.turnOn) then filtered = true if (TF3.db.profile.debug) then @@ -720,6 +755,26 @@ function TF3:FilterFunc(...) filtered = false end end + elseif (chan == "0. BG") then + if (TF3.db.profile.filters.BG == nil) then + TF3.db.profile.filters.BG = L.FILTERS.BG + end + for k,v in pairs(TF3.db.profile.filters.BG) do + if (TF3.db.profile.debug and not TF3.db.profile.debug_checking) then + if (lastmsg ~= msg or lastuserID ~= userID) then + TF3:FindFrame(debugFrame, L["CFM"] .. " " .. v) + end + end + if (find(msg,v)) then + if (TF3.db.profile.debug) then + if (lastmsg ~= msg or lastuserID ~= userID) then + TF3:FindFrame(debugFrame, L["MATCHED"] .. " |cffff8080" .. v .. "|r") + lastmsg, lastuserID = msg, userID + end + end + filtered = false + end + end else if (TF3.db.profile.filters.BASE == nil) then TF3.db.profile.filters.BASE = L.FILTERS.BASE @@ -760,4 +815,6 @@ end ChatFrame_AddMessageEventFilter("CHAT_MSG_SAY", PreFilterFunc_Say) ChatFrame_AddMessageEventFilter("CHAT_MSG_YELL", PreFilterFunc_Yell) ChatFrame_AddMessageEventFilter("CHAT_MSG_ADDON", PreFilterFunc_Addon) +ChatFrame_AddMessageEventFilter("CHAT_MSG_BATTLEGROUND", PreFilterFunc_BG) +ChatFrame_AddMessageEventFilter("CHAT_MSG_BATTLEGROUND_LEADER", PreFilterFunc_BG) ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", PreFilterFunc) diff --git a/TradeFilter3Options.lua b/TradeFilter3Options.lua index 314e6a8..a107765 100644 --- a/TradeFilter3Options.lua +++ b/TradeFilter3Options.lua @@ -93,6 +93,16 @@ options = { 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, @@ -206,6 +216,7 @@ options = { }, editFilterGroup = { type = "group", + childGroups = "tab", handler = TF3, order = 2, disabled = function() @@ -214,132 +225,251 @@ options = { name = L["EditFilterGroup"], desc = L["EditFilterGD"], args = { - optionsHeader2 = { - 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.addfilter_enable end, - set = function() TF3.db.profile.addfilter_enable = not TF3.db.profile.addfilter_enable end, - }, - optionsHeader2a = { - type = "header", - order = 3, - name = L["BTF"], - }, - tradefilters = { - type = 'input', - disabled = function() - return not TF3.db.profile.addfilter_enable - end, - multiline = 8, - order = 4, - width = "full", - name = L["BTF"], - desc = L["BTFD"], - usage = L["INPUSAGE"], - get = function(info) - local a = {} - local ret = "" - if (TF3.db.profile.filters.TRADE == nil) 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 - key = "FILTER" - TF3.db.profile.filters.TRADE[key..k] = v - end - end, - }, - reset_tradefilters = { - type = 'execute', + editFilterGroupTRADE = { + type = "group", + handler = TF3, + order = 1, disabled = function() - return not TF3.db.profile.addfilter_enable + return not TF3.db.profile.turnOn end, - order = 5, - name = L["RTF"], - desc = L["RTF"], - func = function() TF3.db.profile.filters.TRADE = TF3:CopyTable(L.FILTERS.TRADE) end, - }, - optionsHeader2b = { - type = "header", - order = 6, - name = L["BCF"], - }, - basefilters = { - type = 'input', + name = "TRADE Filters", + desc = "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 (TF3.db.profile.filters.TRADE == nil) 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 + key = "FILTER" + TF3.db.profile.filters.TRADE[key..k] = v + 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.addfilter_enable - end, - multiline = 8, - order = 7, - width = "full", - name = L["BCF"], - desc = L["BCFD"], - usage = L["INPUSAGE"], - get = function(info) - local a = {} - local ret = "" - if (TF3.db.profile.filters.BASE == nil) 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 - key = "FILTER" - TF3.db.profile.filters.BASE[key..k] = v - end + return not TF3.db.profile.turnOn end, - }, - reset_basefilters = { - type = 'execute', + name = "BASE Filters", + desc = "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 (TF3.db.profile.filters.BASE == nil) 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 + key = "FILTER" + TF3.db.profile.filters.BASE[key..k] = v + 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.addfilter_enable + return not TF3.db.profile.turnOn end, - order = 8, - name = L["RBF"], - desc = L["RBF"], - func = function() TF3.db.profile.filters.BASE = TF3:CopyTable(L.FILTERS.BASE) end, + name = "BG Filters", + desc = "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 (TF3.db.profile.filters.BG == nil) 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 + key = "FILTER" + TF3.db.profile.filters.BG[key..k] = v + 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() @@ -348,165 +478,189 @@ options = { name = L["listsGroup"], desc = L["listsGD"], args = { - optionsHeader3a = { - 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, - 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 = 8, - order = 4, - width = "full", - name = L["bLists"], - usage = L["INPUSAGE"], - get = function(info) - local a = {} - local ret = "" - if (TF3.db.profile.blacklist == nil) 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 - key = "BLIST" - TF3.db.profile.blacklist[key..k] = v - 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, - }, - optionsHeader3b = { - type = "header", - order = 6, - name = L["wLists"], - }, - whitelist_enable = { - type = 'toggle', - order = 8, - 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 = 9, - 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_repeat_bypass = { - type = 'toggle', - order = 10, - width = "double", - name = L["RPTBYPASS"], - desc = L["RPTBYPASSD"], - get = function() return TF3.db.profile.wlbp end, - set = function() TF3.db.profile.wlbp = not TF3.db.profile.wlbp end, - }, - whitelist_blacklist_bypass = { - type = 'toggle', - order = 11, - 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', + listsGroupBlack = { + type = "group", + handler = TF3, + order = 1, disabled = function() - return not TF3.db.profile.ewl - end, - multiline = 8, - order = 12, - width = "full", - name = L["wLists"], - usage = L["INPUSAGE"], - get = function(info) - local a = {} - local ret = "" - if (TF3.db.profile.whitelist == nil) 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 - key = "WLIST" - TF3.db.profile.whitelist[key..k] = v - end + return not TF3.db.profile.turnOn end, - }, - reset_wlist = { - type = 'execute', + name = L["listsGroup"], + 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, + 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 (TF3.db.profile.blacklist == nil) 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 + key = "BLIST" + TF3.db.profile.blacklist[key..k] = v + 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.ewl + return not TF3.db.profile.turnOn end, - order = 13, - name = L["RWLS"], - desc = L["RWLS"], - func = function() TF3.db.profile.whitelist = TF3:CopyTable(L.WHITELIST) end, + name = L["listsGroup"], + 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, + 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_repeat_bypass = { + type = 'toggle', + order = 4, + width = "double", + name = L["RPTBYPASS"], + desc = L["RPTBYPASSD"], + get = function() return TF3.db.profile.wlbp end, + set = function() TF3.db.profile.wlbp = not TF3.db.profile.wlbp end, + }, + whitelist_blacklist_bypass = { + type = 'toggle', + order = 5, + 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 (TF3.db.profile.whitelist == nil) 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 + key = "WLIST" + TF3.db.profile.whitelist[key..k] = v + 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, + }, + }, }, }, }, -- 1.7.9.5