mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
update
This commit is contained in:
@@ -0,0 +1,235 @@
|
||||
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
|
||||
--Cache global variables
|
||||
--Lua functions
|
||||
local select = select
|
||||
local max = math.max
|
||||
--WoW API / Variables
|
||||
local CreateFrame = CreateFrame
|
||||
local GetAddOnInfo = GetAddOnInfo
|
||||
local GetCurrentResolution = GetCurrentResolution
|
||||
local GetCVar = GetCVar
|
||||
local GetLocale = GetLocale
|
||||
local GetNumAddOns = GetNumAddOns
|
||||
local GetRealZoneText = GetRealZoneText
|
||||
local GetScreenResolutions = GetScreenResolutions
|
||||
local UnitLevel = UnitLevel
|
||||
|
||||
local function AreOtherAddOnsEnabled()
|
||||
local name, loadable, reason, _
|
||||
for i = 1, GetNumAddOns() do
|
||||
name, _, _, loadable, reason = GetAddOnInfo(i)
|
||||
if (name ~= "ElvUI" and name ~= "ElvUI_Config" and name ~= "!Compatibility" and name ~= "!DebugTools") and (loadable or (not loadable and reason == "DEMAND_LOADED")) then --Loaded or load on demand
|
||||
return "Yes"
|
||||
end
|
||||
end
|
||||
|
||||
return "No"
|
||||
end
|
||||
|
||||
local function GetUiScale()
|
||||
local uiScale = GetCVar("uiScale")
|
||||
local minUiScale = E.global.general.minUiScale
|
||||
|
||||
return max(uiScale, minUiScale)
|
||||
end
|
||||
|
||||
local function GetDisplayMode()
|
||||
local window, maximize = GetCVar("gxWindow"), GetCVar("gxMaximize")
|
||||
local displayMode
|
||||
|
||||
if window == "1" then
|
||||
if maximize == "1" then
|
||||
displayMode = "Windowed (Fullscreen)"
|
||||
else
|
||||
displayMode = "Windowed"
|
||||
end
|
||||
else
|
||||
displayMode = "Fullscreen"
|
||||
end
|
||||
|
||||
return displayMode
|
||||
end
|
||||
|
||||
local EnglishClassName = {
|
||||
["DRUID"] = "Druid",
|
||||
["HUNTER"] = "Hunter",
|
||||
["MAGE"] = "Mage",
|
||||
["PALADIN"] = "Paladin",
|
||||
["PRIEST"] = "Priest",
|
||||
["ROGUE"] = "Rogue",
|
||||
["SHAMAN"] = "Shaman",
|
||||
["WARLOCK"] = "Warlock",
|
||||
["WARRIOR"] = "Warrior"
|
||||
}
|
||||
|
||||
local function GetResolution()
|
||||
return (({GetScreenResolutions()})[GetCurrentResolution()] or GetCVar("gxWindowedResolution"))
|
||||
end
|
||||
|
||||
function E:CreateStatusFrame()
|
||||
local function CreateSection(width, height, parent, anchor1, anchorTo, anchor2, yOffset)
|
||||
local section = CreateFrame("Frame", nil, parent)
|
||||
E:Size(section, width, height)
|
||||
E:Point(section, anchor1, anchorTo, anchor2, 0, yOffset)
|
||||
|
||||
section.Header = CreateFrame("Frame", nil, section)
|
||||
E:Size(section.Header, 300, 30)
|
||||
E:Point(section.Header, "TOP", section)
|
||||
|
||||
section.Header.Text = section.Header:CreateFontString(nil, "ARTWORK", "SystemFont")
|
||||
E:Point(section.Header.Text, "TOP")
|
||||
E:Point(section.Header.Text, "BOTTOM")
|
||||
section.Header.Text:SetJustifyH("CENTER")
|
||||
section.Header.Text:SetJustifyV("MIDDLE")
|
||||
local font, height, flags = section.Header.Text:GetFont()
|
||||
section.Header.Text:SetFont(font, height*1.3, flags)
|
||||
|
||||
section.Header.LeftDivider = section.Header:CreateTexture(nil, "ARTWORK")
|
||||
E:Height(section.Header.LeftDivider, 8)
|
||||
E:Point(section.Header.LeftDivider, "LEFT", section.Header, "LEFT", 5, 0)
|
||||
E:Point(section.Header.LeftDivider, "RIGHT", section.Header.Text, "LEFT", -5, 0)
|
||||
section.Header.LeftDivider:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
|
||||
section.Header.LeftDivider:SetTexCoord(0.81, 0.94, 0.5, 1)
|
||||
|
||||
section.Header.RightDivider = section.Header:CreateTexture(nil, "ARTWORK")
|
||||
E:Height(section.Header.RightDivider, 8)
|
||||
E:Point(section.Header.RightDivider, "RIGHT", section.Header, "RIGHT", -5, 0)
|
||||
E:Point(section.Header.RightDivider, "LEFT", section.Header.Text, "RIGHT", 5, 0)
|
||||
section.Header.RightDivider:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
|
||||
section.Header.RightDivider:SetTexCoord(0.81, 0.94, 0.5, 1)
|
||||
|
||||
return section
|
||||
end
|
||||
|
||||
local function CreateContentLines(num, parent, anchorTo)
|
||||
local content = CreateFrame("Frame", nil, parent)
|
||||
E:Size(content, 240, (num * 20) + ((num - 1) * 5)) --20 height and 5 spacing
|
||||
E:Point(content, "TOP", anchorTo, "BOTTOM", 0, -5)
|
||||
|
||||
for i = 1, num do
|
||||
local line = CreateFrame("Frame", nil, content)
|
||||
E:Size(line, 240, 20)
|
||||
line.Text = line:CreateFontString(nil, "ARTWORK", "SystemFont")
|
||||
line.Text:SetTextColor(1, 1, 1)
|
||||
line.Text:SetAllPoints()
|
||||
line.Text:SetJustifyH("LEFT")
|
||||
line.Text:SetJustifyV("MIDDLE")
|
||||
content["Line"..i] = line
|
||||
|
||||
if i == 1 then
|
||||
E:Point(content["Line"..i], "TOP", content, "TOP")
|
||||
else
|
||||
E:Point(content["Line"..i], "TOP", content["Line"..(i - 1)], "BOTTOM", 0, -5)
|
||||
end
|
||||
end
|
||||
|
||||
return content
|
||||
end
|
||||
|
||||
--Main frame
|
||||
local StatusFrame = CreateFrame("Frame", "ElvUIStatusReport", E.UIParent)
|
||||
E:Size(StatusFrame, 300, 640)
|
||||
E:Point(StatusFrame, "CENTER", E.UIParent, "CENTER")
|
||||
StatusFrame:SetFrameStrata("HIGH")
|
||||
E:CreateBackdrop(StatusFrame, "Transparent", nil, true)
|
||||
StatusFrame:Hide()
|
||||
E:CreateCloseButton(StatusFrame)
|
||||
StatusFrame:SetClampedToScreen(true)
|
||||
StatusFrame:SetMovable(true)
|
||||
StatusFrame:EnableMouse(true)
|
||||
StatusFrame:RegisterForDrag("LeftButton", "RightButton")
|
||||
StatusFrame:SetScript("OnDragStart", function()
|
||||
this:StartMoving()
|
||||
end)
|
||||
StatusFrame:SetScript("OnDragStop", function()
|
||||
this:StopMovingOrSizing()
|
||||
end)
|
||||
|
||||
--Title logo
|
||||
StatusFrame.TitleLogoFrame = CreateFrame("Frame", nil, StatusFrame)
|
||||
E:Size(StatusFrame.TitleLogoFrame, 128, 64)
|
||||
E:Point(StatusFrame.TitleLogoFrame, "CENTER", StatusFrame, "TOP", 0, 0)
|
||||
StatusFrame.TitleLogoFrame.Texture = StatusFrame.TitleLogoFrame:CreateTexture(nil, "ARTWORK")
|
||||
StatusFrame.TitleLogoFrame.Texture:SetTexture("Interface\\AddOns\\ElvUI\\media\\textures\\logo.tga")
|
||||
StatusFrame.TitleLogoFrame.Texture:SetAllPoints()
|
||||
|
||||
--Sections
|
||||
StatusFrame.Section1 = CreateSection(300, 150, StatusFrame, "TOP", StatusFrame, "TOP", -30)
|
||||
StatusFrame.Section2 = CreateSection(300, 175, StatusFrame, "TOP", StatusFrame.Section1, "BOTTOM", 0)
|
||||
StatusFrame.Section3 = CreateSection(300, 220, StatusFrame, "TOP", StatusFrame.Section2, "BOTTOM", 0)
|
||||
StatusFrame.Section4 = CreateSection(300, 60, StatusFrame, "TOP", StatusFrame.Section3, "BOTTOM", 0)
|
||||
|
||||
--Section headers
|
||||
StatusFrame.Section1.Header.Text:SetText("|cfffe7b2cAddOn Info|r")
|
||||
StatusFrame.Section2.Header.Text:SetText("|cfffe7b2cWoW Info|r")
|
||||
StatusFrame.Section3.Header.Text:SetText("|cfffe7b2cCharacter Info|r")
|
||||
StatusFrame.Section4.Header.Text:SetText("|cfffe7b2cExport To|r")
|
||||
|
||||
--Section content
|
||||
StatusFrame.Section1.Content = CreateContentLines(4, StatusFrame.Section1, StatusFrame.Section1.Header)
|
||||
StatusFrame.Section2.Content = CreateContentLines(5, StatusFrame.Section2, StatusFrame.Section2.Header)
|
||||
StatusFrame.Section3.Content = CreateContentLines(7, StatusFrame.Section3, StatusFrame.Section3.Header)
|
||||
StatusFrame.Section4.Content = CreateFrame("Frame", nil, StatusFrame.Section4)
|
||||
E:Size(StatusFrame.Section4.Content, 240, 25)
|
||||
E:Point(StatusFrame.Section4.Content, "TOP", StatusFrame.Section4.Header, "BOTTOM", 0, 0)
|
||||
|
||||
--Content lines
|
||||
StatusFrame.Section1.Content.Line1.Text:SetText(format("Version of ElvUI: |cff4beb2c%s|r", E.version))
|
||||
StatusFrame.Section1.Content.Line2.Text:SetText(format("Other AddOns Enabled: |cff4beb2c%s|r", AreOtherAddOnsEnabled()))
|
||||
StatusFrame.Section1.Content.Line3.Text:SetText(format("Auto Scale Enabled: |cff4beb2c%s|r", (E.global.general.autoScale == true and "Yes" or "No")))
|
||||
StatusFrame.Section1.Content.Line4.Text:SetText(format("UI Scale Is: |cff4beb2c%.4f|r", GetUiScale()))
|
||||
|
||||
StatusFrame.Section2.Content.Line1.Text:SetText(format("Version of WoW: |cff4beb2c%s (build %s)|r", E.wowpatch, E.wowbuild))
|
||||
StatusFrame.Section2.Content.Line2.Text:SetText(format("Client Language: |cff4beb2c%s|r", GetLocale()))
|
||||
StatusFrame.Section2.Content.Line3.Text:SetText(format("Display Mode: |cff4beb2c%s|r", GetDisplayMode()))
|
||||
StatusFrame.Section2.Content.Line4.Text:SetText(format("Resolution: |cff4beb2c%s|r", GetResolution()))
|
||||
StatusFrame.Section2.Content.Line5.Text:SetText(format("Using Mac Client: |cff4beb2c%s|r", (E.isMacClient == true and "Yes" or "No")))
|
||||
|
||||
StatusFrame.Section3.Content.Line1.Text:SetText(format("Faction: |cff4beb2c%s|r", E.myfaction))
|
||||
StatusFrame.Section3.Content.Line2.Text:SetText(format("Race: |cff4beb2c%s|r", E.myrace))
|
||||
StatusFrame.Section3.Content.Line3.Text:SetText(format("Class: |cff4beb2c%s|r", EnglishClassName[E.myclass]))
|
||||
StatusFrame.Section3.Content.Line4.Text:SetText(format("Specialization: |cff4beb2c%s|r", select(2, E:GetTalentSpecInfo())))
|
||||
StatusFrame.Section3.Content.Line5.Text:SetText(format("Level: |cff4beb2c%s|r", UnitLevel("player")))
|
||||
StatusFrame.Section3.Content.Line6.Text:SetText(format("Zone: |cff4beb2c%s|r", GetRealZoneText()))
|
||||
StatusFrame.Section3.Content.Line7.Text:SetText(format("Realm: |cff4beb2c%s|r", E.myrealm))
|
||||
|
||||
--Export buttons
|
||||
StatusFrame.Section4.Content.Button1 = CreateFrame("Button", nil, StatusFrame.Section4.Content, "UIPanelButtonTemplate")
|
||||
E:Size(StatusFrame.Section4.Content.Button1, 100, 25)
|
||||
E:Point(StatusFrame.Section4.Content.Button1, "LEFT", StatusFrame.Section4.Content, "LEFT")
|
||||
StatusFrame.Section4.Content.Button1:SetText("Forum")
|
||||
StatusFrame.Section4.Content.Button1:SetButtonState("DISABLED")
|
||||
E:GetModule("Skins"):HandleButton(StatusFrame.Section4.Content.Button1, true)
|
||||
|
||||
StatusFrame.Section4.Content.Button2 = CreateFrame("Button", nil, StatusFrame.Section4.Content, "UIPanelButtonTemplate")
|
||||
E:Size(StatusFrame.Section4.Content.Button2, 100, 25)
|
||||
E:Point(StatusFrame.Section4.Content.Button2, "RIGHT", StatusFrame.Section4.Content, "RIGHT")
|
||||
StatusFrame.Section4.Content.Button2:SetText("Ticket")
|
||||
StatusFrame.Section4.Content.Button2:SetButtonState("DISABLED")
|
||||
E:GetModule("Skins"):HandleButton(StatusFrame.Section4.Content.Button2, true)
|
||||
|
||||
E.StatusFrame = StatusFrame
|
||||
end
|
||||
|
||||
local function UpdateDynamicValues()
|
||||
E.StatusFrame.Section2.Content.Line3.Text:SetText(format("Display Mode: |cff4beb2c%s|r", GetDisplayMode()))
|
||||
E.StatusFrame.Section2.Content.Line4.Text:SetText(format("Resolution: |cff4beb2c%s|r", GetResolution()))
|
||||
E.StatusFrame.Section3.Content.Line4.Text:SetText(format("Specialization: |cff4beb2c%s|r", select(2, E:GetTalentSpecInfo())))
|
||||
E.StatusFrame.Section3.Content.Line5.Text:SetText(format("Level: |cff4beb2c%s|r", UnitLevel("player")))
|
||||
E.StatusFrame.Section3.Content.Line6.Text:SetText(format("Zone: |cff4beb2c%s|r", GetRealZoneText()))
|
||||
end
|
||||
|
||||
function E:ShowStatusReport()
|
||||
if not self.StatusFrame then
|
||||
self:CreateStatusFrame()
|
||||
end
|
||||
|
||||
if not self.StatusFrame:IsShown() then
|
||||
UpdateDynamicValues()
|
||||
self.StatusFrame:Raise() --Set framelevel above everything else
|
||||
self.StatusFrame:Show()
|
||||
else
|
||||
self.StatusFrame:Hide()
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user