Guest User

Untitled

a guest
Dec 17th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.20 KB | None | 0 0
  1. local st = ...
  2. ------------------------------------------------------
  3. -- MEDIA & CONFIG ------------------------------------
  4. ------------------------------------------------------
  5. local font = { Tukui[2].media.pixelfont or [[Interface\AddOns\stAddonManager\media\SEMPRG__.TTF]], 8, "MONOCHROMEOUTLINE" }
  6. local barTex = Tukui[2].media.normTex or [[Interface\AddOns\stAddonManager\media\normTex.tga]]
  7. local blankTex = [[Interface\AddOns\stAddonManager\media\blankTex.tga]]
  8. local glowTex = [[Interface\AddOns\stAddonManager\media\glowTex.tga]]
  9.  
  10. local bordercolor = Tukui[2].general.bordercolor or {0, 0, 0, 1}
  11. local backdropcolor = Tukui[2].general.backdropcolor or {0.05, 0.05, 0.05, 0.9}
  12. local backdrop = {
  13.     bgFile = blankTex,
  14.     edgeFile =  blankTex,
  15.     tile = false, tileSize = 0, edgeSize = 1,
  16.     insets = { left = 1, right = 1, top = 1, bottom = 1},
  17. }
  18.  
  19.  
  20. ------------------------------------------------------
  21. -- INITIAL FRAME CREATION ----------------------------
  22. ------------------------------------------------------
  23. local stam = CreateFrame("Frame", "stAddonManager", UIParent)
  24.  
  25. stam.pageNum = 0
  26. stam.perPage = 14
  27. stam.pages = {}
  28.  
  29. function stam.UpdateAddonList()
  30.     for i = 1, stam.perPage do
  31.         local addonIndex = (stam.pageNum*stam.perPage) + i
  32.         local page = stam.pages[i]
  33.  
  34.         if stam.pageNum <= 0 then
  35.             stam.prevPage:Hide()
  36.         else
  37.             stam.prevPage:Show()
  38.         end
  39.  
  40.         if (stam.pageNum+1)*stam.perPage >= GetNumAddOns() then
  41.             stam.nextPage:Hide()
  42.         else
  43.             stam.nextPage:Show()
  44.         end
  45.  
  46.         if addonIndex <= GetNumAddOns() then
  47.             local name, title, notes, enabled, loadable, reason, security = GetAddOnInfo(addonIndex)
  48.             page.text:SetText(title)
  49.             page:Show()
  50.  
  51.             if enabled then
  52.                 page.enabled:SetVertexColor(0, 1, 0, 0.05)
  53.                 -- page.enabled:SetGradientAlpha("VERTICAL", 0/255, 255/255, 0/255, .2, 0, 0, 0, 0)
  54.             elseif loadable then
  55.                 page.enabled:SetVertexColor(1, 0.8, 0, 0.15)
  56.                 -- page.enabled:SetGradientAlpha("VERTICAL", 255/255, 180/255, 0/255, .15, 0, 0, 0, 0)
  57.             else
  58.                 page.enabled:SetVertexColor(1, 0, 0, 0.05)
  59.                 -- page.enabled:SetGradientAlpha("VERTICAL", 255/255, 0/255, 0/255, .2, 0, 0, 0, 0)
  60.             end
  61.             page:SetScript("OnMouseDown", function(self)
  62.                 if enabled then
  63.                     DisableAddOn(name)
  64.                 else
  65.                     EnableAddOn(name)
  66.                 end
  67.                 stam.UpdateAddonList()
  68.             end)
  69.         else
  70.             page:Hide()
  71.         end
  72.     end
  73. end
  74.  
  75. function stam.LoadWindow()
  76.     if stam.loaded then ToggleFrame(stam) return end
  77.  
  78.     local titleBar = CreateFrame("Frame", nil, stam)
  79.     stam:SetSize(200, 400)
  80.     titleBar:SetSize(stam:GetWidth(), 20)
  81.  
  82.     titleBar:SetPoint("CENTER", UIParent, "CENTER", 0, stam:GetHeight()/2)
  83.     stam:SetPoint("TOP", titleBar, "BOTTOM", 0, -3)
  84.  
  85.     stam:SetTemplate("Transparent")
  86.     titleBar:SetTemplate()
  87.  
  88.     titleBar.text = titleBar:CreateFontString(nil, "OVERLAY")
  89.     titleBar.text:SetPoint("CENTER")
  90.     titleBar.text:SetPixelFont()
  91.     titleBar.text:SetText("stAddonManager")
  92.  
  93.     titleBar:SetMovable(true)
  94.     titleBar:EnableMouse(true)
  95.     titleBar:SetScript("OnMouseDown", function(self) self:StartMoving() end)
  96.     titleBar:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end)
  97.  
  98.     local close = CreateFrame("Button", nil, titleBar)
  99.     close:SetPoint("RIGHT", -3, 0)
  100.     close:SetSize(18,18)
  101.     local text = close:CreateFontString(nil, "OVERLAY")
  102.     text:SetPixelFont()
  103.     text:SetText('x')
  104.     text:SetPoint("CENTER", 0, 0)
  105.     close.text = text
  106.     close:SetScript("OnMouseDown", function() stam:Hide() end)
  107.     close:SetScript("OnEnter", function() text:SetModifiedColor() end)
  108.     close:SetScript("OnLeave", function() text:SetOriginalColor() end)
  109.     titleBar.close = close
  110.  
  111.     local paging = CreateFrame("Frame", nil, stam)
  112.     paging:SetTemplate()
  113.     paging:SetSize(40, 20)
  114.     paging:SetPoint("BOTTOM", stam, "BOTTOM", 0, 12)
  115.  
  116.     local prevPage = CreateFrame("Frame", nil, paging)
  117.     local nextPage = CreateFrame("Frame", nil, paging)
  118.  
  119.     for i,b in pairs({prevPage, nextPage}) do
  120.         b:SetSize(20, 20)
  121.         b.text = b:CreateFontString(nil, 'OVERLAY')
  122.         b.text:SetPixelFont()
  123.        
  124.         b:SetScript("OnMouseDown", function() end)
  125.         b:SetScript("OnEnter", function(self) self.text:SetModifiedColor() end)
  126.         b:SetScript("OnLeave", function(self) self.text:SetOriginalColor() end)
  127.  
  128.         if i == 1 then
  129.             b:SetScript("OnMouseDown", function()
  130.                 stam.pageNum = stam.pageNum - 1
  131.                 stam.UpdateAddonList()
  132.             end)
  133.             b.text:SetText('<')
  134.             b:SetPoint("LEFT", paging, "LEFT", 0, 0)
  135.             b.text:SetPoint("LEFT", b, "LEFT", 8, 1)
  136.         else
  137.             b:SetScript("OnMouseDown", function()
  138.                 stam.pageNum = stam.pageNum + 1
  139.                 stam.UpdateAddonList()
  140.             end)
  141.             b.text:SetText('>')
  142.             b:SetPoint("RIGHT", paging, "RIGHT", 0, 0)
  143.             b.text:SetPoint("RIGHT", b, "RIGHT", -5, 1)
  144.         end
  145.     end
  146.    
  147.     stam.prevPage = prevPage
  148.     stam.nextPage = nextPage
  149.  
  150.     local prev
  151.     for i=1, stam.perPage do
  152.         local page = CreateFrame("Frame", stam:GetName().."Page"..i, stam)
  153.         page:SetTemplate(nil, true)
  154.         page:SetSize(stam:GetWidth()-20, 20)
  155.         page:SetScript("OnEnter", function(self) self:SetModifiedColor() end)
  156.         page:SetScript("OnLeave", function(self) self:SetOriginalColor() end)
  157.         if i == 1 then
  158.             page:SetPoint("TOP", stam, "TOP", 0, -10)
  159.         else
  160.             page:SetPoint("TOP", stam.pages[i-1], "BOTTOM", 0, -5)
  161.         end
  162.         page.text = page:CreateFontString(nil, 'OVERLAY')
  163.         page.text:SetPixelFont()
  164.         page.text:SetInside(page)
  165.         page.enabled = page:CreateTexture(nil, 'OVERLAY')
  166.         page.enabled:SetInside(page)
  167.         page.enabled:SetTexture(blankTex)
  168.  
  169.         stam.pages[i] = page
  170.     end
  171.  
  172.  
  173.     reload = CreateFrame("Button", nil, stam)
  174.     reload:SetTemplate()
  175.     reload:SetSize(30, 20)
  176.     reload:SetPoint("BOTTOMLEFT", stam, "BOTTOMLEFT", 10, 10)
  177.     reload.text = reload:CreateFontString(nil, 'OVERLAY')
  178.     reload.text:SetPixelFont()
  179.     reload.text:SetText("RL")
  180.     reload.text:SetPoint("CENTER", 1, 0)
  181.     reload:SetScript("OnEnter", function(self) self:SetModifiedColor() end)
  182.     reload:SetScript("OnLeave", function(self) self:SetOriginalColor() end)
  183.     reload:SetScript("OnClick", function()
  184.         if InCombatLockdown() then return end
  185.         ReloadUI()
  186.     end)
  187.     stam.reload = reload
  188.  
  189.     stam.UpdateAddonList()
  190.  
  191.     stam.loaded = true
  192. end
  193.  
  194. SLASH_STADDONMANAGER1, SLASH_STADDONMANAGER2, SLASH_STADDONMANAGER3 = "/staddonmanager", "/stam", "/staddon"
  195. SlashCmdList["STADDONMANAGER"] = stam.LoadWindow
Add Comment
Please, Sign In to add comment