add MicroBar

This commit is contained in:
Crum
2017-12-20 16:11:54 -06:00
parent e7a58b6d69
commit 7196945321
4 changed files with 105 additions and 42 deletions
+1 -1
View File
@@ -825,7 +825,7 @@ function E:UpdateAll(ignoreInstall)
local AB = self:GetModule("ActionBars")
AB.db = self.db.actionbar
AB:UpdateButtonSettings()
-- AB:UpdateMicroPositionDimensions()
AB:UpdateMicroPositionDimensions()
local bags = E:GetModule("Bags")
bags.db = self.db.bags
@@ -4,7 +4,7 @@ local LSM = LibStub("LibSharedMedia-3.0");
--Cache global variables
--Lua functions
local _G = getfenv()
local _G = _G
local gsub, split = string.gsub, string.split
local ceil = math.ceil
local mod = math.mod
@@ -422,7 +422,7 @@ function AB:Initialize()
--self:LoadKeyBinder()
self:SecureHook("ActionButton_Update")
--self:SecureHook("PetActionBar_Update", "UpdatePet")
-- self:SecureHook("PetActionBar_Update", "UpdatePet")
end
local function InitializeCallback()
@@ -3,12 +3,15 @@ local AB = E:GetModule("ActionBars");
--Cache global variables
--Lua functions
local _G = getfenv()
local _G = _G
local getn = table.getn
local mod = math.mod
--WoW API / Variables
local CreateFrame = CreateFrame
local microBar = CreateFrame("Frame", "microBar", E.UIParent)
microBar:SetFrameStrata("BACKGROUND")
local MICRO_BUTTONS = {
"CharacterMicroButton",
"SpellbookMicroButton",
@@ -22,13 +25,13 @@ local MICRO_BUTTONS = {
local function Button_OnEnter()
if AB.db.microbar.mouseover then
UIFrameFadeIn(ElvUI_MicroBar, .2, ElvUI_MicroBar:GetAlpha(), AB.db.microbar.alpha)
UIFrameFadeIn(microBar, .2, microBar:GetAlpha(), AB.db.microbar.alpha)
end
end
local function Button_OnLeave()
if AB.db.microbar.mouseover then
UIFrameFadeOut(ElvUI_MicroBar, .2, ElvUI_MicroBar:GetAlpha(), 0)
UIFrameFadeOut(microBar, .2, microBar:GetAlpha(), 0)
end
end
@@ -37,7 +40,9 @@ function AB:HandleMicroButton(button)
local normal = button:GetNormalTexture()
local disabled = button:GetDisabledTexture()
--button:SetParent(ElvUI_MicroBar)
button:SetParent(microBar)
button:Show()
button:SetAlpha(self.db.microbar.alpha)
E:Kill(button:GetHighlightTexture())
HookScript(button, "OnEnter", Button_OnEnter)
@@ -45,7 +50,6 @@ function AB:HandleMicroButton(button)
local f = CreateFrame("Frame", nil, button)
f:SetFrameLevel(1)
f:SetFrameStrata("BACKGROUND")
f:SetPoint("BOTTOMLEFT", button, "BOTTOMLEFT", 2, 0)
f:SetPoint("TOPRIGHT", button, "TOPRIGHT", -2, -28)
E:SetTemplate(f, "Default", true)
@@ -63,28 +67,19 @@ function AB:HandleMicroButton(button)
end
end
function AB:UpdateMicroButtonsParent()
if CharacterMicroButton:GetParent() == ElvUI_MicroBar then return end
for i = 1, getn(MICRO_BUTTONS) do
-- _G[MICRO_BUTTONS[i]]:SetParent(ElvUI_MicroBar)
end
AB:UpdateMicroPositionDimensions()
end
function AB:UpdateMicroPositionDimensions()
if not ElvUI_MicroBar then return; end
if not microBar then return end
local numRows = 1
local button, prevButton, lastColumnButton
for i = 1, getn(MICRO_BUTTONS) do
local button = _G[MICRO_BUTTONS[i]]
local prevButton = _G[MICRO_BUTTONS[i-1]] or ElvUI_MicroBar
local lastColumnButton = _G[MICRO_BUTTONS[i-self.db.microbar.buttonsPerRow]]
button = _G[MICRO_BUTTONS[i]]
prevButton = _G[MICRO_BUTTONS[i-1]] or microBar
lastColumnButton = _G[MICRO_BUTTONS[i-self.db.microbar.buttonsPerRow]]
button:ClearAllPoints()
if prevButton == ElvUI_MicroBar then
if prevButton == microBar then
button:SetPoint("TOPLEFT", prevButton, "TOPLEFT", -2 + E.Border, 28 - E.Border)
elseif mod((i - 1), self.db.microbar.buttonsPerRow) == 0 then
button:SetPoint("TOP", lastColumnButton, "BOTTOM", 0, 28 - self.db.microbar.yOffset)
@@ -94,41 +89,38 @@ function AB:UpdateMicroPositionDimensions()
end
end
if AB.db.microbar.mouseover then
ElvUI_MicroBar:SetAlpha(0)
if self.db.microbar.mouseover then
microBar:SetAlpha(0)
else
ElvUI_MicroBar:SetAlpha(self.db.microbar.alpha)
microBar:SetAlpha(self.db.microbar.alpha)
end
AB.MicroWidth = ((_G["CharacterMicroButton"]:GetWidth() - 4) * self.db.microbar.buttonsPerRow) + (self.db.microbar.xOffset * (self.db.microbar.buttonsPerRow - 1)) + E.Border * 2
AB.MicroHeight = ((_G["CharacterMicroButton"]:GetHeight() - 28) * numRows) + (self.db.microbar.yOffset * (numRows - 1)) + E.Border * 2
ElvUI_MicroBar:SetWidth(AB.MicroWidth)
ElvUI_MicroBar:SetHeight(AB.MicroHeight)
microBar:SetWidth(((CharacterMicroButton:GetWidth() - 4) * self.db.microbar.buttonsPerRow) + (self.db.microbar.xOffset * (self.db.microbar.buttonsPerRow - 1)) + E.Border * 2)
microBar:SetHeight(((CharacterMicroButton:GetHeight() - 28) * numRows) + (self.db.microbar.yOffset * (numRows - 1)) + E.Border * 2)
if self.db.microbar.enabled then
ElvUI_MicroBar:Show()
if ElvUI_MicroBar.mover then
E:EnableMover(ElvUI_MicroBar.mover:GetName())
microBar:Show()
if microBar.mover then
E:EnableMover(microBar.mover:GetName())
end
else
ElvUI_MicroBar:Hide()
if ElvUI_MicroBar.mover then
E:DisableMover(ElvUI_MicroBar.mover:GetName())
microBar:Hide()
if microBar.mover then
E:DisableMover(microBar.mover:GetName())
end
end
end
function AB:SetupMicroBar()
local microBar = CreateFrame("Frame", "ElvUI_MicroBar", E.UIParent)
microBar:SetPoint("TOPLEFT", E.UIParent, "TOPLEFT", 4, -48)
microBar:SetPoint("TOPLEFT", 4, -48)
for i = 1, getn(MICRO_BUTTONS) do
self:HandleMicroButton(_G[MICRO_BUTTONS[i]])
end
E:SetInside(MicroButtonPortrait, CharacterMicroButton.backdrop)
self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateMicroButtonsParent")
self:UpdateMicroPositionDimensions()
E:CreateMover(microBar, "MicrobarMover", L["Micro Bar"], nil, nil, nil, "ALL,ACTIONBARS")
end
+73 -2
View File
@@ -203,6 +203,77 @@ local function BuildABConfig()
}
}
}
group["microbar"] = {
order = 4,
type = "group",
name = L["Micro Bar"],
get = function(info) return E.db.actionbar.microbar[ info[getn(info)] ] end,
set = function(info, value) E.db.actionbar.microbar[ info[getn(info)] ] = value AB:UpdateMicroPositionDimensions() end,
disabled = function() return not E.private.actionbar.enable end,
args = {
info = {
order = 1,
type = "header",
name = L["Micro Bar"]
},
enabled = {
order = 2,
type = "toggle",
name = L["Enable"]
},
restorePosition = {
order = 3,
type = "execute",
name = L["Restore Bar"],
desc = L["Restore the actionbars default settings"],
func = function() E:CopyTable(E.db.actionbar["microbar"], P.actionbar["microbar"]) E:ResetMovers(L["Micro Bar"]) AB:UpdateMicroPositionDimensions() end,
disabled = function() return not E.db.actionbar.microbar.enabled end
},
spacer = {
order = 4,
type = "description",
name = " "
},
buttonsPerRow = {
order = 5,
type = "range",
name = L["Buttons Per Row"],
desc = L["The amount of buttons to display per row."],
min = 1, max = 8, step = 1,
disabled = function() return not E.db.actionbar.microbar.enabled end
},
xOffset = {
order = 6,
type = "range",
name = L["xOffset"],
min = -1, max = 10, step = 1,
disabled = function() return not E.db.actionbar.microbar.enabled end
},
yOffset = {
order = 7,
type = "range",
name = L["yOffset"],
min = -1, max = 10, step = 1,
disabled = function() return not E.db.actionbar.microbar.enabled end
},
alpha = {
order = 8,
type = "range",
isPercent = true,
name = L["Alpha"],
desc = L["Change the alpha level of the frame."],
min = 0, max = 1, step = 0.1,
disabled = function() return not E.db.actionbar.microbar.enabled end
},
mouseover = {
order = 9,
type = "toggle",
name = L["Mouse Over"],
desc = L["The frame is not shown unless you mouse over the frame."],
disabled = function() return not E.db.actionbar.microbar.enabled end
}
}
}
end
local function BuildBarConfig(i)
@@ -418,7 +489,7 @@ E.Options.args.actionbar = {
order = 9,
type = "execute",
name = L["Micro Bar"],
--buttonElvUI = true,
-- buttonElvUI = true,
func = function() ACD:SelectGroup("ElvUI", "actionbar", "microbar") end,
disabled = function() return not E.private.actionbar.enable end
},
@@ -426,7 +497,7 @@ E.Options.args.actionbar = {
order = 10,
type = "execute",
name = L["Bar "]..1,
--buttonElvUI = true,
-- buttonElvUI = true,
func = function() ACD:SelectGroup("ElvUI", "actionbar", "bar1") end,
disabled = function() return not E.private.actionbar.enable end
},