from retail

This commit is contained in:
Bunny67
2020-07-16 23:23:54 +03:00
parent 85345af8a2
commit f9dab14beb
41 changed files with 3843 additions and 3869 deletions
+4 -4
View File
@@ -68,6 +68,9 @@ WeakAuras.WA_ClassColorName = WA_ClassColorName
-- UTF-8 Sub is pretty commonly needed -- UTF-8 Sub is pretty commonly needed
local WA_Utf8Sub = function(input, size) local WA_Utf8Sub = function(input, size)
local output = "" local output = ""
if not input then
return output
end
local i = 1 local i = 1
while (size > 0) do while (size > 0) do
local byte = input:byte(i) local byte = input:byte(i)
@@ -258,10 +261,7 @@ function WeakAuras.ActivateAuraEnvironment(id, cloneId, state, states, onlyConfi
if(actions and actions.do_custom and actions.custom) then if(actions and actions.do_custom and actions.custom) then
local func = WeakAuras.customActionsFunctions[id]["init"] local func = WeakAuras.customActionsFunctions[id]["init"]
if func then if func then
local ok, ret = pcall(func) xpcall(func, geterrorhandler())
if not ok then
geterrorhandler()(ret)
end
end end
end end
end end
+1 -1
View File
@@ -544,7 +544,7 @@ local function importPendingData()
button.callbacks.UpdateExpandButton() button.callbacks.UpdateExpandButton()
WeakAuras.UpdateGroupOrders(parentData) WeakAuras.UpdateGroupOrders(parentData)
WeakAuras.UpdateDisplayButton(parentData) WeakAuras.UpdateDisplayButton(parentData)
WeakAuras.ReloadGroupRegionOptions(parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
WeakAuras.SortDisplayButtons() WeakAuras.SortDisplayButtons()
end end
WeakAuras.SetImporting(false) WeakAuras.SetImporting(false)
+21 -3
View File
@@ -165,6 +165,12 @@ WeakAuras.format_types = {
hidden = hidden hidden = hidden
}) })
end, end,
addOption(symbol .. "_big_number_space", {
type = "description",
name = "",
width = WeakAuras.normalWidth,
hidden = hidden
})
CreateFormatter = function(symbol, get) CreateFormatter = function(symbol, get)
local format = get(symbol .. "_big_number_format", "AbbreviateNumbers") local format = get(symbol .. "_big_number_format", "AbbreviateNumbers")
if (format == "AbbreviateNumbers") then if (format == "AbbreviateNumbers") then
@@ -255,7 +261,7 @@ WeakAuras.format_types = {
local abbreviateFunc local abbreviateFunc
if color == "class" then if color == "class" then
colorFunc = function(unit, text) colorFunc = function(unit, text)
if UnitPlayerControlled(unit) then if unit and UnitPlayerControlled(unit) then
return GetClassColoredTextForUnit(unit, text) return GetClassColoredTextForUnit(unit, text)
end end
return text return text
@@ -263,9 +269,14 @@ WeakAuras.format_types = {
end end
if realm == "never" then if realm == "never" then
nameFunc = UnitName nameFunc = function(unit)
return unit and UnitName(unit)
end
elseif realm == "star" then elseif realm == "star" then
nameFunc = function(unit) nameFunc = function(unit)
if not unit then
return ""
end
local name, realm = UnitName(unit) local name, realm = UnitName(unit)
if realm then if realm then
return name .. "*" return name .. "*"
@@ -274,6 +285,9 @@ WeakAuras.format_types = {
end end
elseif realm == "differentServer" then elseif realm == "differentServer" then
nameFunc = function(unit) nameFunc = function(unit)
if not unit then
return ""
end
local name, realm = UnitName(unit) local name, realm = UnitName(unit)
if realm then if realm then
return name .. "-" .. realm return name .. "-" .. realm
@@ -282,6 +296,9 @@ WeakAuras.format_types = {
end end
elseif realm == "always" then elseif realm == "always" then
nameFunc = function(unit) nameFunc = function(unit)
if not unit then
return ""
end
local name, realm = WeakAuras.UnitNameWithRealm(unit) local name, realm = WeakAuras.UnitNameWithRealm(unit)
return name .. "-" .. realm return name .. "-" .. realm
end end
@@ -350,6 +367,7 @@ WeakAuras.format_types = {
min = 1, min = 1,
max = 20, max = 20,
hidden = hidden, hidden = hidden,
step = 1,
disabled = function() disabled = function()
return not get(symbol .. "_abbreviate") return not get(symbol .. "_abbreviate")
end end
@@ -366,7 +384,7 @@ WeakAuras.format_types = {
local abbreviateFunc local abbreviateFunc
if color == "class" then if color == "class" then
colorFunc = function(class, text) colorFunc = function(class, text)
local color = RAID_CLASS_COLORS[class] local color = class and RAID_CLASS_COLORS[class]
if color then if color then
return string.format("|c%s%s|r", string.format("ff%.2x%.2x%.2x", color.r * 255, color.g * 255, color.b * 255), text) return string.format("|c%s%s|r", string.format("ff%.2x%.2x%.2x", color.r * 255, color.g * 255, color.b * 255), text)
else else
@@ -0,0 +1,75 @@
--[[-----------------------------------------------------------------------------
WeakAurasInlineGroup based on InlineGroup Container
Simple container widget that has the same API as a InlineGroup, without actually
showing any borders or a title.
-------------------------------------------------------------------------------]]
local Type, Version = "WeakAurasInlineGroup", 1
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs
local pairs = pairs
-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetWidth(300)
self:SetHeight(100)
self:SetTitle("")
end,
-- ["OnRelease"] = nil,
["SetTitle"] = function(self)
-- Do nothing
end,
["LayoutFinished"] = function(self, width, height)
if self.noAutoHeight then return end
self:SetHeight((height or 0) + 40)
end,
["OnWidthSet"] = function(self, width)
local content = self.content
content:SetWidth(width)
content.width = width
end,
["OnHeightSet"] = function(self, height)
local content = self.content
content:SetHeight(height)
content.height = height
end
}
--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
--Container Support
local content = CreateFrame("Frame", nil, frame)
content:SetPoint("TOPLEFT", 0, 0)
content:SetPoint("BOTTOMRIGHT", 0, 0)
local widget = {
frame = frame,
content = content,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end
return AceGUI:RegisterAsContainer(widget)
end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -4,7 +4,7 @@ local tinsert, tconcat, tremove, wipe = table.insert, table.concat, table.remove
local select, pairs, next, type, unpack = select, pairs, next, type, unpack local select, pairs, next, type, unpack = select, pairs, next, type, unpack
local tostring, error = tostring, error local tostring, error = tostring, error
local Type, Version = "WeakAurasDisplayButton", 54 local Type, Version = "WeakAurasDisplayButton", 55
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
@@ -95,18 +95,21 @@ clipboard.pasteMenuEntry = {
for index, childId in pairs(clipboard.current.controlledChildren) do for index, childId in pairs(clipboard.current.controlledChildren) do
local childData = WeakAuras.GetData(childId); local childData = WeakAuras.GetData(childId);
copyAuraPart(clipboard.source, childData, clipboard.part); copyAuraPart(clipboard.source, childData, clipboard.part);
WeakAuras.Add(childData); WeakAuras.Add(childData)
WeakAuras.ClearAndUpdateOptions(childData.id)
end end
else else
copyAuraPart(clipboard.source, clipboard.current, clipboard.part); copyAuraPart(clipboard.source, clipboard.current, clipboard.part);
WeakAuras.Add(clipboard.current); WeakAuras.Add(clipboard.current)
WeakAuras.ClearAndUpdateOptions(clipboard.current.id)
end end
WeakAuras.FillOptions()
WeakAuras.ScanForLoads({[clipboard.current.id] = true}); WeakAuras.ScanForLoads({[clipboard.current.id] = true});
WeakAuras.SortDisplayButtons(); WeakAuras.SortDisplayButtons();
WeakAuras.PickDisplay(clipboard.current.id); WeakAuras.PickDisplay(clipboard.current.id);
WeakAuras.UpdateDisplayButton(clipboard.current.id); WeakAuras.UpdateDisplayButton(clipboard.current.id);
WeakAuras.ReloadOptions2(clipboard.current.id, clipboard.current); WeakAuras.ClearAndUpdateOptions(clipboard.current.id);
end end
} }
@@ -304,16 +307,22 @@ local Actions = {
WeakAuras.Add(source.data) WeakAuras.Add(source.data)
WeakAuras.Add(group.data) WeakAuras.Add(group.data)
WeakAuras.UpdateGroupOrders(group.data) WeakAuras.UpdateGroupOrders(group.data)
WeakAuras.ReloadGroupRegionOptions(group.data) WeakAuras.ClearAndUpdateOptions(group.data.id)
WeakAuras.ClearAndUpdateOptions(source.data.id)
WeakAuras.UpdateDisplayButton(group.data) WeakAuras.UpdateDisplayButton(group.data)
WeakAuras.FillOptions()
group.callbacks.UpdateExpandButton(); group.callbacks.UpdateExpandButton();
group:ReloadTooltip() group:ReloadTooltip()
else else
WeakAuras.Add(source.data) WeakAuras.Add(source.data)
WeakAuras.ClearAndUpdateOptions(source.data.id)
WeakAuras.FillOptions()
end end
else else
-- move source into the top-level list -- move source into the top-level list
WeakAuras.Add(source.data) WeakAuras.Add(source.data)
WeakAuras.ClearAndUpdateOptions(source.data.id)
WeakAuras.FillOptions()
end end
else else
error("Calling 'Group' with invalid source. Reload your UI to fix the display list.") error("Calling 'Group' with invalid source. Reload your UI to fix the display list.")
@@ -331,7 +340,7 @@ local Actions = {
source.data.parent = nil source.data.parent = nil
WeakAuras.Add(parent); WeakAuras.Add(parent);
WeakAuras.UpdateGroupOrders(parent); WeakAuras.UpdateGroupOrders(parent);
WeakAuras.ReloadGroupRegionOptions(parent); WeakAuras.ClearAndUpdateOptions(parent.id);
WeakAuras.UpdateDisplayButton(parent); WeakAuras.UpdateDisplayButton(parent);
local group = WeakAuras.GetDisplayButton(parent.id) local group = WeakAuras.GetDisplayButton(parent.id)
group.callbacks.UpdateExpandButton(); group.callbacks.UpdateExpandButton();
@@ -367,6 +376,8 @@ local Actions = {
tinsert(children, 1, source.data.id) tinsert(children, 1, source.data.id)
end end
WeakAuras.Add(parent) WeakAuras.Add(parent)
WeakAuras.ClearAndUpdateOptions(parent.id)
WeakAuras.FillOptions()
WeakAuras.UpdateGroupOrders(parent) WeakAuras.UpdateGroupOrders(parent)
WeakAuras.UpdateDisplayButton(parent) WeakAuras.UpdateDisplayButton(parent)
else else
@@ -572,6 +583,7 @@ local methods = {
childButton:SetGroupOrder(#data.controlledChildren, #data.controlledChildren); childButton:SetGroupOrder(#data.controlledChildren, #data.controlledChildren);
childData.parent = data.id; childData.parent = data.id;
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.ClearAndUpdateOptions(childData.id)
end end
else else
tinsert(data.controlledChildren, self.grouping.id); tinsert(data.controlledChildren, self.grouping.id);
@@ -580,16 +592,19 @@ local methods = {
childButton:SetGroupOrder(#data.controlledChildren, #data.controlledChildren); childButton:SetGroupOrder(#data.controlledChildren, #data.controlledChildren);
self.grouping.parent = data.id; self.grouping.parent = data.id;
WeakAuras.Add(self.grouping); WeakAuras.Add(self.grouping);
WeakAuras.ClearAndUpdateOptions(self.grouping.id);
end end
if (data.regionType == "dynamicgroup") then if (data.regionType == "dynamicgroup") then
self.grouping.xOffset = 0; self.grouping.xOffset = 0;
self.grouping.yOffset = 0; self.grouping.yOffset = 0;
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ClearAndUpdateOptions(data.id)
self.callbacks.UpdateExpandButton(); self.callbacks.UpdateExpandButton();
WeakAuras.SetGrouping(); WeakAuras.SetGrouping();
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
WeakAuras.ReloadGroupRegionOptions(data); WeakAuras.ClearAndUpdateOptions(data.id);
WeakAuras.FillOptions();
WeakAuras.UpdateGroupOrders(data); WeakAuras.UpdateGroupOrders(data);
WeakAuras.SortDisplayButtons(); WeakAuras.SortDisplayButtons();
self:ReloadTooltip(); self:ReloadTooltip();
@@ -670,6 +685,7 @@ local methods = {
tremove(parentData.controlledChildren, index); tremove(parentData.controlledChildren, index);
tinsert(parentData.controlledChildren, index - 1, id); tinsert(parentData.controlledChildren, index - 1, id);
WeakAuras.Add(parentData); WeakAuras.Add(parentData);
WeakAuras.ClearAndUpdateOptions(parentData.id)
self:SetGroupOrder(index - 1, #parentData.controlledChildren); self:SetGroupOrder(index - 1, #parentData.controlledChildren);
local otherbutton = WeakAuras.GetDisplayButton(parentData.controlledChildren[index]); local otherbutton = WeakAuras.GetDisplayButton(parentData.controlledChildren[index]);
otherbutton:SetGroupOrder(index, #parentData.controlledChildren); otherbutton:SetGroupOrder(index, #parentData.controlledChildren);
@@ -679,6 +695,7 @@ local methods = {
WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index-1]), "main", updata, self.frame, true, function() WeakAuras.SortDisplayButtons() end); WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index-1]), "main", updata, self.frame, true, function() WeakAuras.SortDisplayButtons() end);
WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index]), "main", downdata, otherbutton.frame, true, function() WeakAuras.SortDisplayButtons() end); WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index]), "main", downdata, otherbutton.frame, true, function() WeakAuras.SortDisplayButtons() end);
WeakAuras.UpdateDisplayButton(parentData); WeakAuras.UpdateDisplayButton(parentData);
WeakAuras.FillOptions()
end end
else else
error("Display thinks it is a member of a group which does not control it"); error("Display thinks it is a member of a group which does not control it");
@@ -707,6 +724,7 @@ local methods = {
tremove(parentData.controlledChildren, index); tremove(parentData.controlledChildren, index);
tinsert(parentData.controlledChildren, index + 1, id); tinsert(parentData.controlledChildren, index + 1, id);
WeakAuras.Add(parentData); WeakAuras.Add(parentData);
WeakAuras.ClearAndUpdateOptions(parentData.id)
self:SetGroupOrder(index + 1, #parentData.controlledChildren); self:SetGroupOrder(index + 1, #parentData.controlledChildren);
local otherbutton = WeakAuras.GetDisplayButton(parentData.controlledChildren[index]); local otherbutton = WeakAuras.GetDisplayButton(parentData.controlledChildren[index]);
otherbutton:SetGroupOrder(index, #parentData.controlledChildren); otherbutton:SetGroupOrder(index, #parentData.controlledChildren);
@@ -716,6 +734,7 @@ local methods = {
WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index+1]), "main", downdata, self.frame, true, function() WeakAuras.SortDisplayButtons() end); WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index+1]), "main", downdata, self.frame, true, function() WeakAuras.SortDisplayButtons() end);
WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index]), "main", updata, otherbutton.frame, true, function() WeakAuras.SortDisplayButtons() end); WeakAuras.Animate("button", WeakAuras.GetData(parentData.controlledChildren[index]), "main", updata, otherbutton.frame, true, function() WeakAuras.SortDisplayButtons() end);
WeakAuras.UpdateDisplayButton(parentData); WeakAuras.UpdateDisplayButton(parentData);
WeakAuras.FillOptions()
end end
else else
error("Display thinks it is a member of a group which does not control it"); error("Display thinks it is a member of a group which does not control it");
@@ -788,13 +807,12 @@ local methods = {
if not(newid == oldid) then if not(newid == oldid) then
WeakAuras.Rename(data, newid); WeakAuras.Rename(data, newid);
WeakAuras.Add(data); WeakAuras.Add(data)
WeakAuras.displayButtons[newid] = WeakAuras.displayButtons[oldid]; WeakAuras.displayButtons[newid] = WeakAuras.displayButtons[oldid];
WeakAuras.displayButtons[newid]:SetData(data) WeakAuras.displayButtons[newid]:SetData(data)
WeakAuras.displayButtons[oldid] = nil; WeakAuras.displayButtons[oldid] = nil;
WeakAuras.displayOptions[oldid] = nil; WeakAuras.ClearOptions(oldid)
WeakAuras.AddOption(newid, data);
WeakAuras.displayButtons[newid]:SetTitle(newid); WeakAuras.displayButtons[newid]:SetTitle(newid);
@@ -1156,13 +1174,14 @@ local methods = {
if(index) then if(index) then
tremove(parentData.controlledChildren, index); tremove(parentData.controlledChildren, index);
WeakAuras.Add(parentData); WeakAuras.Add(parentData);
WeakAuras.ReloadGroupRegionOptions(parentData); WeakAuras.ClearAndUpdateOptions(parentData.id);
else else
error("Display thinks it is a member of a group which does not control it"); error("Display thinks it is a member of a group which does not control it");
end end
self:SetGroup(); self:SetGroup();
self.data.parent = nil; self.data.parent = nil;
WeakAuras.Add(self.data); WeakAuras.Add(self.data);
WeakAuras.ClearAndUpdateOptions(self.data.id);
WeakAuras.UpdateGroupOrders(parentData); WeakAuras.UpdateGroupOrders(parentData);
WeakAuras.UpdateDisplayButton(parentData); WeakAuras.UpdateDisplayButton(parentData);
WeakAuras.SortDisplayButtons(); WeakAuras.SortDisplayButtons();
@@ -1521,13 +1540,11 @@ local methods = {
-- no addon, or no data, or ignore flag -- no addon, or no data, or ignore flag
return false, false, nil, nil return false, false, nil, nil
end, end,
-- TODO: remove this once legacy aura trigger is removed
["RefreshBT2UpgradeIcon"] = function(self) ["RefreshBT2UpgradeIcon"] = function(self)
if not self.data.controlledChildren and self.data.triggers then if not self.data.controlledChildren and self.data.triggers then
for index, t in ipairs(self.data.triggers) do for index, t in ipairs(self.data.triggers) do
if t.trigger and t.trigger.type == "aura" then if t.trigger and t.trigger.type == "aura" then
self.bt2upgrade:SetScript("OnClick", function() self.bt2upgrade:SetScript("OnClick", function()
WeakAuras.optionTriggerChoices[self.data.id] = index
WeakAuras.PickDisplay(self.data.id, "trigger") WeakAuras.PickDisplay(self.data.id, "trigger")
end) end)
self.bt2upgrade:Show() self.bt2upgrade:Show()
+36 -9
View File
@@ -2,11 +2,19 @@ if not WeakAuras.IsCorrectVersion() then return end
local L = WeakAuras.L local L = WeakAuras.L
local removeFuncs = WeakAuras.commonOptions.removeFuncs
local replaceNameDescFuncs = WeakAuras.commonOptions.replaceNameDescFuncs
local replaceImageFuncs = WeakAuras.commonOptions.replaceImageFuncs
local replaceValuesFuncs = WeakAuras.commonOptions.replaceValuesFuncs
local disabledAll = WeakAuras.commonOptions.CreateDisabledAll("action")
local hiddenAll = WeakAuras.commonOptions.CreateHiddenAll("action")
local getAll = WeakAuras.commonOptions.CreateGetAll("action")
local setAll = WeakAuras.commonOptions.CreateSetAll("action", getAll)
local send_chat_message_types = WeakAuras.send_chat_message_types; local send_chat_message_types = WeakAuras.send_chat_message_types;
local sound_types = WeakAuras.sound_types; local sound_types = WeakAuras.sound_types;
function WeakAuras.AddActionOption(id, data) function WeakAuras.GetActionOptions(data)
local action = { local action = {
type = "group", type = "group",
name = L["Actions"], name = L["Actions"],
@@ -52,7 +60,7 @@ function WeakAuras.AddActionOption(id, data)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
if(value == "message") then if(value == "message") then
WeakAuras.ReloadOptions(data.id) WeakAuras.ClearAndUpdateOptions(data.id)
end end
end, end,
args = { args = {
@@ -801,10 +809,10 @@ function WeakAuras.AddActionOption(id, data)
-- Text format option helpers -- Text format option helpers
WeakAuras.AddCodeOption(action.args, data, L["Custom Code"], "init", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-init", WeakAuras.commonOptions.AddCodeOption(action.args, data, L["Custom Code"], "init", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-init",
0.011, function() return not data.actions.init.do_custom end, {"actions", "init", "custom"}, true); 0.011, function() return not data.actions.init.do_custom end, {"actions", "init", "custom"}, true);
WeakAuras.AddCodeOption(action.args, data, L["Custom Code"], "start_message", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#chat-message---custom-code", WeakAuras.commonOptions.AddCodeOption(action.args, data, L["Custom Code"], "start_message", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#chat-message---custom-code",
5, function() return not (data.actions.start.do_message and WeakAuras.ContainsCustomPlaceHolder(data.actions.start.message)) end, {"actions", "start", "message_custom"}, false); 5, function() return not (data.actions.start.do_message and WeakAuras.ContainsCustomPlaceHolder(data.actions.start.message)) end, {"actions", "start", "message_custom"}, false);
local startHidden = function() local startHidden = function()
@@ -834,7 +842,7 @@ function WeakAuras.AddActionOption(id, data)
data.actions.start["message_format_" .. key] = v data.actions.start["message_format_" .. key] = v
WeakAuras.Add(data) WeakAuras.Add(data)
if reload then if reload then
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
end end
end end
@@ -861,10 +869,10 @@ function WeakAuras.AddActionOption(id, data)
end end
WeakAuras.AddCodeOption(action.args, data, L["Custom Code"], "start", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-show", WeakAuras.commonOptions.AddCodeOption(action.args, data, L["Custom Code"], "start", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-show",
13, function() return not data.actions.start.do_custom end, {"actions", "start", "custom"}, true); 13, function() return not data.actions.start.do_custom end, {"actions", "start", "custom"}, true);
WeakAuras.AddCodeOption(action.args, data, L["Custom Code"], "finish_message", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#chat-message---custom-code", WeakAuras.commonOptions.AddCodeOption(action.args, data, L["Custom Code"], "finish_message", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#chat-message---custom-code",
25, function() return not (data.actions.finish.do_message and WeakAuras.ContainsCustomPlaceHolder(data.actions.finish.message)) end, {"actions", "finish", "message_custom"}, false); 25, function() return not (data.actions.finish.do_message and WeakAuras.ContainsCustomPlaceHolder(data.actions.finish.message)) end, {"actions", "finish", "message_custom"}, false);
local finishHidden = function() local finishHidden = function()
@@ -893,7 +901,7 @@ function WeakAuras.AddActionOption(id, data)
data.actions.finish["message_format_" .. key] = v data.actions.finish["message_format_" .. key] = v
WeakAuras.Add(data) WeakAuras.Add(data)
if reload then if reload then
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
end end
end end
@@ -919,8 +927,27 @@ function WeakAuras.AddActionOption(id, data)
WeakAuras.AddTextFormatOption(data.actions and data.actions.finish.message, true, finishGet, finishAddOption, finishHidden, finishSetHidden) WeakAuras.AddTextFormatOption(data.actions and data.actions.finish.message, true, finishGet, finishAddOption, finishHidden, finishSetHidden)
end end
WeakAuras.AddCodeOption(action.args, data, L["Custom Code"], "finish", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-hide", WeakAuras.commonOptions.AddCodeOption(action.args, data, L["Custom Code"], "finish", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#on-hide",
32, function() return not data.actions.finish.do_custom end, {"actions", "finish", "custom"}, true); 32, function() return not data.actions.finish.do_custom end, {"actions", "finish", "custom"}, true);
if data.controlledChildren then
removeFuncs(action)
replaceNameDescFuncs(action, data, "action")
replaceImageFuncs(action, data, "action")
replaceValuesFuncs(action, data, "action")
action.get = function(info, ...) return getAll(data, info, ...); end;
action.set = function(info, ...)
setAll(data, info, ...);
if(type(data.id) == "string") then
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ResetMoverSizer();
end
end
action.hidden = function(info, ...) return hiddenAll(data, info, ...); end;
action.disabled = function(info, ...) return disabledAll(data, info, ...); end;
end
return action; return action;
end end
+45 -16
View File
@@ -2,6 +2,15 @@ if not WeakAuras.IsCorrectVersion() then return end
local L = WeakAuras.L local L = WeakAuras.L
local removeFuncs = WeakAuras.commonOptions.removeFuncs
local replaceNameDescFuncs = WeakAuras.commonOptions.replaceNameDescFuncs
local replaceImageFuncs = WeakAuras.commonOptions.replaceImageFuncs
local replaceValuesFuncs = WeakAuras.commonOptions.replaceValuesFuncs
local disabledAll = WeakAuras.commonOptions.CreateDisabledAll("animation")
local hiddenAll = WeakAuras.commonOptions.CreateHiddenAll("animation")
local getAll = WeakAuras.commonOptions.CreateGetAll("animation")
local setAll = WeakAuras.commonOptions.CreateSetAll("animation", getAll)
local anim_types = WeakAuras.anim_types; local anim_types = WeakAuras.anim_types;
local anim_translate_types = WeakAuras.anim_translate_types; local anim_translate_types = WeakAuras.anim_translate_types;
local anim_scale_types = WeakAuras.anim_scale_types; local anim_scale_types = WeakAuras.anim_scale_types;
@@ -46,7 +55,8 @@ local function filterAnimPresetTypes(intable, id)
return ret; return ret;
end end
function WeakAuras.AddAnimationOption(id, data) function WeakAuras.GetAnimationOptions(data)
local id = data.id
local animation = { local animation = {
type = "group", type = "group",
name = L["Animations"], name = L["Animations"],
@@ -846,94 +856,113 @@ function WeakAuras.AddAnimationOption(id, data)
local function hideStartAlphaFunc() local function hideStartAlphaFunc()
return data.animation.start.type ~= "custom" or data.animation.start.alphaType ~= "custom" or not data.animation.start.use_alpha return data.animation.start.type ~= "custom" or data.animation.start.alphaType ~= "custom" or not data.animation.start.use_alpha
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "start_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "start_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity",
35.3, hideStartAlphaFunc, {"animation", "start", "alphaFunc"}, false); 35.3, hideStartAlphaFunc, {"animation", "start", "alphaFunc"}, false);
local function hideStartTranslate() local function hideStartTranslate()
return data.animation.start.type ~= "custom" or data.animation.start.translateType ~= "custom" or not data.animation.start.use_translate return data.animation.start.type ~= "custom" or data.animation.start.translateType ~= "custom" or not data.animation.start.use_translate
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "start_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "start_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position",
39.3, hideStartTranslate, {"animation", "start", "translateFunc"}, false); 39.3, hideStartTranslate, {"animation", "start", "translateFunc"}, false);
local function hideStartScale() local function hideStartScale()
return data.animation.start.type ~= "custom" or data.animation.start.scaleType ~= "custom" or not (data.animation.start.use_scale and WeakAuras.regions[id].region.Scale) return data.animation.start.type ~= "custom" or data.animation.start.scaleType ~= "custom" or not (data.animation.start.use_scale and WeakAuras.regions[id].region.Scale)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "start_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-size", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "start_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-size",
43.3, hideStartScale, {"animation", "start", "scaleFunc"}, false); 43.3, hideStartScale, {"animation", "start", "scaleFunc"}, false);
local function hideStartRotateFunc() local function hideStartRotateFunc()
return data.animation.start.type ~= "custom" or data.animation.start.rotateType ~= "custom" or not (data.animation.start.use_rotate and WeakAuras.regions[id].region.Rotate) return data.animation.start.type ~= "custom" or data.animation.start.rotateType ~= "custom" or not (data.animation.start.use_rotate and WeakAuras.regions[id].region.Rotate)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "start_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "start_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate",
47.3, hideStartRotateFunc, {"animation", "start", "rotateFunc"}, false); 47.3, hideStartRotateFunc, {"animation", "start", "rotateFunc"}, false);
local function hideStartColorFunc() local function hideStartColorFunc()
return data.animation.start.type ~= "custom" or data.animation.start.colorType ~= "custom" or not (data.animation.start.use_color and WeakAuras.regions[id].region.Color) return data.animation.start.type ~= "custom" or data.animation.start.colorType ~= "custom" or not (data.animation.start.use_color and WeakAuras.regions[id].region.Color)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "start_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "start_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color",
48.7, hideStartColorFunc, {"animation", "start", "colorFunc"}, false); 48.7, hideStartColorFunc, {"animation", "start", "colorFunc"}, false);
-- Text Editors for "main" -- Text Editors for "main"
local function hideMainAlphaFunc() local function hideMainAlphaFunc()
return data.animation.main.type ~= "custom" or data.animation.main.alphaType ~= "custom" or not data.animation.main.use_alpha return data.animation.main.type ~= "custom" or data.animation.main.alphaType ~= "custom" or not data.animation.main.use_alpha
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "main_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "main_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity",
55.3, hideMainAlphaFunc, {"animation", "main", "alphaFunc"}, false, nil, extraSetFunction); 55.3, hideMainAlphaFunc, {"animation", "main", "alphaFunc"}, false, nil, extraSetFunction);
local function hideMainTranslate() local function hideMainTranslate()
return data.animation.main.type ~= "custom" or data.animation.main.translateType ~= "custom" or not data.animation.main.use_translate return data.animation.main.type ~= "custom" or data.animation.main.translateType ~= "custom" or not data.animation.main.use_translate
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "main_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "main_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position",
59.3, hideMainTranslate, {"animation", "main", "translateFunc"}, false, nil, extraSetFunction); 59.3, hideMainTranslate, {"animation", "main", "translateFunc"}, false, nil, extraSetFunction);
local function hideMainScale() local function hideMainScale()
return data.animation.main.type ~= "custom" or data.animation.main.scaleType ~= "custom" or not (data.animation.main.use_scale and WeakAuras.regions[id].region.Scale) return data.animation.main.type ~= "custom" or data.animation.main.scaleType ~= "custom" or not (data.animation.main.use_scale and WeakAuras.regions[id].region.Scale)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "main_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-sizes", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "main_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-sizes",
63.3, hideMainScale, {"animation", "main", "scaleFunc"}, false, nil, extraSetFunction); 63.3, hideMainScale, {"animation", "main", "scaleFunc"}, false, nil, extraSetFunction);
local function hideMainRotateFunc() local function hideMainRotateFunc()
return data.animation.main.type ~= "custom" or data.animation.main.rotateType ~= "custom" or not (data.animation.main.use_rotate and WeakAuras.regions[id].region.Rotate) return data.animation.main.type ~= "custom" or data.animation.main.rotateType ~= "custom" or not (data.animation.main.use_rotate and WeakAuras.regions[id].region.Rotate)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "main_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "main_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate",
67.3, hideMainRotateFunc, {"animation", "main", "rotateFunc"}, false, nil, extraSetFunction); 67.3, hideMainRotateFunc, {"animation", "main", "rotateFunc"}, false, nil, extraSetFunction);
local function hideMainColorFunc() local function hideMainColorFunc()
return data.animation.main.type ~= "custom" or data.animation.main.colorType ~= "custom" or not (data.animation.main.use_color and WeakAuras.regions[id].region.Color) return data.animation.main.type ~= "custom" or data.animation.main.colorType ~= "custom" or not (data.animation.main.use_color and WeakAuras.regions[id].region.Color)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "main_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "main_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color",
68.7, hideMainColorFunc, {"animation", "main", "colorFunc"}, false, nil, extraSetFunction); 68.7, hideMainColorFunc, {"animation", "main", "colorFunc"}, false, nil, extraSetFunction);
-- Text Editors for "finish" -- Text Editors for "finish"
local function hideFinishAlphaFunc() local function hideFinishAlphaFunc()
return data.animation.finish.type ~= "custom" or data.animation.finish.alphaType ~= "custom" or not data.animation.finish.use_alpha return data.animation.finish.type ~= "custom" or data.animation.finish.alphaType ~= "custom" or not data.animation.finish.use_alpha
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "finish_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "finish_alphaFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#alpha-opacity",
75.3, hideFinishAlphaFunc, {"animation", "finish", "alphaFunc"}, false); 75.3, hideFinishAlphaFunc, {"animation", "finish", "alphaFunc"}, false);
local function hideFinishTranslate() local function hideFinishTranslate()
return data.animation.finish.type ~= "custom" or data.animation.finish.translateType ~= "custom" or not data.animation.finish.use_translate return data.animation.finish.type ~= "custom" or data.animation.finish.translateType ~= "custom" or not data.animation.finish.use_translate
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "finish_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "finish_translateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#translate-position",
79.3, hideFinishTranslate, {"animation", "finish", "translateFunc"}, false); 79.3, hideFinishTranslate, {"animation", "finish", "translateFunc"}, false);
local function hideFinishScale() local function hideFinishScale()
return data.animation.finish.type ~= "custom" or data.animation.finish.scaleType ~= "custom" or not (data.animation.finish.use_scale and WeakAuras.regions[id].region.Scale) return data.animation.finish.type ~= "custom" or data.animation.finish.scaleType ~= "custom" or not (data.animation.finish.use_scale and WeakAuras.regions[id].region.Scale)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "finish_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-size", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "finish_scaleFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#scale-size",
83.3, hideFinishScale, {"animation", "finish", "scaleFunc"}, false); 83.3, hideFinishScale, {"animation", "finish", "scaleFunc"}, false);
local function hideFinishRotateFunc() local function hideFinishRotateFunc()
return data.animation.finish.type ~= "custom" or data.animation.finish.rotateType ~= "custom" or not (data.animation.finish.use_rotate and WeakAuras.regions[id].region.Rotate) return data.animation.finish.type ~= "custom" or data.animation.finish.rotateType ~= "custom" or not (data.animation.finish.use_rotate and WeakAuras.regions[id].region.Rotate)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "finish_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "finish_rotateFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#rotate",
87.3, hideFinishRotateFunc, {"animation", "finish", "rotateFunc"}, false); 87.3, hideFinishRotateFunc, {"animation", "finish", "rotateFunc"}, false);
local function hideFinishColorFunc() local function hideFinishColorFunc()
return data.animation.finish.type ~= "custom" or data.animation.finish.colorType ~= "custom" or not (data.animation.finish.use_color and WeakAuras.regions[id].region.Color) return data.animation.finish.type ~= "custom" or data.animation.finish.colorType ~= "custom" or not (data.animation.finish.use_color and WeakAuras.regions[id].region.Color)
end end
WeakAuras.AddCodeOption(animation.args, data, L["Custom Function"], "finish_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color", WeakAuras.commonOptions.AddCodeOption(animation.args, data, L["Custom Function"], "finish_colorFunc", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#color",
88.7, hideFinishColorFunc, {"animation", "finish", "colorFunc"}, false); 88.7, hideFinishColorFunc, {"animation", "finish", "colorFunc"}, false);
if(data.controlledChildren) then
removeFuncs(animation);
replaceNameDescFuncs(animation, data, "animation");
replaceImageFuncs(animation, data, "animation");
replaceValuesFuncs(animation, data, "animation");
animation.get = function(info, ...) return getAll(data, info, ...); end;
animation.set = function(info, ...)
setAll(data, info, ...);
if(type(data.id) == "string") then
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ResetMoverSizer();
end
end
animation.hidden = function(info, ...) return hiddenAll(data, info, ...); end;
animation.disabled = function(info, ...) return disabledAll(data, info, ...); end;
end
return animation; return animation;
end end
+57 -50
View File
@@ -407,7 +407,7 @@ local function set(data, option, key)
childOption[key] = value childOption[key] = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -419,7 +419,7 @@ local function setUser(data, option)
childConfig[option.key] = value childConfig[option.key] = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -432,7 +432,7 @@ local function setStr(data, option, key)
childOption[key] = value childOption[key] = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -457,7 +457,7 @@ local function setNum(data, option, key, required)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -472,7 +472,7 @@ local function setUserNum(data, option)
childConfig[option.key] = num childConfig[option.key] = num
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
end end
@@ -486,7 +486,7 @@ local function setColor(data, option, key)
childOption[key] = color childOption[key] = color
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -499,7 +499,7 @@ local function setUserColor(data, option)
childConfig[option.key] = color childConfig[option.key] = color
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -511,7 +511,7 @@ local function setSelectDefault(data, option, key)
childOption.default = min(value, #childOption.values) childOption.default = min(value, #childOption.values)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -524,7 +524,7 @@ local function setArrayStr(data, option, array, index)
childOption[array][index] = value childOption[array][index] = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -553,7 +553,7 @@ typeControlAdders = {
childOption.default = val childOption.default = val
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
end, end,
@@ -827,7 +827,7 @@ typeControlAdders = {
end end
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
args[prefix .. "valdelete" .. j] = { args[prefix .. "valdelete" .. j] = {
@@ -842,7 +842,7 @@ typeControlAdders = {
tremove(childOption.values, j) tremove(childOption.values, j)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete",
imageWidth = 24, imageWidth = 24,
@@ -880,7 +880,7 @@ typeControlAdders = {
childOption.values[#childOption.values + 1] = value childOption.values[#childOption.values + 1] = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
end, end,
@@ -963,7 +963,7 @@ typeControlAdders = {
childOption.default[k] = v childOption.default[k] = v
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
for j, value in ipairs(values) do for j, value in ipairs(values) do
@@ -1006,7 +1006,7 @@ typeControlAdders = {
end end
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
args[prefix .. "valdelete" .. j] = { args[prefix .. "valdelete" .. j] = {
@@ -1022,7 +1022,7 @@ typeControlAdders = {
tremove(childOption.default, j) tremove(childOption.default, j)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete",
imageWidth = 24, imageWidth = 24,
@@ -1060,7 +1060,7 @@ typeControlAdders = {
childOption.default[#childOption.default + 1] = false childOption.default[#childOption.default + 1] = false
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
end, end,
@@ -1119,7 +1119,7 @@ typeControlAdders = {
childOption.groupType = value childOption.groupType = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
args[prefix .. "useCollapse"] = { args[prefix .. "useCollapse"] = {
@@ -1146,7 +1146,7 @@ typeControlAdders = {
WeakAuras.SetCollapsed(id, "config", optionData.path, value) WeakAuras.SetCollapsed(id, "config", optionData.path, value)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() return not option.useCollapse end disabled = function() return not option.useCollapse end
} }
@@ -1170,7 +1170,7 @@ typeControlAdders = {
childOption.limitType = value childOption.limitType = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
} }
args[prefix .. "size"] = { args[prefix .. "size"] = {
@@ -1201,7 +1201,7 @@ typeControlAdders = {
childOption.size = value childOption.size = value
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() return option.limitType == "none" end, disabled = function() return option.limitType == "none" end,
} }
@@ -1270,7 +1270,7 @@ typeControlAdders = {
end end
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
} }
if option.nameSource == -1 then if option.nameSource == -1 then
@@ -1322,7 +1322,7 @@ typeControlAdders = {
WeakAuras.SetCollapsed(id, "author", path, false) WeakAuras.SetCollapsed(id, "author", path, false)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
args[prefix .. "groupEnd"] = { args[prefix .. "groupEnd"] = {
@@ -1352,7 +1352,7 @@ local function up(data, options, index)
childOptions[optionID], childOptions[optionID - 1] = childOptions[optionID - 1], childOptions[optionID] childOptions[optionID], childOptions[optionID - 1] = childOptions[optionID - 1], childOptions[optionID]
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -1375,7 +1375,7 @@ local function down(data, options, index)
childOptions[optionID], childOptions[optionID + 1] = childOptions[optionID + 1], childOptions[optionID] childOptions[optionID], childOptions[optionID + 1] = childOptions[optionID + 1], childOptions[optionID]
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -1407,7 +1407,7 @@ local function duplicate(data, options, index)
tinsert(childOptions, optionID + 1, newOption) tinsert(childOptions, optionID + 1, newOption)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
@@ -1472,7 +1472,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
for id, optionData in pairs(option.references) do for id, optionData in pairs(option.references) do
WeakAuras.SetCollapsed(id, "author", optionData.path, not collapsed) WeakAuras.SetCollapsed(id, "author", optionData.path, not collapsed)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or
"Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse", "Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse",
@@ -1503,7 +1503,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\upright", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\upright",
imageWidth = 24, imageWidth = 24,
@@ -1532,7 +1532,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\downright", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\downright",
imageWidth = 24, imageWidth = 24,
@@ -1559,7 +1559,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
WeakAuras.InsertCollapsed(id, "author", path) WeakAuras.InsertCollapsed(id, "author", path)
WeakAuras.Add(optionData.data) WeakAuras.Add(optionData.data)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\upleft", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\upleft",
imageWidth = 24, imageWidth = 24,
@@ -1586,7 +1586,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
WeakAuras.InsertCollapsed(id, "author", path) WeakAuras.InsertCollapsed(id, "author", path)
WeakAuras.Add(optionData.data) WeakAuras.Add(optionData.data)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\downleft", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\downleft",
imageWidth = 24, imageWidth = 24,
@@ -1654,7 +1654,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
end end
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete", image = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\delete",
imageWidth = 24, imageWidth = 24,
@@ -1730,7 +1730,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
end end
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
@@ -1880,7 +1880,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
for id, optionData in pairs(option.references) do for id, optionData in pairs(option.references) do
WeakAuras.SetCollapsed(id, "config", optionData.path, not collapsed) WeakAuras.SetCollapsed(id, "config", optionData.path, not collapsed)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or
"Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse", "Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse",
@@ -1977,7 +1977,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
for id, optionData in pairs(option.references) do for id, optionData in pairs(option.references) do
setPage(id, optionData.path, value) -- XXX: mergeOptions will reset this to the maximum value if it's too big setPage(id, optionData.path, value) -- XXX: mergeOptions will reset this to the maximum value if it's too big
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
} }
args[prefix .. "resetEntry"] = { args[prefix .. "resetEntry"] = {
@@ -1993,7 +1993,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
childConfigList[childPage] = {} childConfigList[childPage] = {}
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
width = 0.15, width = 0.15,
image = "Interface\\Addons\\WeakAuras\\Media\\Textures\\reset", image = "Interface\\Addons\\WeakAuras\\Media\\Textures\\reset",
@@ -2018,7 +2018,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() disabled = function()
if option.limitType == "none" then if option.limitType == "none" then
@@ -2055,7 +2055,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() disabled = function()
return skipSubOptions return skipSubOptions
@@ -2084,7 +2084,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() disabled = function()
for id, optionData in pairs(option.references) do for id, optionData in pairs(option.references) do
@@ -2115,7 +2115,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
WeakAuras.Add(childData) WeakAuras.Add(childData)
end end
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() disabled = function()
for id, optionData in pairs(option.references) do for id, optionData in pairs(option.references) do
@@ -2189,7 +2189,7 @@ local function addUserModeOption(options, args, data, order, prefix, i)
optionData.config[option.key][k] = v optionData.config[option.key][k] = v
WeakAuras.Add(optionData.data) WeakAuras.Add(optionData.data)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
elseif optionClass == "noninteractive" then elseif optionClass == "noninteractive" then
@@ -2448,11 +2448,18 @@ local function createorder(startorder)
end end
end end
function WeakAuras.GetAuthorOptions(data, args, startorder) function WeakAuras.GetAuthorOptions(data)
-- initialize the process -- initialize the process
local authorOptions = {
type = "group",
name = L["Custom Options"],
order = 100,
args = {}
}
local args = authorOptions.args
local isAuthorMode = true local isAuthorMode = true
local options = {} local options = {}
local order = createorder(startorder) local order = createorder(1)
if data.controlledChildren then if data.controlledChildren then
-- merge options together -- merge options together
for i = 1, #data.controlledChildren do for i = 1, #data.controlledChildren do
@@ -2477,12 +2484,12 @@ function WeakAuras.GetAuthorOptions(data, args, startorder)
for _, id in ipairs(data.controlledChildren) do for _, id in ipairs(data.controlledChildren) do
local childData = WeakAuras.GetData(id) local childData = WeakAuras.GetData(id)
childData.authorMode = nil childData.authorMode = nil
-- no need to add, author mode is picked up by ReloadTriggerOptions -- no need to add, author mode is picked up by ClearAndUpdateOptions
end end
else else
data.authorMode = nil data.authorMode = nil
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
args["enterUserModeSpacer"] = { args["enterUserModeSpacer"] = {
@@ -2527,7 +2534,7 @@ function WeakAuras.GetAuthorOptions(data, args, startorder)
WeakAuras.SetCollapsed(data.id, "author", i, false) WeakAuras.SetCollapsed(data.id, "author", i, false)
WeakAuras.Add(data) WeakAuras.Add(data)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
else else
@@ -2558,7 +2565,7 @@ function WeakAuras.GetAuthorOptions(data, args, startorder)
WeakAuras.ResetCollapsed(data.id, "config") WeakAuras.ResetCollapsed(data.id, "config")
WeakAuras.Add(data) WeakAuras.Add(data)
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
disabled = function() disabled = function()
local path = {} local path = {}
@@ -2598,14 +2605,14 @@ function WeakAuras.GetAuthorOptions(data, args, startorder)
for _, id in ipairs(data.controlledChildren) do for _, id in ipairs(data.controlledChildren) do
local childData = WeakAuras.GetData(id) local childData = WeakAuras.GetData(id)
childData.authorMode = true childData.authorMode = true
-- no need to add, author mode is picked up by ReloadTriggerOptions -- no need to add, author mode is picked up by ClearAndUpdateOptions
end end
else else
data.authorMode = true data.authorMode = true
end end
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
} }
end end
return args return authorOptions
end end
+40 -94
View File
@@ -55,15 +55,35 @@ local function getAuraMatchesList(name)
end end
end end
function WeakAuras.GetBuffConversionOptions(data, optionTriggerChoices) local function GetBuffTriggerOptions(data, triggernum)
local trigger; local trigger= data.triggers[triggernum].trigger
if (not data.controlledChildren) then local spellCache = WeakAuras.spellCache;
local triggernum = optionTriggerChoices[data.id]; local ValidateNumeric = WeakAuras.ValidateNumeric;
if (triggernum) then
trigger = data.triggers[triggernum].trigger;
end
end
local aura_options = { local aura_options = {
convertToBuffTrigger2SpaceBeforeDesc = {
type = "description",
width = 0.4,
order = 8.1,
name = "",
},
convertToBuffTrigger2Desc = {
type = "description",
width = WeakAuras.doubleWidth - 0.8,
order = 8.2,
name = function()
if (not WeakAuras.CanConvertBuffTrigger2) then
return "";
end
local _, err = WeakAuras.CanConvertBuffTrigger2(trigger);
return err or "";
end,
},
convertToBuffTrigger2SpaceAfterDesc = {
type = "description",
width = 0.4,
order = 8.3,
name = "",
},
convertToBuffTrigger2SpaceBefore = { convertToBuffTrigger2SpaceBefore = {
type = "description", type = "description",
width = 0.3, width = 0.3,
@@ -97,23 +117,10 @@ function WeakAuras.GetBuffConversionOptions(data, optionTriggerChoices)
return err or "" return err or ""
end, end,
func = function() func = function()
if(data.controlledChildren) then WeakAuras.ConvertBuffTrigger2(trigger);
for index, childId in pairs(data.controlledChildren) do WeakAuras.Add(data);
local childData = WeakAuras.GetData(childId); WeakAuras.UpdateDisplayButton(data)
local trigger = childData.triggers[optionTriggerChoices[childId]] and childData.triggers[optionTriggerChoices[childId]].trigger; WeakAuras.ClearAndUpdateOptions(data.id);
if (trigger) then
WeakAuras.ConvertBuffTrigger2(trigger);
WeakAuras.Add(childData);
WeakAuras.ReloadTriggerOptions(childData);
end
end
WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data);
else
WeakAuras.ConvertBuffTrigger2(trigger);
WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data);
end
end end
}, },
convertToBuffTrigger2SpaceAfter = { convertToBuffTrigger2SpaceAfter = {
@@ -121,63 +128,8 @@ function WeakAuras.GetBuffConversionOptions(data, optionTriggerChoices)
width = 0.3, width = 0.3,
order = 8.6, order = 8.6,
name = "", name = "",
hidden = function()
-- For those that update without restarting
return not WeakAuras.CanConvertBuffTrigger2
end,
}, },
convertToBuffTrigger2SpaceBeforeDesc = {
type = "description",
width = 0.4,
order = 8.1,
name = "",
hidden = function()
-- For those that update without restarting
return not WeakAuras.CanConvertBuffTrigger2
end,
},
convertToBuffTrigger2Desc = {
type = "description",
width = WeakAuras.doubleWidth - 0.8,
order = 8.2,
name = function()
if (not WeakAuras.CanConvertBuffTrigger2) then
return "";
end
local _, err = WeakAuras.CanConvertBuffTrigger2(trigger);
return err or "";
end,
hidden = function()
-- For those that update without restarting
return not WeakAuras.CanConvertBuffTrigger2
end,
},
convertToBuffTrigger2SpaceAfterDesc = {
type = "description",
width = 0.4,
order = 8.3,
name = "",
hidden = function()
-- For those that update without restarting
return not WeakAuras.CanConvertBuffTrigger2
end,
},
}
return aura_options;
end
local function GetBuffTriggerOptions(data, optionTriggerChoices)
local trigger;
if (not data.controlledChildren) then
local triggernum = optionTriggerChoices[data.id];
if (triggernum) then
trigger = data.triggers[triggernum].trigger;
end
end
local spellCache = WeakAuras.spellCache;
local ValidateNumeric = WeakAuras.ValidateNumeric;
local aura_options = {
fullscan = { fullscan = {
type = "toggle", type = "toggle",
name = L["Use Full Scan (High CPU)"], name = L["Use Full Scan (High CPU)"],
@@ -240,7 +192,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -294,7 +245,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
else trigger.use_stealable = false end else trigger.use_stealable = false end
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
end end
}, },
use_spellId = { use_spellId = {
@@ -366,7 +316,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -402,7 +351,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -445,7 +393,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -488,7 +435,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -530,7 +476,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -573,7 +518,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -616,7 +560,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -659,7 +602,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -702,7 +644,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -745,7 +686,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end, end,
}, },
@@ -839,7 +779,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
trigger.group_count = ""; trigger.group_count = "";
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -1070,7 +1009,14 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
}, },
}; };
return aura_options;
WeakAuras.commonOptions.AddCommonTriggerOptions(aura_options, data, triggernum)
WeakAuras.commonOptions.AddTriggerGetterSetter(aura_options, data, triggernum)
WeakAuras.AddTriggerMetaFunctions(aura_options, data, triggernum)
return {
["trigger." .. triggernum .. ".legacy_aura_options"] = aura_options
}
end end
WeakAuras.RegisterTriggerSystemOptions({"aura"}, GetBuffTriggerOptions); WeakAuras.RegisterTriggerSystemOptions({"aura"}, GetBuffTriggerOptions);
+20 -34
View File
@@ -8,7 +8,6 @@ local debuff_types = WeakAuras.debuff_types
local function getAuraMatchesLabel(name) local function getAuraMatchesLabel(name)
local ids = WeakAuras.spellCache.GetSpellsMatching(name) local ids = WeakAuras.spellCache.GetSpellsMatching(name)
if ids then if ids then
local descText = ""
local numMatches = 0 local numMatches = 0
for id, _ in pairs(ids) do for id, _ in pairs(ids) do
numMatches = numMatches + 1 numMatches = numMatches + 1
@@ -47,21 +46,11 @@ local function shiftTable(tbl, pos)
end end
-- Counts the Names or SpellIds in a aura, recursively. -- Counts the Names or SpellIds in a aura, recursively.
local function CountNames(data, optionTriggerChoices, name) local function CountNames(data, triggernum, name)
local result = 0 local result = 0
if data.controlledChildren then local trigger = data.triggers[triggernum].trigger
for index, childId in ipairs(data.controlledChildren) do if trigger[name] then
local childData = WeakAuras.GetData(childId) result = #trigger[name]
local trigger = optionTriggerChoices[childId] and childData.triggers[optionTriggerChoices[childId]].trigger
if trigger and trigger[name] then
result = max(result, #trigger[name])
end
end
else
local trigger = optionTriggerChoices[data.id] and data.triggers[optionTriggerChoices[data.id]].trigger
if trigger[name] then
result = #trigger[name]
end
end end
return result return result
end end
@@ -190,9 +179,8 @@ local function CreateNameOptions(aura_options, data, trigger, size, isExactSpell
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.UpdateThumbnail(data) WeakAuras.UpdateThumbnail(data)
WeakAuras.SetIconNames(data)
WeakAuras.UpdateDisplayButton(data) WeakAuras.UpdateDisplayButton(data)
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id)
end, end,
validate = isExactSpellId and WeakAuras.ValidateNumeric or nil validate = isExactSpellId and WeakAuras.ValidateNumeric or nil
} }
@@ -200,16 +188,8 @@ local function CreateNameOptions(aura_options, data, trigger, size, isExactSpell
-- VALIDATE ? -- VALIDATE ?
end end
local function GetBuffTriggerOptions(data, optionTriggerChoices) local function GetBuffTriggerOptions(data, triggernum)
local trigger local trigger = data.triggers[triggernum].trigger
if not data.controlledChildren then
local triggernum = optionTriggerChoices[data.id]
if triggernum then
trigger = data.triggers[triggernum].trigger
end
end
local function HasMatchCount(trigger) local function HasMatchCount(trigger)
if IsGroupTrigger(trigger) then if IsGroupTrigger(trigger) then
@@ -601,7 +581,6 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
else trigger.use_stealable = false end else trigger.use_stealable = false end
end end
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.SetIconNames(data)
end end
}, },
useAffected = { useAffected = {
@@ -695,7 +674,7 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
}, },
ignoreInvisible = { ignoreInvisible = {
type = "toggle", type = "toggle",
name = WeakAuras.newFeatureString .. L["Ignore out of checking range."], name = WeakAuras.newFeatureString .. L["Ignore out of checking range"],
desc = L["Uses UnitIsVisible() to check if in range. This is polled every second."], desc = L["Uses UnitIsVisible() to check if in range. This is polled every second."],
order = 68.9, order = 68.9,
width = WeakAuras.doubleWidth, width = WeakAuras.doubleWidth,
@@ -733,6 +712,7 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
end end
}, },
useGroup_count = { useGroup_count = {
type = "toggle", type = "toggle",
width = WeakAuras.normalWidth, width = WeakAuras.normalWidth,
@@ -943,10 +923,10 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
} }
-- Names -- Names
local nameOptionSize = CountNames(data, optionTriggerChoices, "auranames") + 1 local nameOptionSize = CountNames(data, triggernum, "auranames") + 1
local spellOptionsSize = CountNames(data, optionTriggerChoices, "auraspellids") + 1 local spellOptionsSize = CountNames(data, triggernum, "auraspellids") + 1
local ignoreNameOptionSize = CountNames(data, optionTriggerChoices, "ignoreAuraNames") + 1 local ignoreNameOptionSize = CountNames(data, triggernum, "ignoreAuraNames") + 1
local ignoreSpellOptionsSize = CountNames(data, optionTriggerChoices, "ignoreAuraSpellids") + 1 local ignoreSpellOptionsSize = CountNames(data, triggernum, "ignoreAuraSpellids") + 1
CreateNameOptions(aura_options, data, trigger, nameOptionSize, CreateNameOptions(aura_options, data, trigger, nameOptionSize,
false, false, "name", 12, "useName", "auranames", false, false, "name", 12, "useName", "auranames",
@@ -967,8 +947,14 @@ local function GetBuffTriggerOptions(data, optionTriggerChoices)
true, true, "ignorespellid", 42, "useIgnoreExactSpellId", "ignoreAuraSpellids", true, true, "ignorespellid", 42, "useIgnoreExactSpellId", "ignoreAuraSpellids",
L["Ignored Spell ID"], L["Enter a Spell ID"]) L["Ignored Spell ID"], L["Enter a Spell ID"])
WeakAuras.commonOptions.AddCommonTriggerOptions(aura_options, data, triggernum)
WeakAuras.commonOptions.AddTriggerGetterSetter(aura_options, data, triggernum)
WeakAuras.AddTriggerMetaFunctions(aura_options, data, triggernum)
return aura_options
return {
["trigger." .. triggernum .. ".aura_options"] = aura_options
}
end end
WeakAuras.RegisterTriggerSystemOptions({"aura2"}, GetBuffTriggerOptions) WeakAuras.RegisterTriggerSystemOptions({"aura2"}, GetBuffTriggerOptions)
+2 -1
View File
@@ -118,8 +118,9 @@ function spellCache.AddIcon(name, id, icon)
if cache then if cache then
if name then if name then
cache[name] = cache[name] or {} cache[name] = cache[name] or {}
cache[name].spells = cache[name].spells or {}
if id and icon then if id and icon then
cache[name][id] = icon cache[name].spells[id] = icon
end end
end end
else else
File diff suppressed because it is too large Load Diff
+59 -35
View File
@@ -257,7 +257,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
elseif (property == "DELETE") then elseif (property == "DELETE") then
if (data.controlledChildren) then if (data.controlledChildren) then
@@ -267,11 +267,11 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
tremove(auraData[conditionVariable][conditionIndex].changes, reference.changeIndex); tremove(auraData[conditionVariable][conditionIndex].changes, reference.changeIndex);
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
tremove(conditions[i].changes, j); tremove(conditions[i].changes, j);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
return; return;
end end
@@ -286,12 +286,12 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
conditions[i].changes[j].property = property; conditions[i].changes[j].property = property;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
conditions[i].changes[j].property = property; conditions[i].changes[j].property = property;
conditions[i].changes[j].value = default; conditions[i].changes[j].value = default;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
} }
@@ -310,7 +310,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
conditions[i].changes[j].value = v; conditions[i].changes[j].value = v;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
setValueColor = function(info, r, g, b, a) setValueColor = function(info, r, g, b, a)
for id, reference in pairs(conditions[i].changes[j].references) do for id, reference in pairs(conditions[i].changes[j].references) do
@@ -328,7 +328,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
conditions[i].changes[j].value[2] = g; conditions[i].changes[j].value[2] = g;
conditions[i].changes[j].value[3] = b; conditions[i].changes[j].value[3] = b;
conditions[i].changes[j].value[4] = a; conditions[i].changes[j].value[4] = a;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
setValueComplex = function(property, reloadOptions) setValueComplex = function(property, reloadOptions)
@@ -346,10 +346,9 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
conditions[i].changes[j].value = {}; conditions[i].changes[j].value = {};
end end
conditions[i].changes[j].value[property] = v; conditions[i].changes[j].value[property] = v;
if reloadOptions then if reloadOptions then
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
else
WeakAuras.ReloadTriggerOptions(data);
end end
end end
end end
@@ -381,7 +380,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
conditions[i].changes[j].value[property][2] = g; conditions[i].changes[j].value[property][2] = g;
conditions[i].changes[j].value[property][3] = b; conditions[i].changes[j].value[property][3] = b;
conditions[i].changes[j].value[property][4] = a; conditions[i].changes[j].value[property][4] = a;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
else else
@@ -406,7 +405,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
conditions[i].changes[j].value[property] = v; conditions[i].changes[j].value[property] = v;
WeakAuras.Add(data); WeakAuras.Add(data);
if reloadOptions then if reloadOptions then
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
end end
end end
end end
@@ -696,6 +695,7 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
} }
order = order + 1; order = order + 1;
local formatGet = function(key) local formatGet = function(key)
return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message_format_" .. key] return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message_format_" .. key]
end end
@@ -713,8 +713,10 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message_format_" .. key]; return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message_format_" .. key];
end end
local originalName = option.name local originalName = option.name
option.name = blueIfNoValue2(data, conditions[i].changes[j], "value", "message_format_" .. key, originalName, originalName) if option.type ~= "header" then
option.desc = descIfNoValue2(data, conditions[i].changes[j], "value", "message_format_" .. key, nil, option.values) option.name = blueIfNoValue2(data, conditions[i].changes[j], "value", "message_format_" .. key, originalName, originalName)
option.desc = descIfNoValue2(data, conditions[i].changes[j], "value", "message_format_" .. key, nil, option.values)
end
option.set = setValueComplex("message_format_" .. key, option.reloadOptions) option.set = setValueComplex("message_format_" .. key, option.reloadOptions)
option.reloadOptions = nil option.reloadOptions = nil
@@ -722,14 +724,24 @@ local function addControlsForChange(args, order, data, conditionVariable, condit
args[fullKey] = option args[fullKey] = option
end end
local hasTextFormatOption
if data.controlledChildren then if data.controlledChildren then
for id, reference in pairs(conditions[i].changes[j].references) do for id, reference in pairs(conditions[i].changes[j].references) do
local input = reference.value and reference.value.message local input = reference.value and reference.value.message
WeakAuras.AddTextFormatOption(input, false, formatGet, addOption) hasTextFormatOption = WeakAuras.AddTextFormatOption(input, true, formatGet, addOption)
end end
else else
local input = type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message"] local input = type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value["message"]
WeakAuras.AddTextFormatOption(input, false, formatGet, addOption) hasTextFormatOption = WeakAuras.AddTextFormatOption(input, true, formatGet, addOption)
end
if hasTextFormatOption then
local footerOption = {
type = "header",
name = "",
width = WeakAuras.doubleWidth
}
addOption("footer", footerOption)
end end
local function customHidden() local function customHidden()
@@ -1355,7 +1367,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
end end
@@ -1368,7 +1380,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
else else
removeSubCheck(conditions[i].check, path); removeSubCheck(conditions[i].check, path);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
end end
@@ -1387,7 +1399,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
childCheck.value = nil; childCheck.value = nil;
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
local oldType; local oldType;
check = getOrCreateSubCheck(conditions[i].check, path); check = getOrCreateSubCheck(conditions[i].check, path);
@@ -1403,7 +1415,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
check.value = nil; check.value = nil;
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end, end,
get = function() get = function()
@@ -1454,7 +1466,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
check.op = v; check.op = v;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
setValue = function(info, v) setValue = function(info, v)
check = getOrCreateSubCheck(conditions[i].check, path); check = getOrCreateSubCheck(conditions[i].check, path);
@@ -1465,7 +1477,7 @@ local function addControlsForIfLine(args, order, data, conditionVariable, condit
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
check.value = v; check.value = v;
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
else else
setOp = function(info, v) setOp = function(info, v)
@@ -1667,7 +1679,7 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
else else
WeakAuras.SetCollapsed(data.id, "condition", i, not collapsed); WeakAuras.SetCollapsed(data.id, "condition", i, not collapsed);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end, end,
image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or "Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse" , image = collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\expand" or "Interface\\AddOns\\WeakAuras\\Media\\Textures\\collapse" ,
imageWidth = 18, imageWidth = 18,
@@ -1705,14 +1717,14 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
if (i > 1) then if (i > 1) then
local tmp = conditions[i]; local tmp = conditions[i];
tremove(conditions, i); tremove(conditions, i);
tinsert(conditions, i - 1, tmp); tinsert(conditions, i - 1, tmp);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
end, end,
@@ -1754,7 +1766,7 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
else else
if (i < #conditions) then if (i < #conditions) then
@@ -1762,7 +1774,7 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
tremove(conditions, i); tremove(conditions, i);
tinsert(conditions, i + 1, tmp); tinsert(conditions, i + 1, tmp);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
end end
end end
@@ -1786,12 +1798,12 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
tremove(auraData[conditionVariable], reference.conditionIndex); tremove(auraData[conditionVariable], reference.conditionIndex);
WeakAuras.Add(auraData); WeakAuras.Add(auraData);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
else else
tremove(conditions, i); tremove(conditions, i);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
return; return;
end end
end, end,
@@ -1836,12 +1848,12 @@ local function addControlsForCondition(args, order, data, conditionVariable, con
tinsert(auradata[conditionVariable][reference.conditionIndex].changes, {}) tinsert(auradata[conditionVariable][reference.conditionIndex].changes, {})
WeakAuras.Add(auradata); WeakAuras.Add(auradata);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
conditions[i].changes = conditions[i].changes or {}; conditions[i].changes = conditions[i].changes or {};
conditions[i].changes[#conditions[i].changes + 1] = {}; conditions[i].changes[#conditions[i].changes + 1] = {};
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
} }
@@ -2313,7 +2325,19 @@ local function mergeConditions(all, aura, id, allConditionTemplates, propertyTyp
end end
end end
function WeakAuras.GetConditionOptions(data, args, conditionVariable, startorder, category) function WeakAuras.GetConditionOptions(data)
local options = {
type = "group",
name = L["Conditions"],
order = 25,
args = {}
}
local args = options.args
local conditionVariable = "conditions"
local startorder = 0
local category = nil
-- Build potential Conditions Templates structure -- Build potential Conditions Templates structure
local conditionTemplates, conditionTemplateWithoutCombinations = createConditionTemplates(data); local conditionTemplates, conditionTemplateWithoutCombinations = createConditionTemplates(data);
@@ -2357,7 +2381,7 @@ function WeakAuras.GetConditionOptions(data, args, conditionVariable, startorder
WeakAuras.SetCollapsed(id, "condition", #aura[conditionVariable], false); WeakAuras.SetCollapsed(id, "condition", #aura[conditionVariable], false);
WeakAuras.Add(aura); WeakAuras.Add(aura);
end end
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
else else
conditions[#conditions + 1] = {}; conditions[#conditions + 1] = {};
conditions[#conditions].check = {}; conditions[#conditions].check = {};
@@ -2366,11 +2390,11 @@ function WeakAuras.GetConditionOptions(data, args, conditionVariable, startorder
conditions[#conditions].category = category; conditions[#conditions].category = category;
WeakAuras.SetCollapsed(data.id, "condition", #conditions, false); WeakAuras.SetCollapsed(data.id, "condition", #conditions, false);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadTriggerOptions(data); WeakAuras.ClearAndUpdateOptions(data.id, true)
end end
end end
} }
order = order + 1; order = order + 1;
return args; return options;
end end
+303
View File
@@ -0,0 +1,303 @@
local L = WeakAuras.L
local regionOptions = WeakAuras.regionOptions
local flattenRegionOptions = WeakAuras.commonOptions.flattenRegionOptions
local fixMetaOrders = WeakAuras.commonOptions.fixMetaOrders
local parsePrefix = WeakAuras.commonOptions.parsePrefix
local removeFuncs = WeakAuras.commonOptions.removeFuncs
local replaceNameDescFuncs = WeakAuras.commonOptions.replaceNameDescFuncs
local replaceImageFuncs = WeakAuras.commonOptions.replaceImageFuncs
local replaceValuesFuncs = WeakAuras.commonOptions.replaceValuesFuncs
local disabledAll = WeakAuras.commonOptions.CreateDisabledAll("region")
local hiddenAll = WeakAuras.commonOptions.CreateHiddenAll("region")
local getAll = WeakAuras.commonOptions.CreateGetAll("region")
local setAll = WeakAuras.commonOptions.CreateSetAll("region", getAll)
local function AddSubRegionImpl(data, subRegionName)
data.subRegions = data.subRegions or {}
if WeakAuras.subRegionTypes[subRegionName] and WeakAuras.subRegionTypes[subRegionName] then
if WeakAuras.subRegionTypes[subRegionName].supports(data.regionType) then
local default = WeakAuras.subRegionTypes[subRegionName].default
local subRegionData = type(default) == "function" and default(data.regionType) or CopyTable(default)
subRegionData.type = subRegionName
tinsert(data.subRegions, subRegionData)
WeakAuras.Add(data)
WeakAuras.ClearAndUpdateOptions(data.id)
end
end
end
local function AddSubRegion(data, subRegionName)
if (WeakAuras.ApplyToDataOrChildData(data, AddSubRegionImpl, subRegionName)) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
end
local function AddOptionsForSupportedSubRegion(regionOption, data, supported)
if not next(supported) then
return
end
local hasSubRegions = false
local result = {}
local order = 1
result.__order = 300
result.__title = L["Add Extra Elements"]
result.__topLine = true
for subRegionType in pairs(supported) do
if WeakAuras.subRegionTypes[subRegionType].supportsAdd then
hasSubRegions = true
result[subRegionType .. "space"] = {
type = "description",
width = WeakAuras.doubleWidth,
name = "",
order = order,
}
order = order + 1
result[subRegionType] = {
type = "execute",
width = WeakAuras.normalWidth,
name = string.format(L["Add %s"], WeakAuras.subRegionTypes[subRegionType].displayName),
order = order,
func = function()
AddSubRegion(data, subRegionType)
end,
}
order = order + 1
end
end
regionOption["sub"] = result;
return hasSubRegions
end
local function union(table1, table2)
local meta = {};
for i,v in pairs(table1) do
meta[i] = v;
end
for i,v in pairs(table2) do
meta[i] = v;
end
return meta;
end
function WeakAuras.GetDisplayOptions(data)
local id = data.id
if not data.controlledChildren then
local regionOption;
local commonOption = {};
local hasSubElements = false
if(regionOptions[data.regionType]) then
regionOption = regionOptions[data.regionType].create(id, data);
if data.subRegions then
local subIndex = {}
for index, subRegionData in ipairs(data.subRegions) do
local subRegionType = subRegionData.type
if WeakAuras.subRegionOptions[subRegionType] then
hasSubElements = true
subIndex[subRegionType] = subIndex[subRegionType] and subIndex[subRegionType] + 1 or 1
local options, common = WeakAuras.subRegionOptions[subRegionType].create(data, subRegionData, index, subIndex[subRegionType])
options.__order = 200 + index
regionOption["sub." .. index .. "." .. subRegionType] = options
commonOption[subRegionType] = common
end
end
end
local commonOptionIndex = 0
for option, optionData in pairs(commonOption) do
commonOptionIndex = commonOptionIndex + 1
optionData.__order = 100 + commonOptionIndex
regionOption[option] = optionData
end
local supported = {}
for subRegionName, subRegionType in pairs(WeakAuras.subRegionTypes) do
if subRegionType.supports(data.regionType) then
supported[subRegionName] = true
end
end
hasSubElements = AddOptionsForSupportedSubRegion(regionOption, data, supported) or hasSubElements
else
regionOption = {
[data.regionType] = {
__title = "|cFFFFFF00" .. data.regionType,
__order = 1,
unsupported = {
type = "description",
name = L["This region of type \"%s\" is not supported."]:format(data.regionType),
order = 2,
}
}
};
end
if hasSubElements then
regionOption["SubElementsHeader"] = {
__order = 100,
__noHeader = true,
header = {
type = "header",
name = L["Sub Elements"],
order = 1
}
}
end
local options = flattenRegionOptions(regionOption, true)
local region = {
type = "group",
name = L["Display"],
order = 10,
get = function(info)
local base, property = parsePrefix(info[#info], data);
if not base then
return nil
end
if(info.type == "color") then
base[property] = base[property] or {};
local c = base[property];
return c[1], c[2], c[3], c[4];
else
return base[property];
end
end,
set = function(info, v, g, b, a)
local base, property = parsePrefix(info[#info], data, true);
if(info.type == "color") then
base[property] = base[property] or {};
local c = base[property];
c[1], c[2], c[3], c[4] = v, g, b, a;
elseif(info.type == "toggle") then
base[property] = v;
else
base[property] = (v ~= "" and v) or nil;
end
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
if(data.parent) then
local parentData = WeakAuras.GetData(data.parent);
if(parentData) then
WeakAuras.Add(parentData);
end
end
WeakAuras.ResetMoverSizer();
end,
args = options
};
return region
else
-- Multiple Auras
-- We call the create functions of the relevant region types with
-- the parentData once per region type
-- For sub regions, the relevant create function is called with the parentData
-- once per index/sub region type
local handledRegionTypes = {}
local handledSubRegionTypes = {}
local allOptions = {};
local commonOption = {};
local unsupportedCount = 0
local supportedSubRegions = {}
local hasSubElements = false
for index, childId in ipairs(data.controlledChildren) do
local childData = WeakAuras.GetData(childId);
if childData and not handledRegionTypes[childData.regionType] then
handledRegionTypes[childData.regionType] = true;
if regionOptions[childData.regionType] then
allOptions = union(allOptions, regionOptions[childData.regionType].create(id, data));
else
unsupportedCount = unsupportedCount + 1
allOptions["__unsupported" .. unsupportedCount] = {
__title = "|cFFFFFF00" .. childData.regionType,
__order = 1,
warning = {
type = "description",
name = L["Regions of type \"%s\" are not supported."]:format(childData.regionType),
order = 1
},
}
end
for subRegionName, subRegionType in pairs(WeakAuras.subRegionTypes) do
if subRegionType.supports(childData.regionType) then
supportedSubRegions[subRegionName] = true
end
end
end
if childData.subRegions then
local subIndex = {}
for index, subRegionData in ipairs(childData.subRegions) do
local subRegionType = subRegionData.type
local alreadyHandled = handledSubRegionTypes[index] and handledSubRegionTypes[index][subRegionType]
if WeakAuras.subRegionOptions[subRegionType] and not alreadyHandled then
handledSubRegionTypes[index] = handledSubRegionTypes[index] or {}
handledSubRegionTypes[index][subRegionType] = true
hasSubElements = true
subIndex[subRegionType] = subIndex[subRegionType] and subIndex[subRegionType] + 1 or 1
local options, common = WeakAuras.subRegionOptions[subRegionType].create(data, nil, index, subIndex[subRegionType])
options.__order = 200 + index
allOptions["sub." .. index .. "." .. subRegionType] = options
commonOption[subRegionType] = common
end
end
end
end
local commonOptionIndex = 0
for option, optionData in pairs(commonOption) do
commonOptionIndex = commonOptionIndex + 1
optionData.__order = 100 + commonOptionIndex
allOptions[option] = optionData
end
hasSubElements = AddOptionsForSupportedSubRegion(allOptions, data, supportedSubRegions) or hasSubElements
if hasSubElements then
allOptions["SubElementsHeader"] = {
__order = 100,
__noHeader = true,
header = {
order = 1,
type = "header",
name = L["Sub Elements"],
}
}
end
fixMetaOrders(allOptions);
local region = {
type = "group",
name = L["Display"],
order = 10,
args = flattenRegionOptions(allOptions, false);
};
removeFuncs(region);
replaceNameDescFuncs(region, data, "region");
replaceImageFuncs(region, data, "region");
replaceValuesFuncs(region, data, "region");
region.get = function(info, ...) return getAll(data, info, ...); end;
region.set = function(info, ...)
setAll(data, info, ...);
if(type(data.id) == "string") then
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ResetMoverSizer();
end
end
region.hidden = function(info, ...) return hiddenAll(data, info, ...); end;
region.disabled = function(info, ...) return disabledAll(data, info, ...); end;
return region
end
end
+3 -3
View File
@@ -69,7 +69,7 @@ function WeakAuras.CreateImportButtons()
local button = WeakAuras.GetDisplayButton(groupId); local button = WeakAuras.GetDisplayButton(groupId);
button.callbacks.UpdateExpandButton(); button.callbacks.UpdateExpandButton();
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
WeakAuras.ReloadGroupRegionOptions(data); WeakAuras.ClearAndUpdateOptions(data.id);
end end
end end
end end
@@ -171,7 +171,7 @@ function WeakAuras.CreateImportButtons()
local button = WeakAuras.GetDisplayButton(id); local button = WeakAuras.GetDisplayButton(id);
button.callbacks.UpdateExpandButton(); button.callbacks.UpdateExpandButton();
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
WeakAuras.ReloadGroupRegionOptions(data); WeakAuras.ClearAndUpdateOptions(data.id);
end end
WeakAuras.ScanForLoads(); WeakAuras.ScanForLoads();
@@ -331,7 +331,7 @@ function WeakAuras.DisableAddonDisplay(id)
end end
end end
WeakAuras.Add(parentData); WeakAuras.Add(parentData);
WeakAuras.ReloadGroupRegionOptions(parentData); WeakAuras.ClearAndUpdateOptions(parentData.id);
WeakAuras.UpdateDisplayButton(parentData); WeakAuras.UpdateDisplayButton(parentData);
end end
end end
+85 -141
View File
@@ -11,58 +11,23 @@ local subevent_suffix_types = WeakAuras.subevent_suffix_types;
local custom_trigger_types = WeakAuras.custom_trigger_types; local custom_trigger_types = WeakAuras.custom_trigger_types;
local eventend_types = WeakAuras.eventend_types; local eventend_types = WeakAuras.eventend_types;
local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger) local function GetCustomTriggerOptions(data, triggernum)
local id = data.id; local id = data.id;
local trigger = data.triggers[triggernum].trigger
local function appendToTriggerPath(...)
local ret = {...};
tinsert(ret, 1, "trigger");
tinsert(ret, 1, triggernum);
tinsert(ret, 1, "triggers");
return ret;
end
local appendToTriggerPath, appendToUntriggerPath; local function appendToUntriggerPath(...)
local ret = {...};
if (data.controlledChildren) then tinsert(ret, 1, "untrigger");
function appendToTriggerPath(...) tinsert(ret, 1, triggernum);
local baseRet = {...}; tinsert(ret, 1, "triggers");
local result = {}; return ret;
for index, childId in pairs(data.controlledChildren) do
local ret = {};
WeakAuras.DeepCopy(baseRet, ret);
local optionTriggerChoice = optionTriggerChoices[childId];
tinsert(ret, 1, "trigger");
tinsert(ret, 1, optionTriggerChoice)
tinsert(ret, 1, "triggers")
result[childId] = ret;
end
return result;
end
function appendToUntriggerPath(...)
local baseRet = {...};
local result = {};
for index, childId in pairs(data.controlledChildren) do
local ret = {};
WeakAuras.DeepCopy(baseRet, ret);
local optionTriggerChoice = optionTriggerChoices[childId];
tinsert(ret, 1, "untrigger");
tinsert(ret, 1, optionTriggerChoice);
tinsert(ret, 1, "triggers");
result[childId] = ret;
end
return result;
end
else
function appendToTriggerPath(...)
local ret = {...};
tinsert(ret, 1, "trigger");
tinsert(ret, 1, optionTriggerChoices[id]);
tinsert(ret, 1, "triggers");
return ret;
end
function appendToUntriggerPath(...)
local ret = {...};
tinsert(ret, 1, "untrigger");
tinsert(ret, 1, optionTriggerChoices[id]);
tinsert(ret, 1, "triggers");
return ret;
end
end end
local customOptions = local customOptions =
@@ -74,12 +39,14 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
width = WeakAuras.doubleWidth, width = WeakAuras.doubleWidth,
values = custom_trigger_types, values = custom_trigger_types,
hidden = function() return not (trigger.type == "custom") end, hidden = function() return not (trigger.type == "custom") end,
get = function(info)
return trigger.custom_type
end,
set = function(info, v) set = function(info, v)
trigger.custom_type = v; trigger.custom_type = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
WeakAuras.ReloadOptions(data.id); WeakAuras.ClearAndUpdateOptions(data.id);
end end
}, },
check = { check = {
@@ -96,7 +63,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.check = v; trigger.check = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -114,7 +80,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.check = v; trigger.check = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -131,7 +96,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.events = v; trigger.events = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -146,7 +110,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.events = v; trigger.events = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -218,7 +181,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.custom_hide = v; trigger.custom_hide = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -233,7 +195,6 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.custom_hide = v; trigger.custom_hide = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
}, },
@@ -246,9 +207,8 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
set = function(info, v) set = function(info, v)
trigger.dynamicDuration = v; trigger.dynamicDuration = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
WeakAuras.ReloadOptions(data.id); WeakAuras.ClearAndUpdateOptions(data.id);
end end
}, },
duration = { duration = {
@@ -279,57 +239,45 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
return true; return true;
end, end,
func = function() func = function()
if (data.controlledChildren) then for i = 1, 7 do
for index, childId in ipairs(data.controlledChildren) do if (trigger["customOverlay" .. i] == nil) then
local childData = WeakAuras.GetData(childId); trigger["customOverlay" .. i] = "";
for i = 1, 7 do break;
if (childData.trigger["customOverlay" .. i] == nil) then
childData.trigger["customOverlay" .. i] = "";
break;
end
end
end
else
for i = 1, 7 do
if (trigger["customOverlay" .. i] == nil) then
trigger["customOverlay" .. i] = "";
break;
end
end end
end end
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ClearAndUpdateOptions(data.id)
end end
} }
}; };
local function extraSetFunction() local function extraSetFunction()
WeakAuras.SetIconNames(data);
WeakAuras.UpdateDisplayButton(data); WeakAuras.UpdateDisplayButton(data);
end end
local function extraSetFunctionReload() local function extraSetFunctionReload()
extraSetFunction(); extraSetFunction();
WeakAuras.ReloadOptions(data.id); WeakAuras.ClearAndUpdateOptions(data.id);
end end
local function hideCustomTrigger() local function hideCustomTrigger()
return not (trigger.type == "custom") return not (trigger.type == "custom")
end end
WeakAuras.AddCodeOption(customOptions, data, L["Custom Trigger"], "custom_trigger", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-trigger", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Custom Trigger"], "custom_trigger", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-trigger",
10, hideCustomTrigger, appendToTriggerPath("custom"), false, true, extraSetFunction, nil, true); 10, hideCustomTrigger, appendToTriggerPath("custom"), false, true, extraSetFunction, nil, true);
local function hideCustomVariables() local function hideCustomVariables()
return not (trigger.type == "custom" and trigger.custom_type == "stateupdate"); return not (trigger.type == "custom" and trigger.custom_type == "stateupdate");
end end
WeakAuras.AddCodeOption(customOptions, data, L["Custom Variables"], "custom_variables", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-variables", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Custom Variables"], "custom_variables", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-variables",
11, hideCustomVariables, appendToTriggerPath("customVariables"), false, true, extraSetFunctionReload, nil, true); 11, hideCustomVariables, appendToTriggerPath("customVariables"), false, true, extraSetFunctionReload, nil, true);
local function hideCustomUntrigger() local function hideCustomUntrigger()
return not (trigger.type == "custom" return not (trigger.type == "custom"
and (trigger.custom_type == "status" or (trigger.custom_type == "event" and trigger.custom_hide == "custom"))) and (trigger.custom_type == "status" or (trigger.custom_type == "event" and trigger.custom_hide == "custom")))
end end
WeakAuras.AddCodeOption(customOptions, data, L["Custom Untrigger"], "custom_untrigger", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-untrigger", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Custom Untrigger"], "custom_untrigger", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-untrigger",
14, hideCustomUntrigger, appendToUntriggerPath("custom"), false, true, extraSetFunction); 14, hideCustomUntrigger, appendToUntriggerPath("custom"), false, true, extraSetFunction);
local function hideCustomDuration() local function hideCustomDuration()
@@ -337,7 +285,7 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
and (trigger.custom_type == "status" and (trigger.custom_type == "status"
or (trigger.custom_type == "event" and (trigger.custom_hide ~= "timed" or trigger.dynamicDuration)))) or (trigger.custom_type == "event" and (trigger.custom_hide ~= "timed" or trigger.dynamicDuration))))
end end
WeakAuras.AddCodeOption(customOptions, data, L["Duration Info"], "custom_duration", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#duration-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Duration Info"], "custom_duration", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#duration-info",
16, hideCustomDuration, appendToTriggerPath("customDuration"), false, true, extraSetFunctionReload); 16, hideCustomDuration, appendToTriggerPath("customDuration"), false, true, extraSetFunctionReload);
local function hideIfTriggerStateUpdate() local function hideIfTriggerStateUpdate()
@@ -353,23 +301,11 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
end end
local function removeOverlay() local function removeOverlay()
if (data.controlledChildren) then for j = i, 7 do
for index, childId in ipairs(data.controlledChildren) do trigger["customOverlay" .. j] = trigger["customOverlay" .. (j +1)];
local childData = WeakAuras.GetData(childId);
for j = i, 7 do
childData.trigger["customOverlay" .. j] = childData.trigger["customOverlay" .. (j +1)];
end
WeakAuras.ScheduleReloadOptions(childData);
end
WeakAuras.Add(data);
WeakAuras.ScheduleReloadOptions(data);
else
for j = i, 7 do
trigger["customOverlay" .. j] = trigger["customOverlay" .. (j +1)];
end
WeakAuras.Add(data);
WeakAuras.ScheduleReloadOptions(data);
end end
WeakAuras.Add(data);
WeakAuras.ClearAndUpdateOptions(data.id)
end end
local extraFunctions = { local extraFunctions = {
@@ -379,34 +315,27 @@ local function GetCustomTriggerOptions(data, optionTriggerChoices, trigger)
} }
} }
WeakAuras.AddCodeOption(customOptions, data, string.format(L["Overlay %s Info"], i), "custom_overlay" .. i, "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#overlay-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, string.format(L["Overlay %s Info"], i), "custom_overlay" .. i, "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#overlay-info",
17 + i / 10, hideOverlay, appendToTriggerPath("customOverlay" .. i), false, true, extraSetFunctionReload, extraFunctions); 17 + i / 10, hideOverlay, appendToTriggerPath("customOverlay" .. i), false, true, extraSetFunctionReload, extraFunctions);
end end
WeakAuras.AddCodeOption(customOptions, data, L["Name Info"], "custom_name", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#name-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Name Info"], "custom_name", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#name-info",
18, hideIfTriggerStateUpdate, appendToTriggerPath("customName"), false, true, extraSetFunctionReload); 18, hideIfTriggerStateUpdate, appendToTriggerPath("customName"), false, true, extraSetFunctionReload);
WeakAuras.AddCodeOption(customOptions, data, L["Icon Info"], "custom_icon", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#icon-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Icon Info"], "custom_icon", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#icon-info",
20, hideIfTriggerStateUpdate, appendToTriggerPath("customIcon"), false, true, extraSetFunction); 20, hideIfTriggerStateUpdate, appendToTriggerPath("customIcon"), false, true, extraSetFunction);
WeakAuras.AddCodeOption(customOptions, data, L["Texture Info"], "custom_texture", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#texture-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Texture Info"], "custom_texture", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#texture-info",
22, hideIfTriggerStateUpdate, appendToTriggerPath("customTexture"), false, true, extraSetFunction); 22, hideIfTriggerStateUpdate, appendToTriggerPath("customTexture"), false, true, extraSetFunction);
WeakAuras.AddCodeOption(customOptions, data, L["Stack Info"], "custom_stacks", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#stack-info", WeakAuras.commonOptions.AddCodeOption(customOptions, data, L["Stack Info"], "custom_stacks", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#stack-info",
23, hideIfTriggerStateUpdate, appendToTriggerPath("customStacks"), false, true, extraSetFunctionReload); 23, hideIfTriggerStateUpdate, appendToTriggerPath("customStacks"), false, true, extraSetFunctionReload);
return customOptions; return customOptions;
end end
local function GetGenericTriggerOptions(data, optionTriggerChoices) local function GetGenericTriggerOptions(data, triggernum)
local id = data.id; local id = data.id;
local trigger; local trigger = data.triggers[triggernum].trigger;
local triggerType; local triggerType = trigger.type;
if (data.controlledChildren) then
triggerType = WeakAuras.getAll(data, {"trigger", "type"});
else
local triggernum = optionTriggerChoices[id];
trigger = data.triggers[triggernum].trigger;
triggerType = trigger.type;
end
local options = { local options = {
event = { event = {
@@ -421,23 +350,37 @@ local function GetGenericTriggerOptions(data, optionTriggerChoices)
order = 7, order = 7,
width = WeakAuras.doubleWidth, width = WeakAuras.doubleWidth,
values = function() values = function()
local type; local type= trigger.type;
if (data.controlledChildren) then
type = WeakAuras.getAll(data, {"trigger", "type"});
else
type = trigger.type;
end
if(type == "event") then if(type == "event") then
return event_types; return event_types;
elseif(type == "status") then elseif(type == "status") then
return status_types; return status_types;
end end
end, end,
get = function(info)
return trigger.event
end,
set = function(info, v)
trigger.event = v
local prototype = WeakAuras.event_prototypes[v];
if(prototype) then
if(prototype.automaticrequired) then
trigger.unevent = "auto";
else
trigger.unevent = "timed";
end
end
WeakAuras.Add(data)
WeakAuras.ClearAndUpdateOptions(data.id)
end,
control = "WeakAurasSortedDropdown", control = "WeakAurasSortedDropdown",
hidden = function() return not (trigger.type == "event" or trigger.type == "status"); end hidden = function() return not (trigger.type == "event" or trigger.type == "status"); end
}, },
} }
WeakAuras.commonOptions.AddCommonTriggerOptions(options, data, triggernum)
WeakAuras.AddTriggerMetaFunctions(options, data, triggernum)
local combatLogOptions = local combatLogOptions =
{ {
subeventPrefix = { subeventPrefix = {
@@ -447,7 +390,14 @@ local function GetGenericTriggerOptions(data, optionTriggerChoices)
order = 8, order = 8,
values = subevent_prefix_types, values = subevent_prefix_types,
control = "WeakAurasSortedDropdown", control = "WeakAurasSortedDropdown",
hidden = function() return not (trigger.type == "event" and trigger.event == "Combat Log"); end hidden = function() return not (trigger.type == "event" and trigger.event == "Combat Log"); end,
get = function(info)
return trigger.subeventPrefix
end,
set = function(info, v)
trigger.subeventPrefix = v
WeakAuras.Add(data)
end
}, },
subeventSuffix = { subeventSuffix = {
type = "select", type = "select",
@@ -456,7 +406,10 @@ local function GetGenericTriggerOptions(data, optionTriggerChoices)
order = 9, order = 9,
values = subevent_suffix_types, values = subevent_suffix_types,
control = "WeakAurasSortedDropdown", control = "WeakAurasSortedDropdown",
hidden = function() return not (trigger.type == "event" and trigger.event == "Combat Log" and subevent_actual_prefix_types[trigger.subeventPrefix]); end hidden = function() return not (trigger.type == "event" and trigger.event == "Combat Log" and subevent_actual_prefix_types[trigger.subeventPrefix]); end,
get = function(info)
return trigger.subevent
end
}, },
spacer_suffix = { spacer_suffix = {
type = "description", type = "description",
@@ -467,36 +420,27 @@ local function GetGenericTriggerOptions(data, optionTriggerChoices)
} }
if (triggerType == "custom") then if (triggerType == "custom") then
WeakAuras:Mixin(options, GetCustomTriggerOptions(data, optionTriggerChoices, trigger)); WeakAuras:Mixin(options, GetCustomTriggerOptions(data, triggernum, trigger));
elseif (triggerType == "status" or triggerType == "event") then elseif (triggerType == "status" or triggerType == "event") then
local prototypeOptions; local prototypeOptions;
if (data.controlledChildren) then local trigger, untrigger = data.triggers[triggernum].trigger, data.triggers[triggernum].untrigger;
local event = WeakAuras.getAll(data, {"trigger", "event"}); if(WeakAuras.event_prototypes[trigger.event]) then
local unevent = WeakAuras.getAll(data, {"trigger", "unevent"}); prototypeOptions = WeakAuras.ConstructOptions(WeakAuras.event_prototypes[trigger.event], data, 10, triggernum);
if(event and WeakAuras.event_prototypes[event]) then if (trigger.event == "Combat Log") then
prototypeOptions = WeakAuras.ConstructOptions(WeakAuras.event_prototypes[event], data, 10, optionTriggerChoices[id], nil, unevent); WeakAuras:Mixin(prototypeOptions, combatLogOptions);
if (event == "Combat Log") then
WeakAuras:Mixin(prototypeOptions, combatLogOptions);
end
end end
else else
local triggerNum = optionTriggerChoices[id]; print("|cFF8800FFWeakAuras|r: No prototype for", trigger.event);
local trigger, untrigger = data.triggers[triggerNum].trigger, data.triggers[triggerNum].untrigger;
if(WeakAuras.event_prototypes[trigger.event]) then
prototypeOptions = WeakAuras.ConstructOptions(WeakAuras.event_prototypes[trigger.event], data, 10, optionTriggerChoices[id]);
if (trigger.event == "Combat Log") then
WeakAuras:Mixin(prototypeOptions, combatLogOptions);
end
else
print("|cFF8800FFWeakAuras|r: No prototype for", trigger.event);
end
end end
if (prototypeOptions) then if (prototypeOptions) then
WeakAuras:Mixin(options, prototypeOptions); WeakAuras:Mixin(options, prototypeOptions);
end end
end end
return options;
return {
["trigger." .. triggernum .. "." .. (trigger.event or "unknown")] = options
}
end end
WeakAuras.RegisterTriggerSystemOptions({"event", "status", "custom"}, GetGenericTriggerOptions); WeakAuras.RegisterTriggerSystemOptions({"event", "status", "custom"}, GetGenericTriggerOptions);
+62
View File
@@ -0,0 +1,62 @@
local L = WeakAuras.L
local regionOptions = WeakAuras.regionOptions;
local parsePrefix = WeakAuras.commonOptions.parsePrefix
local flattenRegionOptions = WeakAuras.commonOptions.flattenRegionOptions
function WeakAuras.GetGroupOptions(data)
local regionOption;
local id = data.id
if (regionOptions[data.regionType]) then
regionOption = regionOptions[data.regionType].create(id, data);
else
regionOption = {
[data.regionType] = {
__title = "|cFFFFFF00" .. data.regionType,
__order = 1,
unsupported = {
type = "description",
name = L["This region of type \"%s\" is not supported."]:format(data.regionType)
}
};
};
end
local groupOptions = {
type = "group",
name = L["Group Options"],
order = 0,
get = function(info)
local base, property = parsePrefix(info[#info], data);
if not base then
return nil
end
if(info.type == "color") then
base[property] = base[property] or {};
local c = base[property];
return c[1], c[2], c[3], c[4];
else
return base[property];
end
end,
set = function(info, v, g, b, a)
local base, property = parsePrefix(info[#info], data, true);
if(info.type == "color") then
base[property] = base[property] or {};
local c = base[property];
c[1], c[2], c[3], c[4] = v, g, b, a;
elseif(info.type == "toggle") then
base[property] = v;
else
base[property] = (v ~= "" and v) or nil;
end
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ResetMoverSizer();
end,
hidden = function() return false end,
disabled = function() return false end,
args = flattenRegionOptions(regionOption, true);
}
return groupOptions
end
+893
View File
@@ -0,0 +1,893 @@
local L = WeakAuras.L
local removeFuncs = WeakAuras.commonOptions.removeFuncs
local replaceNameDescFuncs = WeakAuras.commonOptions.replaceNameDescFuncs
local replaceImageFuncs = WeakAuras.commonOptions.replaceImageFuncs
local replaceValuesFuncs = WeakAuras.commonOptions.replaceValuesFuncs
local disabledAll = WeakAuras.commonOptions.CreateDisabledAll("load")
local hiddenAll = WeakAuras.commonOptions.CreateHiddenAll("load")
local getAll = WeakAuras.commonOptions.CreateGetAll("load")
local setAll = WeakAuras.commonOptions.CreateSetAll("load", getAll)
local operator_types = WeakAuras.operator_types;
local operator_types_without_equal = WeakAuras.operator_types_without_equal;
local string_operator_types = WeakAuras.string_operator_types;
local ValidateNumeric = WeakAuras.ValidateNumeric;
local eventend_types = WeakAuras.eventend_types;
local timedeventend_types = WeakAuras.timedeventend_types;
local autoeventend_types = WeakAuras.autoeventend_types;
local spellCache = WeakAuras.spellCache;
local function union(table1, table2)
local meta = {};
for i,v in pairs(table1) do
meta[i] = v;
end
for i,v in pairs(table2) do
meta[i] = v;
end
return meta;
end
-- Also used by the GenericTrigger
function WeakAuras.ConstructOptions(prototype, data, startorder, triggernum, triggertype, unevent)
local trigger, untrigger;
if(data.controlledChildren) then
trigger, untrigger = {}, {};
elseif(triggertype == "load") then
trigger = data.load;
elseif data.triggers[triggernum] then
if(triggertype == "untrigger") then
trigger = data.triggers[triggernum].untrigger
else
trigger, untrigger = data.triggers[triggernum].trigger, data.triggers[triggernum].untrigger
end
else
error("Improper argument to WeakAuras.ConstructOptions - trigger number not in range");
end
unevent = unevent or trigger.unevent;
local options = {};
local order = startorder or 10;
local isCollapsedFunctions;
for index, arg in pairs(prototype.args) do
local hidden = nil;
if(arg.collapse and isCollapsedFunctions[arg.collapse] and type(arg.enable) == "function") then
local isCollapsed = isCollapsedFunctions[arg.collapse]
hidden = function()
return isCollapsed() or not arg.enable(trigger)
end
elseif(type(arg.enable) == "function") then
hidden = function() return not arg.enable(trigger) end;
elseif(arg.collapse and isCollapsedFunctions[arg.collapse]) then
hidden = isCollapsedFunctions[arg.collapse]
end
local name = arg.name;
local validate = arg.validate;
local reloadOptions = arg.reloadOptions;
if (name and arg.type == "collapse") then
options["summary_" .. arg.name] = {
type = "execute",
control = "WeakAurasExpandSmall",
width = WeakAuras.doubleWidth,
name = type(arg.display) == "function" and arg.display(trigger) or arg.display,
order = order,
image = function()
local collapsed = WeakAuras.IsCollapsed("trigger", name, "", true)
return collapsed and "Interface\\AddOns\\WeakAuras\\Media\\Textures\\edit" or "Interface\\AddOns\\WeakAuras\\Media\\Textures\\editdown"
end,
imageWidth = 24,
imageHeight = 24,
func = function(info, button, secondCall)
if not secondCall then
local collapsed = WeakAuras.IsCollapsed("trigger", name, "", true)
WeakAuras.SetCollapsed("trigger", name, "", not collapsed)
end
end,
}
order = order + 1;
isCollapsedFunctions = isCollapsedFunctions or {};
isCollapsedFunctions[name] = function()
return WeakAuras.IsCollapsed("trigger", name, "", true);
end
elseif(name and not arg.hidden) then
local realname = name;
if(triggertype == "untrigger") then
name = "untrigger_"..name;
end
if (arg.type == "multiselect") then
-- Ensure new line for non-toggle options
options["spacer_"..name] = {
type = "description",
width = WeakAuras.doubleWidth,
name = "",
order = order,
hidden = hidden,
}
order = order + 1;
end
if(arg.type == "tristate" or arg.type == "tristatestring") then
options["use_"..name] = {
type = "toggle",
width = WeakAuras.normalWidth,
name = function(input)
local value = trigger["use_"..realname];
if(value == nil) then return arg.display;
elseif(value == false) then return "|cFFFF0000 "..L["Negator"].." "..arg.display;
else return "|cFF00FF00"..arg.display; end
end,
desc = arg.desc,
get = function()
local value = trigger["use_"..realname];
if(value == nil) then return false;
elseif(value == false) then return "false";
else return "true"; end
end,
set = function(info, v)
if(v) then
trigger["use_"..realname] = true;
else
local value = trigger["use_"..realname];
if(value == false) then
trigger["use_"..realname] = nil;
else
trigger["use_"..realname] = false
end
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end,
hidden = hidden,
order = order
};
elseif(arg.type == "multiselect") then
options["use_"..name] = {
type = "toggle",
width = WeakAuras.normalWidth,
name = arg.display,
desc = function()
local v = trigger["use_"..realname];
if(v == true) then
return L["Multiselect single tooltip"];
elseif(v == false) then
return L["Multiselect multiple tooltip"];
else
return L["Multiselect ignored tooltip"];
end
end,
get = function()
local value = trigger["use_"..realname];
if(value == nil) then return false;
elseif(value == false) then return "false";
else return "true"; end
end,
set = function(info, v)
if(v) then
trigger["use_"..realname] = true;
else
local value = trigger["use_"..realname];
if(value == false) then
trigger["use_"..realname] = nil;
else
trigger["use_"..realname] = false
trigger[realname] = trigger[realname] or {};
if(trigger[realname].single) then
trigger[realname].multi = trigger[realname].multi or {};
trigger[realname].multi[trigger[realname].single] = true;
end
end
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end,
hidden = hidden,
order = order
};
elseif (arg.type == "description") then
options["description_space_"..name] = {
type = "description",
width = WeakAuras.doubleWidth,
name = "",
order = order,
hidden = hidden,
}
options["description_title_"..name] = {
type = "description",
width = WeakAuras.doubleWidth,
name = arg.display,
order = order,
hidden = hidden,
fontSize = "large",
}
order = order + 1;
options["description_"..name] = {
type = "description",
width = WeakAuras.doubleWidth,
name = arg.text,
order = order,
hidden = hidden,
}
order = order + 1;
else
options["use_"..name] = {
type = "toggle",
width = arg.width or WeakAuras.normalWidth,
name = arg.display,
order = order,
hidden = hidden,
desc = arg.desc,
get = function() return trigger["use_"..realname]; end,
set = function(info, v)
trigger["use_"..realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
end
if(arg.type == "toggle" or arg.type == "tristate") then
options["use_"..name].width = arg.width or WeakAuras.doubleWidth;
end
if(arg.type == "toggle") then
options["use_"..name].desc = arg.desc;
end
if(arg.required) then
trigger["use_"..realname] = true;
if not(triggertype) then
options["use_"..name].disabled = true;
else
options["use_"..name] = nil;
order = order - 1;
end
end
order = order + 1;
if(arg.type == "number") then
if (not arg.noOperator) then
options[name.."_operator"] = {
type = "select",
width = WeakAuras.halfWidth,
name = L["Operator"],
order = order,
hidden = hidden,
values = arg.operator_types_without_equal and operator_types_without_equal or operator_types,
disabled = function() return not trigger["use_"..realname]; end,
get = function() return trigger["use_"..realname] and trigger[realname.."_operator"] or nil; end,
set = function(info, v)
trigger[realname.."_operator"] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name.."_operator"].set = function(info, v)
trigger[realname.."_operator"] = v;
untrigger[realname.."_operator"] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name.."_operator"] = nil;
order = order - 1;
end
order = order + 1;
end
options[name] = {
type = "input",
width = arg.noOperator and WeakAuras.normalWidth or WeakAuras.halfWidth,
validate = ValidateNumeric,
name = arg.display,
order = order,
hidden = hidden,
desc = arg.desc,
disabled = function() return not trigger["use_"..realname]; end,
get = function() return trigger["use_"..realname] and trigger[realname] or nil; end,
set = function(info, v)
trigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name].set = function(info, v)
trigger[realname] = v;
untrigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name] = nil;
order = order - 1;
end
order = order + 1;
elseif(arg.type == "string" or arg.type == "tristatestring") then
options[name] = {
type = "input",
width = WeakAuras.normalWidth,
name = arg.display,
order = order,
hidden = hidden,
validate = validate,
desc = arg.desc,
set = function(info, v)
trigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if arg.type == "string" then
options[name].disabled = function() return not trigger["use_"..realname] end
options[name].get = function() return trigger["use_"..realname] and trigger[realname] or nil; end
else
options[name].disabled = function() return trigger["use_"..realname] == nil end
options[name].get = function() return trigger["use_"..realname] ~= nil and trigger[realname] or nil; end
end
if(arg.required and not triggertype) then
options[name].set = function(info, v)
trigger[realname] = v;
untrigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name] = nil;
order = order - 1;
end
order = order + 1;
elseif(arg.type == "longstring") then
options[name.."_operator"] = {
type = "select",
width = WeakAuras.normalWidth,
name = L["Operator"],
order = order,
hidden = hidden,
values = string_operator_types,
disabled = function() return not trigger["use_"..realname]; end,
get = function() return trigger["use_"..realname] and trigger[realname.."_operator"] or nil; end,
set = function(info, v)
trigger[realname.."_operator"] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name.."_operator"].set = function(info, v)
trigger[realname.."_operator"] = v;
untrigger[realname.."_operator"] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name.."_operator"] = nil;
order = order - 1;
end
order = order + 1;
options[name] = {
type = "input",
width = WeakAuras.doubleWidth,
name = arg.display,
order = order,
hidden = hidden,
validate = validate,
disabled = function() return not trigger["use_"..realname]; end,
get = function() return trigger["use_"..realname] and trigger[realname] or nil; end,
set = function(info, v)
trigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name].set = function(info, v)
trigger[realname] = v;
untrigger[realname] = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name] = nil;
order = order - 1;
end
order = order + 1;
elseif(arg.type == "spell" or arg.type == "aura" or arg.type == "item") then
if(not arg.required or triggertype ~= "untrigger") then
if (arg.showExactOption) then
options["exact"..name] = {
type = "toggle",
width = WeakAuras.normalWidth - 0.1,
name = L["Exact Spell Match"],
order = order,
hidden = hidden,
get = function()
return trigger["use_exact_"..realname];
end,
set = function(info, v)
trigger["use_exact_"..realname] = v;
WeakAuras.Add(data);
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end,
};
order = order + 1;
end
options["icon"..name] = {
type = "execute",
width = 0.1,
name = "",
order = order,
hidden = hidden,
image = function()
if(trigger["use_"..realname] and trigger[realname]) then
if(arg.type == "aura") then
local icon = spellCache.GetIcon(trigger[realname]);
return icon and tostring(icon) or "", 18, 18;
elseif(arg.type == "spell") then
local _, _, icon = GetSpellInfo(trigger[realname]);
return icon and tostring(icon) or "", 18, 18;
elseif(arg.type == "item") then
local _, _, _, _, _, _, _, _, _, icon = GetItemInfo(trigger[realname]);
return icon and tostring(icon) or "", 18, 18;
end
else
return "", 18, 18;
end
end,
disabled = function() return not ((arg.type == "aura" and trigger[realname] and spellCache.GetIcon(trigger[realname])) or (arg.type == "spell" and trigger[realname] and GetSpellInfo(trigger[realname])) or (arg.type == "item" and trigger[realname] and GetItemIcon(trigger[realname]))) end
};
order = order + 1;
options[name] = {
type = "input",
width = WeakAuras.doubleWidth,
name = arg.display,
order = order,
hidden = hidden,
validate = validate,
disabled = function() return not trigger["use_"..realname]; end,
get = function()
if(arg.type == "item") then
if(trigger["use_"..realname] and trigger[realname] and trigger[realname] ~= "") then
local name = GetItemInfo(trigger[realname]);
if(name) then
return name;
else
local itemId = tonumber(trigger[realname])
if itemId and itemId ~= 0 then
return tostring(trigger[realname])
end
return L["Invalid Item Name/ID/Link"];
end
else
return nil;
end
elseif(arg.type == "spell") then
local useExactSpellId = (arg.showExactOption and trigger["use_exact_"..realname]) or arg.forceExactOption
if(trigger["use_"..realname]) then
if (trigger[realname] and trigger[realname] ~= "") then
if useExactSpellId then
local spellId = tonumber(trigger[realname])
if (spellId and spellId ~= 0) then
return tostring(spellId);
end
else
local name = GetSpellInfo(trigger[realname]);
if(name) then
return name;
end
end
end
return useExactSpellId and L["Invalid Spell ID"] or L["Invalid Spell Name/ID/Link"];
else
return nil;
end
else
return trigger["use_"..realname] and trigger[realname] or nil;
end
end,
set = function(info, v)
local fixedInput = v;
if(arg.type == "aura") then
fixedInput = WeakAuras.spellCache.CorrectAuraName(v);
elseif(arg.type == "spell") then
fixedInput = WeakAuras.CorrectSpellName(v);
elseif(arg.type == "item") then
fixedInput = WeakAuras.CorrectItemName(v);
end
trigger[realname] = fixedInput;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
order = order + 1;
end
elseif(arg.type == "select" or arg.type == "unit") then
local values;
if(type(arg.values) == "function") then
values = arg.values(trigger);
else
values = WeakAuras[arg.values];
end
options[name] = {
type = "select",
width = WeakAuras.normalWidth,
name = arg.display,
order = order,
hidden = hidden,
values = values,
disabled = function() return not trigger["use_"..realname]; end,
get = function()
if(arg.type == "unit" and trigger["use_specific_"..realname]) then
return "member";
end
if (not trigger["use_"..realname]) then
return nil;
end
if (arg.default and (not trigger[realname] or not values[trigger[realname]])) then
trigger[realname] = arg.default;
return arg.default;
end
return trigger[realname] or nil;
end,
set = function(info, v)
trigger[realname] = v;
if(arg.type == "unit" and v == "member") then
trigger["use_specific_"..realname] = true;
trigger[realname] = UnitName("player");
else
trigger["use_specific_"..realname] = nil;
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name].set = function(info, v)
trigger[realname] = v;
if(arg.type == "unit" and v == "member") then
trigger["use_specific_"..realname] = true;
else
trigger["use_specific_"..realname] = nil;
end
untrigger[realname] = v;
if(arg.type == "unit" and v == "member") then
untrigger["use_specific_"..realname] = true;
else
untrigger["use_specific_"..realname] = nil;
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
elseif(arg.required and triggertype == "untrigger") then
options[name] = nil;
order = order - 1;
end
if (arg.control) then
options[name].control = arg.control;
end
order = order + 1;
if(arg.type == "unit" and not (arg.required and triggertype == "untrigger")) then
options["use_specific_"..name] = {
type = "toggle",
width = WeakAuras.normalWidth,
name = L["Specific Unit"],
order = order,
hidden = function() return (not trigger["use_specific_"..realname] and trigger[realname] ~= "member") or (type(hidden) == "function" and hidden(trigger)) or (type(hidden) ~= "function" and hidden) end,
get = function() return true end,
set = function(info, v)
trigger["use_specific_"..realname] = nil;
options[name].set(info, "player");
end
}
order = order + 1;
options["specific_"..name] = {
type = "input",
width = WeakAuras.normalWidth,
name = L["Specific Unit"],
desc = L["Can be a UID (e.g., party1)."],
order = order,
hidden = function() return (not trigger["use_specific_"..realname] and trigger[realname] ~= "member") or (type(hidden) == "function" and hidden(trigger)) or (type(hidden) ~= "function" and hidden) end,
get = function() return trigger[realname] end,
set = function(info, v)
trigger[realname] = v;
if(arg.required and not triggertype) then
untrigger[realname] = v;
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
end
};
order = order + 1;
end
elseif(arg.type == "multiselect") then
local values;
if(type(arg.values) == "function") then
values = arg.values(trigger);
else
values = WeakAuras[arg.values];
end
options[name] = {
type = "select",
width = WeakAuras.normalWidth,
name = arg.display,
order = order,
values = values,
control = arg.control,
hidden = function()
return (type(hidden) == "function" and hidden(trigger)) or (type(hidden) ~= "function" and hidden) or trigger["use_"..realname] == false;
end,
disabled = function() return not trigger["use_"..realname]; end,
get = function() return trigger["use_"..realname] and trigger[realname] and trigger[realname].single or nil; end,
set = function(info, v)
trigger[realname] = trigger[realname] or {};
trigger[realname].single = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name].set = function(info, v)
trigger[realname].single = v;
untrigger[realname].single = v;
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
end
options["multiselect_"..name] = {
type = "multiselect",
name = arg.display,
width = WeakAuras.doubleWidth,
order = order,
hidden = function() return (type(hidden) == "function" and hidden(trigger)) or (type(hidden) ~= "function" and hidden) or trigger["use_"..realname] ~= false; end,
values = values,
get = function(info, v)
if(trigger["use_"..realname] == false and trigger[realname] and trigger[realname].multi) then
return trigger[realname].multi[v];
end
end,
set = function(info, v, calledFromSetAll)
trigger[realname].multi = trigger[realname].multi or {};
if (calledFromSetAll) then
trigger[realname].multi[v] = calledFromSetAll;
elseif(trigger[realname].multi[v]) then
trigger[realname].multi[v] = nil;
else
trigger[realname].multi[v] = true;
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
};
if(arg.required and not triggertype) then
options[name].set = function(info, v)
if(trigger[realname].multi[v]) then
trigger[realname].multi[v] = nil;
else
trigger[realname].multi[v] = true;
end
if(untrigger[realname].multi[v]) then
untrigger[realname].multi[v] = nil;
else
untrigger[realname].multi[v] = true;
end
WeakAuras.Add(data);
if (reloadOptions) then
WeakAuras.ClearAndUpdateOptions(data.id)
end
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
WeakAuras.SortDisplayButtons();
end
end
if(arg.required and triggertype == "untrigger") then
options[name] = nil;
options["multiselect_"..name] = nil;
else
order = order + 1;
end
end
end
end
if not(triggertype or prototype.automaticrequired) then
options.unevent = {
type = "select",
width = WeakAuras.doubleWidth,
name = L["Hide"],
order = order
};
order = order + 1;
if(unevent == "timed") then
options.unevent.width = WeakAuras.normalWidth;
options.duration = {
type = "input",
width = WeakAuras.normalWidth,
name = L["Duration (s)"],
order = order
}
order = order + 1;
else
options.unevent.width = WeakAuras.doubleWidth;
end
if(unevent == "custom") then
local unevent_options = WeakAuras.ConstructOptions(prototype, data, order, triggernum, "untrigger");
options = union(options, unevent_options);
end
if (prototype.timedrequired) then
if (type(prototype.timedrequired) == "function") then
local func = prototype.timedrequired
options.unevent.values = function()
if func(trigger) then
return timedeventend_types
else
return eventend_types
end
end
else
options.unevent.values = timedeventend_types;
end
elseif (prototype.automatic) then
options.unevent.values = autoeventend_types;
else
options.unevent.values = eventend_types;
end
end
WeakAuras.option = options;
return options;
end
function WeakAuras.GetLoadOptions(data)
local load = {
type = "group",
name = L["Load"],
order = 0,
get = function(info) return data.load[info[#info]] end,
set = function(info, v)
data.load[info[#info]] = (v ~= "" and v) or nil;
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ScanForLoads({[data.id] = true});
WeakAuras.SortDisplayButtons();
end,
args = {}
}
load.args = WeakAuras.ConstructOptions(WeakAuras.load_prototype, data, 10, nil, "load");
if(data.controlledChildren) then
removeFuncs(load);
replaceNameDescFuncs(load, data, "load");
replaceImageFuncs(load, data, "load");
replaceValuesFuncs(load, data, "load");
load.get = function(info, ...) return getAll(data, info, ...); end;
load.set = function(info, ...)
setAll(data, info, ...);
if(type(data.id) == "string") then
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.ResetMoverSizer();
end
end
load.hidden = function(info, ...) return hiddenAll(data, info, ...); end;
load.disabled = function(info, ...) return disabledAll(data, info, ...); end;
end
return load
end
@@ -39,8 +39,8 @@ function WeakAuras.StartFrameChooser(data, path)
frameChooserFrame:SetScript("OnUpdate", function() frameChooserFrame:SetScript("OnUpdate", function()
if(IsMouseButtonDown("RightButton")) then if(IsMouseButtonDown("RightButton")) then
valueToPath(data, path, givenValue); valueToPath(data, path, givenValue);
AceConfigDialog:Open("WeakAuras", frame.container);
WeakAuras.StopFrameChooser(data); WeakAuras.StopFrameChooser(data);
WeakAuras.FillOptions()
elseif(IsMouseButtonDown("LeftButton") and oldFocusName) then elseif(IsMouseButtonDown("LeftButton") and oldFocusName) then
WeakAuras.StopFrameChooser(data); WeakAuras.StopFrameChooser(data);
else else
@@ -76,7 +76,7 @@ function WeakAuras.StartFrameChooser(data, path)
if(focusName ~= oldFocusName) then if(focusName ~= oldFocusName) then
valueToPath(data, path, focusName); valueToPath(data, path, focusName);
oldFocusName = focusName; oldFocusName = focusName;
AceConfigDialog:Open("WeakAuras", frame.container); WeakAuras.FillOptions()
end end
oldFocus = focus; oldFocus = focus;
end end
@@ -126,14 +126,12 @@ local function ConstructIconPicker(frame)
childData[self.field] = texturePath; childData[self.field] = texturePath;
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.UpdateThumbnail(childData); WeakAuras.UpdateThumbnail(childData);
WeakAuras.SetIconNames(childData);
end end
end end
else else
self.data[self.field] = texturePath; self.data[self.field] = texturePath;
WeakAuras.Add(self.data); WeakAuras.Add(self.data);
WeakAuras.UpdateThumbnail(self.data); WeakAuras.UpdateThumbnail(self.data);
WeakAuras.SetIconNames(self.data);
end end
local success = icon:SetTexture(texturePath) and texturePath; local success = icon:SetTexture(texturePath) and texturePath;
if(success) then if(success) then
@@ -167,7 +165,7 @@ local function ConstructIconPicker(frame)
function group.Close() function group.Close()
frame.window = "default"; frame.window = "default";
frame:UpdateFrameVisible() frame:UpdateFrameVisible()
AceConfigDialog:Open("WeakAuras", frame.container); WeakAuras.FillOptions()
end end
function group.CancelClose() function group.CancelClose()
@@ -178,7 +176,6 @@ local function ConstructIconPicker(frame)
childData[group.field] = group.givenPath[childId] or childData[group.field]; childData[group.field] = group.givenPath[childId] or childData[group.field];
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.UpdateThumbnail(childData); WeakAuras.UpdateThumbnail(childData);
WeakAuras.SetIconNames(childData);
end end
end end
else else
@@ -101,7 +101,6 @@ local function ConstructModelPicker(frame)
childData.model_y = model_y; childData.model_y = model_y;
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.UpdateThumbnail(childData); WeakAuras.UpdateThumbnail(childData);
WeakAuras.SetIconNames(childData);
end end
end end
else else
@@ -115,7 +114,6 @@ local function ConstructModelPicker(frame)
else else
WeakAuras.Add(self.data); WeakAuras.Add(self.data);
WeakAuras.UpdateThumbnail(self.data); WeakAuras.UpdateThumbnail(self.data);
WeakAuras.SetIconNames(self.data);
end end
end end
end end
@@ -166,7 +164,7 @@ local function ConstructModelPicker(frame)
function group.Close() function group.Close()
frame.window = "default" frame.window = "default"
frame:UpdateFrameVisible() frame:UpdateFrameVisible()
AceConfigDialog:Open("WeakAuras", frame.container); WeakAuras.FillOptions()
end end
function group.CancelClose(self) function group.CancelClose(self)
@@ -180,7 +178,6 @@ local function ConstructModelPicker(frame)
childData.model_y = group.givenY[childId]; childData.model_y = group.givenY[childId];
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.UpdateThumbnail(childData); WeakAuras.UpdateThumbnail(childData);
WeakAuras.SetIconNames(childData);
end end
end end
else else
@@ -51,7 +51,7 @@ local function moveOnePxl(direction)
WeakAuras.Add(parentData) WeakAuras.Add(parentData)
end end
end end
WeakAuras.ReloadOptions(data.id) WeakAuras.FillOptions()
end end
end end
end end
@@ -614,7 +614,7 @@ local function ConstructMoverSizer(parent)
WeakAuras.Add(parentData) WeakAuras.Add(parentData)
end end
end end
AceConfigDialog:Open("WeakAuras", parent.container) WeakAuras.FillOptions()
WeakAuras.Animate("display", data, "main", data.animation.main, WeakAuras.regions[data.id].region, false, nil, true) WeakAuras.Animate("display", data, "main", data.animation.main, WeakAuras.regions[data.id].region, false, nil, true)
-- hide alignment lines -- hide alignment lines
frame.lineY:Hide() frame.lineY:Hide()
@@ -669,7 +669,7 @@ local function ConstructMoverSizer(parent)
region:ResetPosition() region:ResetPosition()
WeakAuras.Add(data, nil, true) WeakAuras.Add(data, nil, true)
frame:ScaleCorners(region:GetWidth(), region:GetHeight()) frame:ScaleCorners(region:GetWidth(), region:GetHeight())
AceConfigDialog:Open("WeakAuras", parent.container) WeakAuras.FillOptions()
end) end)
mover.align = BuildAlignLines(mover) mover.align = BuildAlignLines(mover)
@@ -734,7 +734,7 @@ local function ConstructMoverSizer(parent)
end end
frame.text:Hide() frame.text:Hide()
frame:SetScript("OnUpdate", nil) frame:SetScript("OnUpdate", nil)
AceConfigDialog:Open("WeakAuras", parent.container) WeakAuras.FillOptions()
WeakAuras.Animate("display", data, "main", data.animation.main, WeakAuras.regions[data.id].region, false, nil, true) WeakAuras.Animate("display", data, "main", data.animation.main, WeakAuras.regions[data.id].region, false, nil, true)
-- hide alignment lines -- hide alignment lines
frame.lineY:Hide() frame.lineY:Hide()
+180 -88
View File
@@ -17,12 +17,12 @@ local WeakAuras = WeakAuras
local L = WeakAuras.L local L = WeakAuras.L
local displayButtons = WeakAuras.displayButtons local displayButtons = WeakAuras.displayButtons
local displayOptions = WeakAuras.displayOptions
local loaded = WeakAuras.loaded local loaded = WeakAuras.loaded
local regionOptions = WeakAuras.regionOptions local regionOptions = WeakAuras.regionOptions
local savedVars = WeakAuras.savedVars local savedVars = WeakAuras.savedVars
local tempGroup = WeakAuras.tempGroup local tempGroup = WeakAuras.tempGroup
local prettyPrint = WeakAuras.prettyPrint local prettyPrint = WeakAuras.prettyPrint
local aceOptions = WeakAuras.aceOptions
local function CreateDecoration(frame) local function CreateDecoration(frame)
local deco = CreateFrame("Frame", nil, frame) local deco = CreateFrame("Frame", nil, frame)
@@ -726,14 +726,144 @@ function WeakAuras.CreateFrame()
unloadedButton:SetViewDescription(L["Toggle the visibility of all non-loaded displays"]) unloadedButton:SetViewDescription(L["Toggle the visibility of all non-loaded displays"])
frame.unloadedButton = unloadedButton frame.unloadedButton = unloadedButton
frame.FillOptions = function(self, optionTable, selected)
AceConfig:RegisterOptionsTable("WeakAuras", optionTable) frame.ClearOptions = function(self, id)
AceConfigDialog:Open("WeakAuras", container) aceOptions[id] = nil
-- TODO: remove this once legacy aura trigger is removed if type(id) == "string" then
if selected then local data = WeakAuras.GetData(id)
container.content.obj.children[1]:SelectTab(selected) if data and data.parent then
frame:ClearOptions(data.parent)
end
for _, tmpId in ipairs(tempGroup.controlledChildren) do
if (id == tmpId) then
frame:ClearOptions(tempGroup.id)
end
end
end end
container:SetTitle("") end
frame.ClearAndUpdateOptions = function(self, id, clearChildren)
frame:ClearOptions(id)
if clearChildren then
local data
if type(id) == "string" then
data = WeakAuras.GetData(id)
elseif self.pickedDisplay then
data = tempGroup
end
if data.controlledChildren then
for _, id in ipairs(data.controlledChildren) do
frame:ClearOptions(id)
end
end
end
if (type(self.pickedDisplay) == "string" and self.pickedDisplay == id)
or (type(self.pickedDisplay == "table") and id == tempGroup.id)
then
frame:UpdateOptions()
end
end
frame.UpdateOptions = function(self)
self.selectedTab = self.selectedTab or "region"
local data
if type(self.pickedDisplay) == "string" then
data = WeakAuras.GetData(frame.pickedDisplay)
elseif self.pickedDisplay then
data = tempGroup
end
if not data.controlledChildren or data == tempGroup then
if self.selectedTab == "group" then
self.selectedTab = "region"
end
end
local optionTable = self:EnsureOptions(data, self.selectedTab)
if optionTable then
AceConfig:RegisterOptionsTable("WeakAuras", optionTable)
end
end
frame.GetSubOptions = function(self, id, tab)
return aceOptions[id] and aceOptions[id][tab]
end
frame.EnsureOptions = function(self, data, tab)
local id = data.id
aceOptions[id] = aceOptions[id] or {}
if not aceOptions[id][tab] then
local optionsGenerator =
{
group = WeakAuras.GetGroupOptions,
region = WeakAuras.GetDisplayOptions,
trigger = WeakAuras.GetTriggerOptions,
conditions = WeakAuras.GetConditionOptions,
load = WeakAuras.GetLoadOptions,
action = WeakAuras.GetActionOptions,
animation = WeakAuras.GetAnimationOptions,
authorOptions = WeakAuras.GetAuthorOptions
}
if optionsGenerator[tab] then
aceOptions[id][tab] = optionsGenerator[tab](data)
end
end
return aceOptions[id][tab]
end
-- This function refills the options pane
-- This is ONLY necessary if AceOptions doesn't know that it should do
-- that automatically. That is any change that goes through the AceOptions
-- doesn't need to call this
-- Any changes to the options that go around that, e.g. drag/drop, group,
-- texture pick, etc should call this
frame.FillOptions = function(self)
frame:UpdateOptions()
local data
if type(self.pickedDisplay) == "string" then
data = WeakAuras.GetData(frame.pickedDisplay)
elseif self.pickedDisplay then
data = tempGroup
end
local tabsWidget
container:ReleaseChildren()
container:SetLayout("Fill")
tabsWidget = AceGUI:Create("TabGroup")
local tabs = {
{ value = "region", text = L["Display"]},
{ value = "trigger", text = L["Trigger"]},
{ value = "conditions", text = L["Conditions"]},
{ value = "load", text = L["Load"]},
{ value = "action", text = L["Actions"]},
{ value = "animation", text = L["Animations"]},
{ value = "authorOptions", text = L["Custom Options"]}
}
-- Check if group and not the temp group
if data.controlledChildren and type(data.id) == "string" then
tinsert(tabs, 1, { value = "group", text = L["Group"]})
end
tabsWidget:SetTabs(tabs)
tabsWidget:SelectTab(self.selectedTab)
tabsWidget:SetLayout("Fill")
container:AddChild(tabsWidget)
local group = AceGUI:Create("WeakAurasInlineGroup")
tabsWidget:AddChild(group)
tabsWidget:SetCallback("OnGroupSelected", function(self, event, tab)
frame.selectedTab = tab
frame:FillOptions()
end)
AceConfigDialog:Open("WeakAuras", group)
tabsWidget:SetTitle("")
end end
frame.ClearPick = function(self, id) frame.ClearPick = function(self, id)
@@ -748,8 +878,8 @@ function WeakAuras.CreateFrame()
tremove(tempGroup.controlledChildren, index) tremove(tempGroup.controlledChildren, index)
displayButtons[id]:ClearPick() displayButtons[id]:ClearPick()
WeakAuras.AddOption(tempGroup.id, tempGroup) self:ClearOptions(tempGroup.id)
self:FillOptions(displayOptions[tempGroup.id]) self:FillOptions()
end end
frame.ClearPicks = function(self, noHide) frame.ClearPicks = function(self, noHide)
@@ -936,73 +1066,55 @@ function WeakAuras.CreateFrame()
end end
end end
frame.PickDisplay = function(self, id, tab, noHide) -- TODO: remove tab parametter once legacy aura trigger is removed frame.PickDisplay = function(self, id, tab, noHide)
if self.pickedDisplay == id then
return
end
self:ClearPicks(noHide) self:ClearPicks(noHide)
local data = WeakAuras.GetData(id) local data = WeakAuras.GetData(id)
local function finishPicking() displayButtons[id]:Pick()
displayButtons[id]:Pick() self.pickedDisplay = id
self.pickedDisplay = id
local data = db.displays[id]
-- Expand parent + loaded/unloaded if needed
if data.parent then
if not displayButtons[data.parent]:GetExpanded() then
displayButtons[data.parent]:Expand()
end
end
if loaded[id] ~= nil then
-- Under loaded
if not loadedButton:GetExpanded() then
loadedButton:Expand()
end
else
-- Under Unloaded
if not unloadedButton:GetExpanded() then
unloadedButton:Expand()
end
end
WeakAuras.AddOption(data.id, data) if data.parent then
self:FillOptions(displayOptions[id], tab) -- TODO: remove tab parametter once legacy aura trigger is removed if not displayButtons[data.parent]:GetExpanded() then
displayButtons[data.parent]:Expand()
WeakAuras.SetMoverSizer(id)
local _, _, _, _, yOffset = displayButtons[id].frame:GetPoint(1)
if not yOffset then
yOffset = displayButtons[id].frame.yOffset
end end
if yOffset then end
self.buttonsScroll:SetScrollPos(yOffset, yOffset - 32) if loaded[id] ~= nil then
-- Under loaded
if not loadedButton:GetExpanded() then
loadedButton:Expand()
end end
if data.controlledChildren then else
for index, childId in pairs(data.controlledChildren) do -- Under Unloaded
displayButtons[childId]:PriorityShow(1) if not unloadedButton:GetExpanded() then
end unloadedButton:Expand()
end end
WeakAuras.ResumeAllDynamicGroups()
end end
local list = {} if tab then
local num = 0 self.selectedTab = tab
end
self:FillOptions()
WeakAuras.SetMoverSizer(id)
local _, _, _, _, yOffset = displayButtons[id].frame:GetPoint(1)
if not yOffset then
yOffset = displayButtons[id].frame.yOffset
end
if yOffset then
self.buttonsScroll:SetScrollPos(yOffset, yOffset - 32)
end
if data.controlledChildren then if data.controlledChildren then
for index, childId in pairs(data.controlledChildren) do for index, childId in pairs(data.controlledChildren) do
if not displayOptions[childId] then displayButtons[childId]:PriorityShow(1)
list[childId] = WeakAuras.GetData(childId)
num = num + 1
end
end end
end end
WeakAuras.EnsureOptions(id)
if num > 1 then if data.controlledChildren and #data.controlledChildren == 0 then
WeakAuras.PauseAllDynamicGroups() WeakAurasOptions:NewAura(true)
WeakAuras.BuildOptions(list, finishPicking)
else
WeakAuras.PauseAllDynamicGroups()
finishPicking()
if data.controlledChildren and #data.controlledChildren == 0 then
WeakAurasOptions:NewAura(true)
end
end end
end end
@@ -1038,11 +1150,10 @@ function WeakAuras.CreateFrame()
self:PickDisplay(id) self:PickDisplay(id)
elseif not WeakAuras.IsDisplayPicked(id) then elseif not WeakAuras.IsDisplayPicked(id) then
self.pickedDisplay = tempGroup self.pickedDisplay = tempGroup
WeakAuras.EnsureOptions(id)
displayButtons[id]:Pick() displayButtons[id]:Pick()
tinsert(tempGroup.controlledChildren, id) tinsert(tempGroup.controlledChildren, id)
WeakAuras.AddOption(tempGroup.id, tempGroup) WeakAuras.ClearOptions(tempGroup.id)
self:FillOptions(displayOptions[tempGroup.id]) self:FillOptions()
end end
end end
end end
@@ -1057,32 +1168,13 @@ function WeakAuras.CreateFrame()
end end
end end
if not alreadySelected then if not alreadySelected then
WeakAuras.EnsureOptions(id)
displayButtons[id]:Pick() displayButtons[id]:Pick()
tinsert(tempGroup.controlledChildren, id) tinsert(tempGroup.controlledChildren, id)
end end
end end
WeakAuras.AddOption(tempGroup.id, tempGroup) frame:ClearOptions(tempGroup.id)
self:FillOptions(displayOptions[tempGroup.id])
self.pickedDisplay = tempGroup self.pickedDisplay = tempGroup
end self:FillOptions()
frame.RefreshPick = function(self)
if type(self.pickedDisplay) == "string" then
WeakAuras.EnsureOptions(self.pickedDisplay)
self:FillOptions(displayOptions[self.pickedDisplay])
else
WeakAuras.EnsureOptions(tempGroup.id)
self:FillOptions(displayOptions[tempGroup.id])
end
end
frame.RefillOptions = function(self)
if type(self.pickedDisplay) == "string" then
self:FillOptions(displayOptions[frame.pickedDisplay])
elseif self.pickedDisplay then
self:FillOptions(displayOptions[frame.pickedDisplay.id])
end
end end
frame:SetClampedToScreen(true) frame:SetClampedToScreen(true)
@@ -727,22 +727,20 @@ local function ConstructTextEditor(frame)
if (self.reloadOptions) then if (self.reloadOptions) then
if (self.data.controlledChildren) then if (self.data.controlledChildren) then
for index, childId in pairs(self.data.controlledChildren) do for index, childId in pairs(self.data.controlledChildren) do
WeakAuras.ScheduleReloadOptions(WeakAuras.GetData(childId)) WeakAuras.ClearAndUpdateOptions(childId)
end end
WeakAuras.ScheduleReloadOptions(self.data) WeakAuras.ClearAndUpdateOptions(self.data.id)
else else
WeakAuras.ScheduleReloadOptions(self.data) WeakAuras.ClearAndUpdateOptions(self.data.id)
end end
else else
WeakAuras.ScheduleReloadOptions(self.data) WeakAuras.ClearAndUpdateOptions(self.data.id)
end end
editor.editBox:SetScript("OnTextChanged", self.oldOnTextChanged) editor.editBox:SetScript("OnTextChanged", self.oldOnTextChanged)
editor:ClearFocus() editor:ClearFocus()
frame.window = "default" frame.window = "default"
frame:UpdateFrameVisible() frame:UpdateFrameVisible()
frame:RefreshPick()
end end
WeakAuras.editor = editor WeakAuras.editor = editor
@@ -752,4 +750,4 @@ end
function WeakAuras.TextEditor(frame) function WeakAuras.TextEditor(frame)
textEditor = textEditor or ConstructTextEditor(frame) textEditor = textEditor or ConstructTextEditor(frame)
return textEditor return textEditor
end end
@@ -12,8 +12,68 @@ local AceConfigDialog = LibStub("AceConfigDialog-3.0")
local WeakAuras = WeakAuras local WeakAuras = WeakAuras
local L = WeakAuras.L local L = WeakAuras.L
local getAll = WeakAuras.getAll
local setAll = WeakAuras.setAll local function CompareValues(a, b)
if type(a) ~= type(b) then
return false
end
if type(a) == "table" then
for k, v in pairs(a) do
if v ~= b[k] then
return false
end
end
for k, v in pairs(b) do
if v ~= a[k] then
return false
end
end
return true
else
return a == b
end
end
local function GetAll(data, property, default)
if data.controlledChildren then
local result
local first = true
for index, childId in pairs(data.controlledChildren) do
local childData = WeakAuras.GetData(childId)
if childData[property] ~= nil then
if first then
result = childData[property]
first = false
else
if not CompareValues(result, childData[property]) then
return default
end
end
end
end
return result
else
if data[property] ~= nil then
return data[property]
end
return default
end
end
local function SetAll(data, property, value)
if data.controlledChildren then
for index, childId in pairs(data.controlledChildren) do
local childData = WeakAuras.GetData(childId)
childData[property] = value
WeakAuras.Add(childData)
end
else
data[property] = value
end
end
local texturePicker local texturePicker
@@ -100,14 +160,9 @@ local function ConstructTexturePicker(frame)
pickedwidget:Pick(); pickedwidget:Pick();
end end
if(self.data.controlledChildren) then SetAll(self.data, self.field, texturePath);
setAll(self.data, {"region", self.field}, texturePath);
else
self.data[self.field] = texturePath;
end
if(type(self.data.id) == "string") then if(type(self.data.id) == "string") then
WeakAuras.Add(self.data); WeakAuras.Add(self.data);
WeakAuras.SetIconNames(self.data);
WeakAuras.UpdateThumbnail(self.data); WeakAuras.UpdateThumbnail(self.data);
end end
group:UpdateList(); group:UpdateList();
@@ -128,17 +183,17 @@ local function ConstructTexturePicker(frame)
self.givenPath[childId] = childData[field]; self.givenPath[childId] = childData[field];
end end
end end
local colorAll = getAll(data, {"region", "color"}) or {1, 1, 1, 1}; local colorAll = GetAll(data, "color", {1, 1, 1, 1});
self.textureData = { self.textureData = {
r = colorAll[1] or 1, r = colorAll[1] or 1,
g = colorAll[2] or 1, g = colorAll[2] or 1,
b = colorAll[3] or 1, b = colorAll[3] or 1,
a = colorAll[4] or 1, a = colorAll[4] or 1,
rotate = getAll(data, {"region", "rotate"}), rotate = GetAll(data, "rotate", false),
discrete_rotation = getAll(data, {"region", "discrete_rotation"}) or 0, discrete_rotation = GetAll(data, "discrete_rotation", 0),
rotation = getAll(data, {"region", "rotation"}) or 0, rotation = GetAll(data, "rotation", 0),
mirror = getAll(data, {"region", "mirror"}), mirror = GetAll(data, "mirror", false),
blendMode = getAll(data, {"region", "blendMode"}) or "ADD" blendMode = GetAll(data, "blendMode", "ADD")
}; };
else else
self.givenPath = data[field]; self.givenPath = data[field];
@@ -188,7 +243,7 @@ local function ConstructTexturePicker(frame)
function group.Close() function group.Close()
frame.window = "default"; frame.window = "default";
frame:UpdateFrameVisible() frame:UpdateFrameVisible()
AceConfigDialog:Open("WeakAuras", frame.container); WeakAuras.FillOptions()
end end
function group.CancelClose() function group.CancelClose()
@@ -199,7 +254,6 @@ local function ConstructTexturePicker(frame)
childData[group.field] = group.givenPath[childId]; childData[group.field] = group.givenPath[childId];
WeakAuras.Add(childData); WeakAuras.Add(childData);
WeakAuras.UpdateThumbnail(childData); WeakAuras.UpdateThumbnail(childData);
WeakAuras.SetIconNames(childData);
end end
end end
else else
+3 -6
View File
@@ -63,7 +63,6 @@ local function createOptions(id, data)
data.orientation = v; data.orientation = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.ResetMoverSizer(); WeakAuras.ResetMoverSizer();
end end
}, },
@@ -144,7 +143,6 @@ local function createOptions(id, data)
data.displayIcon = v; data.displayIcon = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
end end
}, },
chooseIcon = { chooseIcon = {
@@ -178,7 +176,6 @@ local function createOptions(id, data)
data.icon_side = v; data.icon_side = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
end end
}, },
desaturate = { desaturate = {
@@ -405,7 +402,7 @@ local function createOptions(id, data)
return { return {
aurabar = options, aurabar = options,
position = WeakAuras.PositionOptions(id, data), position = WeakAuras.commonOptions.PositionOptions(id, data),
}; };
end end
@@ -744,12 +741,12 @@ local function subCreateOptions(parentData, data, index, subIndex)
__order = 1, __order = 1,
__up = function() __up = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "aurabar_bar")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "aurabar_bar")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__down = function() __down = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "aurabar_bar")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "aurabar_bar")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id, parentData)
end end
end, end,
__nooptions = true __nooptions = true
@@ -90,7 +90,6 @@ local function createOptions(id, data)
data.groupIcon = v data.groupIcon = v
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.UpdateThumbnail(data) WeakAuras.UpdateThumbnail(data)
WeakAuras.SetIconNames(data)
end end
}, },
chooseIcon = { chooseIcon = {
@@ -115,7 +114,7 @@ local function createOptions(id, data)
end end
data.selfPoint = selfPoint data.selfPoint = selfPoint
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id)
WeakAuras.ResetMoverSizer() WeakAuras.ResetMoverSizer()
end, end,
}, },
@@ -159,7 +158,7 @@ local function createOptions(id, data)
end end
data.selfPoint = selfPoint data.selfPoint = selfPoint
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id)
WeakAuras.ResetMoverSizer() WeakAuras.ResetMoverSizer()
end, end,
hidden = function() return (data.grow == "CUSTOM" or data.grow == "LEFT" or data.grow == "RIGHT" or data.grow == "HORIZONTAL" or data.grow == "CIRCLE" or data.grow == "COUNTERCIRCLE" or data.grow == "GRID") end, hidden = function() return (data.grow == "CUSTOM" or data.grow == "LEFT" or data.grow == "RIGHT" or data.grow == "HORIZONTAL" or data.grow == "CIRCLE" or data.grow == "COUNTERCIRCLE" or data.grow == "GRID") end,
@@ -181,7 +180,7 @@ local function createOptions(id, data)
end end
data.selfPoint = selfPoint data.selfPoint = selfPoint
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadTriggerOptions(data) WeakAuras.ClearAndUpdateOptions(data.id)
WeakAuras.ResetMoverSizer() WeakAuras.ResetMoverSizer()
end, end,
}, },
@@ -411,23 +410,23 @@ local function createOptions(id, data)
}, },
}; };
WeakAuras.AddCodeOption(options, data, L["Custom Grow"], "custom_grow", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Dynamic-Group", WeakAuras.commonOptions.AddCodeOption(options, data, L["Custom Grow"], "custom_grow", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#grow",
2, function() return data.grow ~= "CUSTOM" end, {"customGrow"}, nil, nil, nil, nil, nil, true) 2, function() return data.grow ~= "CUSTOM" end, {"customGrow"}, nil, nil, nil, nil, nil, true)
WeakAuras.AddCodeOption(options, data, L["Custom Sort"], "custom_sort", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Dynamic-Group", WeakAuras.commonOptions.AddCodeOption(options, data, L["Custom Sort"], "custom_sort", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-sort",
21, function() return data.sort ~= "custom" end, {"customSort"}, nil, nil, nil, nil, nil, true) 21, function() return data.sort ~= "custom" end, {"customSort"}, nil, nil, nil, nil, nil, true)
WeakAuras.AddCodeOption(options, data, L["Custom Anchor"], "custom_anchor_per_unit", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Dynamic-Group", WeakAuras.commonOptions.AddCodeOption(options, data, L["Custom Anchor"], "custom_anchor_per_unit", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#group-by-frame",
1.7, function() return not(data.grow ~= "CUSTOM" and data.useAnchorPerUnit and data.anchorPerUnit == "CUSTOM") end, {"customAnchorPerUnit"}, nil, nil, nil, nil, nil, true) 1.7, function() return not(data.grow ~= "CUSTOM" and data.useAnchorPerUnit and data.anchorPerUnit == "CUSTOM") end, {"customAnchorPerUnit"}, nil, nil, nil, nil, nil, true)
local borderHideFunc = function() return data.useAnchorPerUnit or data.grow == "CUSTOM" end local borderHideFunc = function() return data.useAnchorPerUnit or data.grow == "CUSTOM" end
local disableSelfPoint = function() return data.grow ~= "CUSTOM" and data.grow ~= "GRID" and not data.useAnchorPerUnit end local disableSelfPoint = function() return data.grow ~= "CUSTOM" and data.grow ~= "GRID" and not data.useAnchorPerUnit end
for k, v in pairs(WeakAuras.BorderOptions(id, data, nil, borderHideFunc, 70)) do for k, v in pairs(WeakAuras.commonOptions.BorderOptions(id, data, nil, borderHideFunc, 70)) do
options[k] = v options[k] = v
end end
return { return {
dynamicgroup = options, dynamicgroup = options,
position = WeakAuras.PositionOptions(id, data, nil, true, disableSelfPoint), position = WeakAuras.commonOptions.PositionOptions(id, data, nil, true, disableSelfPoint),
}; };
end end
+2 -3
View File
@@ -55,7 +55,6 @@ local function createOptions(id, data)
data.groupIcon = v data.groupIcon = v
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.UpdateThumbnail(data) WeakAuras.UpdateThumbnail(data)
WeakAuras.SetIconNames(data)
end end
}, },
chooseIcon = { chooseIcon = {
@@ -557,13 +556,13 @@ local function createOptions(id, data)
}, },
}; };
for k, v in pairs(WeakAuras.BorderOptions(id, data, nil, nil, 70)) do for k, v in pairs(WeakAuras.commonOptions.BorderOptions(id, data, nil, nil, 70)) do
options[k] = v options[k] = v
end end
return { return {
group = options, group = options,
position = WeakAuras.PositionOptions(id, data, nil, true, true), position = WeakAuras.commonOptions.PositionOptions(id, data, nil, true, true),
}; };
end end
+2 -3
View File
@@ -40,7 +40,6 @@ local function createOptions(id, data)
data.displayIcon = v; data.displayIcon = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
end end
}, },
chooseIcon = { chooseIcon = {
@@ -99,7 +98,7 @@ local function createOptions(id, data)
end, end,
imageWidth = 24, imageWidth = 24,
imageHeight = 24, imageHeight = 24,
func = function() func = function(info, button)
local collapsed = WeakAuras.IsCollapsed("icon", "icon", "iconextra", true); local collapsed = WeakAuras.IsCollapsed("icon", "icon", "iconextra", true);
WeakAuras.SetCollapsed("icon", "icon", "iconextra", not collapsed); WeakAuras.SetCollapsed("icon", "icon", "iconextra", not collapsed);
end, end,
@@ -199,7 +198,7 @@ local function createOptions(id, data)
return { return {
icon = options, icon = options,
position = WeakAuras.PositionOptions(id, data), position = WeakAuras.commonOptions.PositionOptions(id, data),
}; };
end end
+2 -2
View File
@@ -115,13 +115,13 @@ local function createOptions(id, data)
} }
end end
for k, v in pairs(WeakAuras.BorderOptions(id, data, nil, nil, 70)) do for k, v in pairs(WeakAuras.commonOptions.BorderOptions(id, data, nil, nil, 70)) do
options[k] = v options[k] = v
end end
return { return {
model = options, model = options,
position = WeakAuras.PositionOptions(id, data, nil, nil, nil), position = WeakAuras.commonOptions.PositionOptions(id, data, nil, nil, nil),
}; };
end end
@@ -168,7 +168,6 @@ local function createOptions(id, data)
data.crop_x = v; data.crop_x = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
if(data.parent) then if(data.parent) then
local parentData = WeakAuras.GetData(data.parent); local parentData = WeakAuras.GetData(data.parent);
if(parentData) then if(parentData) then
@@ -192,7 +191,6 @@ local function createOptions(id, data)
data.crop_y = v; data.crop_y = v;
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
if(data.parent) then if(data.parent) then
local parentData = WeakAuras.GetData(data.parent); local parentData = WeakAuras.GetData(data.parent);
if(parentData) then if(parentData) then
@@ -315,7 +313,7 @@ local function createOptions(id, data)
return { return {
progresstexture = options, progresstexture = options,
position = WeakAuras.PositionOptions(id, data), position = WeakAuras.commonOptions.PositionOptions(id, data),
}; };
end end
+6 -7
View File
@@ -29,9 +29,8 @@ local function createOptions(id, data)
set = function(info, v) set = function(info, v)
data.displayText = WeakAuras.ReplaceLocalizedRaidMarkers(v); data.displayText = WeakAuras.ReplaceLocalizedRaidMarkers(v);
WeakAuras.Add(data); WeakAuras.Add(data);
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
WeakAuras.UpdateThumbnail(data); WeakAuras.UpdateThumbnail(data);
WeakAuras.SetIconNames(data);
WeakAuras.ResetMoverSizer(); WeakAuras.ResetMoverSizer();
end, end,
}, },
@@ -105,7 +104,7 @@ local function createOptions(id, data)
return secondline return secondline
end, end,
func = function() func = function(info, button)
local collapsed = WeakAuras.IsCollapsed("text", "text", "fontflags", true) local collapsed = WeakAuras.IsCollapsed("text", "text", "fontflags", true)
WeakAuras.SetCollapsed("text", "text", "fontflags", not collapsed) WeakAuras.SetCollapsed("text", "text", "fontflags", not collapsed)
end, end,
@@ -240,7 +239,7 @@ local function createOptions(id, data)
}, },
}; };
WeakAuras.AddCodeOption(options, data, L["Custom Function"], "customText", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-text", WeakAuras.commonOptions.AddCodeOption(options, data, L["Custom Function"], "customText", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-text",
37, function() return not WeakAuras.ContainsCustomPlaceHolder(data.displayText) end, {"customText"}, false); 37, function() return not WeakAuras.ContainsCustomPlaceHolder(data.displayText) end, {"customText"}, false);
-- Add Text Format Options -- Add Text Format Options
@@ -266,7 +265,7 @@ local function createOptions(id, data)
option.set = function(info, v) option.set = function(info, v)
data["displayText_format_" .. key] = v data["displayText_format_" .. key] = v
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
end end
end end
options["displayText_format_" .. key] = option options["displayText_format_" .. key] = option
@@ -282,7 +281,7 @@ local function createOptions(id, data)
return { return {
text = options; text = options;
position = WeakAuras.PositionOptions(id, data, nil, true); position = WeakAuras.commonOptions.PositionOptions(id, data, nil, true);
}; };
end end
@@ -394,4 +393,4 @@ local templates = {
} }
} }
WeakAuras.RegisterRegionOptions("text", createOptions, createIcon, L["Text"], createThumbnail, modifyThumbnail, L["Shows one or more lines of text, which can include dynamic information such as progress or stacks"], templates); WeakAuras.RegisterRegionOptions("text", createOptions, createIcon, L["Text"], createThumbnail, modifyThumbnail, L["Shows one or more lines of text, which can include dynamic information such as progress or stacks"], templates);
+1 -1
View File
@@ -100,7 +100,7 @@ local function createOptions(id, data)
return { return {
texture = options, texture = options,
position = WeakAuras.PositionOptions(id, data), position = WeakAuras.commonOptions.PositionOptions(id, data),
}; };
end end
@@ -9,22 +9,22 @@ local function createOptions(parentData, data, index, subIndex)
__order = 1, __order = 1,
__up = function() __up = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subbarmodel")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subbarmodel")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__down = function() __down = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subbarmodel")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subbarmodel")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__duplicate = function() __duplicate = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subbarmodel")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subbarmodel")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__delete = function() __delete = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subbarmodel")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subbarmodel")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
bar_model_visible = { bar_model_visible = {
+4 -4
View File
@@ -11,22 +11,22 @@ local function createOptions(parentData, data, index, subIndex)
__order = 1, __order = 1,
__up = function() __up = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subborder")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subborder")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__down = function() __down = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subborder")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subborder")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__duplicate = function() __duplicate = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subtext")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subtext")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__delete = function() __delete = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subborder")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subborder")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
border_visible = { border_visible = {
+5 -5
View File
@@ -20,22 +20,22 @@ local function createOptions(parentData, data, index, subIndex)
__order = 1, __order = 1,
__up = function() __up = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subglow")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subglow")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__down = function() __down = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subglow")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subglow")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__duplicate = function() __duplicate = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subglow")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subglow")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__delete = function() __delete = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subglow")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subglow")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
glow = { glow = {
@@ -112,7 +112,7 @@ local function createOptions(parentData, data, index, subIndex)
end, end,
imageWidth = 24, imageWidth = 24,
imageHeight = 24, imageHeight = 24,
func = function() func = function(info, button)
local collapsed = WeakAuras.IsCollapsed("glow", "glow", "glowextra" .. index, true); local collapsed = WeakAuras.IsCollapsed("glow", "glow", "glowextra" .. index, true);
WeakAuras.SetCollapsed("glow", "glow", "glowextra" .. index, not collapsed); WeakAuras.SetCollapsed("glow", "glow", "glowextra" .. index, not collapsed);
end, end,
@@ -29,7 +29,7 @@ function WeakAuras.DeleteSubRegion(data, index, regionType)
if data.subRegions[index] and data.subRegions[index].type == regionType then if data.subRegions[index] and data.subRegions[index].type == regionType then
tremove(data.subRegions, index) tremove(data.subRegions, index)
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
local replacements = { local replacements = {
["sub." .. index .. "."] = deleteCondition ["sub." .. index .. "."] = deleteCondition
@@ -50,7 +50,7 @@ function WeakAuras.MoveSubRegionUp(data, index, regionType)
if data.subRegions[index] and data.subRegions[index].type == regionType then if data.subRegions[index] and data.subRegions[index].type == regionType then
data.subRegions[index - 1], data.subRegions[index] = data.subRegions[index], data.subRegions[index - 1] data.subRegions[index - 1], data.subRegions[index] = data.subRegions[index], data.subRegions[index - 1]
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
local replacements = { local replacements = {
["sub." .. (index -1) .. "."] = "sub." .. index .. ".", ["sub." .. (index -1) .. "."] = "sub." .. index .. ".",
@@ -68,7 +68,7 @@ function WeakAuras.MoveSubRegionDown(data, index, regionType)
if data.subRegions[index] and data.subRegions[index].type == regionType and data.subRegions[index + 1] then if data.subRegions[index] and data.subRegions[index].type == regionType and data.subRegions[index + 1] then
data.subRegions[index], data.subRegions[index + 1] = data.subRegions[index + 1], data.subRegions[index] data.subRegions[index], data.subRegions[index + 1] = data.subRegions[index + 1], data.subRegions[index]
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
local replacements = { local replacements = {
["sub." .. index .. "."] = "sub." .. (index + 1) .. ".", ["sub." .. index .. "."] = "sub." .. (index + 1) .. ".",
@@ -86,7 +86,7 @@ function WeakAuras.DuplicateSubRegion(data, index, regionType)
if data.subRegions[index] and data.subRegions[index].type == regionType then if data.subRegions[index] and data.subRegions[index].type == regionType then
tinsert(data.subRegions, index, CopyTable(data.subRegions[index])) tinsert(data.subRegions, index, CopyTable(data.subRegions[index]))
WeakAuras.Add(data) WeakAuras.Add(data)
WeakAuras.ReloadOptions2(data.id, data) WeakAuras.ClearAndUpdateOptions(data.id)
local replacements = {} local replacements = {}
for i = index + 1, #data.subRegions do for i = index + 1, #data.subRegions do
+33 -31
View File
@@ -32,22 +32,22 @@ local function createOptions(parentData, data, index, subIndex)
__order = 1, __order = 1,
__up = function() __up = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subtext")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionUp, index, "subtext")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__down = function() __down = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subtext")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.MoveSubRegionDown, index, "subtext")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__duplicate = function() __duplicate = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subtext")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DuplicateSubRegion, index, "subtext")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
__delete = function() __delete = function()
if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subtext")) then if (WeakAuras.ApplyToDataOrChildData(parentData, WeakAuras.DeleteSubRegion, index, "subtext")) then
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
end, end,
text_visible = { text_visible = {
@@ -74,7 +74,7 @@ local function createOptions(parentData, data, index, subIndex)
set = function(info, v) set = function(info, v)
data.text_text = WeakAuras.ReplaceLocalizedRaidMarkers(v) data.text_text = WeakAuras.ReplaceLocalizedRaidMarkers(v)
WeakAuras.Add(parentData) WeakAuras.Add(parentData)
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
}, },
text_font = { text_font = {
@@ -136,7 +136,7 @@ local function createOptions(parentData, data, index, subIndex)
end, end,
width = WeakAuras.doubleWidth, width = WeakAuras.doubleWidth,
order = 44, order = 44,
func = function() func = function(info, button)
local collapsed = WeakAuras.IsCollapsed("subtext", "subtext", "fontflags" .. index, true) local collapsed = WeakAuras.IsCollapsed("subtext", "subtext", "fontflags" .. index, true)
WeakAuras.SetCollapsed("subtext", "subtext", "fontflags" .. index, not collapsed) WeakAuras.SetCollapsed("subtext", "subtext", "fontflags" .. index, not collapsed)
end, end,
@@ -325,7 +325,7 @@ local function createOptions(parentData, data, index, subIndex)
end, end,
imageWidth = 24, imageWidth = 24,
imageHeight = 24, imageHeight = 24,
func = function() func = function(info, button)
local collapsed = WeakAuras.IsCollapsed("subregion", "text_anchors", tostring(index), true) local collapsed = WeakAuras.IsCollapsed("subregion", "text_anchors", tostring(index), true)
WeakAuras.SetCollapsed("subregion", "text_anchors", tostring(index), not collapsed) WeakAuras.SetCollapsed("subregion", "text_anchors", tostring(index), not collapsed)
end end
@@ -408,21 +408,6 @@ local function createOptions(parentData, data, index, subIndex)
return true return true
end end
local function CheckTextOptions(placeholders)
return function()
if not parentData.subRegions then
return true
end
for index, subRegion in ipairs(parentData.subRegions) do
if subRegion.type == "subtext" and WeakAuras.ContainsPlaceHolders(subRegion.text_text, placeholders) then
return false
end
end
return true
end
end
local commonTextOptions = { local commonTextOptions = {
__title = L["Common Text"], __title = L["Common Text"],
__hidden = function() return hideCustomTextOption() end, __hidden = function() return hideCustomTextOption() end,
@@ -437,16 +422,15 @@ local function createOptions(parentData, data, index, subIndex)
set = function(info, v) set = function(info, v)
parentData.customTextUpdate = v parentData.customTextUpdate = v
WeakAuras.Add(parentData) WeakAuras.Add(parentData)
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id)
end end
}, },
} }
WeakAuras.AddCodeOption(commonTextOptions, parentData, L["Custom Function"], "customText", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-text", WeakAuras.commonOptions.AddCodeOption(commonTextOptions, parentData, L["Custom Function"], "customText", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-text",
4, hideCustomTextOption, {"customText"}, false) 4, hideCustomTextOption, {"customText"}, false)
-- Add Text Format Options -- Add Text Format Options
local input = data["text_text"]
local hidden = function() local hidden = function()
return WeakAuras.IsCollapsed("format_option", "text", "text_text", true) return WeakAuras.IsCollapsed("format_option", "text", "text_text", true)
end end
@@ -455,10 +439,6 @@ local function createOptions(parentData, data, index, subIndex)
WeakAuras.SetCollapsed("format_option", "text", "text_text", hidden) WeakAuras.SetCollapsed("format_option", "text", "text_text", hidden)
end end
local get = function(key)
return data["text_text_format_" .. key]
end
local order = 12 local order = 12
local function addOption(key, option) local function addOption(key, option)
option.order = order option.order = order
@@ -468,13 +448,35 @@ local function createOptions(parentData, data, index, subIndex)
option.set = function(info, v) option.set = function(info, v)
data["text_text_format_" .. key] = v data["text_text_format_" .. key] = v
WeakAuras.Add(parentData) WeakAuras.Add(parentData)
WeakAuras.ReloadOptions2(parentData.id, parentData) WeakAuras.ClearAndUpdateOptions(parentData.id, true)
end end
end end
options["text_text_format_" .. key] = option options["text_text_format_" .. key] = option
end end
WeakAuras.AddTextFormatOption(input, true, get, addOption, hidden, setHidden) if parentData.controlledChildren then
for _, childId in pairs(parentData.controlledChildren) do
local parentChildData = WeakAuras.GetData(childId)
if parentChildData.subRegions then
local childData = parentChildData.subRegions[index]
if childData then
local get = function(key)
return childData["text_text_format_" .. key]
end
local input = childData["text_text"]
WeakAuras.AddTextFormatOption(input, true, get, addOption, hidden, setHidden)
end
end
end
else
local get = function(key)
return data["text_text_format_" .. key]
end
local input = data["text_text"]
WeakAuras.AddTextFormatOption(input, true, get, addOption, hidden, setHidden)
end
addOption("footer", { addOption("footer", {
type = "description", type = "description",
name = "", name = "",
+282
View File
@@ -0,0 +1,282 @@
local L = WeakAuras.L
local removeFuncs = WeakAuras.commonOptions.removeFuncs
local replaceNameDescFuncs = WeakAuras.commonOptions.replaceNameDescFuncs
local replaceImageFuncs = WeakAuras.commonOptions.replaceImageFuncs
local replaceValuesFuncs = WeakAuras.commonOptions.replaceValuesFuncs
local disabledAll = WeakAuras.commonOptions.CreateDisabledAll("trigger")
local hiddenAll = WeakAuras.commonOptions.CreateHiddenAll("trigger")
local getAll = WeakAuras.commonOptions.CreateGetAll("trigger")
local setAll = WeakAuras.commonOptions.CreateSetAll("trigger", getAll)
local executeAll = WeakAuras.commonOptions.CreateExecuteAll("trigger")
local flattenRegionOptions = WeakAuras.commonOptions.flattenRegionOptions
local fixMetaOrders = WeakAuras.commonOptions.fixMetaOrders
local subevent_actual_prefix_types = WeakAuras.subevent_actual_prefix_types;
local spellCache = WeakAuras.spellCache
local function union(table1, table2)
local meta = {};
for i,v in pairs(table1) do
meta[i] = v;
end
for i,v in pairs(table2) do
meta[i] = v;
end
return meta;
end
local function GetGlobalOptions(data)
local triggerCount = 0
local globalTriggerOptions = {
__title = L["Trigger Combination"],
__order = 1,
disjunctive = {
type = "select",
name = L["Required for Activation"],
width = WeakAuras.doubleWidth,
order = 2,
values = function()
if #data.triggers > 1 then
return WeakAuras.trigger_require_types;
else
return WeakAuras.trigger_require_types_one;
end
end,
get = function()
if #data.triggers > 1 then
return data.triggers.disjunctive or "all";
else
return (data.triggers.disjunctive and data.triggers.disjunctive ~= "all") and data.triggers.disjunctive or "any";
end
end,
set = function(info, v)
data.triggers.disjunctive = v;
WeakAuras.Add(data);
end
},
-- custom trigger combiner text editor added below
activeTriggerMode = {
type = "select",
name = L["Dynamic Information"],
width = WeakAuras.doubleWidth,
order = 2.3,
values = function()
local vals = {};
vals[WeakAuras.trigger_modes.first_active] = L["Dynamic information from first active trigger"];
for i = 1, #data.triggers do
vals[i] = L["Dynamic information from Trigger %i"]:format(i);
end
return vals;
end,
get = function()
return data.triggers.activeTriggerMode or WeakAuras.trigger_modes.first_active;
end,
set = function(info, v)
data.triggers.activeTriggerMode = v;
WeakAuras.Add(data);
WeakAuras.UpdateThumbnail(data);
WeakAuras.UpdateDisplayButton(data);
end,
hidden = function() return #data.triggers <= 1 end
}
}
local function hideTriggerCombiner()
return not (data.triggers.disjunctive == "custom")
end
WeakAuras.commonOptions.AddCodeOption(globalTriggerOptions, data, L["Custom"], "custom_trigger_combination", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-activation",
2.4, hideTriggerCombiner, {"triggers", "customTriggerLogic"}, false);
return {
global = globalTriggerOptions
}
end
local function AddOptions(allOptions, data)
allOptions = union(allOptions, GetGlobalOptions(data))
local triggerOptions = {}
for index, trigger in ipairs(data.triggers) do
local triggerSystemOptionsFunction = trigger.trigger.type and WeakAuras.triggerTypesOptions[trigger.trigger.type]
if (triggerSystemOptionsFunction) then
triggerOptions = union(triggerOptions, triggerSystemOptionsFunction(data, index))
end
end
return union(allOptions, triggerOptions)
end
function WeakAuras.GetTriggerOptions(data)
local allOptions = {}
if data.controlledChildren then
for index, childId in pairs(data.controlledChildren) do
local childData = WeakAuras.GetData(childId)
allOptions = AddOptions(allOptions, childData)
end
else
allOptions = AddOptions(allOptions, data)
end
fixMetaOrders(allOptions)
local triggerOptions = {
type = "group",
name = L["Trigger"],
order = 20,
args = flattenRegionOptions(allOptions, false)
}
if data.controlledChildren then
removeFuncs(triggerOptions, true);
replaceNameDescFuncs(triggerOptions, data, "trigger");
replaceImageFuncs(triggerOptions, data, "trigger");
replaceValuesFuncs(triggerOptions, data, "trigger");
triggerOptions.get = function(info, ...)
return getAll(data, info, ...)
end
triggerOptions.set = function(info, ...)
setAll(data, info, ...)
end
triggerOptions.hidden = function(info, ...)
return hiddenAll(data, info, ...)
end
triggerOptions.disabled = function(info, ...)
return disabledAll(data, info, ...)
end
triggerOptions.func = function(info, ...)
return executeAll(data, info, ...)
end
end
return triggerOptions
end
local function DeleteConditionsForTriggerHandleSubChecks(checks, triggernum)
for _, check in ipairs(checks) do
if (check.trigger == triggernum) then
check.trigger = nil;
end
if (check.trigger and check.trigger > triggernum) then
check.trigger = check.trigger - 1;
end
if (checks.checks) then
DeleteConditionsForTriggerHandleSubChecks(checks.checks, triggernum);
end
end
end
local function DeleteConditionsForTrigger(data, triggernum)
for _, condition in ipairs(data.conditions) do
if (condition.check and condition.check.trigger == triggernum) then
condition.check.trigger = nil;
end
if (condition.check and condition.check.trigger and condition.check.trigger > triggernum) then
condition.check.trigger = condition.check.trigger - 1;
end
if (condition.check and condition.check.checks) then
DeleteConditionsForTriggerHandleSubChecks(condition.check.checks, triggernum)
end
end
end
local function moveTriggerDownConditionCheck(check, i)
if (check.trigger == i) then
check.trigger = i + 1;
elseif (check.trigger == i + 1) then
check.trigger = i;
end
if (check.checks) then
for _, subCheck in ipairs(check.checks) do
moveTriggerDownConditionCheck(subCheck, i);
end
end
end
local function moveTriggerDownImpl(data, i)
if (i < 1 or i >= #data.triggers) then
return false;
end
data.triggers[i], data.triggers[i + 1] = data.triggers[i + 1], data.triggers[i]
for _, condition in ipairs(data.conditions) do
moveTriggerDownConditionCheck(condition.check, i);
end
return true;
end
function WeakAuras.AddTriggerMetaFunctions(options, data, triggernum)
options.__title = L["Trigger %s"]:format(triggernum)
options.__order = triggernum * 10
options.__add = function()
tinsert(data.triggers,
{
trigger =
{
type = "aura2"
},
untrigger = {
}
})
WeakAuras.Add(data)
WeakAuras.ClearAndUpdateOptions(data.id)
end
options.__up =
{
disabled = function()
return triggernum < 2
end,
func = function()
if (moveTriggerDownImpl(data, triggernum - 1)) then
WeakAuras.Add(data);
WeakAuras.ClearAndUpdateOptions(data.id);
end
end
}
options.__down =
{
disabled = function()
return triggernum == #data.triggers
end,
func = function()
if (moveTriggerDownImpl(data, triggernum)) then
WeakAuras.Add(data);
WeakAuras.ClearAndUpdateOptions(data.id);
end
end
}
options.__duplicate = function()
local trigger = CopyTable(data.triggers[triggernum])
tinsert(data.triggers, trigger)
WeakAuras.Add(data)
WeakAuras.ClearAndUpdateOptions(data.id)
end
options.__delete = {
disabled = function()
return #data.triggers == 1
end,
func = function()
if #data.triggers > 1 then
tremove(data.triggers, triggernum)
DeleteConditionsForTrigger(data, triggernum);
WeakAuras.Add(data)
WeakAuras.ClearAndUpdateOptions(data.id)
end
end
}
local _, _, _, enabled = GetAddOnInfo("WeakAurasTemplates")
if enabled then
options.__applyTemplate = function()
WeakAuras.OpenTriggerTemplate(data)
end
end
end
File diff suppressed because it is too large Load Diff
+9 -1
View File
@@ -31,13 +31,19 @@ SubRegionOptions\SubRegionCommon.lua
SubRegionOptions\SubText.lua SubRegionOptions\SubText.lua
SubRegionOptions\Border.lua SubRegionOptions\Border.lua
SubRegionOptions\Glow.lua SubRegionOptions\Glow.lua
SubRegionOptions\BarModel.lua
SubRegionOptions\Tick.lua SubRegionOptions\Tick.lua
SubRegionOptions\BarModel.lua
Cache.lua Cache.lua
CommonOptions.lua
GroupOptions.lua
DisplayOptions.lua
TriggerOptions.lua
LoadOptions.lua
ActionOptions.lua ActionOptions.lua
AnimationOptions.lua AnimationOptions.lua
BuffTrigger.lua BuffTrigger.lua
BuffTrigger2.lua BuffTrigger2.lua
GenericTrigger.lua GenericTrigger.lua
@@ -73,5 +79,7 @@ AceGUI-Widgets\AceGUIWidget-WeakAurasImportButton.lua
AceGUI-Widgets\AceGUIWidget-WeakAurasSortedDropDown.lua AceGUI-Widgets\AceGUIWidget-WeakAurasSortedDropDown.lua
AceGUI-Widgets\AceGUIWidget-WeakAurasToolbarButton.lua AceGUI-Widgets\AceGUIWidget-WeakAurasToolbarButton.lua
AceGUI-Widgets\AceGUIWidget-WeakAurasTwoColumnDropDown.lua AceGUI-Widgets\AceGUIWidget-WeakAurasTwoColumnDropDown.lua
AceGUI-Widgets\AceGUIWidget-WeakAurasSnippetButton.lua
AceGUI-Widgets\AceGUIContainer-WeakAurasTreeGroup.lua AceGUI-Widgets\AceGUIContainer-WeakAurasTreeGroup.lua
AceGUI-Widgets\AceGUIWidget-WeakAurasSnippetButton.lua AceGUI-Widgets\AceGUIWidget-WeakAurasSnippetButton.lua
AceGUI-Widgets\AceGUIContainer-WeakAurasInlineGroup.lua