1461 lines
45 KiB
Lua
1461 lines
45 KiB
Lua
local E, _, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local _, L = unpack(select(2, ...))
|
|
local UF = E:GetModule("UnitFrames")
|
|
|
|
local type, pairs, tonumber, tostring = type, pairs, tonumber, tostring
|
|
local gsub, match, format = string.gsub, string.match, string.format
|
|
|
|
local GetSpellInfo = GetSpellInfo
|
|
|
|
local quickSearchText, selectedSpell, selectedFilter = ""
|
|
|
|
local function filterMatch(s,v)
|
|
local m1, m2, m3, m4 = "^"..v.."$", "^"..v..",", ","..v.."$", ","..v..","
|
|
return (match(s, m1) and m1) or (match(s, m2) and m2) or (match(s, m3) and m3) or (match(s, m4) and v..",")
|
|
end
|
|
|
|
local function removePriority(value)
|
|
if not value then return end
|
|
local x,y,z = E.db.unitframe.units,E.db.nameplates.units
|
|
for n, t in pairs(x) do
|
|
if t and t.buffs and t.buffs.priority and t.buffs.priority ~= "" then
|
|
z = filterMatch(t.buffs.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].buffs.priority = gsub(t.buffs.priority, z, "") end
|
|
end
|
|
if t and t.debuffs and t.debuffs.priority and t.debuffs.priority ~= "" then
|
|
z = filterMatch(t.debuffs.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].debuffs.priority = gsub(t.debuffs.priority, z, "") end
|
|
end
|
|
if t and t.aurabar and t.aurabar.priority and t.aurabar.priority ~= "" then
|
|
z = filterMatch(t.aurabar.priority, E:EscapeString(value))
|
|
if z then E.db.unitframe.units[n].aurabar.priority = gsub(t.aurabar.priority, z, "") end
|
|
end
|
|
end
|
|
for n, t in pairs(y) do
|
|
if t and t.buffs and t.buffs.priority and t.buffs.priority ~= "" then
|
|
z = filterMatch(t.buffs.priority, E:EscapeString(value))
|
|
if z then E.db.nameplates.units[n].buffs.priority = gsub(t.buffs.priority, z, "") end
|
|
end
|
|
if t and t.debuffs and t.debuffs.priority and t.debuffs.priority ~= "" then
|
|
z = filterMatch(t.debuffs.priority, E:EscapeString(value))
|
|
if z then E.db.nameplates.units[n].debuffs.priority = gsub(t.debuffs.priority, z, "") end
|
|
end
|
|
end
|
|
end
|
|
|
|
local FilterResetState = {}
|
|
|
|
local function UpdateFilterGroup()
|
|
--Prevent errors when choosing a new filter, by doing a reset of the groups
|
|
E.Options.args.filters.args.filterGroup = nil
|
|
E.Options.args.filters.args.spellGroup = nil
|
|
E.Options.args.filters.args.resetGroup = nil
|
|
E.Options.args.filters.childGroups = nil
|
|
|
|
if selectedFilter == "Debuff Highlight" then
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 10,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
args = {
|
|
addSpell = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
desc = L["Add a spell to the filter. Use spell ID if you don't want to match all auras which share the same name."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if tonumber(value) then value = tonumber(value) end
|
|
E.global.unitframe.DebuffHighlightColors[value] = {enable = true, style = "GLOW", color = {r = 0.8, g = 0, b = 0, a = 0.85}}
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
},
|
|
removeSpell = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove Spell"],
|
|
desc = L["Remove a spell from the filter. Use the spell ID if you see the ID as part of the spell name in the filter."],
|
|
func = function()
|
|
local value = selectedSpell:match(" %((%d+)%)$") or selectedSpell
|
|
if tonumber(value) then value = tonumber(value) end
|
|
E.global.unitframe.DebuffHighlightColors[value] = nil
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end,
|
|
disabled = function() return not (selectedSpell and selectedSpell ~= "") end
|
|
},
|
|
quickSearch = {
|
|
order = 3,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
guiInline = true,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value) selectedSpell = value UpdateFilterGroup() end,
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.unitframe.DebuffHighlightColors
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for filter in pairs(list) do
|
|
if tonumber(filter) then
|
|
local spellName = GetSpellInfo(filter)
|
|
if spellName then
|
|
filter = format("%s (%s)", spellName, filter)
|
|
else
|
|
filter = tostring(filter)
|
|
end
|
|
end
|
|
if filter:lower():find(searchText) then filters[filter] = filter end
|
|
end
|
|
if not next(filters) then filters[""] = L["NONE"] end
|
|
return filters
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function(info)
|
|
E.global.unitframe.DebuffHighlightColors = E:CopyTable({}, G.unitframe.DebuffHighlightColors)
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
local spellID = selectedSpell and match(selectedSpell, "(%d+)")
|
|
if spellID then spellID = tonumber(spellID) end
|
|
|
|
if not selectedSpell or E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)] == nil then
|
|
E.Options.args.filters.args.spellGroup = nil
|
|
return
|
|
end
|
|
|
|
E.Options.args.filters.args.spellGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedSpell,
|
|
guiInline = true,
|
|
args = {
|
|
enabled = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info)
|
|
return E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].enable
|
|
end,
|
|
set = function(info, value)
|
|
E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].enable = value
|
|
UF:Update_AllFrames()
|
|
end
|
|
},
|
|
style = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Style"],
|
|
values = {
|
|
["GLOW"] = L["Glow"],
|
|
["FILL"] = L["Fill"]
|
|
},
|
|
get = function(info)
|
|
return E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].style
|
|
end,
|
|
set = function(info, value)
|
|
E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].style = value
|
|
UF:Update_AllFrames()
|
|
end
|
|
},
|
|
color = {
|
|
order = 1,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
hasAlpha = true,
|
|
get = function(info)
|
|
local t = E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].color
|
|
return t.r, t.g, t.b, t.a
|
|
end,
|
|
set = function(info, r, g, b, a)
|
|
local t = E.global.unitframe.DebuffHighlightColors[(spellID or selectedSpell)].color
|
|
t.r, t.g, t.b, t.a = r, g, b, a
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
elseif selectedFilter == "AuraBar Colors" then
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 10,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
args = {
|
|
addSpell = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
desc = L["Add a spell to the filter. Use spell ID if you don't want to match all auras which share the same name."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if tonumber(value) then value = tonumber(value) end
|
|
if not E.global.unitframe.AuraBarColors[value] then
|
|
E.global.unitframe.AuraBarColors[value] = false
|
|
end
|
|
UpdateFilterGroup()
|
|
UF:CreateAndUpdateUF("player")
|
|
UF:CreateAndUpdateUF("target")
|
|
UF:CreateAndUpdateUF("focus")
|
|
end
|
|
},
|
|
removeSpell = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove Spell"],
|
|
desc = L["Remove a spell from the filter. Use the spell ID if you see the ID as part of the spell name in the filter."],
|
|
func = function()
|
|
local value = selectedSpell:match(" %((%d+)%)$") or selectedSpell
|
|
if tonumber(value) then value = tonumber(value) end
|
|
if G.unitframe.AuraBarColors[value] then
|
|
E.global.unitframe.AuraBarColors[value] = false
|
|
E:Print(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
|
|
else
|
|
E.global.unitframe.AuraBarColors[value] = nil
|
|
end
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:CreateAndUpdateUF("player")
|
|
UF:CreateAndUpdateUF("target")
|
|
UF:CreateAndUpdateUF("focus")
|
|
end,
|
|
disabled = function() return not (selectedSpell and selectedSpell ~= "") end
|
|
},
|
|
quickSearch = {
|
|
order = 3,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
guiInline = true,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value)
|
|
selectedSpell = value
|
|
UpdateFilterGroup()
|
|
end,
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.unitframe.AuraBarColors
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for filter in pairs(list) do
|
|
if tonumber(filter) then
|
|
local spellName = GetSpellInfo(filter)
|
|
if spellName then
|
|
filter = format("%s (%s)", spellName, filter)
|
|
else
|
|
filter = tostring(filter)
|
|
end
|
|
end
|
|
if filter:lower():find(searchText) then filters[filter] = filter end
|
|
end
|
|
if not next(filters) then filters[""] = L["NONE"] end
|
|
return filters
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function(info)
|
|
E.global.unitframe.AuraBarColors = E:CopyTable({}, G.unitframe.AuraBarColors)
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
local spellID = selectedSpell and match(selectedSpell, "(%d+)")
|
|
if spellID then spellID = tonumber(spellID) end
|
|
|
|
if not selectedSpell or E.global.unitframe.AuraBarColors[(spellID or selectedSpell)] == nil then
|
|
E.Options.args.filters.args.spellGroup = nil
|
|
return
|
|
end
|
|
|
|
E.Options.args.filters.args.spellGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedSpell,
|
|
guiInline = true,
|
|
args = {
|
|
color = {
|
|
order = 1,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
get = function(info)
|
|
local t = E.global.unitframe.AuraBarColors[(spellID or selectedSpell)]
|
|
if type(t) == "boolean" then
|
|
return 0, 0, 0, 1
|
|
else
|
|
return t.r, t.g, t.b, t.a
|
|
end
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local spell = (spellID or selectedSpell)
|
|
if type(E.global.unitframe.AuraBarColors[spell]) ~= "table" then
|
|
E.global.unitframe.AuraBarColors[spell] = {}
|
|
end
|
|
local t = E.global.unitframe.AuraBarColors[spell]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:CreateAndUpdateUF("player")
|
|
UF:CreateAndUpdateUF("target")
|
|
UF:CreateAndUpdateUF("focus")
|
|
end
|
|
},
|
|
removeColor = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Restore Defaults"],
|
|
func = function(info)
|
|
E.global.unitframe.AuraBarColors[(spellID or selectedSpell)] = false
|
|
UF:CreateAndUpdateUF("player")
|
|
UF:CreateAndUpdateUF("target")
|
|
UF:CreateAndUpdateUF("focus")
|
|
end
|
|
}
|
|
}
|
|
}
|
|
elseif selectedFilter == "Buff Indicator (Pet)" then
|
|
if not E.global.unitframe.buffwatch.PET then
|
|
E.global.unitframe.buffwatch.PET = {}
|
|
end
|
|
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
childGroups = "select",
|
|
args = {
|
|
addSpellID = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add SpellID"],
|
|
desc = L["Add a spell to the filter."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if not tonumber(value) then
|
|
E:Print(L["Value must be a number"])
|
|
elseif not GetSpellInfo(value) then
|
|
E:Print(L["Not valid spell id"])
|
|
else
|
|
E.global.unitframe.buffwatch.PET[tonumber(value)] = {["enabled"] = true, ["id"] = tonumber(value), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = true, ["style"] = "coloredIcon", ["xOffset"] = 0, ["yOffset"] = 0}
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:CreateAndUpdateUF("pet")
|
|
end
|
|
end
|
|
},
|
|
removeSpellID = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove SpellID"],
|
|
desc = L["Remove a spell from the filter."],
|
|
func = function()
|
|
if G.unitframe.buffwatch.PET[selectedSpell] then
|
|
E.global.unitframe.buffwatch.PET[selectedSpell].enabled = false
|
|
E:Print(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
|
|
else
|
|
E.global.unitframe.buffwatch.PET[selectedSpell] = nil
|
|
end
|
|
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:CreateAndUpdateUF("pet")
|
|
end,
|
|
disabled = function() return not selectedSpell end
|
|
},
|
|
quickSearch = {
|
|
order = 3,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
values = function()
|
|
local values = {}
|
|
local list = E.global.unitframe.buffwatch.PET
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for _, spell in pairs(list) do
|
|
if spell.id then
|
|
local name = GetSpellInfo(spell.id)
|
|
if name and name:lower():find(searchText) then values[spell.id] = name end
|
|
end
|
|
end
|
|
return values
|
|
end,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value)
|
|
selectedSpell = value
|
|
UpdateFilterGroup()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function(info)
|
|
E.global.unitframe.buffwatch.PET = E:CopyTable({}, G.unitframe.buffwatch.PET)
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
if selectedSpell then
|
|
local name = GetSpellInfo(selectedSpell)
|
|
if name then
|
|
E.Options.args.filters.args.filterGroup.args[name] = {
|
|
order = -10,
|
|
type = "group",
|
|
name = name.." ("..selectedSpell..")",
|
|
get = function(info) return E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]] end,
|
|
set = function(info, value) E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]] = value UF:CreateAndUpdateUF("pet") end,
|
|
args = {
|
|
enabled = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
},
|
|
point = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Anchor Point"],
|
|
values = {
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["TOPRIGHT"] = "TOPRIGHT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["LEFT"] = "LEFT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOP"] = "TOP",
|
|
["BOTTOM"] = "BOTTOM"
|
|
}
|
|
},
|
|
sizeOverride = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Size Override"],
|
|
min = 0, max = 50, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["xOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["yOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
style = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Style"],
|
|
values = {
|
|
["coloredIcon"] = L["Colored Icon"],
|
|
["texturedIcon"] = L["Textured Icon"],
|
|
["NONE"] = L["NONE"]
|
|
}
|
|
},
|
|
color = {
|
|
order = 6,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
get = function(info)
|
|
local t = E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]]
|
|
return t.r, t.g, t.b, t.a
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:CreateAndUpdateUF("pet")
|
|
end
|
|
},
|
|
displayText = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["Display Text"]
|
|
},
|
|
textColor = {
|
|
order = 8,
|
|
type = "color",
|
|
name = L["Text Color"],
|
|
get = function(info)
|
|
local t = E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]]
|
|
if t then
|
|
return t.r, t.g, t.b, t.a
|
|
else
|
|
return 1, 1, 1, 1
|
|
end
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.global.unitframe.buffwatch.PET[selectedSpell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:CreateAndUpdateUF("pet")
|
|
end
|
|
},
|
|
decimalThreshold = {
|
|
order = 9,
|
|
type = "range",
|
|
name = L["Decimal Threshold"],
|
|
desc = L["Threshold before text goes into decimal form. Set to -1 to disable decimals."],
|
|
min = -1, max = 10, step = 1
|
|
},
|
|
textThreshold = {
|
|
order = 10,
|
|
type = "range",
|
|
name = L["Text Threshold"],
|
|
desc = L["At what point should the text be displayed. Set to -1 to disable."],
|
|
min = -1, max = 60, step = 1
|
|
},
|
|
anyUnit = {
|
|
order = 11,
|
|
type = "toggle",
|
|
name = L["Show Aura From Other Players"]
|
|
},
|
|
onlyShowMissing = {
|
|
order = 12,
|
|
type = "toggle",
|
|
name = L["Show When Not Active"]
|
|
}
|
|
}
|
|
}
|
|
else
|
|
E:Print(L["Not valid spell id"])
|
|
end
|
|
end
|
|
elseif selectedFilter == "Buff Indicator" then
|
|
if not E.global.unitframe.buffwatch[E.myclass] then
|
|
E.global.unitframe.buffwatch[E.myclass] = {}
|
|
end
|
|
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
childGroups = "select",
|
|
args = {
|
|
addSpellID = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add SpellID"],
|
|
desc = L["Add a spell to the filter."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if not tonumber(value) then
|
|
E:Print(L["Value must be a number"])
|
|
elseif not GetSpellInfo(value) then
|
|
E:Print(L["Not valid spell id"])
|
|
else
|
|
E.global.unitframe.buffwatch[E.myclass][tonumber(value)] = {["enabled"] = true, ["id"] = tonumber(value), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = false, ["style"] = "coloredIcon", ["xOffset"] = 0, ["yOffset"] = 0}
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
UF:UpdateAuraWatchFromHeader("raidpet", true)
|
|
end
|
|
end
|
|
},
|
|
removeSpellID = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove SpellID"],
|
|
desc = L["Remove a spell from the filter."],
|
|
func = function()
|
|
if E.global.unitframe.buffwatch[E.myclass][selectedSpell] then
|
|
E.global.unitframe.buffwatch[E.myclass][selectedSpell].enabled = false
|
|
E:Print(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
|
|
else
|
|
E.global.unitframe.buffwatch[E.myclass][selectedSpell] = nil
|
|
end
|
|
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
UF:UpdateAuraWatchFromHeader("raidpet", true)
|
|
end,
|
|
disabled = function() return not selectedSpell end
|
|
},
|
|
quickSearch = {
|
|
order = 3,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
values = function()
|
|
local values = {}
|
|
local list = E.global.unitframe.buffwatch[E.myclass]
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for _, spell in pairs(list) do
|
|
if spell.id then
|
|
local name = GetSpellInfo(spell.id)
|
|
if name and name:lower():find(searchText) then values[spell.id] = name end
|
|
end
|
|
end
|
|
return values
|
|
end,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value)
|
|
selectedSpell = value
|
|
UpdateFilterGroup()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function(info)
|
|
E.global.unitframe.buffwatch[E.myclass] = E:CopyTable({}, G.unitframe.buffwatch[E.myclass])
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
if selectedSpell then
|
|
local name = GetSpellInfo(selectedSpell)
|
|
E.Options.args.filters.args.filterGroup.args[name] = {
|
|
order = -10,
|
|
type = "group",
|
|
name = name.." ("..selectedSpell..")",
|
|
get = function(info) return E.global.unitframe.buffwatch[E.myclass][selectedSpell][info[#info]] end,
|
|
set = function(info, value)
|
|
E.global.unitframe.buffwatch[E.myclass][selectedSpell][info[#info]] = value
|
|
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
UF:UpdateAuraWatchFromHeader("raidpet", true)
|
|
end,
|
|
args = {
|
|
enabled = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
point = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Anchor Point"],
|
|
values = {
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["TOPRIGHT"] = "TOPRIGHT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["LEFT"] = "LEFT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOP"] = "TOP",
|
|
["BOTTOM"] = "BOTTOM"
|
|
}
|
|
},
|
|
sizeOverride = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Size Override"],
|
|
min = 0, max = 50, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["xOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["yOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
style = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Style"],
|
|
values = {
|
|
["coloredIcon"] = L["Colored Icon"],
|
|
["texturedIcon"] = L["Textured Icon"],
|
|
["NONE"] = L["NONE"]
|
|
}
|
|
},
|
|
color = {
|
|
order = 6,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
get = function(info)
|
|
local t = E.global.unitframe.buffwatch[E.myclass][selectedSpell][info[#info]]
|
|
return t.r, t.g, t.b, t.a
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.global.unitframe.buffwatch[E.myclass][selectedSpell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
UF:UpdateAuraWatchFromHeader("raidpet", true)
|
|
end
|
|
},
|
|
displayText = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["Display Text"]
|
|
},
|
|
textColor = {
|
|
order = 8,
|
|
type = "color",
|
|
name = L["Text Color"],
|
|
get = function(info)
|
|
local t = E.global.unitframe.buffwatch[E.myclass][selectedSpell][info[#info]]
|
|
if t then
|
|
return t.r, t.g, t.b, t.a
|
|
else
|
|
return 1, 1, 1, 1
|
|
end
|
|
end,
|
|
set = function(info, r, g, b)
|
|
E.global.unitframe.buffwatch[E.myclass][selectedSpell].textColor = E.global.unitframe.buffwatch[E.myclass][selectedSpell].textColor or {}
|
|
local t = E.global.unitframe.buffwatch[E.myclass][selectedSpell].textColor
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
UF:UpdateAuraWatchFromHeader("raidpet", true)
|
|
end
|
|
},
|
|
decimalThreshold = {
|
|
order = 9,
|
|
type = "range",
|
|
name = L["Decimal Threshold"],
|
|
desc = L["Threshold before text goes into decimal form. Set to -1 to disable decimals."],
|
|
min = -1, max = 10, step = 1
|
|
},
|
|
textThreshold = {
|
|
order = 10,
|
|
type = "range",
|
|
name = L["Text Threshold"],
|
|
desc = L["At what point should the text be displayed. Set to -1 to disable."],
|
|
min = -1, max = 60, step = 1
|
|
},
|
|
anyUnit = {
|
|
order = 11,
|
|
type = "toggle",
|
|
name = L["Show Aura From Other Players"]
|
|
},
|
|
onlyShowMissing = {
|
|
order = 12,
|
|
type = "toggle",
|
|
name = L["Show When Not Active"]
|
|
}
|
|
}
|
|
}
|
|
end
|
|
elseif selectedFilter == "Buff Indicator (Profile)" then
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
childGroups = "select",
|
|
args = {
|
|
addSpellID = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add SpellID"],
|
|
desc = L["Add a spell to the filter."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if not tonumber(value) then
|
|
E:Print(L["Value must be a number"])
|
|
elseif not GetSpellInfo(value) then
|
|
E:Print(L["Not valid spell id"])
|
|
else
|
|
E.db.unitframe.filters.buffwatch[tonumber(value)] = {["enabled"] = true, ["id"] = tonumber(value), ["point"] = "TOPRIGHT", ["color"] = {["r"] = 1, ["g"] = 0, ["b"] = 0}, ["anyUnit"] = false, ["style"] = "coloredIcon", ["xOffset"] = 0, ["yOffset"] = 0}
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
end
|
|
end
|
|
},
|
|
removeSpellID = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove SpellID"],
|
|
desc = L["Remove a spell from the filter."],
|
|
func = function()
|
|
if P.unitframe.filters.buffwatch[selectedSpell] then
|
|
E.db.unitframe.filters.buffwatch[selectedSpell].enabled = false
|
|
E:Print(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
|
|
else
|
|
E.db.unitframe.filters.buffwatch[selectedSpell] = nil
|
|
end
|
|
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
end,
|
|
disabled = function() return not selectedSpell end
|
|
},
|
|
quickSearch = {
|
|
order = 3,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
values = function()
|
|
local values = {}
|
|
local list = E.db.unitframe.filters.buffwatch
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for _, spell in pairs(list) do
|
|
if spell.id then
|
|
local name = GetSpellInfo(spell.id)
|
|
if name:lower():find(searchText) then values[spell.id] = name end
|
|
end
|
|
end
|
|
return values
|
|
end,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value)
|
|
selectedSpell = value
|
|
UpdateFilterGroup()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function(info)
|
|
E.db.unitframe.filters.buffwatch = {}
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
if selectedSpell then
|
|
local name = GetSpellInfo(selectedSpell)
|
|
E.Options.args.filters.args.filterGroup.args[name] = {
|
|
order = -10,
|
|
type = "group",
|
|
name = name.." ("..selectedSpell..")",
|
|
hidden = function() return not E.db.unitframe.filters.buffwatch[selectedSpell] end,
|
|
get = function(info)
|
|
if E.db.unitframe.filters.buffwatch[selectedSpell] then
|
|
return E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]]
|
|
end
|
|
end,
|
|
set = function(info, value)
|
|
E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]] = value
|
|
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
end,
|
|
args = {
|
|
enabled = {
|
|
order = 0,
|
|
type = "toggle",
|
|
name = L["Enable"]
|
|
},
|
|
point = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Anchor Point"],
|
|
values = {
|
|
["TOPLEFT"] = "TOPLEFT",
|
|
["TOPRIGHT"] = "TOPRIGHT",
|
|
["BOTTOMLEFT"] = "BOTTOMLEFT",
|
|
["BOTTOMRIGHT"] = "BOTTOMRIGHT",
|
|
["LEFT"] = "LEFT",
|
|
["RIGHT"] = "RIGHT",
|
|
["TOP"] = "TOP",
|
|
["BOTTOM"] = "BOTTOM"
|
|
}
|
|
},
|
|
sizeOverride = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Size Override"],
|
|
min = 0, max = 50, step = 1
|
|
},
|
|
xOffset = {
|
|
order = 3,
|
|
type = "range",
|
|
name = L["xOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
yOffset = {
|
|
order = 4,
|
|
type = "range",
|
|
name = L["yOffset"],
|
|
min = -75, max = 75, step = 1
|
|
},
|
|
style = {
|
|
order = 5,
|
|
type = "select",
|
|
name = L["Style"],
|
|
values = {
|
|
["coloredIcon"] = L["Colored Icon"],
|
|
["texturedIcon"] = L["Textured Icon"],
|
|
["NONE"] = L["NONE"]
|
|
}
|
|
},
|
|
color = {
|
|
order = 6,
|
|
type = "color",
|
|
name = L["COLOR"],
|
|
get = function(info)
|
|
if E.db.unitframe.filters.buffwatch[selectedSpell] then
|
|
local t = E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]]
|
|
return t.r, t.g, t.b, t.a
|
|
end
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
end
|
|
},
|
|
displayText = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["Display Text"]
|
|
},
|
|
textColor = {
|
|
order = 8,
|
|
type = "color",
|
|
name = L["Text Color"],
|
|
get = function(info)
|
|
if E.db.unitframe.filters.buffwatch[selectedSpell] then
|
|
local t = E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]]
|
|
if t then
|
|
return t.r, t.g, t.b, t.a
|
|
else
|
|
return 1, 1, 1, 1
|
|
end
|
|
end
|
|
end,
|
|
set = function(info, r, g, b)
|
|
local t = E.db.unitframe.filters.buffwatch[selectedSpell][info[#info]]
|
|
t.r, t.g, t.b = r, g, b
|
|
UF:UpdateAuraWatchFromHeader("raid")
|
|
UF:UpdateAuraWatchFromHeader("raid40")
|
|
UF:UpdateAuraWatchFromHeader("party")
|
|
end
|
|
},
|
|
decimalThreshold = {
|
|
order = 9,
|
|
type = "range",
|
|
name = L["Decimal Threshold"],
|
|
desc = L["Threshold before text goes into decimal form. Set to -1 to disable decimals."],
|
|
min = -1, max = 10, step = 1
|
|
},
|
|
textThreshold = {
|
|
order = 10,
|
|
type = "range",
|
|
name = L["Text Threshold"],
|
|
desc = L["At what point should the text be displayed. Set to -1 to disable."],
|
|
min = -1, max = 60, step = 1
|
|
},
|
|
anyUnit = {
|
|
order = 11,
|
|
type = "toggle",
|
|
name = L["Show Aura From Other Players"]
|
|
},
|
|
onlyShowMissing = {
|
|
order = 12,
|
|
type = "toggle",
|
|
name = L["Show When Not Active"]
|
|
}
|
|
}
|
|
}
|
|
end
|
|
else
|
|
if not selectedFilter or not E.global.unitframe.aurafilters[selectedFilter] then
|
|
E.Options.args.filters.args.filterGroup = nil
|
|
E.Options.args.filters.args.spellGroup = nil
|
|
E.Options.args.filters.args.resetGroup = nil
|
|
return
|
|
end
|
|
|
|
E.Options.args.filters.args.filterGroup = {
|
|
order = 10,
|
|
type = "group",
|
|
name = selectedFilter,
|
|
guiInline = true,
|
|
args = {
|
|
addSpell = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Add Spell ID or Name"],
|
|
desc = L["Add a spell to the filter. Use spell ID if you don't want to match all auras which share the same name."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if tonumber(value) then value = tonumber(value) end
|
|
if not E.global.unitframe.aurafilters[selectedFilter].spells[value] then
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value] = {
|
|
["enable"] = true,
|
|
["priority"] = 0,
|
|
["stackThreshold"] = 0
|
|
}
|
|
end
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
},
|
|
removeSpell = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Remove Spell"],
|
|
desc = L["Remove a spell from the filter. Use the spell ID if you see the ID as part of the spell name in the filter."],
|
|
func = function()
|
|
local value = selectedSpell:match(" %((%d+)%)$") or selectedSpell
|
|
if tonumber(value) then value = tonumber(value) end
|
|
if G.unitframe.aurafilters[selectedFilter] then
|
|
if G.unitframe.aurafilters[selectedFilter].spells[value] then
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value].enable = false
|
|
E:Print(L["You may not remove a spell from a default filter that is not customly added. Setting spell to false instead."])
|
|
else
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value] = nil
|
|
end
|
|
else
|
|
E.global.unitframe.aurafilters[selectedFilter].spells[value] = nil
|
|
end
|
|
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end,
|
|
disabled = function() return not (selectedSpell and selectedSpell ~= "") end
|
|
},
|
|
filterType = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Filter Type"],
|
|
desc = L["Set the filter type. Blacklist will hide any auras in the list and show all others. Whitelist will show any auras in the filter and hide all others."],
|
|
values = {
|
|
["Whitelist"] = L["Whitelist"],
|
|
["Blacklist"] = L["Blacklist"]
|
|
},
|
|
get = function() return E.global.unitframe.aurafilters[selectedFilter].type end,
|
|
set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].type = value UF:Update_AllFrames() end
|
|
},
|
|
quickSearch = {
|
|
order = 4,
|
|
type = "input",
|
|
name = L["Filter Search"],
|
|
desc = L["Search for a spell name inside of a filter."],
|
|
get = function() return quickSearchText end,
|
|
set = function(info,value) quickSearchText = value end
|
|
},
|
|
selectSpell = {
|
|
order = 10,
|
|
type = "select",
|
|
name = L["Select Spell"],
|
|
width = "double",
|
|
guiInline = true,
|
|
get = function(info) return selectedSpell end,
|
|
set = function(info, value)
|
|
selectedSpell = value
|
|
UpdateFilterGroup()
|
|
end,
|
|
values = function()
|
|
local filters = {}
|
|
local list = E.global.unitframe.aurafilters[selectedFilter].spells
|
|
if not list then return end
|
|
local searchText = quickSearchText:lower()
|
|
for filter in pairs(list) do
|
|
if tonumber(filter) then
|
|
local spellName = GetSpellInfo(filter)
|
|
if spellName then
|
|
filter = format("%s (%s)", spellName, filter)
|
|
else
|
|
filter = tostring(filter)
|
|
end
|
|
end
|
|
if filter:lower():find(searchText) then filters[filter] = filter end
|
|
end
|
|
if not next(filters) then filters[""] = L["NONE"] end
|
|
return filters
|
|
end
|
|
}
|
|
}
|
|
}
|
|
|
|
if E.DEFAULT_FILTER[selectedFilter] then
|
|
--Disable and hide filter type option for default filters
|
|
E.Options.args.filters.args.filterGroup.args.filterType.disabled = true
|
|
E.Options.args.filters.args.filterGroup.args.filterType.hidden = true
|
|
|
|
--Add button to reset content of the filter back to default
|
|
E.Options.args.filters.args.resetGroup = {
|
|
order = 25,
|
|
type = "group",
|
|
name = L["Reset Filter"],
|
|
guiInline = true,
|
|
args = {
|
|
enableReset = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function(info) return FilterResetState[selectedFilter] end,
|
|
set = function(info, value)
|
|
FilterResetState[selectedFilter] = value
|
|
E.Options.args.filters.args.resetGroup.args.resetFilter.disabled = (not value)
|
|
end
|
|
},
|
|
resetFilter = {
|
|
order = 2,
|
|
type = "execute",
|
|
name = L["Reset Filter"],
|
|
desc = L["This will reset the contents of this filter back to default. Any spell you have added to this filter will be removed."],
|
|
disabled = function() return not FilterResetState[selectedFilter] end,
|
|
func = function()
|
|
E.global.unitframe.aurafilters[selectedFilter].spells = E:CopyTable({}, G.unitframe.aurafilters[selectedFilter].spells)
|
|
selectedSpell = nil
|
|
UpdateFilterGroup()
|
|
UF:Update_AllFrames()
|
|
end
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
local spellID = selectedSpell and match(selectedSpell, "(%d+)")
|
|
if spellID then spellID = tonumber(spellID) end
|
|
|
|
if not selectedSpell or not E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)] then
|
|
E.Options.args.filters.args.spellGroup = nil
|
|
return
|
|
end
|
|
|
|
E.Options.args.filters.args.spellGroup = {
|
|
order = 15,
|
|
type = "group",
|
|
name = selectedSpell,
|
|
guiInline = true,
|
|
args = {
|
|
enable = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["Enable"],
|
|
get = function()
|
|
if not (spellID or selectedSpell) then
|
|
return false
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].enable
|
|
end
|
|
end,
|
|
set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].enable = value UpdateFilterGroup() UF:Update_AllFrames() end
|
|
},
|
|
forDebuffIndicator = {
|
|
order = 2,
|
|
type = "group",
|
|
name = L["Used as RaidDebuff Indicator"],
|
|
guiInline = true,
|
|
args = {
|
|
priority = {
|
|
order = 1,
|
|
type = "range",
|
|
name = L["Priority"],
|
|
desc = L["Set the priority order of the spell, please note that prioritys are only used for the raid debuff module, not the standard buff/debuff module. If you want to disable set to zero."],
|
|
min = 0, max = 99, step = 1,
|
|
get = function()
|
|
if not selectedSpell then
|
|
return 0
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].priority
|
|
end
|
|
end,
|
|
set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].priority = value UpdateFilterGroup() UF:Update_AllFrames() end
|
|
},
|
|
stackThreshold = {
|
|
order = 2,
|
|
type = "range",
|
|
name = L["Stack Threshold"],
|
|
desc = L["The debuff needs to reach this amount of stacks before it is shown. Set to 0 to always show the debuff."],
|
|
min = 0, max = 99, step = 1,
|
|
get = function()
|
|
if not selectedSpell then
|
|
return 0
|
|
else
|
|
return E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].stackThreshold
|
|
end
|
|
end,
|
|
set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].spells[(spellID or selectedSpell)].stackThreshold = value UpdateFilterGroup() UF:Update_AllFrames() end
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
UF:Update_AllFrames()
|
|
end
|
|
|
|
E.Options.args.filters = {
|
|
order = -10, --Always Last Hehehe
|
|
type = "group",
|
|
name = L["FILTERS"],
|
|
args = {
|
|
createFilter = {
|
|
order = 1,
|
|
type = "input",
|
|
name = L["Create Filter"],
|
|
desc = L["Create a filter, once created a filter can be set inside the buffs/debuffs section of each unit."],
|
|
get = function(info) return "" end,
|
|
set = function(info, value)
|
|
if match(value, "^[%s%p]-$") then
|
|
return
|
|
end
|
|
if match(value, ",") then
|
|
E:Print(L["Filters are not allowed to have commas in their name. Stripping commas from filter name."])
|
|
value = gsub(value, ",", "")
|
|
end
|
|
if match(value, "^Friendly:") or match(value, "^Enemy:") then
|
|
return --dont allow people to create Friendly: or Enemy: filters
|
|
end
|
|
if G.unitframe.specialFilters[value] or E.global.unitframe.aurafilters[value] then
|
|
E:Print(L["Filter already exists!"])
|
|
return
|
|
end
|
|
E.global.unitframe.aurafilters[value] = {}
|
|
E.global.unitframe.aurafilters[value].spells = {}
|
|
end
|
|
},
|
|
selectFilter = {
|
|
order = 2,
|
|
type = "select",
|
|
name = L["Select Filter"],
|
|
get = function(info) return selectedFilter end,
|
|
set = function(info, value)
|
|
if value == "" then
|
|
selectedFilter = nil
|
|
selectedSpell = nil
|
|
else
|
|
selectedSpell = nil
|
|
if FilterResetState[selectedFilter] then
|
|
FilterResetState[selectedFilter] = nil
|
|
end
|
|
selectedFilter = value
|
|
end
|
|
quickSearchText = ""
|
|
UpdateFilterGroup()
|
|
end,
|
|
values = function()
|
|
local filters = {}
|
|
filters[""] = L["NONE"]
|
|
local list = E.global.unitframe.aurafilters
|
|
if not list then return end
|
|
for filter in pairs(list) do
|
|
filters[filter] = filter
|
|
end
|
|
|
|
filters["Buff Indicator"] = "Buff Indicator"
|
|
filters["Buff Indicator (Pet)"] = "Buff Indicator (Pet)"
|
|
filters["Buff Indicator (Profile)"] = "Buff Indicator (Profile)"
|
|
filters["AuraBar Colors"] = "AuraBar Colors"
|
|
filters["Debuff Highlight"] = "Debuff Highlight"
|
|
return filters
|
|
end
|
|
},
|
|
deleteFilter = {
|
|
order = 3,
|
|
type = "execute",
|
|
name = L["Delete Filter"],
|
|
desc = L["Delete a created filter, you cannot delete pre-existing filters, only custom ones."],
|
|
func = function()
|
|
E.global.unitframe.aurafilters[selectedFilter] = nil
|
|
removePriority(selectedFilter) --This will wipe a filter from the new aura system profile settings.
|
|
selectedFilter = nil
|
|
selectedSpell = nil
|
|
quickSearchText = ""
|
|
E.Options.args.filters.args.filterGroup = nil
|
|
end,
|
|
disabled = function() return G.unitframe.aurafilters[selectedFilter] end,
|
|
hidden = function() return selectedFilter == nil end
|
|
}
|
|
}
|
|
}
|
|
|
|
function E:SetToFilterConfig(filter)
|
|
selectedFilter = filter or "Buff Indicator"
|
|
UpdateFilterGroup()
|
|
E.Libs.AceConfigDialog:SelectGroup("ElvUI", "filters")
|
|
end |