From 537c8116dcf8f44cf7185ae99f6e1f9348b19530 Mon Sep 17 00:00:00 2001 From: shagu Date: Sat, 12 Nov 2016 22:11:36 +0100 Subject: [PATCH] panel: add addon switcher and tooltips to system info --- modules/addons.lua | 217 +++++++++++++++++++++++++++++++++++++++++++++ modules/panel.lua | 33 ++++++- pfUI.toc | 1 + 3 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 modules/addons.lua diff --git a/modules/addons.lua b/modules/addons.lua new file mode 100644 index 00000000..cc45fd93 --- /dev/null +++ b/modules/addons.lua @@ -0,0 +1,217 @@ +pfUI:RegisterModule("addons", function () + -- dialog + pfUI.addons = CreateFrame("Frame", "pfAddons", UIParent) + pfUI.addons:SetHeight(400) + pfUI.addons:SetWidth(400) + pfUI.addons:SetPoint("CENTER", 0,0) + pfUI.addons:EnableMouseWheel(1) + pfUI.addons:SetBackdrop(pfUI.backdrop) + pfUI.addons:SetBackdropColor(0,0,0,.8) + pfUI.addons:SetMovable(true) + pfUI.addons:EnableMouse(true) + pfUI.addons:SetScript("OnMouseDown",function() + pfUI.addons:StartMoving() + end) + + pfUI.addons:SetScript("OnMouseUp",function() + pfUI.addons:StopMovingOrSizing() + end) + pfUI.addons:Hide() + pfUI.addons:SetScript("OnHide", function() + if pfUI.addons.hasChanged then + pfUI.gui.reloadDialog:Show() + pfUI.addons.hasChanged = nil + end + end) + tinsert(UISpecialFrames,"pfAddons") + + -- title + pfUI.addons.caption = pfUI.addons:CreateFontString("Status", "LOW", "GameFontNormal") + pfUI.addons.caption:SetFont("Interface\\AddOns\\pfUI\\fonts\\" .. pfUI_config.global.font_default .. ".ttf", pfUI_config.global.font_size + 4, "OUTLINE") + pfUI.addons.caption:SetTextColor(.2, 1, .8, 1) + pfUI.addons.caption:SetPoint("TOP", 0, -10) + pfUI.addons.caption:SetJustifyH("LEFT") + pfUI.addons.caption:SetText("Addon List") + + pfUI.addons.close = CreateFrame("Button", "pfBagClose", pfUI.addons) + pfUI.addons.close:SetPoint("TOPRIGHT", -pfUI_config.bars.border*2,-pfUI_config.bars.border*2 ) + pfUI.addons.close:SetBackdrop(pfUI.backdrop) + pfUI.addons.close:SetHeight(15) + pfUI.addons.close:SetWidth(15) + pfUI.addons.close.texture = pfUI.addons.close:CreateTexture("pfBagClose") + pfUI.addons.close.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\close") + pfUI.addons.close.texture:ClearAllPoints() + pfUI.addons.close.texture:SetPoint("TOPLEFT", pfUI.addons.close, "TOPLEFT", 4, -4) + pfUI.addons.close.texture:SetPoint("BOTTOMRIGHT", pfUI.addons.close, "BOTTOMRIGHT", -4, 4) + pfUI.addons.close.texture:SetVertexColor(1,.25,.25,1) + pfUI.addons.close:SetScript("OnEnter", function () + pfUI.addons.close:SetBackdrop(pfUI.backdrop_col) + pfUI.addons.close:SetBackdropBorderColor(1,.25,.25,1) + end) + + pfUI.addons.close:SetScript("OnLeave", function () + pfUI.addons.close:SetBackdrop(pfUI.backdrop) + pfUI.addons.close:SetBackdropBorderColor(1,1,1,1) + end) + + pfUI.addons.close:SetScript("OnClick", function() + pfUI.addons:Hide() + end) + + -- list + pfUI.addons.list = CreateFrame("Frame", "pfAddonList", UIParent) + pfUI.addons.list:SetHeight(GetNumAddOns() * 25) + pfUI.addons.list:SetWidth(350) + pfUI.addons.list:SetPoint("CENTER", 0,0) + + for i=1, GetNumAddOns() do + local aname, atitle, anote = GetAddOnInfo(i) + + -- basic frame + pfUI.addons.list[i] = CreateFrame("Frame", nil, pfUI.addons.list) + local frame = pfUI.addons.list[i] + frame:SetWidth(350) + frame:SetHeight(25) + frame:SetBackdrop(pfUI.backdrop_underline) + frame:SetBackdropBorderColor(.1,.1,.1,1) + frame:SetPoint("TOPLEFT", 12.5, i * -25 + 25) + + -- caption + frame.caption = frame:CreateFontString("Status", "LOW", "GameFontNormal") + frame.caption:SetFont("Interface\\AddOns\\pfUI\\fonts\\" .. pfUI_config.global.font_default .. ".ttf", pfUI_config.global.font_size + 2, "OUTLINE") + frame.caption:SetAllPoints(frame) + frame.caption:SetFontObject(GameFontWhite) + frame.caption:SetJustifyH("LEFT") + frame.caption:SetText(atitle) + + -- input field + frame.input = CreateFrame("CheckButton", nil, frame, "UICheckButtonTemplate") + frame.input:SetNormalTexture("") + frame.input:SetPushedTexture("") + frame.input:SetHighlightTexture("") + frame.input:SetBackdrop(pfUI.backdrop) + frame.input:SetWidth(14) + frame.input:SetHeight(14) + frame.input:SetPoint("TOPRIGHT" , 0, -4) + frame.input:SetID(i) + frame.input:SetScript("OnClick", function () + if this:GetChecked() then + EnableAddOn(this:GetID()) + else + DisableAddOn(this:GetID()) + end + pfUI.addons.hasChanged = true + end) + + if IsAddOnLoaded(i) then + frame.input:SetChecked() + frame.caption:SetAlpha(1) + else + frame.caption:SetAlpha(.5) + end + end + + pfUI.addons.scroll = CreateFrame("ScrollFrame", "pfAddonListScroll", pfUI.addons) + pfUI.addons.scroll:SetHeight(350) + pfUI.addons.scroll:SetWidth(375) + pfUI.addons.scroll:SetPoint("BOTTOM", 0, 10) + pfUI.addons.scroll:EnableMouseWheel(1) + + pfUI.addons.scroll:SetScript("OnMouseWheel", function() + local current = pfUI.addons.scroll:GetVerticalScroll() + local new = current + arg1*-20 + local max = pfUI.addons.scroll:GetVerticalScrollRange() + if new > -20 and new < max + 20 then + pfUI.addons.scroll:SetVerticalScroll(new) + end + + if new < 0 then pfUI.addons.scroll:SetVerticalScroll(0) end + if new > max then pfUI.addons.scroll:SetVerticalScroll(max) end + end) + + pfUI.addons.scroll:SetScrollChild(pfUI.addons.list) + pfUI.addons.scroll:SetVerticalScroll(0) + + function pfUI.addons.scroll:UpdateScrollState() + local current = ceil(pfUI.addons.scroll:GetVerticalScroll() / UIParent:GetEffectiveScale()) + local max = ceil(pfUI.addons.scroll:GetVerticalScrollRange()) + pfUI.addons.deco.up:Show() + pfUI.addons.deco.down:Show() + + if max > 20 then + if current < max then + pfUI.addons.deco.down.visible = 1 + pfUI.addons.deco.down:Show() + pfUI.addons.deco.down:SetAlpha(.2) + end + if current > 5 then + pfUI.addons.deco.up.visible = 1 + pfUI.addons.deco.up:Show() + pfUI.addons.deco.up:SetAlpha(.2) + end + if current > max - 5 then + pfUI.addons.deco.down.visible = 0 + end + if current < 5 then + pfUI.addons.deco.up.visible = 0 + end + else + pfUI.addons.deco.up.visible = 0 + pfUI.addons.deco.down.visible = 0 + end + end + + -- [[ config section ]] -- + pfUI.addons.deco = CreateFrame("Frame", nil, pfUI.addons) + pfUI.addons.deco:ClearAllPoints() + pfUI.addons.deco:SetPoint("TOPLEFT", pfUI.addons.scroll, "TOPLEFT", -5, 5) + pfUI.addons.deco:SetPoint("BOTTOMRIGHT", pfUI.addons.scroll, "BOTTOMRIGHT", 5, -5) + pfUI.addons.deco:SetBackdrop(pfUI.backdrop) + pfUI.addons.deco:SetBackdropColor(0,0,0,.50) + + pfUI.addons.deco.up = CreateFrame("Frame", nil, pfUI.addons.deco) + pfUI.addons.deco.up:SetPoint("TOPRIGHT", 0,0) + pfUI.addons.deco.up:SetHeight(16) + pfUI.addons.deco.up:SetWidth(pfUI.addons.deco:GetWidth()) + pfUI.addons.deco.up:SetAlpha(0) + pfUI.addons.deco.up.visible = 0 + pfUI.addons.deco.up.texture = pfUI.addons.deco.up:CreateTexture() + pfUI.addons.deco.up.texture:SetAllPoints() + pfUI.addons.deco.up.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\gradient_up") + pfUI.addons.deco.up.texture:SetVertexColor(.2,1,.8) + pfUI.addons.deco.up:SetScript("OnUpdate", function() + pfUI.addons.scroll:UpdateScrollState() + if pfUI.addons.deco.up.visible == 0 and pfUI.addons.deco.up:GetAlpha() > 0 then + pfUI.addons.deco.up:SetAlpha(pfUI.addons.deco.up:GetAlpha() - 0.01) + elseif pfUI.addons.deco.up.visible == 0 and pfUI.addons.deco.up:GetAlpha() <= 0 then + pfUI.addons.deco.up:Hide() + end + + if pfUI.addons.deco.up.visible == 1 and pfUI.addons.deco.up:GetAlpha() > .15 then + pfUI.addons.deco.up:SetAlpha(pfUI.addons.deco.up:GetAlpha() - 0.01) + end + end) + + pfUI.addons.deco.down = CreateFrame("Frame", nil, pfUI.addons.deco) + pfUI.addons.deco.down:SetPoint("BOTTOMRIGHT", 0,0) + pfUI.addons.deco.down:SetHeight(16) + pfUI.addons.deco.down:SetWidth(pfUI.addons.deco:GetWidth()) + pfUI.addons.deco.down:SetAlpha(0) + pfUI.addons.deco.down.visible = 0 + pfUI.addons.deco.down.texture = pfUI.addons.deco.down:CreateTexture() + pfUI.addons.deco.down.texture:SetAllPoints() + pfUI.addons.deco.down.texture:SetTexture("Interface\\AddOns\\pfUI\\img\\gradient_down") + pfUI.addons.deco.down.texture:SetVertexColor(.2,1,.8) + pfUI.addons.deco.down:SetScript("OnUpdate", function() + pfUI.addons.scroll:UpdateScrollState() + if pfUI.addons.deco.down.visible == 0 and pfUI.addons.deco.down:GetAlpha() > 0 then + pfUI.addons.deco.down:SetAlpha(pfUI.addons.deco.down:GetAlpha() - 0.01) + elseif pfUI.addons.deco.down.visible == 0 and pfUI.addons.deco.down:GetAlpha() <= 0 then + pfUI.addons.deco.down:Hide() + end + + if pfUI.addons.deco.down.visible == 1 and pfUI.addons.deco.down:GetAlpha() > .15 then + pfUI.addons.deco.down:SetAlpha(pfUI.addons.deco.down:GetAlpha() - 0.01) + end + end) +end) diff --git a/modules/panel.lua b/modules/panel.lua index d0cb9dba..eb8e7639 100644 --- a/modules/panel.lua +++ b/modules/panel.lua @@ -98,9 +98,40 @@ pfUI:RegisterModule("panel", function () pfUI.panel:OutputPanel("time", date("%H:%M:%S"), tooltip, click) -- lag fps + local tooltip = function () + local active = 0 + GameTooltip:ClearLines() + GameTooltip:SetOwner(this, "ANCHOR_NONE") + GameTooltip:AddLine("|cff555555Systeminfo") + for i=1, GetNumAddOns() do + if IsAddOnLoaded(i) then + active = active + 1 + end + end + GameTooltip:AddDoubleLine("Active Addons", "|cffffffff" .. active .. "|cff555555 / |cffffffff" .. GetNumAddOns()) + GameTooltip:AddLine(" ") + local nin, nout, nping = GetNetStats() + GameTooltip:AddDoubleLine("Network Down", "|cffffffff" .. round(nin,1) .. "KB/s") + GameTooltip:AddDoubleLine("Network Up", "|cffffffff" .. round(nout,1) .. "KB/s") + GameTooltip:AddDoubleLine("Network Latency", "|cffffffff" .. nping .. "ms") + GameTooltip:AddLine(" ") + GameTooltip:AddDoubleLine("Graphic Renderer", "|cffffffff" .. GetCVar("gxApi")) + GameTooltip:AddDoubleLine("Screen Resolution", "|cffffffff" .. GetCVar("gxResolution")) + GameTooltip:AddDoubleLine("UI-Scale", "|cffffffff" .. round(UIParent:GetEffectiveScale(),2)) + GameTooltip:Show() + end + + local click = function () + if pfUI.addons:IsShown() then + pfUI.addons:Hide() + else + pfUI.addons:Show() + end + end + local _, _, lag = GetNetStats() local fps = floor(GetFramerate()) - pfUI.panel:OutputPanel("fps", floor(GetFramerate()) .. " fps & " .. lag .. " ms") + pfUI.panel:OutputPanel("fps", floor(GetFramerate()) .. " fps & " .. lag .. " ms", tooltip, click) end end) diff --git a/pfUI.toc b/pfUI.toc index 80014d9d..172cce16 100644 --- a/pfUI.toc +++ b/pfUI.toc @@ -28,6 +28,7 @@ modules\gui.lua modules\actionbar.lua modules\chat.lua modules\font.lua +modules\addons.lua modules\panel.lua modules\player.lua modules\target.lua