df7cc26a64
Fix remaining lua errors covered by ascension patches Add Addon Skins Add Enhanced Friends List
627 lines
15 KiB
Lua
627 lines
15 KiB
Lua
local E, L, V, P, G = unpack(ElvUI)
|
|
local EP = E.Libs.EP
|
|
local AS = E:NewModule("AddOnSkins")
|
|
|
|
local AddOnName = ...
|
|
|
|
local lower = string.lower
|
|
|
|
local GetAddOnInfo = GetAddOnInfo
|
|
local IsAddOnLoadOnDemand = IsAddOnLoadOnDemand
|
|
|
|
local addonList = {
|
|
"Omen",
|
|
"Recount",
|
|
"SexyCooldown",
|
|
"DBM",
|
|
"Skada",
|
|
"Auctionator",
|
|
"BugSack",
|
|
"CallToArms",
|
|
"Postal",
|
|
"QuestPointer",
|
|
"Clique",
|
|
"FloAspectBar",
|
|
"FloTotemBar",
|
|
"Spy",
|
|
"AtlasLoot",
|
|
"Atlas",
|
|
"FlightMap",
|
|
"WeakAuras",
|
|
"Overachiever",
|
|
"OpenGF",
|
|
"KHunterTimers",
|
|
"TellMeWhen",
|
|
"GearScore",
|
|
"AllStats",
|
|
"BlackList",
|
|
"GnomishVendorShrinker",
|
|
"ACP",
|
|
"EveryQuest",
|
|
"_NPCScan",
|
|
"MoveAnything",
|
|
"VanasKoS",
|
|
"BindPad",
|
|
"ZygorGuidesViewer",
|
|
"ZygorTalentAdvisor",
|
|
"WowLua",
|
|
"ChatBar",
|
|
"Skillet",
|
|
"TotemTimers",
|
|
"PlateBuffs",
|
|
"MageNuggets",
|
|
"InspectEquip",
|
|
"AdvancedTradeSkillWindow",
|
|
"AtlasQuest",
|
|
"AckisRecipeList",
|
|
"LightHeaded",
|
|
"Carbonite",
|
|
"Enchantrix",
|
|
"FishingBuddy",
|
|
"Talented",
|
|
"TinyPad",
|
|
"ZOMGBuffs",
|
|
"BuyEmAll",
|
|
"Doom_CooldownPulse",
|
|
"AdiBags",
|
|
"PallyPower",
|
|
"KarniCrap",
|
|
"TradeskillInfo",
|
|
"PAB",
|
|
"EPGP",
|
|
"EPGP_LootMaster",
|
|
"RaidRoll",
|
|
"RaidCooldowns",
|
|
"EventAlert",
|
|
"WIM",
|
|
"BigWigs",
|
|
"Outfitter",
|
|
"Poisoner",
|
|
"TrinketMenu",
|
|
"Stalker",
|
|
"ChocolateBar",
|
|
"EquipCompare",
|
|
"SuperDuperMacro",
|
|
"CLCRet",
|
|
"FeralbyNight",
|
|
"Factionizer",
|
|
"PowerAuras",
|
|
"Quartz",
|
|
"TipTac",
|
|
"Swatter",
|
|
"BeanCounter",
|
|
"Informant",
|
|
"SlideBar",
|
|
"AuctioneerSuite",
|
|
"Altoholic",
|
|
"LoseControl",
|
|
"SilverDragon",
|
|
"_NPCScanOverlay",
|
|
"Examiner",
|
|
"Mapster",
|
|
"ArkInventory",
|
|
"QuestGuru",
|
|
"QuestGuru_Tracker",
|
|
"SatrinaBuffFrame",
|
|
"LootCouncil_Lite",
|
|
"ElvinCDs",
|
|
"oRA3",
|
|
"RCLootCouncil",
|
|
"QDKP2_GUI",
|
|
"LootWonAlert",
|
|
}
|
|
local addonAlias = {
|
|
["DBM"] = "DBM-Core",
|
|
["Swatter"] = "!Swatter",
|
|
["AuctioneerSuite"] = "Auc-Advanced",
|
|
["_NPCScanOverlay"] = "_NPCScan.Overlay",
|
|
["ElvinCDs"] = "!ElvinCDs",
|
|
}
|
|
|
|
AS.addons = {}
|
|
|
|
do
|
|
local temp = {}
|
|
for alias, addonName in pairs(addonAlias) do
|
|
temp[lower(addonName)] = alias
|
|
end
|
|
|
|
for i = 1, GetNumAddOns() do
|
|
local name, _, _, enabled = GetAddOnInfo(i)
|
|
local state = (enabled and 1) or (IsAddOnLoadOnDemand(i) and 2)
|
|
|
|
if state then
|
|
AS.addons[lower(name)] = state
|
|
|
|
if temp[name] then
|
|
AS.addons[lower(temp[name])] = state
|
|
end
|
|
end
|
|
end
|
|
|
|
V.addOnSkins = {}
|
|
|
|
for _, addonName in ipairs(addonList) do
|
|
V.addOnSkins[addonName] = true
|
|
end
|
|
end
|
|
|
|
function AS:IsAddonEnabled(addon)
|
|
return self.addons[lower(addonAlias[addon] or addon)] == 1
|
|
end
|
|
|
|
function AS:IsAddonLOD(addon)
|
|
return self.addons[lower(addonAlias[addon] or addon)] == 2
|
|
end
|
|
|
|
function AS:IsAddonLODorEnabled(addon)
|
|
return self.addons[lower(addonAlias[addon] or addon)] ~= nil
|
|
end
|
|
|
|
function AS:RegisterAddonOption(addonName, options)
|
|
if not self:IsAddonLODorEnabled(addonName) then return end
|
|
|
|
options[addonName] = {
|
|
type = "toggle",
|
|
name = addonName,
|
|
desc = L["TOGGLESKIN_DESC"],
|
|
}
|
|
end
|
|
|
|
local function getOptions()
|
|
local positionValues = {
|
|
TOPLEFT = "TOPLEFT",
|
|
LEFT = "LEFT",
|
|
BOTTOMLEFT = "BOTTOMLEFT",
|
|
RIGHT = "RIGHT",
|
|
TOPRIGHT = "TOPRIGHT",
|
|
BOTTOMRIGHT = "BOTTOMRIGHT",
|
|
CENTER = "CENTER",
|
|
TOP = "TOP",
|
|
BOTTOM = "BOTTOM"
|
|
}
|
|
|
|
local backdropValues = {
|
|
["Default"] = L["Default"],
|
|
["Transparent"] = L["Transparent"],
|
|
["NoBackdrop"] = NONE
|
|
}
|
|
|
|
local options = {
|
|
order = 50,
|
|
type = "group",
|
|
childGroups = "tab",
|
|
name = string.format("|cff1784d1%s|r", L["AddOn Skins"]),
|
|
args = {
|
|
skins = {
|
|
order = 1,
|
|
type = "group",
|
|
childGroups = "tab",
|
|
name = L["Skins"],
|
|
get = function(info) return E.private.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
E.private.addOnSkins[info[#info]] = value
|
|
E:StaticPopup_Show("PRIVATE_RL")
|
|
end,
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Skins"]
|
|
}
|
|
}
|
|
},
|
|
misc = {
|
|
order = 2,
|
|
type = "group",
|
|
childGroups = "tab",
|
|
name = L["Misc Options"],
|
|
args = {
|
|
header = {
|
|
order = 1,
|
|
type = "header",
|
|
name = L["Misc Options"],
|
|
},
|
|
skadaGroup = {
|
|
order = 2,
|
|
type = "group",
|
|
name = "Skada",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
E.db.addOnSkins[info[#info]] = value
|
|
Skada:ApplySettings()
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("Skada") end,
|
|
args = {
|
|
skadaTemplate = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Template"],
|
|
values = backdropValues
|
|
},
|
|
skadaTemplateGloss = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.skadaTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Skada") end
|
|
},
|
|
spacer = {
|
|
order = 3,
|
|
type = "description",
|
|
name = ""
|
|
},
|
|
skadaTitleTemplate = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Title Template"],
|
|
values = backdropValues
|
|
},
|
|
skadaTitleTemplateGloss = {
|
|
order = 5,
|
|
type = "toggle",
|
|
name = L["Title Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.skadaTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Skada") end
|
|
}
|
|
}
|
|
},
|
|
recountGroup = {
|
|
order = 3,
|
|
type = "group",
|
|
name = "Recount",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
local db = E.db.addOnSkins
|
|
db[info[#info]] = value
|
|
Recount.MainWindow.header:SetTemplate(db.recountTitleTemplate, db.recountTitleTemplate == "Default" and db.recountTitleTemplateGloss or false)
|
|
Recount.MainWindow.backdrop:SetTemplate(db.recountTemplate, db.recountTemplate == "Default" and db.recountTemplateGloss or false)
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("Recount") end,
|
|
args = {
|
|
recountTemplate = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Template"],
|
|
values = backdropValues
|
|
},
|
|
recountTemplateGloss = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.recountTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Recount") end
|
|
},
|
|
spacer = {
|
|
order = 3,
|
|
type = "description",
|
|
name = ""
|
|
},
|
|
recountTitleTemplate = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Title Template"],
|
|
values = backdropValues
|
|
},
|
|
recountTitleTemplateGloss = {
|
|
order = 5,
|
|
type = "toggle",
|
|
name = L["Title Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.recountTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Recount") end
|
|
}
|
|
}
|
|
},
|
|
omenGroup = {
|
|
order = 4,
|
|
type = "group",
|
|
name = "Omen",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
local db = E.db.addOnSkins
|
|
db[info[#info]] = value
|
|
Omen.Title:SetTemplate(db.omenTitleTemplate, db.omenTitleTemplate == "Default" and db.omenTitleTemplateGloss or false)
|
|
Omen.BarList:SetTemplate(db.omenTemplate, db.omenTemplate == "Default" and db.omenTemplateGloss or false)
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("Omen") end,
|
|
args = {
|
|
omenTemplate = {
|
|
order = 1,
|
|
type = "select",
|
|
name = L["Template"],
|
|
values = backdropValues
|
|
},
|
|
omenTemplateGloss = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.omenTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Omen") end
|
|
},
|
|
spacer = {
|
|
order = 3,
|
|
type = "description",
|
|
name = ""
|
|
},
|
|
omenTitleTemplate = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Title Template"],
|
|
values = backdropValues
|
|
},
|
|
omenTitleTemplateGloss = {
|
|
order = 5,
|
|
type = "toggle",
|
|
name = L["Title Template Gloss"],
|
|
disabled = function() return E.db.addOnSkins.omenTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Omen") end
|
|
}
|
|
}
|
|
},
|
|
dbmGroup = {
|
|
order = 5,
|
|
type = "group",
|
|
name = "DBM",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
E.db.addOnSkins[info[#info]] = value
|
|
if DBM.ReleaseRevision >= 20220412000000 then -- 9.2.14
|
|
DBT:ApplyStyle()
|
|
else
|
|
DBM.Bars:ApplyStyle()
|
|
end
|
|
DBM.BossHealth:UpdateSettings()
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("DBM-Core") end,
|
|
args = {
|
|
dbmBarHeight = {
|
|
order = 1,
|
|
type = "range",
|
|
min = 6, max = 60, step = 1,
|
|
name = "Bar Height",
|
|
hidden = function() return DBM.ReleaseRevision > 7000 end
|
|
},
|
|
dbmFont = {
|
|
order = 2,
|
|
type = "select",
|
|
dialogControl = "LSM30_Font",
|
|
name = L["Font"],
|
|
values = AceGUIWidgetLSMlists.font,
|
|
hidden = function() return DBM.ReleaseRevision > 7000 end
|
|
},
|
|
dbmFontSize = {
|
|
order = 3,
|
|
type = "range",
|
|
min = 6, max = 22, step = 1,
|
|
name = L["Font Size"],
|
|
hidden = function() return DBM.ReleaseRevision > 7000 end
|
|
},
|
|
dbmFontOutline = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
values = {
|
|
["NONE"] = L["None"],
|
|
["OUTLINE"] = "OUTLINE",
|
|
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
|
|
["THICKOUTLINE"] = "THICKOUTLINE"
|
|
},
|
|
hidden = function() return DBM.ReleaseRevision > 7000 end
|
|
},
|
|
dbmIconSize = {
|
|
order = 5,
|
|
type = "range",
|
|
min = 0.1, max = 2, step = 0.1,
|
|
name = L["Icon Size"],
|
|
},
|
|
dbmTemplate = {
|
|
order = 6,
|
|
type = "select",
|
|
name = L["Template"],
|
|
values = backdropValues
|
|
},
|
|
DBMSkinHalf = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = L["DBM Half-bar Skin"]
|
|
}
|
|
}
|
|
},
|
|
waGroup = {
|
|
order = 6,
|
|
type = "group",
|
|
name = "WeakAuras",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
E.db.addOnSkins[info[#info]] = value
|
|
E:StaticPopup_Show("PRIVATE_RL")
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("WeakAuras") end,
|
|
hidden = WeakAuras and WeakAuras.IsCorrectVersion ~= nil or false,
|
|
args = {
|
|
weakAuraAuraBar = {
|
|
order = 1,
|
|
type = "toggle",
|
|
name = L["AuraBar Backdrop"]
|
|
},
|
|
weakAuraIconCooldown = {
|
|
order = 2,
|
|
type = "toggle",
|
|
name = L["Icon Cooldown"]
|
|
}
|
|
}
|
|
},
|
|
chatBarGroup = {
|
|
order = 7,
|
|
type = "group",
|
|
name = "ChatBar",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value)
|
|
E.db.addOnSkins[info[#info]] = value
|
|
ChatBar_UpdateButtonOrientation()
|
|
ChatBar_UpdateButtons()
|
|
end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("ChatBar") end,
|
|
args = {
|
|
chatBarSize = {
|
|
order = 1,
|
|
type = "range",
|
|
min = 0, max = 60, step = 1,
|
|
name = "Button Size"
|
|
},
|
|
chatBarSpacing = {
|
|
order = 2,
|
|
type = "range",
|
|
min = 0, max = 60, step = 1,
|
|
name = "Button Spacing"
|
|
},
|
|
chatBarTextPoint = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Text Position"],
|
|
values = positionValues
|
|
},
|
|
chatBarTextXOffset = {
|
|
order = 4,
|
|
type = "range",
|
|
min = -300, max = 300, step = 1,
|
|
name = L["Text xOffset"],
|
|
desc = L["Offset position for text."]
|
|
},
|
|
chatBarTextYOffset = {
|
|
order = 5,
|
|
type = "range",
|
|
min = -300, max = 300, step = 1,
|
|
name = L["Text yOffset"],
|
|
desc = L["Offset position for text."]
|
|
}
|
|
}
|
|
},
|
|
bwGroup = {
|
|
order = 8,
|
|
type = "group",
|
|
name = "BigWigs",
|
|
get = function(info) return E.db.addOnSkins[info[#info]] end,
|
|
set = function(info, value) E.db.addOnSkins[info[#info]] = value end,
|
|
disabled = function() return not AS:IsAddonLODorEnabled("BigWigs") end,
|
|
args = {
|
|
bigwigsBarHeight = {
|
|
order = 1,
|
|
type = "range",
|
|
min = 10, max = 40, step = 1,
|
|
name = "Bar Height"
|
|
},
|
|
bigwigsFontSize = {
|
|
order = 2,
|
|
type = "range",
|
|
min = 6, max = 22, step = 1,
|
|
name = L["Font Size"]
|
|
},
|
|
bigwigsFontOutline = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Font Outline"],
|
|
values = {
|
|
["NONE"] = L["None"],
|
|
["OUTLINE"] = "OUTLINE",
|
|
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
|
|
["THICKOUTLINE"] = "THICKOUTLINE"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
embed = {
|
|
order = 3,
|
|
type = "group",
|
|
name = "Embed Settings",
|
|
get = function(info) return E.db.addOnSkins.embed[info[#info]] end,
|
|
set = function(info, value)
|
|
E.db.addOnSkins.embed[info[#info]] = value
|
|
E:GetModule("EmbedSystem"):EmbedUpdate()
|
|
end,
|
|
args = {
|
|
desc = {
|
|
order = 1,
|
|
type = "description",
|
|
name = "Settings to control Embedded AddOns: Available Embeds: Omen | Skada | Recount ",
|
|
},
|
|
embedType = {
|
|
order = 2,
|
|
type = "select",
|
|
name = L["Embed Type"],
|
|
values = {
|
|
["DISABLE"] = L["Disable"],
|
|
["SINGLE"] = L["Single"],
|
|
["DOUBLE"] = L["Double"]
|
|
},
|
|
},
|
|
leftWindow = {
|
|
order = 3,
|
|
type = "select",
|
|
name = L["Left Panel"],
|
|
values = {
|
|
["Recount"] = "Recount",
|
|
["Omen"] = "Omen",
|
|
["Skada"] = "Skada",
|
|
["Details"] = "Details"
|
|
},
|
|
disabled = function() return E.db.addOnSkins.embed.embedType == "DISABLE" end
|
|
},
|
|
rightWindow = {
|
|
order = 4,
|
|
type = "select",
|
|
name = L["Right Panel"],
|
|
values = {
|
|
["Recount"] = "Recount",
|
|
["Omen"] = "Omen",
|
|
["Skada"] = "Skada",
|
|
["Details"] = "Details"
|
|
},
|
|
disabled = function() return E.db.addOnSkins.embed.embedType ~= "DOUBLE" end
|
|
},
|
|
leftWindowWidth = {
|
|
order = 5,
|
|
type = "range",
|
|
min = 100, max = 300, step = 1,
|
|
name = L["Left Window Width"]
|
|
},
|
|
hideChat = {
|
|
order = 6,
|
|
type = "select",
|
|
name = "Hide Chat Frame",
|
|
values = E:GetModule("EmbedSystem"):GetChatWindowInfo(),
|
|
disabled = function() return E.db.addOnSkins.embed.embedType == "DISABLE" end
|
|
},
|
|
rightChatPanel = {
|
|
order = 7,
|
|
type = "toggle",
|
|
name = "Embed into Right Chat Panel"
|
|
},
|
|
belowTopTab = {
|
|
order = 8,
|
|
type = "toggle",
|
|
name = "Embed Below Top Tab"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
local target = options.args.skins.args
|
|
|
|
for _, addonName in ipairs(addonList) do
|
|
AS:RegisterAddonOption(addonName, target)
|
|
end
|
|
|
|
if target.WeakAuras then
|
|
target.WeakAuras.hidden = WeakAuras and WeakAuras.IsCorrectVersion ~= nil or false
|
|
end
|
|
|
|
E.Options.args.addOnSkins = options
|
|
end
|
|
|
|
function AS:Initialize()
|
|
EP:RegisterPlugin(AddOnName, getOptions)
|
|
end
|
|
|
|
local function InitializeCallback()
|
|
AS:Initialize()
|
|
end
|
|
|
|
E:RegisterModule(AS:GetName(), InitializeCallback) |