--[[ Author: Jarth Filename: CBs_Labels.lua ]] -- ------------------------------------------------------------------------------------------------- -- VARIABLES -- ------------------------------------------------------------------------------------------------- local base = CollectionBars local texts = base.Texts ------------------------------------------------------------------------------------------------- -- FUNCTIONS -- ------------------------------------------------------------------------------------------------- function base.SetupLabel(category) local hideAllId = base.Addon.Abbreviation .. texts.Helpers.Lowdash .. texts.Components.HideAll if category.FrameLabel == nil then category.FrameLabel = GetControl(hideAllId .. category.Name) if category.FrameLabel == nil then category.FrameLabel = base.WM:CreateControlFromVirtual(hideAllId, category.Frame, hideAllId, category.Name) end end category.FrameLabel:SetHidden(not category.Saved.LabelShow and not category.Saved.IsCombined) category.FrameToggleSettings = GetControl(hideAllId .. category.Name .. texts.Components.Toggle .. texts.Components.Settings) category.FrameLabelButton = GetControl(hideAllId .. category.Name .. texts.Components.Button) if category.FrameLabelButton ~= nil then category.FrameLabelButton:SetHandler(texts.Action.OnClicked, function(_, button) if button == MOUSE_BUTTON_INDEX_RIGHT then base.ToggleEnableSettings() elseif button == MOUSE_BUTTON_INDEX_LEFT and category.Saved.HideAllEnabled or category.Saved.IsCombined then category.Saved.HideAll = not category.Saved.HideAll if category.Saved.IsCombined then base.HideOthers(category) end base.RestoreFrame(category) base.RestoreCombine() end end) end base.SetupToggleSettings(category) end function base.RestoreLabel(category) local label = category.Saved.Label local frameLabel = category.FrameLabel if frameLabel ~= nil then frameLabel:ClearAnchors() frameLabel:SetHeight(label.Height) frameLabel:SetWidth(label.Width) if not category.Saved.IsCombined then frameLabel:SetAnchor(label.Position, category.Frame, label.PositionTarget, label.OffsetX, label.OffsetY) end frameLabel:SetHidden(not category.Saved.LabelShow and not category.Saved.IsCombined and not base.Global.EnableSettings) end local frameLabelButton = category.FrameLabelButton if frameLabelButton ~= nil then frameLabelButton:SetHidden(false) frameLabelButton:SetFont(label.Font) frameLabelButton:SetHorizontalAlignment(TEXT_ALIGN_LEFT) frameLabelButton:SetVerticalAlignment(TOP) frameLabelButton:SetText(tostring(category.Saved.Display) .. base.GetLabelPostFix(category)) end local frameLabelToggleSettings = category.FrameToggleSettings if frameLabelToggleSettings ~= nil then frameLabelToggleSettings:SetHidden(false) end end function base.RemoveLabel(category) if category.FrameLabel ~= nil then category.FrameLabel:ClearAnchors() category.FrameLabel:SetHidden(true) end if category.FrameLabelButton ~= nil then category.FrameLabelButton:SetHidden(true) end if category.FrameToggleSettings ~= nil then category.FrameToggleSettings:SetHidden(true) end end function base.RestoreCombineLabels() local combineLabel = base.Saved.Combine.Label local width = 0 local height = 0 for _, category in pairs(base.CategoriesOrdered) do if category.Saved.Enabled and category.Saved.IsCombined and category.FrameLabel then if (not category.IsEmpty or base.Global.EnableSettings) then local hasSelected = not base.HasAny(category.Saved.Selected) category.FrameLabel:ClearAnchors() category.FrameLabel:SetHidden(not hasSelected and not category.Saved.LabelShow and not base.Global.EnableSettings) if not category.FrameLabel:IsHidden() or (category.Saved.LabelShow and hasSelected) or base.Global.EnableSettings then width = width + category.Saved.Label.OffsetX local offsetY = category.Saved.Label.OffsetY + combineLabel.OffsetY category.FrameLabel:SetAnchor(TOPLEFT, base.Global.Combine.HideAll, TOPLEFT, width, offsetY) width = width + category.FrameLabel:GetWidth() local labelHeight = category.FrameLabel:GetHeight() if labelHeight > height then height = labelHeight end end end end end local frame = base.Global.Combine.HideAll if frame ~= nil and base.Global.Combine.Frame ~= nil then frame:ClearAnchors() frame:SetWidth(width) frame:SetHeight(height) frame:SetAnchor(combineLabel.Position, base.Global.Combine.Frame, combineLabel.PositionTarget, combineLabel.OffsetX, combineLabel.OffsetY) end end