/Tukui/modules/databars/barPanels.lua

http://github.com/Asphyxia/Tukui · Lua · 90 lines · 77 code · 12 blank · 1 comment · 14 complexity · 353670b040fc430fa4c4f65d503ceed8 MD5 · raw file

  1. local T, C, L = unpack(select(2, ...)) -- Import: T - functions, constants, variables; C - config; L - locales
  2. local pWidth, pHeight = C.databars.settings.width, C.databars.settings.height
  3. T["databars"] = {}
  4. T.maxDatabars = 0
  5. for i,v in pairs(C.databars) do
  6. if type(v) == "number" then T.maxDatabars = max(T.maxDatabars, v) end
  7. end
  8. if T.maxDatabars == 0 then return end
  9. for i = 1, T.maxDatabars do
  10. T.databars[i] = CreateFrame("Frame", "TukuiDataBar"..i.."_Panel", UIParent)
  11. T.databars[i]:CreateShadow()
  12. if i == 1 then
  13. T.databars[i]:CreatePanel("Transparent", pWidth, pHeight, "TOPLEFT", UIParent, "TOPLEFT", 2, -8)
  14. else
  15. if C.databars.settings.vertical then
  16. T.databars[i]:CreatePanel("Transparent", pWidth, pHeight, "TOPRIGHT", T.databars[i-1], "BOTTOMRIGHT", 0, -C.databars.settings.spacing)
  17. else
  18. T.databars[i]:CreatePanel("Transparent", pWidth, pHeight, "TOPLEFT", T.databars[i-1], "TOPRIGHT", C.databars.settings.spacing, 0)
  19. end
  20. end
  21. T.databars[i].statusbar = CreateFrame("StatusBar", "TukuiDataBar"..i.."_StatusBar", T.databars[i], "TextStatusBar")
  22. T.databars[i].statusbar:SetFrameStrata("BACKGROUND")
  23. T.databars[i].statusbar:SetStatusBarTexture(C.media.normTex)
  24. T.databars[i].statusbar:SetStatusBarColor(1,1,1)
  25. T.databars[i].statusbar:SetFrameLevel(2)
  26. T.databars[i].statusbar:SetPoint("TOPRIGHT", T.databars[i], "TOPRIGHT", -2, -2)
  27. T.databars[i].statusbar:SetPoint("BOTTOMLEFT", T.databars[i], "BOTTOMLEFT", 2, 2)
  28. T.databars[i].statusbar:SetMinMaxValues(0,1)
  29. T.databars[i].statusbar:SetValue(0)
  30. T.databars[i].text = T.databars[i].statusbar:CreateFontString("DataBar"..i.."_Text", "OVERLAY")
  31. T.databars[i].text:SetFont(C.media.pixelfont, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
  32. T.databars[i].text:SetPoint("TOPRIGHT", T.databars[i].statusbar, "TOPRIGHT", -2, -2)
  33. T.databars[i].text:SetPoint("BOTTOMLEFT", T.databars[i].statusbar, "BOTTOMLEFT", 2, 2)
  34. end
  35. local function hideDatabars(self)
  36. for i = 1, T.maxDatabars do
  37. T.databars[i]:Hide()
  38. end
  39. self.text:SetText(T.datacolor.."Open")
  40. self:ClearAllPoints()
  41. self:SetPoint(T.databars[1]:GetPoint())
  42. end
  43. local function showDatabars(self)
  44. for i = 1, T.maxDatabars do
  45. T.databars[i]:Show()
  46. end
  47. self.text:SetText(T.datacolor.."Close")
  48. self:ClearAllPoints()
  49. if not C.databars.settings.vertical then
  50. self:SetPoint("LEFT", T.databars[T.maxDatabars], "RIGHT", C.databars.settings.spacing, 0)
  51. else
  52. self:SetPoint("TOP", T.databars[T.maxDatabars], "BOTTOM", 0, -C.databars.settings.spacing)
  53. end
  54. end
  55. T.databars["toggle"] = CreateFrame("Frame", "TukuiDataBarToggle", UIParent)
  56. T.databars["toggle"]:SetAlpha(0)
  57. T.databars["toggle"].text = T.databars["toggle"]:CreateFontString(nil, "OVERLAY")
  58. T.databars["toggle"].text:SetFont(C.media.pixelfont, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
  59. T.databars["toggle"].text:SetJustifyH("LEFT")
  60. T.databars["toggle"].text:SetPoint("CENTER", 2)
  61. T.databars["toggle"].text:SetText(T.datacolor.."Close")
  62. if C.databars.settings.vertical then
  63. T.databars["toggle"]:CreatePanel("Transparent", pWidth, C.databars.settings.height, "TOP", T.databars[T.maxDatabars], "BOTTOM", 0, -C.databars.settings.spacing)
  64. else
  65. T.databars["toggle"]:CreatePanel("Transparent", pWidth, C.databars.settings.height, "LEFT", T.databars[T.maxDatabars], "RIGHT", C.databars.settings.spacing, 0)
  66. end
  67. T.databars["toggle"]:CreateShadow()
  68. T.databars["toggle"]:EnableMouse(true)
  69. T.databars["toggle"]:HookScript("OnMouseDown", function(self)
  70. if T.databars[1]:IsShown() then
  71. hideDatabars(self)
  72. else
  73. showDatabars(self)
  74. end
  75. end)
  76. T.databars["toggle"]:HookScript("OnEnter", function(self) self:SetAlpha(1) end)
  77. T.databars["toggle"]:HookScript("OnLeave", function(self) self:SetAlpha(0) end)
  78. --/script for i = 1, _G.Tukui[1].maxDatabars do _G.Tukui[1].databars[i]:Show() end