Files
pfUI/modules/addons.lua
T

218 lines
8.2 KiB
Lua

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)