From 6f5086adc8e40b817772247d7e9bd2cda6bafa2f Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Sat, 21 Feb 2009 14:12:49 +0100 Subject: [PATCH] Added plumbing to change the growth direction of the bars. Currently always defaults to DOWN and RIGHT, as that is the "old" behaviour. --- Bar.lua | 18 ++++++++++++++---- ButtonBar.lua | 14 ++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Bar.lua b/Bar.lua index a4b3592..86b2375 100644 --- a/Bar.lua +++ b/Bar.lua @@ -21,6 +21,8 @@ local defaults = { }, position = { scale = 1, + growVertical = "DOWN", + growHorizontal = "RIGHT", }, clickthrough = false, } @@ -109,9 +111,13 @@ function Bartender4.Bar:Create(id, config, name) bar.id = id bar.name = name or id + bar.config = config bar:SetMovable(true) bar:HookScript("OnAttributeChanged", barOnAttributeChanged) + bar:SetWidth(1) + bar:SetHeight(1) + local overlay = CreateFrame("Button", bar:GetName() .. "Overlay", bar) bar.overlay = overlay overlay:EnableMouse(true) @@ -142,10 +148,10 @@ function Bartender4.Bar:Create(id, config, name) overlay:SetFrameLevel(bar:GetFrameLevel() + 10) overlay:ClearAllPoints() - overlay:SetAllPoints(bar) + local anchor = bar:GetAnchor() + overlay:SetPoint(anchor, bar, anchor) overlay:Hide() - bar.config = config bar.elapsed = 0 bar.hidedriver = {} @@ -190,6 +196,10 @@ function Bar:ApplyConfig(config) self:InitVisibilityDriver() end +function Bar:GetAnchor() + return ((self.config.position.growVertical == "DOWN") and "TOP" or "BOTTOM") .. ((self.config.position.growHorizontal == "RIGHT") and "LEFT" or "RIGHT") +end + function Bar:UpgradeConfig() local version = self.config.version or 1 if version < 2 then @@ -244,8 +254,8 @@ function Bar:SavePosition() end function Bar:SetSize(width, height) - self:SetWidth(width) - self:SetHeight(height or width) + self.overlay:SetWidth(width) + self.overlay:SetHeight(height or width) end function Bar:GetConfigAlpha() diff --git a/ButtonBar.lua b/ButtonBar.lua index 688fbad..8dbc13a 100644 --- a/ButtonBar.lua +++ b/ButtonBar.lua @@ -155,16 +155,22 @@ function ButtonBar:UpdateButtonLayout() self:SetSize((self.button_width + hpad) * ButtonPerRow - pad + 8, (self.button_height + vpad) * Rows - pad + 8) - -- anchor button 1 to the topleft corner of the bar - buttons[1]:ClearSetPoint("TOPLEFT", self, "TOPLEFT", 5 - (self.hpad_offset or 0), -3 - (self.vpad_offset or 0)) + local anchor = self:GetAnchor() + -- anchor button 1 + buttons[1]:ClearSetPoint(anchor, self, anchor, 5 - (self.hpad_offset or 0), -3 - (self.vpad_offset or 0)) + + local h1 = (self.config.position.growHorizontal == "RIGHT") and "LEFT" or "RIGHT" + local h2 = (self.config.position.growHorizontal == "RIGHT") and "RIGHT" or "LEFT" + local v1 = (self.config.position.growVertical == "DOWN") and "TOP" or "BOTTOM" + local v2 = (self.config.position.growVertical == "DOWN") and "BOTTOM" or "TOP" -- and anchor all other buttons relative to our button 1 for i = 2, numbuttons do -- jump into a new row if ((i-1) % ButtonPerRow) == 0 then - buttons[i]:ClearSetPoint("TOPLEFT", buttons[i-ButtonPerRow], "BOTTOMLEFT", 0, -vpad) + buttons[i]:ClearSetPoint(v1 .. h1, buttons[i-ButtonPerRow], v2 .. h1, 0, -vpad) -- align to the previous button else - buttons[i]:ClearSetPoint("TOPLEFT", buttons[i-1], "TOPRIGHT", hpad, 0) + buttons[i]:ClearSetPoint("TOP" .. h1, buttons[i-1], "TOP" .. h2, hpad, 0) end end