local addonName, addon = ...
local display = LibStub("EasyDisplay-1.0")
local L = LibStub("AceLocale-3.0"):GetLocale(addonName)
local function addons()
local n = 1
local count = 0
local max = 40
local addons = GetNumAddOns()
return function ()
for i = n, addons do
local name, _, _, enabled = GetAddOnInfo(i)
if count <= max and enabled then
n = i + 1
count = count + 1
return name, GetAddOnMemoryUsage(i)
end
end
end
end
local function getTotalMemUsage()
UpdateAddOnMemoryUsage()
local long, short
local totalMem = 0
for _, mem in addons() do
totalMem = totalMem + mem
end
if totalMem > 0 then
if totalMem > 1000 then
totalMem = totalMem / 1000
short = format("%.2f MB", totalMem)
long = format(TOTAL_MEM_MB_ABBR, totalMem)
else
short = format("%.0f KB", totalMem)
long = format(TOTAL_MEM_KB_ABBR, totalMem)
end
end
return totalMem, long, short
end
local topAddOns = { }
local numAddOns = 0
local tooltip = GameTooltip
function addon:UpdateTooltip()
local db = self.db.profile
if db.hideTooltip then
return
end
if numAddOns ~= db.numAddOns then
for i=1, db.numAddOns do
topAddOns[i] = { value = 0, name = "" }
end
numAddOns = db.numAddOns
end
local text = ""
local i, j, k = 0, 0, 0
tooltip:ClearLines()
tooltip:AddLine(self.name, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
-- latency
local _, _, latencyHome, latencyWorld = GetNetStats()
text = format(MAINMENUBAR_LATENCY_LABEL, latencyHome, latencyWorld)
tooltip:AddLine(" ")
tooltip:AddLine(text, 1.0, 1.0, 1.0)
if SHOW_NEWBIE_TIPS == "1" then
tooltip:AddLine(NEWBIE_TOOLTIP_LATENCY, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
end
tooltip:AddLine(" ")
-- framerate
text = format(MAINMENUBAR_FPS_LABEL, GetFramerate())
tooltip:AddLine(text, 1.0, 1.0, 1.0)
if SHOW_NEWBIE_TIPS == "1" then
tooltip:AddLine(NEWBIE_TOOLTIP_FRAMERATE, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
end
local bandwidth = GetAvailableBandwidth()
if not bandwidth == 0 then
tooltip:AddLine(" ")
text = format(MAINMENUBAR_BANDWIDTH_LABEL, GetAvailableBandwidth())
tooltip:AddLine(text, 1.0, 1.0, 1.0)
if SHOW_NEWBIE_TIPS == "1" then
tooltip:AddLine(NEWBIE_TOOLTIP_BANDWIDTH, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
end
end
local percent = floor(GetDownloadedPercentage() * 100 + 0.5)
if not percent == 0 then
tooltip:AddLine(" ")
text = format(MAINMENUBAR_DOWNLOAD_PERCENT_LABEL, percent)
tooltip:AddLine(text, 1.0, 1.0, 1.0)
if ( SHOW_NEWBIE_TIPS == "1" ) then
tooltip:AddLine(NEWBIE_TOOLTIP_DOWNLOAD_PERCENT, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
end
end
-- memory
local totalMem, totalText = getTotalMemUsage()
if totalMem > 0 then
local mem
for i = 1, db.numAddOns, 1 do
topAddOns[i].value = 0
end
for name, mem in addons() do
for j = 1, db.numAddOns, 1 do
if mem > topAddOns[j].value then
for k = db.numAddOns, 1, -1 do
if k == j then
topAddOns[k].value = mem
topAddOns[k].name = name
break
elseif k ~= 1 then
topAddOns[k].value = topAddOns[k-1].value
topAddOns[k].name = topAddOns[k-1].name
end
end
break
end
end
end
tooltip:AddLine(" ")
tooltip:AddLine(totalText, 1.0, 1.0, 1.0)
if SHOW_NEWBIE_TIPS == "1" then
tooltip:AddLine(NEWBIE_TOOLTIP_MEMORY, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
end
for i = 1, db.numAddOns, 1 do
if topAddOns[i].value == 0 then
break
end
local size = topAddOns[i].value
if size > 1000 then
size = size / 1000
text = format(ADDON_MEM_MB_ABBR, size, topAddOns[i].name)
else
text = format(ADDON_MEM_KB_ABBR, size, topAddOns[i].name)
end
tooltip:AddLine(text, 1.0, 1.0, 1.0)
end
end
-- accessibility
if not db.hideTooltipAccessibilityBindings then
tooltip:AddLine(" ")
local text = ""
for i, v in ipairs(db.accessibility) do
local mouseButton = addon.buttons[db.mouseButton]
if v.modifier == 1 then
text = ": |cffffffff" .. mouseButton .. "|r"
else
text = ": |cffffffff" .. mouseButton .. " + " .. addon.modifiers[v.modifier] .. "|r"
end
text = display:GetInterface(v.name).title .. text
tooltip:AddLine(text, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b)
end
end
tooltip:Show()
end