Erik L. Vonderscheer [07-06-09 - 05:32]
diff --git a/Docs/main.txt b/Docs/main.txt
index 6544ab4..7a6333a 100644
--- a/Docs/main.txt
+++ b/Docs/main.txt
@@ -30,14 +30,18 @@ Adding a set, ie [xXyY], will attempt to find a match for any character given in
<<code php>>/tf or /filter<</code>>
=== To Do ===
+
+
+==== ChangeLog
+<<code php>>
+r122
- Distinguish between Trade channel and LFG/General for the ability to have differant filter tables for pattern matching.\\
- Ability to edit //entire// filter tables rather than having static lists.
-==== ChangeLog
-===== r82
-++TradeFilter also will not filter any messages from your friends, they must be on your current characters friends list for this functionality to work.++
-
-===== r111
-++TradeFilter now contains a Black/White list, though not yet configurable through the GUI.++
+r111
+ - TradeFilter now contains a Black/White list, though not yet configurable through the GUI.
+r82
+ - TradeFilter also will not filter any messages from your friends, they must be on your current characters friends list for this functionality to work.
+<</code>>
=== Supported Translations
//Please help localize this project// [[http://www.wowace.com/projects/trade-filter/localization/|HERE]]
diff --git a/TradeFilter3.lua b/TradeFilter3.lua
index 9e7d49b..f05e4c8 100644
--- a/TradeFilter3.lua
+++ b/TradeFilter3.lua
@@ -38,9 +38,9 @@ local friends = LibStub("LibFriends-1.0")
local TF3 = TradeFilter3
local MAJOR_VERSION = "3.0"
-local MINOR_VERSION = 000 + tonumber(("$Revision: @project-revision@ $"):match("%d+"))
+local MINOR_VERSION = 000 + tonumber(("$Revision: 120 $"):match("%d+"))
TF3.version = MAJOR_VERSION .. "." .. MINOR_VERSION
-TF3.date = string.sub("$Date: @file-date-iso@ $", 8, 17)
+TF3.date = string.sub("$Date: 2009-07-03T15:59:07Z $", 8, 17)
--[[ Locals ]]--
local _G = _G
@@ -68,12 +68,15 @@ defaults = {
filterLFG = false,
filterGeneral = false,
filterTrade = true,
- addfilter_enable = false,
+ editfilter_enable = false,
+ editlists_enable = false,
friendslist = {},
whitelist = L.WHITELIST,
blacklist = L.BLACKLIST,
- filter = L.FILTER
- }
+ filters = L.FILTERS,
+ basefilters = L.FILTERS.BASE,
+ tradefilters = L.FILTERS.TRADE,
+ },
}
function TF3:OnInitialize()
@@ -204,14 +207,14 @@ function TF3:FindFrame(toFrame, msg)
if (toFrame == name) then
toFrame = _G["ChatFrame" .. i]
toFrame:AddMessage(msg)
- else
- --TF3:CreateFrame(toFrame)
+ elseif (toFrame ~= name) then
+--~ TF3:CreateFrame(toFrame)
end
end
end
function TF3:CreateFrame(newFrame)
- --Need to find the proper way to create a new chatframe that is docked to the default frame
+--~ Looking for the proper solution
end
--[[ PreFilter Functions ]]--
@@ -283,7 +286,7 @@ local function PreFilterFunc(self, event, ...)
else
filtered = TF3:FilterFunc(...)
end
- elseif (zoneID == 2 and not TF3.db.profile.filtertrade) then
+ elseif (zoneID == 2 and not TF3.db.profile.filterTrade) then
filtered = false
end
--[[ Check for General Channel and User setting ]]--
@@ -295,7 +298,7 @@ local function PreFilterFunc(self, event, ...)
else
filtered = TF3:FilterFunc(...)
end
- elseif (chanID == 1 and not TF3.db.profile.filtergeneral) then
+ elseif (chanID == 1 and not TF3.db.profile.filterGeneral) then
filtered = false
end
--[[ Check for LFG Channel and User setting ]]--
@@ -326,26 +329,44 @@ function TF3:FilterFunc(...)
chan = "0. Say/Yell"
end
local arg1 = lower(arg1)
- if (filterFuncList and self.db.profile.turnOn) then
- filtered = true
- --@alpha@
- if (self.db.profile.debug) then
- TF3:FindFrame(debugFrame, "arg1: " .. arg1 .. " arg2: " .. arg2)
- end
- --@end-alpha@
- for i,v in pairs(self.db.profile.filter) do
+ if (filterFuncList and self.db.profile.turnOn) then
+ filtered = true
--@alpha@
if (self.db.profile.debug) then
- TF3:FindFrame(debugFrame, "Checking for Match with " .. v)
+ TF3:FindFrame(debugFrame, "arg1: " .. arg1 .. " arg2: " .. arg2)
end
--@end-alpha@
- if (find(arg1,v)) then
+ if (arg7 == 26) then
+ for i,v in pairs(self.db.profile.basefilters) do
--@alpha@
if (self.db.profile.debug) then
- TF3:FindFrame(debugFrame, "|cff00ff00**** Matched ***|r")
+ TF3:FindFrame(debugFrame, "Checking for Match with " .. v)
end
--@end-alpha@
- filtered = false
+ if (find(arg1,v)) then
+ --@alpha@
+ if (self.db.profile.debug) then
+ TF3:FindFrame(debugFrame, "|cff00ff00**** Matched ***|r")
+ end
+ --@end-alpha@
+ filtered = false
+ end
+ end
+ else
+ for i,v in pairs(self.db.profile.tradefilters) do
+ --@alpha@
+ if (self.db.profile.debug) then
+ TF3:FindFrame(debugFrame, "Checking for Match with " .. v)
+ end
+ --@end-alpha@
+ if (find(arg1,v)) then
+ --@alpha@
+ if (self.db.profile.debug) then
+ TF3:FindFrame(debugFrame, "|cff00ff00**** Matched ***|r")
+ end
+ --@end-alpha@
+ filtered = false
+ end
end
end
if (filtered == true) then
diff --git a/TradeFilter3Options.lua b/TradeFilter3Options.lua
index fad3322..97ec5f2 100644
--- a/TradeFilter3Options.lua
+++ b/TradeFilter3Options.lua
@@ -7,6 +7,33 @@ local TradeFilter3 = LibStub("AceAddon-3.0"):GetAddon("TradeFilter3")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeFilter3")
local TF3 = TradeFilter3
+function TF3:Del(t)
+ wipe(t)
+ setmetatable(t, nil)
+ pool[t] = true
+ return nil
+end
+
+function TF3:ClearTable(t, recursively)
+ if t ~= nil and type(t) == 'table' then
+ if not recursively then
+ wipe(t)
+ else
+ for k, v in pairs(t) do
+ if type(v) == 'table' then
+ TF3:ClearTable(v, true);
+ t[k] = TF3:Del(v);
+ else
+ t[k] = nil;
+ end
+ end
+ end
+ return t;
+ else
+ return {};
+ end
+end
+
--[[ Options Table ]]--
options = {
type="group",
@@ -102,105 +129,102 @@ options = {
},
},
},
- addFilterGroup = {
+ editFilterGroup = {
type = "group",
handler = TF3,
order = 2,
disabled = function()
return not TF3.db.profile.turnOn
end,
- name = L["addFilterGroup"],
- desc = L["AddFilterGD"],
+ name = L["EditFilterGroup"],
+ desc = L["EditFilterGD"],
args = {
optionsHeader2 = {
type = "header",
order = 1,
- name = L["AddFilter"],
+ name = L["EditFilter"],
},
- addfilter_enable = {
+ editfilter_enable = {
type = 'toggle',
order = 2,
width = "double",
- name = L["AddFilter"],
- desc = L["AddFilterD"],
+ 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,
},
- addfilter1 = {
- type = 'input',
- disabled = function()
- return not TF3.db.profile.addfilter_enable
- end,
- order = 3,
- width = "double",
- name = L["AddFilter1"],
- desc = L["AddFilter1D"],
- get = function(info)
- return TF3.db.profile.filter["20"]
- end,
- set = function(info, value)
- if (value == "") then
- TF3.db.profile.filter["20"] = nil
- print("Expression removed from custom filter list.")
- else
- TF3.db.profile.filter["20"] = value
- print(format("%s added to filter expression list.", value))
- end
- end,
- usage = L["AddFilterUsage"],
- },
- addfilter2 = {
+ tradefilters = {
type = 'input',
disabled = function()
return not TF3.db.profile.addfilter_enable
end,
- order = 4,
+ multiline = 8,
+ order = 7,
width = "double",
- name = L["AddFilter2"],
- desc = L["AddFilter1D"],
+ name = L["BTF"],
+--~ desc = L["BTF"],
get = function(info)
- return TF3.db.profile.filter["21"]
- end,
+ local ret = '';
+ for k, v in pairs(TF3.db.profile.tradefilters) do
+ if ret == '' then
+ ret = k..' = '..v;
+ else
+ ret = ret..'\n'..k..' = '..v;
+ end
+ end
+ return ret;
+ end,
set = function(info, value)
- if (value == "") then
- TF3.db.profile.filter["21"] = nil
- print("Expression removed from custom filter list.")
- else
- TF3.db.profile.filter["21"] = value
- print(format("%s added to filter expression list.", value))
+ TF3:ClearTable(TF3.db.profile.tradefilters)
+ local tbl = { strsplit('\n', value) };
+ local type, val;
+ for i, str in pairs(tbl) do
+ type, val = strsplit('=', str);
+ type = strtrim(type);
+ val = strtrim(val);
+ TF3.db.profile.tradefilters[type] = val;
end
end,
- usage = L["AddFilterUsage"],
},
- addfilter3 = {
+ basefilters = {
type = 'input',
disabled = function()
return not TF3.db.profile.addfilter_enable
end,
- order = 5,
+ multiline = 8,
+ order = 8,
width = "double",
- name = L["AddFilter3"],
- desc = L["AddFilter1D"],
+ name = L["BCF"],
+--~ desc = L["BCF"],
get = function(info)
- return TF3.db.profile.filter["22"]
- end,
+ local ret = '';
+ for k, v in pairs(TF3.db.profile.basefilters) do
+ if ret == '' then
+ ret = k..' = '..v;
+ else
+ ret = ret..'\n'..k..' = '..v;
+ end
+ end
+ return ret;
+ end,
set = function(info, value)
- if (value == "") then
- TF3.db.profile.filter["22"] = nil
- print("Expression removed from custom filter list.")
- else
- TF3.db.profile.filter["22"] = value
- print(format("%s added to filter expression list.", value))
+ TF3:ClearTable(TF3.db.profile.basefilters)
+ local tbl = { strsplit('\n', value) };
+ local type, val;
+ for i, str in pairs(tbl) do
+ type, val = strsplit('=', str);
+ type = strtrim(type);
+ val = strtrim(val);
+ TF3.db.profile.basefilters[type] = val;
end
end,
- usage = L["AddFilterUsage"],
},
},
},
listsGroup = {
type = "group",
handler = TF3,
- order = 2,
+ order = 3,
disabled = function()
return not TF3.db.profile.turnOn
end,
@@ -210,19 +234,89 @@ options = {
optionsHeader3 = {
type = "header",
order = 1,
- name = L["bLists"],
+ name = L["bwLists"],
},
- optionsHeader4 = {
- type = "header",
- order = 1,
- name = L["wLists"],
+ editlists_enable = {
+ type = 'toggle',
+ order = 2,
+ width = "double",
+ name = L["EditLists"],
+ desc = L["EditLists"],
+ get = function() return TF3.db.profile.editlists_enable end,
+ set = function() TF3.db.profile.editlists_enable = not TF3.db.profile.editlists_enable end,
+ },
+ blist = {
+ type = 'input',
+ disabled = function()
+ return not TF3.db.profile.editlists_enable
+ end,
+ multiline = 8,
+ order = 3,
+ width = "double",
+ name = L["bLists"],
+--~ desc = L["bLists"],
+ get = function(info)
+ local ret = '';
+ for k, v in pairs(TF3.db.profile.blacklist) do
+ if ret == '' then
+ ret = k..' = '..v;
+ else
+ ret = ret..'\n'..k..' = '..v;
+ end
+ end
+ return ret;
+ end,
+ set = function(info, value)
+ TF3:ClearTable(TF3.db.profile.blacklist)
+ local tbl = { strsplit('\n', value) };
+ local type, val;
+ for i, str in pairs(tbl) do
+ type, val = strsplit('=', str);
+ type = strtrim(type);
+ val = strtrim(val);
+ TF3.db.profile.blacklist[type] = val;
+ end
+ end,
+ },
+ wlist = {
+ type = 'input',
+ disabled = function()
+ return not TF3.db.profile.editlists_enable
+ end,
+ multiline = 8,
+ order = 4,
+ width = "double",
+ name = L["wLists"],
+--~ desc = L["wLists"],
+ get = function(info)
+ local ret = '';
+ for k, v in pairs(TF3.db.profile.whitelist) do
+ if ret == '' then
+ ret = k..' = '..v;
+ else
+ ret = ret..'\n'..k..' = '..v;
+ end
+ end
+ return ret;
+ end,
+ set = function(info, value)
+ TF3:ClearTable(TF3.db.profile.whitelist)
+ local tbl = { strsplit('\n', value) };
+ local type, val;
+ for i, str in pairs(tbl) do
+ type, val = strsplit('=', str);
+ type = strtrim(type);
+ val = strtrim(val);
+ TF3.db.profile.whitelist[type] = val;
+ end
+ end,
},
},
},
outputGroup = {
type = "group",
handler = TF3,
- order = 3,
+ order = 4,
disabled = function()
return not TF3.db.profile.turnOn
end,