--[[ Author: Jarth Filename: CBs_Labels.lua ]] -- ------------------------------------------------------------------------------------------------- -- VARIABLES -- ------------------------------------------------------------------------------------------------- local base = CollectionBars local texts = base.Texts ------------------------------------------------------------------------------------------------- -- FUNCTIONS -- ------------------------------------------------------------------------------------------------- function base:SetupLabel(category) base:Debug("SetupLabel", category) local hideAllId = string.format(texts.FormatAbbreviationLowDash, "HideAll") local hideAllCategory = string.format("%s%s", hideAllId, category.Name) if category.Frames.Label == nil then category.Frames.Label = GetControl(hideAllCategory) if category.Frames.Label == nil then category.Frames.Label = base.WM:CreateControlFromVirtual(hideAllId, category.Frames.Frame, hideAllId, category.Name) end end category.Frames.Label:SetHidden(not category.Saved.Label.Show and not category.Saved.Bar.IsCombined) category.Frames.ToggleSettings = GetControl(string.format("%sToggleSettings", hideAllCategory)) category.Frames.LabelButton = GetControl(string.format("%sButton", hideAllCategory)) if category.Frames.LabelButton ~= nil then category.Frames.LabelButton:SetHandler("OnClicked", function(_, button) if button == MOUSE_BUTTON_INDEX_RIGHT then base:ToggleEnableSettings() elseif button == MOUSE_BUTTON_INDEX_LEFT and category.Saved.Label.EnableHideAll or category.Saved.Bar.IsCombined then category.Saved.Bar.HideAll = not category.Saved.Bar.HideAll if category.Saved.Bar.IsCombined then base:HideOthers(category) end base:RestoreFrame(category) base:RestoreCombine() end end) end base:SetupToggleSettings(category) end function base:RestoreLabel(category) base:Debug("RestoreLabel", category) local label = category.Saved.Label local frameLabel = category.Frames.Label if frameLabel ~= nil then frameLabel:ClearAnchors() frameLabel:SetHeight(label.Height) frameLabel:SetWidth(label.Width) if not category.Saved.Bar.IsCombined then frameLabel:SetAnchor(label.Position, category.Frames.Frame, label.PositionTarget, label.Offset.X, label.Offset.Y) end frameLabel:SetHidden(not category.Saved.Label.Show and not category.Saved.Bar.IsCombined and not base.Global.EnableSettings) end local frameLabelButton = category.Frames.LabelButton if frameLabelButton ~= nil then frameLabelButton:SetHidden(false) frameLabelButton:SetFont(label.Font) frameLabelButton:SetHorizontalAlignment(TEXT_ALIGN_LEFT) frameLabelButton:SetVerticalAlignment(TOP) frameLabelButton:SetText(string.format("%s%s", tostring(category.Saved.Label.Display), base:GetLabelPostFix(category))) end local frameLabelToggleSettings = category.Frames.ToggleSettings if frameLabelToggleSettings ~= nil then frameLabelToggleSettings:SetHidden(false) end end function base:RemoveLabel(category) base:Debug("RemoveLabel", category) if category.Frames.Label ~= nil then category.Frames.Label:ClearAnchors() category.Frames.Label:SetHidden(true) end if category.Frames.LabelButton ~= nil then category.Frames.LabelButton:SetHidden(true) end if category.Frames.ToggleSettings ~= nil then category.Frames.ToggleSettings:SetHidden(true) end end function base:RestoreCombineLabels() base:Debug("RestoreCombineLabels") local combineLabel = base.Saved.Combine.Label local width = 0 local height = 0 for _, category in ipairs(base.CategoriesOrdered) do if category.Saved.Enabled and category.Saved.Bar.IsCombined and category.Frames.Label then if (not category.IsEmpty or base.Global.EnableSettings) then local hasSelected = not base:HasAny(category.Saved.Selected) category.Frames.Label:ClearAnchors() category.Frames.Label:SetHidden(not hasSelected and not category.Saved.Label.Show and not base.Global.EnableSettings) if not category.Frames.Label:IsHidden() or (category.Saved.Label.Show and hasSelected) or base.Global.EnableSettings then width = width + category.Saved.Label.Offset.X local offsetY = category.Saved.Label.Offset.Y + combineLabel.Offset.Y category.Frames.Label:SetAnchor(TOPLEFT, base.Global.Combine.Frames.HideAll, TOPLEFT, width, offsetY) width = width + category.Frames.Label:GetWidth() local labelHeight = category.Frames.Label:GetHeight() if labelHeight > height then height = labelHeight end end end end end local frame = base.Global.Combine.Frames.HideAll if frame ~= nil and base.Global.Combine.Frames.Frame ~= nil then frame:ClearAnchors() frame:SetWidth(width) frame:SetHeight(height) frame:SetAnchor(combineLabel.Position, base.Global.Combine.Frames.Frame, combineLabel.PositionTarget, combineLabel.Offset.X, combineLabel.Offset.Y) end end