You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
6.6 KiB
250 lines
6.6 KiB
if not WeakAuras.IsCorrectVersion() then return end
|
|
local AddonName, OptionsPrivate = ...
|
|
|
|
local L = WeakAuras.L
|
|
|
|
function OptionsPrivate.GetInformationOptions(data)
|
|
local isGroup = data.controlledChildren
|
|
local isTmpGroup = type(data.id) == "table"
|
|
|
|
local options = {
|
|
type = "group",
|
|
name = L["Information"],
|
|
order = 1,
|
|
args = {
|
|
|
|
}
|
|
}
|
|
|
|
local order = 1
|
|
local args = options.args
|
|
|
|
-- NAME
|
|
-- One Aura or Group: Allows editing of aura/group name
|
|
-- Multi-selection: Don't allow any editing
|
|
if not isTmpGroup then
|
|
args.name = {
|
|
type = "input",
|
|
name = L["Name:"],
|
|
width = WeakAuras.doubleWidth,
|
|
order = order,
|
|
get = function()
|
|
return data.id
|
|
end,
|
|
set = function(info, newid)
|
|
if data.id ~= newid and not WeakAuras.GetData(newid) then
|
|
local oldid = data.id
|
|
WeakAuras.Rename(data, newid);
|
|
end
|
|
end
|
|
}
|
|
order = order + 1
|
|
end
|
|
|
|
-- URL
|
|
-- One Aura: Edit URL of the aura
|
|
-- Group/Multi-selection: Edit URLs of both parent and children
|
|
local sameURL = true
|
|
local commonURL
|
|
local desc = ""
|
|
|
|
local traverseForUrl = isTmpGroup and OptionsPrivate.Private.TraverseAllChildren or OptionsPrivate.Private.TraverseAll
|
|
for child in traverseForUrl(data) do
|
|
if child.url then
|
|
desc = desc .. "|cFFE0E000"..child.id..": |r"..child.url .. "\n"
|
|
end
|
|
if not commonURL then
|
|
commonURL = child.url or ""
|
|
elseif child.url ~= commonURL then
|
|
sameURL = false
|
|
end
|
|
end
|
|
|
|
args.url = {
|
|
type = "input",
|
|
name = sameURL and L["URL"] or "|cFF4080FF" .. L["URL"],
|
|
width = WeakAuras.doubleWidth,
|
|
get = function()
|
|
return sameURL and commonURL or ""
|
|
end,
|
|
set = function(info, v)
|
|
for child in traverseForUrl(data) do
|
|
child.url = v
|
|
WeakAuras.Add(child)
|
|
OptionsPrivate.ClearOptions(child.id)
|
|
end
|
|
|
|
WeakAuras.ClearAndUpdateOptions(data.id)
|
|
end,
|
|
desc = sameURL and "" or desc,
|
|
order = order
|
|
}
|
|
order = order + 1
|
|
|
|
if isGroup then
|
|
args.url_note = {
|
|
type = "description",
|
|
name = isTmpGroup and L["|cFFE0E000Note:|r This sets the URL on all selected auras"]
|
|
or L["|cFFE0E000Note:|r This sets the URL on this group and all its members."],
|
|
width = WeakAuras.doubleWidth,
|
|
order = order
|
|
}
|
|
order = order + 1
|
|
end
|
|
|
|
|
|
-- Description
|
|
-- One Aura/Group: Edit description of the aura or group
|
|
-- Multi-selection: No editing
|
|
if not isTmpGroup then
|
|
args.description = {
|
|
type = "input",
|
|
name = isGroup and L["Group Description"] or L["Description"],
|
|
width = WeakAuras.doubleWidth,
|
|
multiline = true,
|
|
order = order,
|
|
get = function()
|
|
return data.desc
|
|
end,
|
|
set = function(info, v)
|
|
data.desc = v
|
|
WeakAuras.Add(data)
|
|
WeakAuras.ClearAndUpdateOptions(data.id)
|
|
end
|
|
}
|
|
order = order + 1
|
|
|
|
if isGroup then
|
|
args.description_note = {
|
|
type = "description",
|
|
name = string.format(L["|cFFE0E000Note:|r This sets the description only on '%s'"], data.id),
|
|
width = WeakAuras.doubleWidth,
|
|
order = order,
|
|
}
|
|
order = order + 1
|
|
end
|
|
end
|
|
|
|
-- Show warnings only for single selection for now
|
|
if not isGroup then
|
|
local icon, title, message = OptionsPrivate.Private.AuraWarnings.FormatWarnings(data.uid)
|
|
if title and message then
|
|
args.warningTitle = {
|
|
type = "header",
|
|
name = title,
|
|
width = WeakAuras.doubleWidth,
|
|
order = order,
|
|
}
|
|
order = order + 1
|
|
|
|
args.warnings = {
|
|
type = "description",
|
|
name = message,
|
|
width = WeakAuras.doubleWidth,
|
|
order = order,
|
|
fontSize = "medium"
|
|
}
|
|
order = order + 1
|
|
end
|
|
end
|
|
|
|
-- compatibility Options
|
|
args.compabilityTitle = {
|
|
type = "header",
|
|
name = L["Compatibility Options"],
|
|
width = WeakAuras.doubleWidth,
|
|
order = order,
|
|
}
|
|
order = order + 1
|
|
|
|
local properties = {
|
|
ignoreOptionsEventErrors = {
|
|
name = L["Ignore Lua Errors on OPTIONS event"],
|
|
},
|
|
groupOffset = {
|
|
name = L["Offset by 1px"],
|
|
onParent = true,
|
|
regionType = "group"
|
|
}
|
|
}
|
|
|
|
local same = {
|
|
ignoreOptionsEventErrors = true,
|
|
groupOffset = true
|
|
}
|
|
|
|
local common = {
|
|
|
|
}
|
|
|
|
local mergedDesc = {
|
|
|
|
}
|
|
|
|
for property, propertyData in pairs(properties) do
|
|
if propertyData.onParent then
|
|
if not isTmpGroup and (not propertyData.regionType or propertyData.regionType == data.regionType) then
|
|
if data.information[property] ~= nil then
|
|
common[property] = data.information[property]
|
|
else
|
|
common[property] = false
|
|
end
|
|
end
|
|
else
|
|
for child in OptionsPrivate.Private.TraverseLeafsOrAura(data) do
|
|
if not propertyData.regionType or propertyData.regionType == child.regionType then
|
|
local effectiveProperty = child.information[property]
|
|
if effectiveProperty == nil then
|
|
effectiveProperty = false
|
|
end
|
|
|
|
mergedDesc[property] = (mergedDesc[property] or "") .. "|cFFE0E000" .. child.id .. ": |r"
|
|
.. (effectiveProperty and "true" or "false") .. "\n"
|
|
|
|
if common[property] == nil then
|
|
common[property] = effectiveProperty
|
|
elseif effectiveProperty ~= common[property] then
|
|
same[property] = false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if common[property] ~= nil then
|
|
args["compatibility_" .. property] = {
|
|
type = "toggle",
|
|
name = same[property] and propertyData.name or "|cFF4080FF" .. propertyData.name,
|
|
width = WeakAuras.doubleWidth,
|
|
get = function()
|
|
if propertyData.onParent then
|
|
return data.information[property]
|
|
else
|
|
return same[property] and common[property] or false
|
|
end
|
|
end,
|
|
set = function(info, v)
|
|
if propertyData.onParent then
|
|
data.information[property] = v
|
|
WeakAuras.Add(data)
|
|
OptionsPrivate.ClearOptions(data.id)
|
|
else
|
|
for child in OptionsPrivate.Private.TraverseLeafsOrAura(data) do
|
|
if not propertyData.regionType or propertyData.regionType == child.regionType then
|
|
child.information[property] = v
|
|
WeakAuras.Add(child)
|
|
OptionsPrivate.ClearOptions(child.id)
|
|
end
|
|
end
|
|
end
|
|
WeakAuras.ClearAndUpdateOptions(data.id)
|
|
end,
|
|
desc = same[property] and "" or mergedDesc[property],
|
|
order = order
|
|
}
|
|
order = order + 1
|
|
end
|
|
end
|
|
|
|
|
|
return options
|
|
end
|
|
|