Multientry (#7)
* from retail * from retail * from retail * from retail * from retail * from retail * remove new threat functions as they are not well implemented for now
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
if not WeakAuras.IsCorrectVersion() then return end
|
||||
|
||||
local Type, Version = "WeakAurasAnchorButtons", 2
|
||||
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
||||
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
||||
|
||||
local directions = { "TOPLEFT", "TOP", "TOPRIGHT", "LEFT", "CENTER", "RIGHT", "BOTTOMLEFT", "BOTTOM", "BOTTOMRIGHT" }
|
||||
local buttonSize = 10
|
||||
local frameWidth = 100
|
||||
local frameHeight = 50
|
||||
local titleHeight = 15
|
||||
|
||||
local methods = {
|
||||
["OnAcquire"] = function(self)
|
||||
self:SetWidth(frameWidth + buttonSize)
|
||||
self:SetHeight(frameHeight + buttonSize + titleHeight + 2)
|
||||
self:SetDisabled(false)
|
||||
end,
|
||||
|
||||
["SetValue"] = function(self, text)
|
||||
if not tContains(directions, text) then return end
|
||||
for direction, button in pairs(self.buttons) do
|
||||
if direction == text then
|
||||
button.tex:SetVertexColor(0.9, 0.9, 0, 1)
|
||||
else
|
||||
button.tex:SetVertexColor(0.3, 0.3, 0.3, 1)
|
||||
end
|
||||
button:SetNormalTexture(button.tex)
|
||||
end
|
||||
self.value = text
|
||||
end,
|
||||
|
||||
["GetValue"] = function(self)
|
||||
return self.value
|
||||
end,
|
||||
|
||||
["SetLabel"] = function(self, text)
|
||||
if text and text ~= "" then
|
||||
self.label:SetText(text);
|
||||
self.label:Show()
|
||||
else
|
||||
self.label:SetText("")
|
||||
self.label:Hide()
|
||||
end
|
||||
end,
|
||||
|
||||
["SetList"] = function() end,
|
||||
|
||||
["SetDisabled"] = function(self, disabled)
|
||||
self.disabled = disabled
|
||||
if disabled then
|
||||
self.label:SetTextColor(0.5,0.5,0.5)
|
||||
for _, button in pairs(self.buttons) do
|
||||
button:EnableMouse(false)
|
||||
end
|
||||
else
|
||||
self.label:SetTextColor(1,.82,0)
|
||||
for _, button in pairs(self.buttons) do
|
||||
button:EnableMouse(true)
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
local function buttonClicked(self)
|
||||
AceGUI:ClearFocus()
|
||||
local frame = self:GetParent()
|
||||
local widget = frame.obj
|
||||
widget:SetValue(self.value)
|
||||
widget:Fire("OnValueChanged", self.value)
|
||||
end
|
||||
|
||||
local function Constructor()
|
||||
local name = "WeakAurasAnchorButtons" .. AceGUI:GetNextWidgetNum(Type)
|
||||
local frame = CreateFrame("Frame", name, UIParent)
|
||||
frame:SetSize(frameWidth, frameHeight)
|
||||
frame:SetFrameStrata("FULLSCREEN_DIALOG")
|
||||
|
||||
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall");
|
||||
label:SetHeight(titleHeight);
|
||||
label:SetJustifyH("CENTER");
|
||||
label:SetPoint("TOP", frame, "TOP");
|
||||
|
||||
local background = CreateFrame("Frame", nil, frame)
|
||||
background:SetSize(frameWidth, frameHeight)
|
||||
background:SetPoint("TOP", frame, "TOP", 0, -(titleHeight + 4))
|
||||
background:SetBackdrop({
|
||||
bgFile = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\Square_FullWhite.tga",
|
||||
edgeFile = "Interface\\AddOns\\WeakAuras\\Media\\Textures\\Square_FullWhite.tga",
|
||||
tile = true,
|
||||
tileEdge = true,
|
||||
--tileSize = 8,
|
||||
edgeSize = 2
|
||||
--insets = { left = 1, right = 1, top = 1, bottom = 1 },
|
||||
})
|
||||
background:SetBackdropColor(0.2,0.2,0.2,0.5)
|
||||
background:SetBackdropBorderColor(1,1,1,0.6)
|
||||
|
||||
local buttons = {}
|
||||
for _, direction in ipairs(directions) do
|
||||
local button = CreateFrame("Button", nil, frame)
|
||||
button:SetSize(buttonSize, buttonSize)
|
||||
button:SetPoint(
|
||||
"CENTER",
|
||||
background,
|
||||
direction
|
||||
)
|
||||
|
||||
local buttonTex = button:CreateTexture()
|
||||
buttonTex:SetAllPoints()
|
||||
buttonTex:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\Square_FullWhite.tga")
|
||||
buttonTex:SetVertexColor(0.3, 0.3, 0.3, 1)
|
||||
button:SetNormalTexture(buttonTex)
|
||||
button.tex = buttonTex
|
||||
button.value = direction
|
||||
|
||||
button:SetScript("OnClick", buttonClicked)
|
||||
buttons[direction] = button
|
||||
end
|
||||
|
||||
--- @type table<string, any>
|
||||
local widget = {
|
||||
frame = frame,
|
||||
type = Type,
|
||||
buttons = buttons,
|
||||
label = label
|
||||
}
|
||||
for method, func in pairs(methods) do
|
||||
widget[method] = func
|
||||
end
|
||||
|
||||
return AceGUI:RegisterAsWidget(widget);
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
@@ -0,0 +1,43 @@
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Input Widget that allows to show an alternative text when it does not have focus
|
||||
-------------------------------------------------------------------------------]]
|
||||
if not WeakAuras.IsCorrectVersion() then return end
|
||||
|
||||
local Type, Version = "WeakAurasInputFocus", 1
|
||||
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
||||
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
||||
|
||||
local OnEditFocusGained = function(self)
|
||||
local textWithFocus = self.obj.textWithFocus
|
||||
if textWithFocus and self:GetText() == self.obj.textWithoutFocus then
|
||||
self:SetText(textWithFocus)
|
||||
end
|
||||
AceGUI:SetFocus(self.obj)
|
||||
end
|
||||
|
||||
|
||||
local function Constructor()
|
||||
local button = AceGUI:Create("EditBox")
|
||||
button.type = Type
|
||||
|
||||
button.editbox:SetScript("OnEditFocusGained", OnEditFocusGained)
|
||||
|
||||
local oldSetText = button.SetText
|
||||
button.SetText = function(self, text)
|
||||
text = text or ""
|
||||
local pos = string.find(text, "\0", nil, true)
|
||||
if pos then
|
||||
self.textWithoutFocus = text:sub(1, pos -1)
|
||||
self.textWithFocus = text:sub(pos + 1)
|
||||
oldSetText(self, self.textWithoutFocus)
|
||||
else
|
||||
self.textWithFocus = nil
|
||||
self.textWithoutFocus = nil
|
||||
oldSetText(self, text)
|
||||
end
|
||||
end
|
||||
|
||||
return button
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
@@ -0,0 +1,379 @@
|
||||
if not WeakAuras.IsCorrectVersion() then return end
|
||||
|
||||
-- based on the AceGUI widget, overwrites the enter handling
|
||||
local Type, Version = "WeakAuras-MultiLineEditBoxWithEnter", 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 GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, ClearCursor
|
||||
local CreateFrame, UIParent = CreateFrame, UIParent
|
||||
local _G = _G
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Support functions
|
||||
-------------------------------------------------------------------------------]]
|
||||
|
||||
if not AceGUIWeakAurasMultiLineEditBoxWithEnterInsertLink then
|
||||
-- upgradeable hook
|
||||
hooksecurefunc("ChatEdit_InsertLink", function(...) return _G.AceGUIWeakAurasMultiLineEditBoxWithEnterInsertLink(...) end)
|
||||
end
|
||||
|
||||
function _G.AceGUIWeakAurasMultiLineEditBoxWithEnterInsertLink(text)
|
||||
for i = 1, AceGUI:GetWidgetCount(Type) do
|
||||
local editbox = _G[("MultiLineEditBox%uEdit"):format(i)]
|
||||
if editbox and editbox:IsVisible() and editbox:HasFocus() then
|
||||
editbox:Insert(text)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function Layout(self)
|
||||
self:SetHeight(self.numlines * 14 + (self.disablebutton and 19 or 41) + self.labelHeight)
|
||||
|
||||
if self.labelHeight == 0 then
|
||||
self.scrollBar:SetPoint("TOP", self.frame, "TOP", 0, -23)
|
||||
else
|
||||
self.scrollBar:SetPoint("TOP", self.label, "BOTTOM", 0, -19)
|
||||
end
|
||||
|
||||
if self.disablebutton then
|
||||
self.scrollBar:SetPoint("BOTTOM", self.frame, "BOTTOM", 0, 21)
|
||||
self.scrollBG:SetPoint("BOTTOMLEFT", 0, 4)
|
||||
else
|
||||
self.scrollBar:SetPoint("BOTTOM", self.button, "TOP", 0, 18)
|
||||
self.scrollBG:SetPoint("BOTTOMLEFT", self.button, "TOPLEFT")
|
||||
end
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Scripts
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function OnEnterPressed(self) -- EditBox
|
||||
self:HighlightText(0, 0)
|
||||
self.obj:Fire("OnEnterPressed", self:GetText())
|
||||
end
|
||||
|
||||
|
||||
local function OnClick(self) -- Button
|
||||
self = self.obj
|
||||
self.editBox:ClearFocus()
|
||||
if not self:Fire("OnEnterPressed", self.editBox:GetText()) then
|
||||
self.button:Disable()
|
||||
end
|
||||
end
|
||||
|
||||
local function OnCursorChanged(self, _, y, _, cursorHeight) -- EditBox
|
||||
self, y = self.obj.scrollFrame, -y
|
||||
local offset = self:GetVerticalScroll()
|
||||
if y < offset then
|
||||
self:SetVerticalScroll(y)
|
||||
else
|
||||
y = y + cursorHeight - self:GetHeight()
|
||||
if y > offset then
|
||||
self:SetVerticalScroll(y)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function OnEditFocusLost(self) -- EditBox
|
||||
self:HighlightText(0, 0)
|
||||
self.obj:Fire("OnEditFocusLost")
|
||||
end
|
||||
|
||||
local function OnEnter(self) -- EditBox / ScrollFrame
|
||||
self = self.obj
|
||||
if not self.entered then
|
||||
self.entered = true
|
||||
self:Fire("OnEnter")
|
||||
end
|
||||
end
|
||||
|
||||
local function OnLeave(self) -- EditBox / ScrollFrame
|
||||
self = self.obj
|
||||
if self.entered then
|
||||
self.entered = nil
|
||||
self:Fire("OnLeave")
|
||||
end
|
||||
end
|
||||
|
||||
local function OnMouseUp(self) -- ScrollFrame
|
||||
self = self.obj.editBox
|
||||
self:SetFocus()
|
||||
self:SetCursorPosition(self:GetNumLetters())
|
||||
end
|
||||
|
||||
local function OnReceiveDrag(self) -- EditBox / ScrollFrame
|
||||
local type, id, info = GetCursorInfo()
|
||||
if type == "spell" then
|
||||
info = GetSpellInfo(id, info)
|
||||
elseif type ~= "item" then
|
||||
return
|
||||
end
|
||||
ClearCursor()
|
||||
self = self.obj
|
||||
local editBox = self.editBox
|
||||
if not editBox:HasFocus() then
|
||||
editBox:SetFocus()
|
||||
editBox:SetCursorPosition(editBox:GetNumLetters())
|
||||
end
|
||||
editBox:Insert(info)
|
||||
self.button:Enable()
|
||||
end
|
||||
|
||||
local function OnSizeChanged(self, width, height) -- ScrollFrame
|
||||
self.obj.editBox:SetWidth(width)
|
||||
end
|
||||
|
||||
local function OnTextChanged(self, userInput) -- EditBox
|
||||
if userInput then
|
||||
self = self.obj
|
||||
self:Fire("OnTextChanged", self.editBox:GetText())
|
||||
self.button:Enable()
|
||||
end
|
||||
end
|
||||
|
||||
local function OnTextSet(self) -- EditBox
|
||||
self:HighlightText(0, 0)
|
||||
self:SetCursorPosition(self:GetNumLetters())
|
||||
self:SetCursorPosition(0)
|
||||
self.obj.button:Disable()
|
||||
end
|
||||
|
||||
local function OnVerticalScroll(self, offset) -- ScrollFrame
|
||||
local editBox = self.obj.editBox
|
||||
editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight())
|
||||
end
|
||||
|
||||
local function OnScrollRangeChanged(self, xrange, yrange)
|
||||
if yrange == 0 then
|
||||
self.obj.editBox:SetHitRectInsets(0, 0, 0, 0)
|
||||
else
|
||||
OnVerticalScroll(self, self:GetVerticalScroll())
|
||||
end
|
||||
end
|
||||
|
||||
local function OnShowFocus(frame)
|
||||
frame.obj.editBox:SetFocus()
|
||||
frame:SetScript("OnShow", nil)
|
||||
end
|
||||
|
||||
local function OnEditFocusGained(frame)
|
||||
AceGUI:SetFocus(frame.obj)
|
||||
frame.obj:Fire("OnEditFocusGained")
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Methods
|
||||
-------------------------------------------------------------------------------]]
|
||||
local methods = {
|
||||
["OnAcquire"] = function(self)
|
||||
self.editBox:SetText("")
|
||||
self:SetDisabled(false)
|
||||
self:SetWidth(200)
|
||||
self:DisableButton(false)
|
||||
self:SetNumLines()
|
||||
self.entered = nil
|
||||
self:SetMaxLetters(0)
|
||||
end,
|
||||
|
||||
["OnRelease"] = function(self)
|
||||
self:ClearFocus()
|
||||
end,
|
||||
|
||||
["SetDisabled"] = function(self, disabled)
|
||||
local editBox = self.editBox
|
||||
if disabled then
|
||||
editBox:ClearFocus()
|
||||
editBox:EnableMouse(false)
|
||||
editBox:SetTextColor(0.5, 0.5, 0.5)
|
||||
self.label:SetTextColor(0.5, 0.5, 0.5)
|
||||
self.scrollFrame:EnableMouse(false)
|
||||
self.button:Disable()
|
||||
else
|
||||
editBox:EnableMouse(true)
|
||||
editBox:SetTextColor(1, 1, 1)
|
||||
self.label:SetTextColor(1, 0.82, 0)
|
||||
self.scrollFrame:EnableMouse(true)
|
||||
end
|
||||
end,
|
||||
|
||||
["SetLabel"] = function(self, text)
|
||||
if text and text ~= "" then
|
||||
self.label:SetText(text)
|
||||
if self.labelHeight ~= 10 then
|
||||
self.labelHeight = 10
|
||||
self.label:Show()
|
||||
end
|
||||
elseif self.labelHeight ~= 0 then
|
||||
self.labelHeight = 0
|
||||
self.label:Hide()
|
||||
end
|
||||
Layout(self)
|
||||
end,
|
||||
|
||||
["SetNumLines"] = function(self, value)
|
||||
if not value or value < 4 then
|
||||
value = 4
|
||||
end
|
||||
self.numlines = value
|
||||
Layout(self)
|
||||
end,
|
||||
|
||||
["SetText"] = function(self, text)
|
||||
self.editBox:SetText(text)
|
||||
end,
|
||||
|
||||
["GetText"] = function(self)
|
||||
return self.editBox:GetText()
|
||||
end,
|
||||
|
||||
["SetMaxLetters"] = function (self, num)
|
||||
self.editBox:SetMaxLetters(num or 0)
|
||||
end,
|
||||
|
||||
["DisableButton"] = function(self, disabled)
|
||||
self.disablebutton = disabled
|
||||
if disabled then
|
||||
self.button:Hide()
|
||||
else
|
||||
self.button:Show()
|
||||
end
|
||||
Layout(self)
|
||||
end,
|
||||
|
||||
["ClearFocus"] = function(self)
|
||||
self.editBox:ClearFocus()
|
||||
self.frame:SetScript("OnShow", nil)
|
||||
end,
|
||||
|
||||
["SetFocus"] = function(self)
|
||||
self.editBox:SetFocus()
|
||||
if not self.frame:IsShown() then
|
||||
self.frame:SetScript("OnShow", OnShowFocus)
|
||||
end
|
||||
end,
|
||||
|
||||
["HighlightText"] = function(self, from, to)
|
||||
self.editBox:HighlightText(from, to)
|
||||
end,
|
||||
|
||||
["GetCursorPosition"] = function(self)
|
||||
return self.editBox:GetCursorPosition()
|
||||
end,
|
||||
|
||||
["SetCursorPosition"] = function(self, ...)
|
||||
return self.editBox:SetCursorPosition(...)
|
||||
end,
|
||||
}
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Constructor
|
||||
-------------------------------------------------------------------------------]]
|
||||
local backdrop = {
|
||||
bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
|
||||
edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], edgeSize = 16,
|
||||
insets = { left = 4, right = 3, top = 4, bottom = 3 }
|
||||
}
|
||||
|
||||
local function Constructor()
|
||||
local frame = CreateFrame("Frame", nil, UIParent)
|
||||
frame:Hide()
|
||||
|
||||
local widgetNum = AceGUI:GetNextWidgetNum(Type)
|
||||
|
||||
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
|
||||
label:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, -4)
|
||||
label:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, -4)
|
||||
label:SetJustifyH("LEFT")
|
||||
label:SetText(ACCEPT)
|
||||
label:SetHeight(10)
|
||||
|
||||
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, "UIPanelButtonTemplate")
|
||||
button:SetPoint("BOTTOMLEFT", 0, 4)
|
||||
button:SetHeight(22)
|
||||
button:SetWidth(label:GetStringWidth() + 24)
|
||||
button:SetText(ACCEPT)
|
||||
button:SetScript("OnClick", OnClick)
|
||||
button:Disable()
|
||||
|
||||
local text = button:GetFontString()
|
||||
text:ClearAllPoints()
|
||||
text:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -5)
|
||||
text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1)
|
||||
text:SetJustifyV("MIDDLE")
|
||||
|
||||
local scrollBG = CreateFrame("Frame", nil, frame)
|
||||
scrollBG:SetBackdrop(backdrop)
|
||||
scrollBG:SetBackdropColor(0, 0, 0)
|
||||
scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4)
|
||||
|
||||
local scrollFrame = CreateFrame("ScrollFrame", ("%s%dScrollFrame"):format(Type, widgetNum), frame, "UIPanelScrollFrameTemplate")
|
||||
|
||||
local scrollBar = _G[scrollFrame:GetName() .. "ScrollBar"]
|
||||
scrollBar:ClearAllPoints()
|
||||
scrollBar:SetPoint("TOP", label, "BOTTOM", 0, -19)
|
||||
scrollBar:SetPoint("BOTTOM", button, "TOP", 0, 18)
|
||||
scrollBar:SetPoint("RIGHT", frame, "RIGHT")
|
||||
|
||||
scrollBG:SetPoint("TOPRIGHT", scrollBar, "TOPLEFT", 0, 19)
|
||||
scrollBG:SetPoint("BOTTOMLEFT", button, "TOPLEFT")
|
||||
|
||||
scrollFrame:SetPoint("TOPLEFT", scrollBG, "TOPLEFT", 5, -6)
|
||||
scrollFrame:SetPoint("BOTTOMRIGHT", scrollBG, "BOTTOMRIGHT", -4, 4)
|
||||
scrollFrame:SetScript("OnEnter", OnEnter)
|
||||
scrollFrame:SetScript("OnLeave", OnLeave)
|
||||
scrollFrame:SetScript("OnMouseUp", OnMouseUp)
|
||||
scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag)
|
||||
scrollFrame:SetScript("OnSizeChanged", OnSizeChanged)
|
||||
scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll)
|
||||
scrollFrame:HookScript("OnScrollRangeChanged", OnScrollRangeChanged)
|
||||
|
||||
local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame)
|
||||
editBox:SetAllPoints()
|
||||
editBox:SetFontObject(ChatFontNormal)
|
||||
editBox:SetMultiLine(true)
|
||||
editBox:EnableMouse(true)
|
||||
editBox:SetAutoFocus(false)
|
||||
editBox:SetCountInvisibleLetters(false)
|
||||
editBox:SetScript("OnCursorChanged", OnCursorChanged)
|
||||
editBox:SetScript("OnEditFocusLost", OnEditFocusLost)
|
||||
editBox:SetScript("OnEnter", OnEnter)
|
||||
editBox:SetScript("OnEscapePressed", editBox.ClearFocus)
|
||||
editBox:SetScript("OnLeave", OnLeave)
|
||||
editBox:SetScript("OnMouseDown", OnReceiveDrag)
|
||||
editBox:SetScript("OnReceiveDrag", OnReceiveDrag)
|
||||
editBox:SetScript("OnTextChanged", OnTextChanged)
|
||||
editBox:SetScript("OnTextSet", OnTextSet)
|
||||
editBox:SetScript("OnEditFocusGained", OnEditFocusGained)
|
||||
editBox:SetScript("OnEnterPressed", OnEnterPressed)
|
||||
|
||||
|
||||
scrollFrame:SetScrollChild(editBox)
|
||||
|
||||
local widget = {
|
||||
button = button,
|
||||
editBox = editBox,
|
||||
frame = frame,
|
||||
label = label,
|
||||
labelHeight = 10,
|
||||
numlines = 4,
|
||||
scrollBar = scrollBar,
|
||||
scrollBG = scrollBG,
|
||||
scrollFrame = scrollFrame,
|
||||
type = Type
|
||||
}
|
||||
for method, func in pairs(methods) do
|
||||
widget[method] = func
|
||||
end
|
||||
button.obj, editBox.obj, scrollFrame.obj = widget, widget, widget
|
||||
|
||||
return AceGUI:RegisterAsWidget(widget)
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
@@ -1,42 +0,0 @@
|
||||
if not WeakAuras.IsCorrectVersion() then return end
|
||||
|
||||
local Type, Version = "WeakAurasSortedDropdown", 1
|
||||
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
|
||||
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
|
||||
|
||||
local function Constructor()
|
||||
local DropDownConstructor = AceGUI.WidgetRegistry["Dropdown"];
|
||||
if (not DropDownConstructor) then
|
||||
return nil;
|
||||
end
|
||||
local widget = DropDownConstructor();
|
||||
if (not widget) then
|
||||
return nil;
|
||||
end
|
||||
|
||||
local oldSetList = widget.SetList
|
||||
widget.SetList = function(self, list, _, itemType)
|
||||
local orderTable = {};
|
||||
for k, v in pairs(list) do
|
||||
tinsert(orderTable, { key = k, value = v });
|
||||
end
|
||||
|
||||
local order = {};
|
||||
|
||||
table.sort(orderTable, function(a, b)
|
||||
return a.value < b.value;
|
||||
end);
|
||||
|
||||
for i, item in ipairs(orderTable) do
|
||||
order[i] = item.key;
|
||||
end
|
||||
|
||||
oldSetList(self, list, order, itemType)
|
||||
end
|
||||
|
||||
widget.type = Type;
|
||||
|
||||
return widget;
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
@@ -0,0 +1,374 @@
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Spin Box Widget
|
||||
-------------------------------------------------------------------------------]]
|
||||
local Type, Version = "WeakAurasSpinBox", 5
|
||||
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 math_min, math_max, floor = math.min, math.max, math.floor
|
||||
local tonumber, pairs = tonumber, pairs
|
||||
|
||||
-- WoW APIs
|
||||
local PlaySound = PlaySound
|
||||
local CreateFrame, UIParent = CreateFrame, UIParent
|
||||
|
||||
local progressLeftOffset = -3
|
||||
local progressExtraWidth = -0
|
||||
local progressTopOffset = -2
|
||||
local progressBottomOffset = 2
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Support functions
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function UpdateText(self)
|
||||
local value = self:GetValue() or 0
|
||||
if self.ispercent then
|
||||
self.editbox:SetText(("%s%%"):format(floor(value * 1000 + 0.5) / 10))
|
||||
else
|
||||
self.editbox:SetText(floor(value * 100 + 0.5) / 100)
|
||||
end
|
||||
end
|
||||
|
||||
local function UpdateButtons(self)
|
||||
local value = self:GetValue() or 0
|
||||
|
||||
if value > self.min then
|
||||
self.leftbutton:Enable()
|
||||
else
|
||||
self.leftbutton:Disable()
|
||||
end
|
||||
|
||||
if value < self.max then
|
||||
self.rightbutton:Enable()
|
||||
else
|
||||
self.rightbutton:Disable()
|
||||
end
|
||||
end
|
||||
|
||||
local function UpdateProgressBar(self)
|
||||
local value = self:GetValue() or 0
|
||||
local p = 0
|
||||
if self.min and self.max then
|
||||
if self.min < self.max then
|
||||
p = (value - self.min) / (self.max - self.min)
|
||||
end
|
||||
end
|
||||
p = Clamp(p, 0, 1)
|
||||
local w = p * (self.frame:GetWidth() - 45 + progressExtraWidth)
|
||||
self.progressBar:SetWidth(max(w, 1))
|
||||
self.progressBar:SetTexCoord(0, p , 0, 1)
|
||||
end
|
||||
|
||||
local function UpdateHandleColor(self)
|
||||
if self.progressBarHandle.mouseDown then
|
||||
self.progressBarHandleTexture:SetVertexColor(0.6, 0.6, 0, 1)
|
||||
--self.progressBarHandleTexture:SetColorTexture(0.6, 0.6, 0, 1)
|
||||
elseif MouseIsOver(self.progressBarHandle) then
|
||||
self.progressBarHandleTexture:SetVertexColor(0.8, 0.8, 0, 1)
|
||||
--self.progressBarHandleTexture:SetColorTexture(0.8, 0.8, 0, 1)
|
||||
else
|
||||
self.progressBarHandleTexture:SetVertexColor(0.4, 0.4, 0, 1)
|
||||
--self.progressBarHandleTexture:SetColorTexture(0.4, 0.4, 0, 1)
|
||||
end
|
||||
end
|
||||
|
||||
local function UpdateHandleVisibility(self)
|
||||
if MouseIsOver(self.frame) then
|
||||
self.progressBarHandle:Show()
|
||||
UpdateHandleColor(self)
|
||||
else
|
||||
self.progressBarHandle:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Scripts
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function SpinBox_OnValueDown(frame)
|
||||
local self = frame.obj
|
||||
--self.editbox:SetFocus()
|
||||
local value = self.value or 0
|
||||
local step = self.step or 1
|
||||
value = math_max(self.min, value - step)
|
||||
PlaySound("igMainMenuOptionCheckBoxOn")
|
||||
self:SetValue(value, true)
|
||||
end
|
||||
|
||||
local function SpinBox_OnValueUp(frame)
|
||||
local self = frame.obj
|
||||
--self.editbox:SetFocus()
|
||||
local value = self.value or 0
|
||||
local step = self.step or 1
|
||||
value = math_min(self.max, value + step)
|
||||
PlaySound("igMainMenuOptionCheckBoxOn")
|
||||
self:SetValue(value, true)
|
||||
end
|
||||
|
||||
local function EditBox_OnEscapePressed(frame)
|
||||
frame:ClearFocus()
|
||||
end
|
||||
|
||||
local function EditBox_OnEnterPressed(frame)
|
||||
local self = frame.obj
|
||||
local value = frame:GetText()
|
||||
if self.ispercent then
|
||||
value = value:gsub("%%", "")
|
||||
value = tonumber(value) / 100
|
||||
else
|
||||
value = tonumber(value)
|
||||
end
|
||||
|
||||
if value then
|
||||
PlaySound("igMainMenuOptionCheckBoxOn")
|
||||
self:SetValue(value, true)
|
||||
end
|
||||
frame:ClearFocus()
|
||||
end
|
||||
|
||||
local function EditBox_OnEnter(frame)
|
||||
frame.onEntered = true
|
||||
if not frame.obj.progressBarHandle.mouseDown then
|
||||
frame.obj:Fire("OnEnter")
|
||||
end
|
||||
end
|
||||
|
||||
local function EditBox_OnLeave(frame)
|
||||
if frame.onEntered then
|
||||
frame.obj:Fire("OnLeave")
|
||||
end
|
||||
frame.onEntered = false
|
||||
end
|
||||
|
||||
local function Frame_OnEnter(frame)
|
||||
UpdateHandleVisibility(frame.obj)
|
||||
end
|
||||
|
||||
local function ProgressBarHandle_OnUpdate(frame, elapsed)
|
||||
UpdateHandleColor(frame.obj)
|
||||
if not IsMouseButtonDown("LeftButton") then
|
||||
if frame.mouseDown then
|
||||
frame.obj:SetValue(frame.obj:GetValue(), true)
|
||||
frame.mouseDown = false
|
||||
end
|
||||
end
|
||||
if frame.mouseDown then
|
||||
frame.timeElapsed = frame.timeElapsed + elapsed
|
||||
if frame.timeElapsed > 0.1 then
|
||||
local currentX = GetCursorPosition()
|
||||
local deltaX = currentX - frame.startX
|
||||
deltaX = deltaX / frame.obj.editbox:GetEffectiveScale()
|
||||
|
||||
local p = deltaX / (frame.obj.frame:GetWidth() - 45 + progressExtraWidth)
|
||||
local delta = p * (frame.obj.max - frame.obj.min)
|
||||
local step = frame.obj.step
|
||||
local v = frame.originalValue + delta
|
||||
v = v - v % step
|
||||
v = Clamp(v, frame.obj.min, frame.obj.max)
|
||||
frame.obj:SetValue(v, false)
|
||||
frame.timeElapsed = 0
|
||||
end
|
||||
else
|
||||
UpdateHandleVisibility(frame.obj)
|
||||
end
|
||||
end
|
||||
|
||||
local function ProgressBarHandle_OnMouseDown(frame, button)
|
||||
if button ~= "LeftButton" then
|
||||
return
|
||||
end
|
||||
frame.startX = GetCursorPosition()
|
||||
frame.originalValue = frame.obj:GetValue()
|
||||
frame.timeElapsed = 0
|
||||
frame.mouseDown = true
|
||||
end
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Methods
|
||||
-------------------------------------------------------------------------------]]
|
||||
local methods = {
|
||||
["OnAcquire"] = function(self)
|
||||
self:SetWidth(200)
|
||||
self:SetHeight(44)
|
||||
self:SetDisabled(false)
|
||||
self:SetIsPercent(nil)
|
||||
self:SetSpinBoxValues(0, 100, 1)
|
||||
self:SetValue(0)
|
||||
self.progressOpacity = 0
|
||||
end,
|
||||
|
||||
["OnRelease"] = function(self)
|
||||
self:ClearFocus()
|
||||
end,
|
||||
|
||||
["OnWidthSet"] = function(self, width)
|
||||
UpdateProgressBar(self)
|
||||
end,
|
||||
|
||||
["SetDisabled"] = function(self, disabled)
|
||||
self.disabled = disabled
|
||||
if disabled then
|
||||
self.label:SetTextColor(0.5, 0.5, 0.5)
|
||||
self.editbox:SetTextColor(0.5, 0.5, 0.5)
|
||||
self.editbox:EnableMouse(false)
|
||||
self.editbox:ClearFocus()
|
||||
self.leftbutton:Disable()
|
||||
self.rightbutton:Disable()
|
||||
else
|
||||
self.label:SetTextColor(1, 0.82, 0)
|
||||
self.editbox:SetTextColor(1, 1, 1)
|
||||
self.editbox:EnableMouse(true)
|
||||
end
|
||||
end,
|
||||
|
||||
["SetValue"] = function(self, value, reload)
|
||||
self.value = value
|
||||
UpdateText(self)
|
||||
UpdateButtons(self)
|
||||
UpdateProgressBar(self)
|
||||
-- In AceOptions the range is treated differently from other widget types
|
||||
-- Whereas for other widgets OnValueChanged leads to a reload, this is done only
|
||||
-- on OnMouseUp for ranges. (Probably to not reload the options while dragging)
|
||||
if reload then
|
||||
self:Fire("OnMouseUp", value)
|
||||
else
|
||||
self:Fire("OnValueChanged", value)
|
||||
end
|
||||
end,
|
||||
|
||||
["GetValue"] = function(self)
|
||||
return self.value
|
||||
end,
|
||||
|
||||
["SetLabel"] = function(self, text)
|
||||
self.label:SetText(text)
|
||||
end,
|
||||
|
||||
["SetSliderValues"] = function(self, ...)
|
||||
self:SetSpinBoxValues(...)
|
||||
end,
|
||||
|
||||
["SetSpinBoxValues"] = function(self, min, max, step)
|
||||
self.min = min or 0
|
||||
self.max = max or 100
|
||||
self.step = step or 1
|
||||
UpdateButtons(self)
|
||||
UpdateProgressBar(self)
|
||||
end,
|
||||
|
||||
["SetIsPercent"] = function(self, value)
|
||||
self.ispercent = value
|
||||
UpdateText(self)
|
||||
end,
|
||||
|
||||
["ClearFocus"] = function(self)
|
||||
self.editbox:ClearFocus()
|
||||
end,
|
||||
|
||||
["SetFocus"] = function(self)
|
||||
self.editbox:SetFocus()
|
||||
self.progressBarHandle:Hide()
|
||||
end,
|
||||
}
|
||||
|
||||
--[[-----------------------------------------------------------------------------
|
||||
Constructor
|
||||
-------------------------------------------------------------------------------]]
|
||||
local function Constructor()
|
||||
local widgetName = ("%s%d"):format(Type, AceGUI:GetNextWidgetNum(Type)) -- Needs a name for 3.3.5 (InputBoxTemplate ($parent))
|
||||
|
||||
local frame = CreateFrame("Frame", widgetName, UIParent)
|
||||
frame:SetScript("OnEnter", Frame_OnEnter)
|
||||
|
||||
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
|
||||
label:SetPoint("TOPLEFT")
|
||||
label:SetPoint("TOPRIGHT")
|
||||
label:SetJustifyH("LEFT")
|
||||
label:SetHeight(18)
|
||||
|
||||
local leftbutton = CreateFrame("Button", nil, frame)
|
||||
leftbutton:SetSize(16, 16)
|
||||
leftbutton:SetNormalTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxleft")
|
||||
leftbutton:SetHighlightTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxlefth")
|
||||
leftbutton:SetPushedTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxleftp")
|
||||
leftbutton:SetDisabledTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxleftp")
|
||||
leftbutton:SetScript("OnClick", SpinBox_OnValueDown)
|
||||
|
||||
local rightbutton = CreateFrame("Button", nil, frame)
|
||||
rightbutton:SetSize(16, 16)
|
||||
rightbutton:SetNormalTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxright")
|
||||
rightbutton:SetHighlightTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxrighth")
|
||||
rightbutton:SetPushedTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxrightp")
|
||||
rightbutton:SetDisabledTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxrightp")
|
||||
rightbutton:SetScript("OnClick", SpinBox_OnValueUp)
|
||||
|
||||
local editbox = CreateFrame("EditBox", nil, frame, "InputBoxTemplate")
|
||||
editbox:SetAutoFocus(false)
|
||||
editbox:SetFontObject(ChatFontNormal)
|
||||
editbox:SetHeight(19)
|
||||
editbox:SetJustifyH("CENTER")
|
||||
editbox:EnableMouse(true)
|
||||
editbox:EnableMouseWheel(false)
|
||||
editbox:SetTextInsets(0, 0, 3, 3)
|
||||
editbox:SetScript("OnEnter", EditBox_OnEnter)
|
||||
editbox:SetScript("OnLeave", EditBox_OnLeave)
|
||||
editbox:SetScript("OnEnterPressed", EditBox_OnEnterPressed)
|
||||
editbox:SetScript("OnEscapePressed", EditBox_OnEscapePressed)
|
||||
editbox:SetScript("OnEditFocusGained", function(frame)
|
||||
AceGUI:SetFocus(frame.obj)
|
||||
UpdateHandleVisibility(frame.obj)
|
||||
end)
|
||||
editbox:SetScript("OnEditFocusLost", function(frame)
|
||||
UpdateHandleVisibility(frame.obj)
|
||||
end)
|
||||
|
||||
leftbutton:SetPoint("TOPLEFT", 2, -18)
|
||||
rightbutton:SetPoint("TOPRIGHT", -2, -18)
|
||||
editbox:SetPoint("LEFT", leftbutton, "RIGHT", 8, 0)
|
||||
editbox:SetPoint("RIGHT", rightbutton, "LEFT", -2, 0)
|
||||
|
||||
local progressBar = editbox:CreateTexture(nil, "ARTWORK", nil)
|
||||
progressBar:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\spinboxoverlay")
|
||||
progressBar:SetVertexColor(0.50, 0.50, 0.50, 1)
|
||||
progressBar:SetPoint("TOPLEFT", editbox, "TOPLEFT", progressLeftOffset, progressTopOffset)
|
||||
progressBar:SetPoint("BOTTOMLEFT", editbox, "BOTTOMLEFT", progressLeftOffset, progressBottomOffset)
|
||||
progressBar:SetWidth(0)
|
||||
|
||||
local progressBarHandle = CreateFrame("Frame", nil, editbox)
|
||||
progressBarHandle:SetPoint("TOP", progressBar, "TOP", 0, 2)
|
||||
progressBarHandle:SetPoint("BOTTOM", progressBar, "BOTTOM", 0, -2)
|
||||
progressBarHandle:SetPoint("LEFT", progressBar, "RIGHT", -4, 0)
|
||||
progressBarHandle:SetPoint("RIGHT", progressBar, "RIGHT", 4, 0)
|
||||
progressBarHandle:EnableMouse(true)
|
||||
progressBarHandle:Hide()
|
||||
progressBarHandle:SetScript("OnMouseDown", ProgressBarHandle_OnMouseDown)
|
||||
progressBarHandle:SetScript("OnUpdate", ProgressBarHandle_OnUpdate)
|
||||
|
||||
local progressBarHandleTexture = progressBarHandle:CreateTexture(nil, "ARTWORK")
|
||||
progressBarHandleTexture:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\Square_White")
|
||||
progressBarHandleTexture:SetVertexColor(0.8, 0.8, 0, 0.8)
|
||||
progressBarHandleTexture:SetPoint("TOPLEFT", progressBarHandle, "TOPLEFT", 2, -2)
|
||||
progressBarHandleTexture:SetPoint("BOTTOMRIGHT", progressBarHandle, "BOTTOMRIGHT", -2, 2)
|
||||
|
||||
local widget = {
|
||||
label = label,
|
||||
editbox = editbox,
|
||||
leftbutton = leftbutton,
|
||||
rightbutton = rightbutton,
|
||||
progressBar = progressBar,
|
||||
progressBarHandle = progressBarHandle,
|
||||
progressBarHandleTexture = progressBarHandleTexture,
|
||||
type = Type,
|
||||
frame = frame,
|
||||
}
|
||||
for method, func in pairs(methods) do
|
||||
widget[method] = func
|
||||
end
|
||||
editbox.obj, leftbutton.obj, rightbutton.obj, frame.obj, progressBarHandle.obj = widget, widget, widget, widget, widget
|
||||
|
||||
return AceGUI:RegisterAsWidget(widget)
|
||||
end
|
||||
|
||||
AceGUI:RegisterWidgetType(Type, Constructor, Version)
|
||||
@@ -102,8 +102,8 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
name = L["Message Type"],
|
||||
order = 2,
|
||||
values = OptionsPrivate.Private.send_chat_message_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.send_chat_message_types),
|
||||
disabled = function() return not data.actions.start.do_message end,
|
||||
control = "WeakAurasSortedDropdown"
|
||||
},
|
||||
start_message_warning = {
|
||||
type = "description",
|
||||
@@ -188,6 +188,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_sound_repeat = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Repeat After"],
|
||||
order = 8.2,
|
||||
@@ -209,8 +210,8 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
name = L["Sound"],
|
||||
order = 8.4,
|
||||
values = OptionsPrivate.Private.sound_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.sound_types),
|
||||
disabled = function() return not data.actions.start.do_sound end,
|
||||
control = "WeakAurasSortedDropdown"
|
||||
},
|
||||
start_sound_channel = {
|
||||
type = "select",
|
||||
@@ -344,6 +345,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_lines = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Lines & Particles"],
|
||||
order = 10.81,
|
||||
@@ -363,6 +365,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_frequency = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Frequency"],
|
||||
order = 10.82,
|
||||
@@ -382,6 +385,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_length = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Length"],
|
||||
order = 10.83,
|
||||
@@ -400,6 +404,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_thickness = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Thickness"],
|
||||
order = 10.84,
|
||||
@@ -418,6 +423,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_XOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X-Offset"],
|
||||
order = 10.85,
|
||||
@@ -434,6 +440,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_YOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y-Offset"],
|
||||
order = 10.86,
|
||||
@@ -450,6 +457,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
start_glow_scale = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Scale"],
|
||||
order = 10.87,
|
||||
@@ -503,8 +511,8 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
name = L["Message Type"],
|
||||
order = 22,
|
||||
values = OptionsPrivate.Private.send_chat_message_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.send_chat_message_types),
|
||||
disabled = function() return not data.actions.finish.do_message end,
|
||||
control = "WeakAurasSortedDropdown"
|
||||
},
|
||||
finish_message_warning = {
|
||||
type = "description",
|
||||
@@ -583,8 +591,8 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
name = L["Sound"],
|
||||
order = 28.1,
|
||||
values = OptionsPrivate.Private.sound_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.sound_types),
|
||||
disabled = function() return not data.actions.finish.do_sound end,
|
||||
control = "WeakAurasSortedDropdown"
|
||||
},
|
||||
finish_sound_channel = {
|
||||
type = "select",
|
||||
@@ -721,6 +729,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_lines = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Lines & Particles"],
|
||||
order = 30.81,
|
||||
@@ -740,6 +749,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_frequency = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Frequency"],
|
||||
order = 30.82,
|
||||
@@ -759,6 +769,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_length = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Length"],
|
||||
order = 30.83,
|
||||
@@ -777,6 +788,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_thickness = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Thickness"],
|
||||
order = 30.84,
|
||||
@@ -795,6 +807,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_XOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X-Offset"],
|
||||
order = 30.85,
|
||||
@@ -811,6 +824,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_YOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y-Offset"],
|
||||
order = 30.86,
|
||||
@@ -827,6 +841,7 @@ function OptionsPrivate.GetActionOptions(data)
|
||||
},
|
||||
finish_glow_scale = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Scale"],
|
||||
order = 30.87,
|
||||
|
||||
@@ -189,6 +189,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
start_easeStrength = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Ease Strength"],
|
||||
order = 33.8,
|
||||
@@ -216,6 +217,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- text editor added below
|
||||
start_alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Alpha"],
|
||||
order = 36,
|
||||
@@ -243,6 +245,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
start_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 40,
|
||||
@@ -254,6 +257,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
start_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 41,
|
||||
@@ -285,6 +289,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
start_scalex = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Scale"],
|
||||
order = 44,
|
||||
@@ -296,6 +301,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
start_scaley = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Scale"],
|
||||
order = 45,
|
||||
@@ -323,6 +329,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
start_rotate = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Angle"],
|
||||
order = 48,
|
||||
@@ -438,6 +445,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
main_easeStrength = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Ease Strength"],
|
||||
order = 53.8,
|
||||
@@ -465,6 +473,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
main_alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Alpha"],
|
||||
order = 56,
|
||||
@@ -492,6 +501,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
main_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 60,
|
||||
@@ -503,6 +513,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
main_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 61,
|
||||
@@ -530,6 +541,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
main_scalex = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Scale"],
|
||||
order = 64,
|
||||
@@ -541,6 +553,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
main_scaley = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Scale"],
|
||||
order = 65,
|
||||
@@ -568,6 +581,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- text editor added below
|
||||
main_rotate = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Angle"],
|
||||
order = 68,
|
||||
@@ -660,6 +674,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
finish_easeStrength = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Ease Strength"],
|
||||
order = 73.8,
|
||||
@@ -687,6 +702,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
finish_alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Alpha"],
|
||||
order = 76,
|
||||
@@ -714,6 +730,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
finish_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 80,
|
||||
@@ -725,6 +742,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
finish_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 81,
|
||||
@@ -752,6 +770,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
finish_scalex = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Scale"],
|
||||
order = 84,
|
||||
@@ -763,6 +782,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
},
|
||||
finish_scaley = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Scale"],
|
||||
order = 85,
|
||||
@@ -790,6 +810,7 @@ function OptionsPrivate.GetAnimationOptions(data)
|
||||
-- texteditor added below
|
||||
finish_rotate = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.doubleWidth,
|
||||
name = L["Angle"],
|
||||
order = 88,
|
||||
|
||||
@@ -606,6 +606,7 @@ typeControlAdders = {
|
||||
}
|
||||
args[prefix .. "length"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = name(option, "length", L["Length"]),
|
||||
desc = desc(option, "length"),
|
||||
@@ -682,6 +683,7 @@ typeControlAdders = {
|
||||
step = option.step
|
||||
args[prefix .. "default"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = name(option, "default", L["Default"]),
|
||||
desc = desc(option, "default"),
|
||||
@@ -948,6 +950,7 @@ typeControlAdders = {
|
||||
|
||||
args[prefix .. "height"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
order = order(),
|
||||
name = name(option, "height", L["Height"]),
|
||||
@@ -1202,6 +1205,7 @@ typeControlAdders = {
|
||||
}
|
||||
args[prefix .. "size"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
name = name(option, "limitType", option.limitType == "max" and L["Entry limit"] or L["Number of Entries"]),
|
||||
desc = desc(option, "limitType"),
|
||||
order = order(),
|
||||
@@ -1848,6 +1852,7 @@ function addAuthorModeOption(options, args, data, order, prefix, i)
|
||||
|
||||
args[prefix .. "width"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = name(option, "width", L["Width"]),
|
||||
desc = desc(option, "width"),
|
||||
|
||||
@@ -170,7 +170,19 @@ local function CreateNameOptions(aura_options, data, trigger, size, isExactSpell
|
||||
desc = desc,
|
||||
order = baseOrder + i / 100 + 0.0003,
|
||||
hidden = hiddenFunction,
|
||||
get = function(info) return trigger[optionKey] and trigger[optionKey][i] end,
|
||||
get = function(info)
|
||||
local rawString = trigger[optionKey] and trigger[optionKey][i]
|
||||
if not rawString then return "" end
|
||||
local spellID = WeakAuras.SafeToNumber(rawString)
|
||||
local spellName = spellID and GetSpellInfo(spellID)
|
||||
if spellName and spellID then
|
||||
return ("%s (%s)"):format(spellID, spellName) .. "\0" .. rawString
|
||||
elseif spellID then
|
||||
return ("%s (%s)"):format(rawString, L["Unknown Spell"]) .. "\0" .. rawString
|
||||
else
|
||||
return rawString .. "\0" .. rawString
|
||||
end
|
||||
end,
|
||||
set = function(info, v)
|
||||
trigger[optionKey] = trigger[optionKey] or {}
|
||||
if v == "" then
|
||||
@@ -179,10 +191,9 @@ local function CreateNameOptions(aura_options, data, trigger, size, isExactSpell
|
||||
if isExactSpellId then
|
||||
trigger[optionKey][i] = v
|
||||
else
|
||||
local spellId = tonumber(v)
|
||||
local _, spellId = WeakAuras.spellCache.CorrectAuraName(v)
|
||||
if spellId then
|
||||
WeakAuras.spellCache.CorrectAuraName(v)
|
||||
trigger[optionKey][i] = v
|
||||
trigger[optionKey][i] = tostring(spellId)
|
||||
else
|
||||
trigger[optionKey][i] = spellCache.BestKeyMatch(v)
|
||||
end
|
||||
@@ -193,7 +204,8 @@ local function CreateNameOptions(aura_options, data, trigger, size, isExactSpell
|
||||
WeakAuras.UpdateThumbnail(data)
|
||||
WeakAuras.ClearAndUpdateOptions(data.id)
|
||||
end,
|
||||
validate = isExactSpellId and WeakAuras.ValidateNumeric or nil
|
||||
validate = isExactSpellId and WeakAuras.ValidateNumeric or nil,
|
||||
control = "WeakAurasInputFocus",
|
||||
}
|
||||
end
|
||||
-- VALIDATE ?
|
||||
|
||||
@@ -212,14 +212,17 @@ function spellCache.CorrectAuraName(input)
|
||||
error("spellCache has not been loaded. Call WeakAuras.spellCache.Load(...) first.")
|
||||
end
|
||||
|
||||
local spellId = WeakAuras.SafeToNumber(input);
|
||||
local spellId = WeakAuras.SafeToNumber(input)
|
||||
if type(input) == "string" and input:find("|", nil, true) then
|
||||
spellId = WeakAuras.SafeToNumber(input:match("|Hspell:(%d+)"))
|
||||
end
|
||||
if(spellId) then
|
||||
local name, _, icon = GetSpellInfo(spellId);
|
||||
if(name) then
|
||||
spellCache.AddIcon(name, spellId, icon)
|
||||
return name, spellId;
|
||||
else
|
||||
return "Invalid Spell ID";
|
||||
return "Invalid Spell ID", spellId;
|
||||
end
|
||||
else
|
||||
local ret = spellCache.BestKeyMatch(input);
|
||||
|
||||
@@ -949,11 +949,24 @@ local function CreateSetAll(subOption, getAll)
|
||||
|
||||
if (childOption and not disabledOrHiddenChild(childOptionTable, info)) then
|
||||
for i=#childOptionTable,0,-1 do
|
||||
if(childOptionTable[i].set) then
|
||||
if (childOptionTable[i].type == "multiselect") then
|
||||
childOptionTable[i].set(info, ..., not before);
|
||||
local optionTable = childOptionTable[i]
|
||||
if(optionTable.set) then
|
||||
if (optionTable.type == "multiselect") then
|
||||
local newValue
|
||||
if optionTable.multiTristate then
|
||||
if before == true then
|
||||
newValue = false
|
||||
elseif before == false then
|
||||
newValue = nil
|
||||
elseif before == nil then
|
||||
newValue = true
|
||||
end
|
||||
else
|
||||
newValue = not before
|
||||
end
|
||||
optionTable.set(info, ..., newValue)
|
||||
else
|
||||
childOptionTable[i].set(info, ...);
|
||||
optionTable.set(info, ...);
|
||||
end
|
||||
break;
|
||||
end
|
||||
@@ -1012,6 +1025,7 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
__order = metaOrder,
|
||||
width = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Width"],
|
||||
order = 60,
|
||||
@@ -1023,6 +1037,7 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
},
|
||||
height = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Height"],
|
||||
order = 61,
|
||||
@@ -1032,62 +1047,44 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
bigStep = 1,
|
||||
hidden = hideWidthHeight,
|
||||
},
|
||||
xOffset = {
|
||||
type = "range",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 62,
|
||||
softMin = (-1 * screenWidth),
|
||||
min = (-4 * screenWidth),
|
||||
softMax = screenWidth,
|
||||
max = 4 * screenWidth,
|
||||
bigStep = 10,
|
||||
get = function() return data.xOffset end,
|
||||
set = function(info, v)
|
||||
data.xOffset = v;
|
||||
WeakAuras.Add(data);
|
||||
WeakAuras.UpdateThumbnail(data);
|
||||
OptionsPrivate.ResetMoverSizer();
|
||||
OptionsPrivate.Private.AddParents(data)
|
||||
end
|
||||
},
|
||||
yOffset = {
|
||||
type = "range",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 63,
|
||||
softMin = (-1 * screenHeight),
|
||||
min = (-4 * screenHeight),
|
||||
softMax = screenHeight,
|
||||
max = 4 * screenHeight,
|
||||
bigStep = 10,
|
||||
get = function() return data.yOffset end,
|
||||
set = function(info, v)
|
||||
data.yOffset = v;
|
||||
WeakAuras.Add(data);
|
||||
WeakAuras.UpdateThumbnail(data);
|
||||
OptionsPrivate.ResetMoverSizer();
|
||||
OptionsPrivate.Private.AddParents(data)
|
||||
end
|
||||
},
|
||||
selfPoint = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Anchor"],
|
||||
order = 70,
|
||||
hidden = IsParentDynamicGroup,
|
||||
values = OptionsPrivate.Private.point_types,
|
||||
disabled = disableSelfPoint,
|
||||
},
|
||||
anchorFrameType = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Anchored To"],
|
||||
order = 72,
|
||||
order = 70,
|
||||
hidden = function()
|
||||
return IsParentDynamicGroup() or IsGroupByFrame()
|
||||
end,
|
||||
values = (data.regionType == "group" or data.regionType == "dynamicgroup") and OptionsPrivate.Private.anchor_frame_types_group or OptionsPrivate.Private.anchor_frame_types,
|
||||
values = (data.regionType == "group" or data.regionType == "dynamicgroup")
|
||||
and OptionsPrivate.Private.anchor_frame_types_group
|
||||
or OptionsPrivate.Private.anchor_frame_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(
|
||||
(data.regionType == "group" or data.regionType == "dynamicgroup")
|
||||
and OptionsPrivate.Private.anchor_frame_types_group
|
||||
or OptionsPrivate.Private.anchor_frame_types),
|
||||
},
|
||||
anchorFrameParent = {
|
||||
type = "toggle",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Set Parent to Anchor"],
|
||||
desc = L["Sets the anchored frame as the aura's parent, causing the aura to inherit attributes such as visibility and scale."],
|
||||
order = 71,
|
||||
get = function()
|
||||
return data.anchorFrameParent or data.anchorFrameParent == nil;
|
||||
end,
|
||||
hidden = function()
|
||||
return (data.anchorFrameType == "SCREEN" or data.anchorFrameType == "MOUSE" or IsParentDynamicGroup());
|
||||
end,
|
||||
},
|
||||
anchorFrameSpaceOne = {
|
||||
type = "execute",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = "",
|
||||
order = 72,
|
||||
image = function() return "", 0, 0 end,
|
||||
hidden = function()
|
||||
return IsParentDynamicGroup() or IsGroupByFrame() or not (data.anchorFrameType == "SCREEN" or data.anchorFrameType == "MOUSE")
|
||||
end,
|
||||
},
|
||||
-- Input field to select frame to anchor on
|
||||
anchorFrameFrame = {
|
||||
@@ -1107,7 +1104,7 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
type = "execute",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Choose"],
|
||||
order = 72.4,
|
||||
order = 74,
|
||||
hidden = function()
|
||||
if (IsParentDynamicGroup()) then
|
||||
return true;
|
||||
@@ -1118,6 +1115,16 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
OptionsPrivate.StartFrameChooser(data, {"anchorFrameFrame"});
|
||||
end
|
||||
},
|
||||
selfPoint = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Anchor"],
|
||||
order = 75,
|
||||
hidden = IsParentDynamicGroup,
|
||||
values = OptionsPrivate.Private.point_types,
|
||||
disabled = disableSelfPoint,
|
||||
control = "WeakAurasAnchorButtons",
|
||||
},
|
||||
anchorPoint = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
@@ -1130,7 +1137,7 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
return L["To Frame's"];
|
||||
end
|
||||
end,
|
||||
order = 75,
|
||||
order = 76,
|
||||
hidden = function()
|
||||
if (data.parent) then
|
||||
if IsGroupByFrame() then
|
||||
@@ -1141,13 +1148,14 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
return data.anchorFrameType == "MOUSE";
|
||||
end
|
||||
end,
|
||||
values = OptionsPrivate.Private.point_types
|
||||
values = OptionsPrivate.Private.point_types,
|
||||
control = "WeakAurasAnchorButtons",
|
||||
},
|
||||
anchorPointGroup = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["To Group's"],
|
||||
order = 76,
|
||||
order = 77,
|
||||
hidden = function()
|
||||
if IsGroupByFrame() then
|
||||
return true
|
||||
@@ -1162,33 +1170,70 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
end,
|
||||
disabled = true,
|
||||
values = {["CENTER"] = L["Anchor Point"]},
|
||||
get = function() return "CENTER"; end
|
||||
get = function() return "CENTER"; end,
|
||||
control = "WeakAurasAnchorButtons",
|
||||
},
|
||||
anchorFrameParent = {
|
||||
type = "toggle",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Set Parent to Anchor"],
|
||||
desc = L["Sets the anchored frame as the aura's parent, causing the aura to inherit attributes such as visibility and scale."],
|
||||
order = 77,
|
||||
get = function()
|
||||
return data.anchorFrameParent or data.anchorFrameParent == nil;
|
||||
end,
|
||||
anchorFramePoints = {
|
||||
type = "execute",
|
||||
name = "",
|
||||
order = 78,
|
||||
image = function() return "", 0, 0 end,
|
||||
hidden = function()
|
||||
return (data.anchorFrameType == "SCREEN" or data.anchorFrameType == "MOUSE" or IsParentDynamicGroup());
|
||||
end,
|
||||
return not (data.anchorFrameType == "MOUSE") or IsParentDynamicGroup();
|
||||
end
|
||||
},
|
||||
xOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 79,
|
||||
softMin = (-1 * screenWidth),
|
||||
min = (-4 * screenWidth),
|
||||
softMax = screenWidth,
|
||||
max = 4 * screenWidth,
|
||||
bigStep = 10,
|
||||
get = function() return data.xOffset end,
|
||||
set = function(info, v)
|
||||
data.xOffset = v;
|
||||
WeakAuras.Add(data);
|
||||
WeakAuras.UpdateThumbnail(data);
|
||||
OptionsPrivate.ResetMoverSizer();
|
||||
OptionsPrivate.Private.AddParents(data)
|
||||
end
|
||||
},
|
||||
yOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 80,
|
||||
softMin = (-1 * screenHeight),
|
||||
min = (-4 * screenHeight),
|
||||
softMax = screenHeight,
|
||||
max = 4 * screenHeight,
|
||||
bigStep = 10,
|
||||
get = function() return data.yOffset end,
|
||||
set = function(info, v)
|
||||
data.yOffset = v;
|
||||
WeakAuras.Add(data);
|
||||
WeakAuras.UpdateThumbnail(data);
|
||||
OptionsPrivate.ResetMoverSizer();
|
||||
OptionsPrivate.Private.AddParents(data)
|
||||
end
|
||||
},
|
||||
frameStrata = {
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Frame Strata"],
|
||||
order = 78,
|
||||
order = 81,
|
||||
values = OptionsPrivate.Private.frame_strata_types
|
||||
},
|
||||
anchorFrameSpace = {
|
||||
type = "execute",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = "",
|
||||
order = 79,
|
||||
order = 82,
|
||||
image = function() return "", 0, 0 end,
|
||||
hidden = function()
|
||||
return not (data.anchorFrameType ~= "SCREEN" or IsParentDynamicGroup());
|
||||
@@ -1197,7 +1242,7 @@ local function PositionOptions(id, data, _, hideWidthHeight, disableSelfPoint, g
|
||||
};
|
||||
|
||||
OptionsPrivate.commonOptions.AddCodeOption(positionOptions, data, L["Custom Anchor"], "custom_anchor", "https://github.com/WeakAuras/WeakAuras2/wiki/Custom-Code-Blocks#custom-anchor-function",
|
||||
72.1, function() return not(data.anchorFrameType == "CUSTOM" and not IsParentDynamicGroup()) end, {"customAnchor"}, false, { setOnParent = group })
|
||||
71.5, function() return not(data.anchorFrameType == "CUSTOM" and not IsParentDynamicGroup()) end, {"customAnchor"}, false, { setOnParent = group })
|
||||
return positionOptions;
|
||||
end
|
||||
|
||||
@@ -1236,6 +1281,7 @@ local function BorderOptions(id, data, showBackDropOptions, hiddenFunc, order)
|
||||
},
|
||||
borderOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Border Offset"],
|
||||
order = order + 0.3,
|
||||
@@ -1246,6 +1292,7 @@ local function BorderOptions(id, data, showBackDropOptions, hiddenFunc, order)
|
||||
},
|
||||
borderSize = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Border Size"],
|
||||
order = order + 0.4,
|
||||
@@ -1256,6 +1303,7 @@ local function BorderOptions(id, data, showBackDropOptions, hiddenFunc, order)
|
||||
},
|
||||
borderInset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Border Inset"],
|
||||
order = order + 0.5,
|
||||
@@ -1443,6 +1491,7 @@ local function AddCommonTriggerOptions(options, data, triggernum, doubleWidth)
|
||||
desc = L["The type of trigger"],
|
||||
order = 1.1,
|
||||
values = trigger_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(trigger_types),
|
||||
get = function(info)
|
||||
return trigger.type
|
||||
end,
|
||||
@@ -1458,7 +1507,6 @@ local function AddCommonTriggerOptions(options, data, triggernum, doubleWidth)
|
||||
WeakAuras.UpdateThumbnail(data);
|
||||
WeakAuras.ClearAndUpdateOptions(data.id);
|
||||
end,
|
||||
control = "WeakAurasSortedDropdown"
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -458,6 +458,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
local properties = allProperties.propertyMap[property];
|
||||
if (properties.min or properties.softMin) and (properties.max or properties.softMax) then
|
||||
args["condition" .. i .. "value" .. j].type = "range";
|
||||
args["condition" .. i .. "value" .. j].control = "WeakAurasSpinBox"
|
||||
args["condition" .. i .. "value" .. j].min = properties.min;
|
||||
args["condition" .. i .. "value" .. j].softMin = properties.softMin;
|
||||
args["condition" .. i .. "value" .. j].max = properties.max;
|
||||
@@ -571,6 +572,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
values = OptionsPrivate.Private.sound_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.sound_types),
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "sound", L["Differences"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "sound", propertyType, OptionsPrivate.Private.sound_types),
|
||||
order = order,
|
||||
@@ -578,7 +580,6 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value.sound;
|
||||
end,
|
||||
set = wrapWithPlaySound(setValueComplex("sound")),
|
||||
control = "WeakAurasSortedDropdown",
|
||||
hidden = function() return not (anySoundType("Play") or anySoundType("Loop")) end
|
||||
}
|
||||
order = order + 1;
|
||||
@@ -600,6 +601,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
|
||||
args["condition" .. i .. "value" .. j .. "sound_repeat"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
min = 0,
|
||||
softMax = 60,
|
||||
@@ -674,6 +676,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
type = "select",
|
||||
width = WeakAuras.normalWidth,
|
||||
values = OptionsPrivate.Private.send_chat_message_types,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.send_chat_message_types),
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "message_type", L["Differences"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "message_type", propertyType, OptionsPrivate.Private.send_chat_message_types),
|
||||
order = order,
|
||||
@@ -681,7 +684,6 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
return type(conditions[i].changes[j].value) == "table" and conditions[i].changes[j].value.message_type;
|
||||
end,
|
||||
set = setValueComplex("message_type"),
|
||||
control = "WeakAurasSortedDropdown"
|
||||
}
|
||||
order = order + 1;
|
||||
|
||||
@@ -1148,6 +1150,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_lines"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_lines", L["Lines & Particles"], L["Lines & Particles"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_lines", propertyType),
|
||||
@@ -1166,6 +1169,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_frequency"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_frequency", L["Frequency"], L["Frequency"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_frequency", propertyType),
|
||||
@@ -1184,6 +1188,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_length"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_length", L["Length"], L["Length"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_length", propertyType),
|
||||
@@ -1202,6 +1207,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_thickness"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_thickness", L["Thickness"], L["Thickness"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_thickness", propertyType),
|
||||
@@ -1220,6 +1226,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_XOffset"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_XOffset", L["X-Offset"], L["X-Offset"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_XOffset", propertyType),
|
||||
@@ -1238,6 +1245,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_YOffset"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_YOffset", L["Y-Offset"], L["Y-Offset"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_YOffset", propertyType),
|
||||
@@ -1256,6 +1264,7 @@ local function addControlsForChange(args, order, data, conditionVariable, totalA
|
||||
order = order + 1
|
||||
args["condition" .. i .. "value" .. j .. "glow_scale"] = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = blueIfNoValue2(data, conditions[i].changes[j], "value", "glow_scale", L["Scale"], L["Scale"]),
|
||||
desc = descIfNoValue2(data, conditions[i].changes[j], "value", "glow_scale", propertyType),
|
||||
|
||||
@@ -150,6 +150,12 @@ function OptionsPrivate.GetDisplayOptions(data)
|
||||
|
||||
local options = flattenRegionOptions(regionOption, true)
|
||||
|
||||
for _, option in pairs(options) do
|
||||
if option.type == "range" then
|
||||
option.control = "WeakAurasSpinBox"
|
||||
end
|
||||
end
|
||||
|
||||
local region = {
|
||||
type = "group",
|
||||
name = L["Display"],
|
||||
|
||||
@@ -412,9 +412,8 @@ local function GetGenericTriggerOptions(data, triggernum)
|
||||
name = "",
|
||||
order = 7.1,
|
||||
width = WeakAuras.normalWidth,
|
||||
values = function()
|
||||
return subtypes
|
||||
end,
|
||||
values = subtypes,
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(subtypes),
|
||||
get = function(info)
|
||||
return trigger.event
|
||||
end,
|
||||
@@ -423,7 +422,6 @@ local function GetGenericTriggerOptions(data, triggernum)
|
||||
WeakAuras.Add(data)
|
||||
WeakAuras.ClearAndUpdateOptions(data.id)
|
||||
end,
|
||||
control = "WeakAurasSortedDropdown",
|
||||
}
|
||||
end
|
||||
|
||||
@@ -439,7 +437,7 @@ local function GetGenericTriggerOptions(data, triggernum)
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 8,
|
||||
values = OptionsPrivate.Private.subevent_prefix_types,
|
||||
control = "WeakAurasSortedDropdown",
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.subevent_prefix_types),
|
||||
hidden = function() return not (trigger.type == combatLogCategory and trigger.event == "Combat Log"); end,
|
||||
get = function(info)
|
||||
return trigger.subeventPrefix
|
||||
@@ -455,7 +453,7 @@ local function GetGenericTriggerOptions(data, triggernum)
|
||||
name = L["Message Suffix"],
|
||||
order = 9,
|
||||
values = OptionsPrivate.Private.subevent_suffix_types,
|
||||
control = "WeakAurasSortedDropdown",
|
||||
sorting = OptionsPrivate.Private.SortOrderForValues(OptionsPrivate.Private.subevent_suffix_types),
|
||||
hidden = function() return not (trigger.type == combatLogCategory and trigger.event == "Combat Log" and OptionsPrivate.Private.subevent_actual_prefix_types[trigger.subeventPrefix]); end,
|
||||
get = function(info)
|
||||
return trigger.subeventSuffix
|
||||
|
||||
+810
-552
File diff suppressed because it is too large
Load Diff
@@ -428,6 +428,8 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event(s)"] = "Ereignis(se)"
|
||||
L["Everything"] = "Alles"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Item Match"] = "Exact Item Match"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell ID(s)"] = "Exact Spell ID(s)"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell Match"] = "Exact Spell Match"
|
||||
@@ -1059,6 +1061,8 @@ Nur ein Wert kann ausgewählt werden.]=]
|
||||
L["UnitName Filter"] = "UnitName Filter"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown Spell"] = "Unknown Spell"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Anders als die Start- und Endanimation wird die Hauptanimation immer wieder wiederholt, bis die Anzeige in den Endstatus versetzt wird."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -448,6 +448,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event(s)"] = "Event(s)"
|
||||
--[[Translation missing --]]
|
||||
L["Everything"] = "Everything"
|
||||
L["Exact Item Match"] = "Coincidencia exacta de objeto"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell ID(s)"] = "Exact Spell ID(s)"
|
||||
--[[Translation missing --]]
|
||||
@@ -1202,6 +1203,7 @@ Sólo un valor coincidente puede ser escogido.]=]
|
||||
L["UnitName Filter"] = "UnitName Filter"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
L["Unknown Spell"] = "Hechizo desconocido"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Ignorar animaciones de inicio y final: la animación principal se repetirá hasta que el aura se oculte."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -424,6 +424,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event(s)"] = "Evento(s)"
|
||||
--[[Translation missing --]]
|
||||
L["Everything"] = "Everything"
|
||||
L["Exact Item Match"] = "Coincidencia exacta de objeto"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell ID(s)"] = "Exact Spell ID(s)"
|
||||
--[[Translation missing --]]
|
||||
@@ -1111,6 +1112,7 @@ Sólo un valor coincidente puede ser escogido.]=]
|
||||
L["UnitName Filter"] = "UnitName Filter"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
L["Unknown Spell"] = "Hechizo desconocido"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Ignorar animaciones de inicio y final: la animación principal se repetirá hasta que el aura se oculte."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -365,6 +365,8 @@ Ne sautez pas cette version]=]
|
||||
L["Event Type"] = "Type d'évènement"
|
||||
L["Event(s)"] = "Évènement(s)"
|
||||
L["Everything"] = "Tous"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Item Match"] = "Exact Item Match"
|
||||
L["Exact Spell ID(s)"] = "ID(s) de sort exact(s)"
|
||||
L["Exact Spell Match"] = "Correspondance Exacte du Sort"
|
||||
L["Expand"] = "Agrandir"
|
||||
@@ -920,6 +922,8 @@ Seule une unique valeur peut être choisie]=]
|
||||
L["UnitName Filter"] = "UnitName Filter"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown Spell"] = "Unknown Spell"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Contrairement aux animations de début et de fin, l'animation principale bouclera tant que l'affichage est visible."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -460,6 +460,8 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
--[[Translation missing --]]
|
||||
L["Everything"] = "Everything"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Item Match"] = "Exact Item Match"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell ID(s)"] = "Exact Spell ID(s)"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell Match"] = "Exact Spell Match"
|
||||
@@ -1310,6 +1312,8 @@ Supports multiple entries, separated by commas
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown Spell"] = "Unknown Spell"
|
||||
--[[Translation missing --]]
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -358,6 +358,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event Type"] = "이벤트 유형"
|
||||
L["Event(s)"] = "이벤트"
|
||||
L["Everything"] = "모두"
|
||||
L["Exact Item Match"] = "정확한 아이템 일치"
|
||||
L["Exact Spell ID(s)"] = "정확한 주문 ID"
|
||||
L["Exact Spell Match"] = "정확한 주문 일치"
|
||||
L["Expand"] = "확장"
|
||||
@@ -864,6 +865,7 @@ Supports multiple entries, separated by commas
|
||||
L["UnitName Filter"] = "유닛명 필터"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
L["Unknown Spell"] = "알 수 없는 주문"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "시작 또는 종료 애니메이션과 달리 메인 애니메이션은 디스플레이가 숨겨질 때까지 계속 반복됩니다."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -403,6 +403,8 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
--[[Translation missing --]]
|
||||
L["Everything"] = "Everything"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Item Match"] = "Exact Item Match"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell ID(s)"] = "Exact Spell ID(s)"
|
||||
--[[Translation missing --]]
|
||||
L["Exact Spell Match"] = "Exact Spell Match"
|
||||
@@ -1176,6 +1178,8 @@ Supports multiple entries, separated by commas
|
||||
--[[Translation missing --]]
|
||||
L["Unknown property '%s' found in '%s'"] = "Unknown property '%s' found in '%s'"
|
||||
--[[Translation missing --]]
|
||||
L["Unknown Spell"] = "Unknown Spell"
|
||||
--[[Translation missing --]]
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."
|
||||
--[[Translation missing --]]
|
||||
L["Update %s by %s"] = "Update %s by %s"
|
||||
|
||||
@@ -428,6 +428,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event Type"] = "Тип триггера"
|
||||
L["Event(s)"] = "События"
|
||||
L["Everything"] = "Всех вкладок"
|
||||
L["Exact Item Match"] = "Точное совпадение"
|
||||
L["Exact Spell ID(s)"] = "ID заклинания"
|
||||
L["Exact Spell Match"] = "Точное совпадение"
|
||||
L["Expand"] = "Развернуть"
|
||||
@@ -876,6 +877,7 @@ Supports multiple entries, separated by commas
|
||||
L["Unit Name Filter"] = "Фильтр по имени единицы"
|
||||
L["UnitName Filter"] = "Фильтр по имени единицы"
|
||||
L["Unknown property '%s' found in '%s'"] = "Неизвестное свойство %s в переменной %s."
|
||||
L["Unknown Spell"] = "Неизвестное заклинание"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "В отличие от начальной или конечной анимации, основная зациклена и будет повторяться пока индикация не пропадет."
|
||||
L["Update %s by %s"] = "Обновить %s (автор %s)"
|
||||
L["Update Auras"] = "Обновить индикации"
|
||||
|
||||
@@ -309,6 +309,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event Type"] = "事件类型"
|
||||
L["Event(s)"] = "事件(复数)"
|
||||
L["Everything"] = "全部"
|
||||
L["Exact Item Match"] = "严格物品匹配"
|
||||
L["Exact Spell ID(s)"] = "精确法术 ID"
|
||||
L["Exact Spell Match"] = "严格法术匹配"
|
||||
L["Expand"] = "展开"
|
||||
@@ -746,6 +747,7 @@ Supports multiple entries, separated by commas
|
||||
L["Unit Name Filter"] = "单位名称过滤方式"
|
||||
L["UnitName Filter"] = "单位名称过滤"
|
||||
L["Unknown property '%s' found in '%s'"] = "发现'%2$s'的未知属性'%1$s'"
|
||||
L["Unknown Spell"] = "未知法术"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "不同于开始或结束动画,主动画将不停循环,直到图示被隐藏。"
|
||||
L["Update %s by %s"] = "更新%s,来自%s"
|
||||
L["Update Auras"] = "更新光环"
|
||||
|
||||
@@ -310,6 +310,7 @@ UNIT_POWER_UPDATE:player, UNIT_AURA:nameplate:group PLAYER_TARGET_CHANGED CLEU:S
|
||||
L["Event Type"] = "事件類型"
|
||||
L["Event(s)"] = "事件"
|
||||
L["Everything"] = "全部"
|
||||
L["Exact Item Match"] = "完全符合物品"
|
||||
L["Exact Spell ID(s)"] = "正確的法術 ID"
|
||||
L["Exact Spell Match"] = "完全符合法術"
|
||||
L["Expand"] = "展開"
|
||||
@@ -748,6 +749,7 @@ Supports multiple entries, separated by commas
|
||||
L["Unit Name Filter"] = "單位名字過濾方式"
|
||||
L["UnitName Filter"] = "單位名字過濾方式"
|
||||
L["Unknown property '%s' found in '%s'"] = "發現未知屬性 '%s',在 '%s'"
|
||||
L["Unknown Spell"] = "未知的法術"
|
||||
L["Unlike the start or finish animations, the main animation will loop over and over until the display is hidden."] = "不同於開始或結束時的動畫,主要動畫將重複循環直到提醒效果被隱藏。"
|
||||
L["Update %s by %s"] = "更新 %s 透過 %s"
|
||||
L["Update Auras"] = "更新提醒效果"
|
||||
|
||||
@@ -102,6 +102,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Bar Alpha"],
|
||||
order = 39.3,
|
||||
@@ -206,6 +207,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
zoom = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Zoom"],
|
||||
order = 40.91,
|
||||
@@ -292,6 +294,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sparkWidth = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Width"],
|
||||
order = 44.6,
|
||||
@@ -303,6 +306,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sparkHeight = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Height"],
|
||||
order = 44.7,
|
||||
@@ -314,6 +318,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sparkOffsetX = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
order = 44.8,
|
||||
@@ -325,6 +330,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sparkOffsetY = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 44.9,
|
||||
@@ -345,6 +351,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sparkRotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
min = 0,
|
||||
|
||||
@@ -207,6 +207,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Start Angle"],
|
||||
order = 5,
|
||||
@@ -224,6 +225,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
arcLength = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Total Angle"],
|
||||
order = 8,
|
||||
@@ -235,6 +237,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
radius = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Radius"],
|
||||
order = 9,
|
||||
@@ -260,6 +263,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
gridWidth = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = function()
|
||||
if not data.gridType then return "" end
|
||||
@@ -277,6 +281,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
rowSpace = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
name = L["Row Space"],
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 10,
|
||||
@@ -287,6 +292,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
columnSpace = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
name = L["Column Space"],
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 11,
|
||||
@@ -298,6 +304,7 @@ local function createOptions(id, data)
|
||||
-- generic grow options
|
||||
space = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Space"],
|
||||
order = 7,
|
||||
@@ -312,6 +319,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
stagger = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Stagger"],
|
||||
order = 8,
|
||||
@@ -387,6 +395,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
limit = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
order = 26,
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Limit"],
|
||||
@@ -404,6 +413,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
scale = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Group Scale"],
|
||||
order = 28,
|
||||
|
||||
@@ -190,6 +190,7 @@ local function createDistributeAlignOptions(id, data)
|
||||
},
|
||||
distribute_h = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Distribute Horizontally"],
|
||||
order = 20,
|
||||
@@ -273,6 +274,7 @@ local function createDistributeAlignOptions(id, data)
|
||||
},
|
||||
distribute_v = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Distribute Vertically"],
|
||||
order = 25,
|
||||
@@ -356,6 +358,7 @@ local function createDistributeAlignOptions(id, data)
|
||||
},
|
||||
space_h = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Space Horizontally"],
|
||||
order = 30,
|
||||
@@ -439,6 +442,7 @@ local function createDistributeAlignOptions(id, data)
|
||||
},
|
||||
space_v = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Space Vertically"],
|
||||
order = 35,
|
||||
@@ -560,6 +564,7 @@ local function createOptions(id, data)
|
||||
-- Alignment/Distribute options are added below
|
||||
scale = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Group Scale"],
|
||||
order = 45,
|
||||
|
||||
@@ -124,6 +124,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Alpha"],
|
||||
order = 7.03,
|
||||
@@ -135,6 +136,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
zoom = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Zoom"],
|
||||
order = 7.04,
|
||||
@@ -153,6 +155,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
iconInset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Icon Inset"],
|
||||
order = 7.06,
|
||||
|
||||
@@ -39,6 +39,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
sequence = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Animation Sequence"],
|
||||
min = 0,
|
||||
@@ -50,6 +51,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
model_z = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Z Offset"],
|
||||
softMin = -20,
|
||||
@@ -60,6 +62,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
model_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
softMin = -20,
|
||||
@@ -70,6 +73,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
model_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
softMin = -20,
|
||||
@@ -80,6 +84,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
min = 0,
|
||||
|
||||
@@ -94,6 +94,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
backgroundOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Background Offset"],
|
||||
min = 0,
|
||||
@@ -137,6 +138,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
user_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 42,
|
||||
name = L["Re-center X"],
|
||||
@@ -147,6 +149,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
user_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 44,
|
||||
name = L["Re-center Y"],
|
||||
@@ -157,6 +160,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
startAngle = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 42,
|
||||
name = L["Start Angle"],
|
||||
@@ -167,6 +171,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
endAngle = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 44,
|
||||
name = L["End Angle"],
|
||||
@@ -177,6 +182,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
crop_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Crop X"],
|
||||
order = 46,
|
||||
@@ -194,6 +200,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
crop_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Crop Y"],
|
||||
order = 47,
|
||||
@@ -211,6 +218,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
order = 52,
|
||||
@@ -220,6 +228,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Alpha"],
|
||||
order = 48,
|
||||
@@ -244,6 +253,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
slant = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Slant Amount"],
|
||||
order = 55.4,
|
||||
|
||||
@@ -281,6 +281,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
startPercent = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Animation Start"],
|
||||
min = 0,
|
||||
@@ -291,6 +292,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
endPercent = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Animation End"],
|
||||
min = 0,
|
||||
@@ -301,6 +303,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
frameRate = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Frame Rate"],
|
||||
min = 3,
|
||||
@@ -518,6 +521,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
backgroundPercent = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Selected Frame"],
|
||||
min = 0,
|
||||
|
||||
@@ -55,6 +55,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
fontSize = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Size"],
|
||||
order = 46,
|
||||
@@ -153,6 +154,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
shadowXOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Shadow X Offset"],
|
||||
softMin = -15,
|
||||
@@ -163,6 +165,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
shadowYOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Shadow Y Offset"],
|
||||
softMin = -15,
|
||||
@@ -215,6 +218,7 @@ local function createOptions(id, data)
|
||||
width = WeakAuras.normalWidth,
|
||||
order = 49.1,
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
min = 1,
|
||||
softMax = screenWidth,
|
||||
bigStep = 1,
|
||||
|
||||
@@ -69,6 +69,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Alpha"],
|
||||
order = 25,
|
||||
@@ -85,6 +86,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
min = 0,
|
||||
@@ -96,6 +98,7 @@ local function createOptions(id, data)
|
||||
},
|
||||
discrete_rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Discrete Rotation"],
|
||||
min = 0,
|
||||
|
||||
@@ -33,6 +33,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
border_offset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Border Offset"],
|
||||
order = 5,
|
||||
@@ -42,6 +43,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
border_size = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Border Size"],
|
||||
order = 6,
|
||||
|
||||
@@ -134,6 +134,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowLines = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Lines & Particles"],
|
||||
order = 9,
|
||||
@@ -144,6 +145,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowFrequency = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Frequency"],
|
||||
order = 10,
|
||||
@@ -161,6 +163,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowLength = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Length"],
|
||||
order = 12,
|
||||
@@ -171,6 +174,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowThickness = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Thickness"],
|
||||
order = 13,
|
||||
@@ -188,6 +192,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowXOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["X-Offset"],
|
||||
order = 15,
|
||||
@@ -198,6 +203,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowYOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y-Offset"],
|
||||
order = 16,
|
||||
@@ -215,6 +221,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
glowScale = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Scale"],
|
||||
order = 18,
|
||||
|
||||
@@ -42,6 +42,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
extra_width = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Extra Width"],
|
||||
order = 12.1,
|
||||
@@ -52,6 +53,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
extra_height = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Extra Height"],
|
||||
order = 12.2,
|
||||
@@ -62,6 +64,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
model_alpha = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Alpha"],
|
||||
order = 13,
|
||||
@@ -71,6 +74,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
model_z = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Z Offset"],
|
||||
softMin = -20,
|
||||
@@ -81,6 +85,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
model_x = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["X Offset"],
|
||||
softMin = -20,
|
||||
@@ -91,6 +96,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
model_y = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
softMin = -20,
|
||||
@@ -101,6 +107,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
min = 0,
|
||||
|
||||
@@ -68,6 +68,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
text_fontSize = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Size"],
|
||||
order = 14,
|
||||
@@ -159,6 +160,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
text_shadowXOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["Shadow X Offset"],
|
||||
softMin = -15,
|
||||
@@ -169,6 +171,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
text_shadowYOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Shadow Y Offset"],
|
||||
softMin = -15,
|
||||
@@ -227,6 +230,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
order = 53,
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
min = 1,
|
||||
softMax = 200,
|
||||
bigStep = 1,
|
||||
@@ -353,6 +357,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
|
||||
options.text_anchorXOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth - indentWidth,
|
||||
name = L["X Offset"],
|
||||
order = 60.4,
|
||||
@@ -364,6 +369,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
|
||||
options.text_anchorYOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Y Offset"],
|
||||
order = 60.5,
|
||||
|
||||
@@ -43,6 +43,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
tick_thickness = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Thickness"],
|
||||
order = 5,
|
||||
@@ -107,6 +108,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
tick_length = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Length"],
|
||||
order = 8,
|
||||
@@ -170,6 +172,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
tick_rotation = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["Rotation"],
|
||||
min = 0,
|
||||
@@ -187,6 +190,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
tick_xOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["x-Offset"],
|
||||
order = 16,
|
||||
@@ -196,6 +200,7 @@ local function createOptions(parentData, data, index, subIndex)
|
||||
},
|
||||
tick_yOffset = {
|
||||
type = "range",
|
||||
control = "WeakAurasSpinBox",
|
||||
width = WeakAuras.normalWidth,
|
||||
name = L["y-Offset"],
|
||||
order = 17,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
## Interface: 30300
|
||||
## Title: WeakAuras Options
|
||||
## Author: The WeakAuras Team
|
||||
## Version: 4.0.0
|
||||
## Version: 4.1.1
|
||||
## Notes: Options for WeakAuras
|
||||
## Notes-esES: Opciones para WeakAuras
|
||||
## Notes-deDE: Optionen für WeakAuras
|
||||
@@ -81,15 +81,17 @@ AceGUI-Widgets\AceGUIWidget-WeakAurasPendingUpdateButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasTextureButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasIconButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasMultiLineEditBox.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasMultiLineEditBoxWithEnter.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasNewButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasImportButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasSortedDropDown.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasToolbarButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasTwoColumnDropDown.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasSnippetButton.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasAnchorButtons.lua
|
||||
AceGUI-Widgets\AceGUIContainer-WeakAurasTreeGroup.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasSnippetButton.lua
|
||||
AceGUI-Widgets\AceGUIContainer-WeakAurasInlineGroup.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasExpandAnchor.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasSpacer.lua
|
||||
AceGUI-Widgets\AceGuiWidget-WeakAurasProgressBar.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasSpinBox.lua
|
||||
AceGUI-Widgets\AceGUIWidget-WeakAurasInputFocus.lua
|
||||
|
||||
Reference in New Issue
Block a user