/Tukui/modules/panels/control_panel.lua

http://github.com/Asphyxia/Tukui · Lua · 135 lines · 110 code · 15 blank · 10 comment · 7 complexity · 2692a4133ed8b79ad2bcbc359d4e962a MD5 · raw file

  1. local T, C, L = unpack(select(2, ...)) -- Import: T - functions, constants, variables; C - config; L - locales
  2. ----------------------------------------------------------------------------------
  3. -- Config Panel For Action Bars [Credit Smelly]
  4. ----------------------------------------------------------------------------------
  5. local function ModifiedBackdrop(self)
  6. local color = RAID_CLASS_COLORS[T.myclass]
  7. self:SetBackdropColor(color.r*.15, color.g*.15, color.b*.15)
  8. self:SetBackdropBorderColor(color.r, color.g, color.b)
  9. end
  10. local function OriginalBackdrop(self)
  11. self:SetTemplate("Default")
  12. end
  13. -- BG for action bar config
  14. local actionBarBG = CreateFrame("Frame", "actionBarBG", UIParent)
  15. actionBarBG:CreatePanel("Default", 150, 61, "CENTER", UIParent, "CENTER", 0, 25)
  16. if T.lowversion then
  17. actionBarBG:Height(61)
  18. else
  19. actionBarBG:Height(80)
  20. end
  21. T.fadeIn(actionBarBG)
  22. actionBarBG:SetFrameLevel(15)
  23. actionBarBG:Hide()
  24. local abHeader = CreateFrame("Frame", "abHeader", actionBarBG)
  25. abHeader:CreatePanel("Transparent", actionBarBG:GetWidth() - 1, 20, "BOTTOM", actionBarBG, "TOP", 0, 2, true)
  26. abHeader.text:SetText(T.datacolor.."Actionbar Config Menu")
  27. -- BG for Control Panel
  28. local extrasBG = CreateFrame("Frame", "extrasBG", UIParent)
  29. extrasBG:CreatePanel("Default", 152, 114 , "CENTER", UIParent, "CENTER", 0, 25)
  30. extrasBG:SetFrameLevel(10)
  31. extrasBG:SetFrameStrata("BACKGROUND")
  32. extrasBG:Hide()
  33. T.fadeIn(extrasBG)
  34. local extraHeader = CreateFrame("Frame", "extraHeader", extrasBG)
  35. extraHeader:CreatePanel("Transparent", extrasBG:GetWidth() - 1, 20, "BOTTOM", extrasBG, "TOP", 0, 2, true)
  36. extraHeader.text:SetText(T.datacolor.."Control Panel Menu")
  37. -- close button inside action bar config
  38. local closeAB = CreateFrame("Frame", "closeAB", actionBarBG)
  39. closeAB:CreatePanel("Default", actionBarBG:GetWidth() - 8, 15, "BOTTOM", actionBarBG, "BOTTOM", 0, 4, true)
  40. closeAB:SetFrameLevel(actionBarBG:GetFrameLevel() + 1)
  41. closeAB:HookScript("OnEnter", ModifiedBackdrop)
  42. closeAB:HookScript("OnLeave", OriginalBackdrop)
  43. closeAB.text:SetText(T.datacolor.."Close")
  44. closeAB:CreateOverlay(closeAB)
  45. closeAB:SetScript("OnMouseDown", function()
  46. T.fadeOut(actionBarBG)
  47. extrasBG:Show()
  48. end)
  49. -- slash command to open up actionbar config
  50. function SlashCmdList.AB()
  51. if extrasBG:IsShown() then
  52. actionBarBG:Show()
  53. T.fadeOut(extrasBG)
  54. else
  55. actionBarBG:Show()
  56. end
  57. end
  58. SLASH_AB1 = "/ab"
  59. -- setup config button slash commands
  60. local buttons = {
  61. [1] = {"/ab"},
  62. [2] = {"/am"},
  63. [3] = {"/tc"},
  64. [4] = {"/mtukui"},
  65. }
  66. -- setup text in each button
  67. local texts = {
  68. [1] = {T.datacolor.."Actionbar Config"},
  69. [2] = {T.datacolor.."Addons"},
  70. [3] = {T.datacolor.."Config UI"},
  71. [4] = {T.datacolor.."Move UI"},
  72. }
  73. -- create the config buttons
  74. local button = CreateFrame("Button", "button", extrasBG)
  75. for i = 1, getn(buttons) do
  76. button[i] = CreateFrame("Button", "button"..i, extrasBG, "SecureActionButtonTemplate")
  77. button[i]:CreatePanel("Default", extrasBG:GetWidth() - 8, 24, "TOP", extrasBG, "TOP", 0, -4, true)
  78. button[i]:SetFrameLevel(extrasBG:GetFrameLevel() + 1)
  79. button[i].text:SetText(unpack(texts[i]))
  80. if i == 1 then
  81. button[i]:Point("TOP", extrasBG, "TOP", 0, -5)
  82. else
  83. button[i]:Point("TOP", button[i-1], "BOTTOM", 0, -3)
  84. end
  85. button[i]:SetAttribute("type", "macro")
  86. button[i]:SetAttribute("macrotext", unpack(buttons[i]))
  87. button[i]:SetFrameStrata("BACKGROUND")
  88. button[i]:CreateOverlay(button[i])
  89. button[i]:HookScript("OnEnter", ModifiedBackdrop)
  90. button[i]:HookScript("OnLeave", OriginalBackdrop)
  91. end
  92. local close = CreateFrame("Button", "close", extrasBG)
  93. close:CreatePanel("Default", extrasBG:GetWidth() - 8, 24, "TOP", button[7], "BOTTOM", 0, -3, true)
  94. close:SetFrameLevel(extrasBG:GetFrameLevel() + 1)
  95. close:SetFrameStrata("BACKGROUND")
  96. close.text:SetText(T.datacolor.."Close")
  97. close:HookScript("OnEnter", ModifiedBackdrop)
  98. close:HookScript("OnLeave", OriginalBackdrop)
  99. close:SetScript("OnMouseDown", function()
  100. T.fadeOut(extrasBG)
  101. end)
  102. local extraToggle = CreateFrame("Frame", "extraToggle", UIParent)
  103. extraToggle:CreatePanel("Default", 100, 20, "BOTTOM", UIParent, "BOTTOM", 0, 2, true)
  104. extraToggle:CreateBorder(false, true)
  105. extraToggle:SetFrameLevel(2)
  106. extraToggle:SetFrameStrata("LOW")
  107. extraToggle:CreateShadow("Default")
  108. extraToggle:CreateOverlay(extraToggle)
  109. extraToggle.text:SetText(T.datacolor.."Control Panel")
  110. extraToggle:HookScript("OnEnter", ModifiedBackdrop)
  111. extraToggle:HookScript("OnLeave", OriginalBackdrop)
  112. extraToggle:SetScript("OnMouseDown", function(self)
  113. if InCombatLockdown() then print(ERR_NOT_IN_COMBAT) return end
  114. if not extrasBG:IsShown() then
  115. extrasBG:Show()
  116. T.fadeOut(actionBarBG)
  117. else
  118. T.fadeOut(extrasBG)
  119. end
  120. end)