From 719694532150e75584568b4e96a1ea0f0d06a96f Mon Sep 17 00:00:00 2001 From: Crum Date: Wed, 20 Dec 2017 16:11:54 -0600 Subject: [PATCH] add MicroBar --- 2/3/4/5/6/7/ElvUI/Core/core.lua | 2 +- .../7/ElvUI/Modules/ActionBars/ActionBars.lua | 4 +- .../6/7/ElvUI/Modules/ActionBars/Microbar.lua | 66 +++++++--------- 2/3/4/5/6/7/ElvUI_Config/actionbars.lua | 75 ++++++++++++++++++- 4 files changed, 105 insertions(+), 42 deletions(-) diff --git a/2/3/4/5/6/7/ElvUI/Core/core.lua b/2/3/4/5/6/7/ElvUI/Core/core.lua index c813e0e..d437584 100644 --- a/2/3/4/5/6/7/ElvUI/Core/core.lua +++ b/2/3/4/5/6/7/ElvUI/Core/core.lua @@ -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 diff --git a/2/3/4/5/6/7/ElvUI/Modules/ActionBars/ActionBars.lua b/2/3/4/5/6/7/ElvUI/Modules/ActionBars/ActionBars.lua index 51f78c7..28c4042 100644 --- a/2/3/4/5/6/7/ElvUI/Modules/ActionBars/ActionBars.lua +++ b/2/3/4/5/6/7/ElvUI/Modules/ActionBars/ActionBars.lua @@ -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() diff --git a/2/3/4/5/6/7/ElvUI/Modules/ActionBars/Microbar.lua b/2/3/4/5/6/7/ElvUI/Modules/ActionBars/Microbar.lua index 60799d0..d8a9737 100644 --- a/2/3/4/5/6/7/ElvUI/Modules/ActionBars/Microbar.lua +++ b/2/3/4/5/6/7/ElvUI/Modules/ActionBars/Microbar.lua @@ -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 \ No newline at end of file diff --git a/2/3/4/5/6/7/ElvUI_Config/actionbars.lua b/2/3/4/5/6/7/ElvUI_Config/actionbars.lua index 44f62c2..e8417c7 100644 --- a/2/3/4/5/6/7/ElvUI_Config/actionbars.lua +++ b/2/3/4/5/6/7/ElvUI_Config/actionbars.lua @@ -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 },