mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 16:34:45 +00:00
remove temp folder structure
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
local MAJOR, MINOR = "LibElvUIPlugin-1.0", 18
|
||||
local lib, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
|
||||
if not lib then return end
|
||||
|
||||
--Cache global variables
|
||||
--Lua functions
|
||||
local pairs, tonumber = pairs, tonumber
|
||||
local format, gsub, strmatch, strsplit = format, gsub, strmatch, strsplit
|
||||
--WoW API / Variables
|
||||
local CreateFrame = CreateFrame
|
||||
local GetAddOnMetadata = GetAddOnMetadata
|
||||
local GetNumPartyMembers, GetNumRaidMembers = GetNumPartyMembers, GetNumRaidMembers
|
||||
local IsAddOnLoaded = IsAddOnLoaded
|
||||
local IsInInstance = IsInInstance
|
||||
local SendAddonMessage = SendAddonMessage
|
||||
|
||||
--Global variables that we don't cache, list them here for the mikk's Find Globals script
|
||||
-- GLOBALS: ElvUI
|
||||
|
||||
lib.plugins = {}
|
||||
lib.index = 0
|
||||
lib.prefix = "ElvUIPluginVC"
|
||||
|
||||
-- MULTI Language Support (Default Language: English)
|
||||
local MSG_OUTDATED = "Your version of %s %s is out of date (latest is version %s). You can download the latest version from https://github.com/ElvUI-Vanilla/ElvUI/"
|
||||
local HDR_CONFIG = "Plugins"
|
||||
local HDR_INFORMATION = "LibElvUIPlugin-1.0.%d - Plugins Loaded (Green means you have current version, Red means out of date)"
|
||||
local INFO_BY = "by"
|
||||
local INFO_VERSION = "Version:"
|
||||
local INFO_NEW = "Newest:"
|
||||
local LIBRARY = "Library"
|
||||
|
||||
if GetLocale() == "deDE" then -- German Translation
|
||||
MSG_OUTDATED = "Deine Version von %s %s ist veraltet (akutelle Version ist %s). Du kannst die aktuelle Version von https://github.com/ElvUI-Vanilla/ElvUI/ herunterrladen."
|
||||
HDR_CONFIG = "Plugins"
|
||||
HDR_INFORMATION = "LibElvUIPlugin-1.0.%d - Plugins geladen (Grün bedeutet du hast die aktuelle Version, Rot bedeutet es ist veraltet)"
|
||||
INFO_BY = "von"
|
||||
INFO_VERSION = "Version:"
|
||||
INFO_NEW = "Neuste:"
|
||||
LIBRARY = "Bibliothek"
|
||||
end
|
||||
|
||||
if GetLocale() == "ruRU" then -- Russian Translations
|
||||
MSG_OUTDATED = "Ваша версия %s %s устарела (последняя версия %s). Вы можете скачать последнюю версию на https://github.com/ElvUI-Vanilla/ElvUI/"
|
||||
HDR_CONFIG = "Плагины"
|
||||
HDR_INFORMATION = "LibElvUIPlugin-1.0.%d - загруженные плагины (зеленый означает, что у вас последняя версия, красный - устаревшая)"
|
||||
INFO_BY = "от"
|
||||
INFO_VERSION = "Версия:"
|
||||
INFO_NEW = "Последняя:"
|
||||
LIBRARY = "Библиотека"
|
||||
end
|
||||
|
||||
--
|
||||
-- Plugin table format:
|
||||
-- { name (string) - The name of the plugin,
|
||||
-- version (string) - The version of the plugin,
|
||||
-- optionCallback (string) - The callback to call when ElvUI_Config is loaded
|
||||
-- }
|
||||
--
|
||||
|
||||
--
|
||||
-- RegisterPlugin(name,callback)
|
||||
-- Registers a module with the given name and option callback, pulls version info from metadata
|
||||
--
|
||||
|
||||
function lib:RegisterPlugin(name, callback, isLib)
|
||||
local plugin = {}
|
||||
plugin.name = name
|
||||
plugin.version = name == MAJOR and MINOR or GetAddOnMetadata(name, "Version")
|
||||
if isLib then plugin.isLib = true; plugin.version = 1 end
|
||||
plugin.callback = callback
|
||||
lib.plugins[name] = plugin
|
||||
local loaded = IsAddOnLoaded("ElvUI_Config")
|
||||
|
||||
if not lib.vcframe then
|
||||
local f = CreateFrame("Frame")
|
||||
f:RegisterEvent("RAID_ROSTER_UPDATE")
|
||||
f:RegisterEvent("PARTY_MEMBERS_CHANGED")
|
||||
f:RegisterEvent("CHAT_MSG_ADDON")
|
||||
f:SetScript("OnEvent", lib.VersionCheck)
|
||||
lib.vcframe = f
|
||||
end
|
||||
|
||||
if not loaded then
|
||||
if not lib.ConfigFrame then
|
||||
local configFrame = CreateFrame("Frame")
|
||||
configFrame:RegisterEvent("ADDON_LOADED")
|
||||
configFrame:SetScript("OnEvent", function()
|
||||
if arg1 == "ElvUI_Config" then
|
||||
for _, PlugIn in pairs(lib.plugins) do
|
||||
if PlugIn.callback then
|
||||
PlugIn.callback()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
lib.ConfigFrame = configFrame
|
||||
end
|
||||
elseif loaded then
|
||||
-- Need to update plugins list
|
||||
if name ~= MAJOR then
|
||||
ElvUI[1].Options.args.plugins.args.plugins.name = lib:GeneratePluginList()
|
||||
end
|
||||
callback()
|
||||
end
|
||||
|
||||
return plugin
|
||||
end
|
||||
|
||||
function lib:GetPluginOptions()
|
||||
ElvUI[1].Options.args.plugins = {
|
||||
order = -10,
|
||||
type = "group",
|
||||
name = HDR_CONFIG,
|
||||
guiInline = false,
|
||||
args = {
|
||||
pluginheader = {
|
||||
order = 1,
|
||||
type = "header",
|
||||
name = format(HDR_INFORMATION, MINOR),
|
||||
},
|
||||
plugins = {
|
||||
order = 2,
|
||||
type = "description",
|
||||
name = lib:GeneratePluginList(),
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
function lib:GenerateVersionCheckMessage()
|
||||
local list = ""
|
||||
for _, plugin in pairs(lib.plugins) do
|
||||
if plugin.name ~= MAJOR then
|
||||
list = list..plugin.name.."="..plugin.version..";"
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
local function SendPluginVersionCheck(self)
|
||||
lib:SendPluginVersionCheck(lib:GenerateVersionCheckMessage())
|
||||
|
||||
if self["ElvUIPluginSendMSGTimer"] then
|
||||
self:CancelTimer(self["ElvUIPluginSendMSGTimer"])
|
||||
self["ElvUIPluginSendMSGTimer"] = nil
|
||||
end
|
||||
end
|
||||
|
||||
function lib:VersionCheck()
|
||||
if not ElvUI[1].global.general.versionCheck then return end
|
||||
|
||||
local E = ElvUI[1]
|
||||
if event == "CHAT_MSG_ADDON" then
|
||||
if not (arg1 == lib.prefix and arg4 and arg1 and not strmatch(arg1, "^%s-$")) then return end
|
||||
if arg4 == E.myname then return end
|
||||
|
||||
if not E["pluginRecievedOutOfDateMessage"] then
|
||||
local name, version, plugin, Pname
|
||||
for _, p in pairs({strsplit(";", arg2)}) do
|
||||
if not strmatch(p, "^%s-$") then
|
||||
name, version = strmatch(p, "([%w_]+)=([%d%p]+)")
|
||||
if lib.plugins[name] then
|
||||
plugin = lib.plugins[name]
|
||||
if plugin.version ~= "BETA" and version and tonumber(version) and plugin.version and tonumber(plugin.version) and tonumber(version) > tonumber(plugin.version) then
|
||||
plugin.old = true
|
||||
plugin.newversion = tonumber(version)
|
||||
Pname = GetAddOnMetadata(plugin.name, "Title")
|
||||
E:Print(format(MSG_OUTDATED, Pname, plugin.version, plugin.newversion))
|
||||
E["pluginRecievedOutOfDateMessage"] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if not E.SendPluginVersionCheck then
|
||||
E.SendPluginVersionCheck = SendPluginVersionCheck
|
||||
end
|
||||
|
||||
local numRaid, numParty = GetNumRaidMembers(), GetNumPartyMembers() + 1
|
||||
local num = numRaid > 0 and numRaid or numParty
|
||||
if num ~= lib.groupSize then
|
||||
if num > 1 and ((lib.groupSize and num > lib.groupSize) or not lib.groupSize) then
|
||||
E["ElvUIPluginSendMSGTimer"] = E:ScheduleTimer("SendPluginVersionCheck", 12)
|
||||
end
|
||||
lib.groupSize = num
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function lib:GeneratePluginList()
|
||||
local list, E = "", ElvUI[1]
|
||||
local author, Pname, color
|
||||
for _, plugin in pairs(lib.plugins) do
|
||||
if plugin.name ~= MAJOR then
|
||||
author = GetAddOnMetadata(plugin.name, "Author")
|
||||
Pname = GetAddOnMetadata(plugin.name, "Title") or plugin.name
|
||||
color = plugin.old and E:RGBToHex(1, 0, 0) or E:RGBToHex(0, 1, 0)
|
||||
list = list .. Pname
|
||||
if author then
|
||||
list = list .. " ".. INFO_BY .." " .. author
|
||||
end
|
||||
list = list .. color .. (plugin.isLib and " " .. LIBRARY or " - " .. INFO_VERSION .. " " .. plugin.version)
|
||||
if plugin.old then
|
||||
list = list .. " (" .. INFO_NEW .." " .. plugin.newversion .. ")"
|
||||
end
|
||||
list = list .. "|r\n"
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
function lib:SendPluginVersionCheck(message)
|
||||
if not message or strmatch(message, "^%s-$") then return end
|
||||
|
||||
local ChatType
|
||||
if GetNumRaidMembers() > 1 then
|
||||
local _, instanceType = IsInInstance()
|
||||
ChatType = instanceType == "pvp" and "BATTLEGROUND" or "RAID"
|
||||
elseif GetNumPartyMembers() > 0 then
|
||||
ChatType = "PARTY"
|
||||
end
|
||||
if not ChatType then return end
|
||||
|
||||
local maxChar, msgLength = 254 - strlen(lib.prefix), strlen(message)
|
||||
if msgLength > maxChar then
|
||||
local delay, splitMessage = 0
|
||||
|
||||
for _ = 1, ceil(msgLength / maxChar) do
|
||||
splitMessage = strmatch(strsub(message, 1, maxChar), ".+;")
|
||||
|
||||
if splitMessage then -- incase the string is over `maxChar` but doesnt contain `;`
|
||||
message = gsub(message, "^"..gsub(splitMessage, "([%-%.%+%[%]%(%)%$%^%%%?%*])","%%%1"), "")
|
||||
ElvUI[1]:Delay(delay, SendAddonMessage, lib.prefix, splitMessage, ChatType)
|
||||
delay = delay + 1
|
||||
end
|
||||
end
|
||||
else
|
||||
SendAddonMessage(lib.prefix, message, ChatType)
|
||||
end
|
||||
end
|
||||
|
||||
lib:RegisterPlugin(MAJOR, lib.GetPluginOptions)
|
||||
@@ -0,0 +1,3 @@
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/">
|
||||
<Script file="LibElvUIPlugin-1.0.lua"/>
|
||||
</Ui>
|
||||
Reference in New Issue
Block a user