/TelUI_AddonSkins/skins/DXE.lua

http://github.com/Asphyxia/Tukui · Lua · 130 lines · 96 code · 10 blank · 24 comment · 8 complexity · 635e436f33cb31349213b993b492bc70 MD5 · raw file

  1. --[[
  2. DXE skin by Darth Android / Telroth - The Venture Co.
  3. Skins DXE to look like TelUI.
  4. Available SKIN functions:
  5. :SkinDXEBar(bar) -- skins a timer bar for DXE
  6. File version v91.109
  7. (C)2010 Darth Android / Telroth - The Venture Co.
  8. ]]
  9. if not Mod_AddonSkins or not IsAddOnLoaded("DXE") then return end
  10. print("postdxecheck")
  11. local DXE = DXE
  12. local _G = getfenv(0)
  13. --Hide a frame... FOREVER!
  14. local function kill(frame)
  15. if frame.dead then return end
  16. frame:Hide()
  17. frame:HookScript("OnShow",frame.Hide)
  18. frame.dead = true
  19. end
  20. local dummy = dummy or function() end
  21. Mod_AddonSkins:RegisterSkin("DXE",function(Skin, skin, Layout, layout, config)
  22. --[[ Kill DXE's skinning ]]
  23. DXE.NotifyBarTextureChanged = dummy
  24. DXE.NotifyBorderChanged = dummy
  25. DXE.NotifyBorderColorChanged = dummy
  26. DXE.NotifyBorderEdgeSizeChanged = dummy
  27. DXE.NotifyBackgroundTextureChanged = dummy
  28. DXE.NotifyBackgroundInsetChanged = dummy
  29. DXE.NotifyBackgroundColorChanged = dummy
  30. --[[ Hook Window Creation ]]
  31. DXE.CreateWindow_ = DXE.CreateWindow
  32. DXE.CreateWindow = function(self, name, width, height)
  33. local win = self:CreateWindow_(name, width, height)
  34. skin:SkinBackgroundFrame(win)
  35. return win
  36. end
  37. -- Skin the pane
  38. skin:SkinFrame(DXE.Pane)
  39. -- Hook Health frames (Skin & spacing)
  40. DXE.LayoutHealthWatchers_ = DXE.LayoutHealthWatchers
  41. DXE.LayoutHealthWatchers = function(self)
  42. self.db.profile.Pane.BarSpacing = config.barSpacing
  43. self:LayoutHealthWatchers_()
  44. for i,hw in ipairs(self.HW) do
  45. if hw:IsShown() then
  46. skin:SkinFrame(hw)
  47. kill(hw.border)
  48. hw.healthbar:SetStatusBarTexture(config.barTexture)
  49. end
  50. end
  51. end
  52. DXE.Alerts.RefreshBars_ = DXE.Alerts.RefreshBars
  53. DXE.Alerts.RefreshBars = function(self)
  54. if self.refreshing then return end
  55. self.refreshing = true
  56. self.db.profile.BarSpacing = config.barSpacing
  57. self.db.profile.IconXOffset = config.barSpacing
  58. self:RefreshBars_()
  59. local i = 1
  60. -- This wastes so much CPU, Please DXE, give us a reference to the bar pool!
  61. while _G["DXEAlertBar"..i] do
  62. local bar = _G["DXEAlertBar"..i]
  63. bar:SetScale(1)
  64. -- F U SCALE!
  65. bar.SetScale = dummy
  66. skin:SkinDXEBar(bar)
  67. i = i + 1
  68. end
  69. self.refreshing = false
  70. end
  71. DXE.Alerts.Dropdown_ = DXE.Alerts.Dropdown
  72. DXE.Alerts.Dropdown = function(self,...)
  73. self:Dropdown_(...)
  74. self:RefreshBars()
  75. end
  76. DXE.Alerts.CenterPopup_ = DXE.Alerts.CenterPopup
  77. DXE.Alerts.CenterPopup = function(self,...)
  78. self:CenterPopup_(...)
  79. self:RefreshBars()
  80. end
  81. DXE.Alerts.Simple_ = DXE.Alerts.Simple
  82. DXE.Alerts.Simple = function(self,...)
  83. self:Simple_(...)
  84. self:RefreshBars()
  85. end
  86. function Skin:SkinDXEBar(bar)
  87. -- The main bar
  88. self:SkinBackgroundFrame(bar)
  89. --bar.bg:SetTexture(nil)
  90. kill(bar.border)
  91. bar.statusbar:SetStatusBarTexture(config.barTexture)
  92. bar.statusbar:ClearAllPoints()
  93. bar.statusbar:SetPoint("TOPLEFT",config.borderWidth, -config.borderWidth)
  94. bar.statusbar:SetPoint("BOTTOMRIGHT",-config.borderWidth, config.borderWidth)
  95. -- Right Icon
  96. self:SkinBackgroundFrame(bar.righticon)
  97. kill(bar.righticon.border)
  98. bar.righticon.t:SetTexCoord(unpack(config.buttonZoom))
  99. bar.righticon.t:ClearAllPoints()
  100. bar.righticon.t:SetPoint("TOPLEFT",config.borderWidth, -config.borderWidth)
  101. bar.righticon.t:SetPoint("BOTTOMRIGHT",-config.borderWidth, config.borderWidth)
  102. bar.righticon.t:SetDrawLayer("ARTWORK")
  103. -- Left Icon
  104. self:SkinBackgroundFrame(bar.lefticon)
  105. kill(bar.lefticon.border)
  106. bar.lefticon.t:SetTexCoord(unpack(config.buttonZoom))
  107. bar.lefticon.t:ClearAllPoints()
  108. bar.lefticon.t:SetPoint("TOPLEFT",config.borderWidth, -config.borderWidth)
  109. bar.lefticon.t:SetPoint("BOTTOMRIGHT",-config.borderWidth, config.borderWidth)
  110. bar.lefticon.t:SetDrawLayer("ARTWORK")
  111. end
  112. -- Force some updates
  113. DXE:LayoutHealthWatchers()
  114. DXE.Alerts:RefreshBars()
  115. kill(DXE.Pane.border)
  116. end)