local _, Cell = ... local L = Cell.L local F = Cell.funcs local P = Cell.pixelPerfectFuncs local utilitiesTab = Cell:CreateFrame("CellOptionsFrame_UtilitiesTab", Cell.frames.optionsFrame, nil, nil, true) Cell.frames.utilitiesTab = utilitiesTab utilitiesTab:SetAllPoints(Cell.frames.optionsFrame) utilitiesTab:Hide() ------------------------------------------------- -- list ------------------------------------------------- local buttons = {} local listFrame, lastShown local function UpdateFontString(b) local fs = b:GetFontString() fs:ClearAllPoints() fs:SetPoint("LEFT", 3, 0) fs:SetPoint("RIGHT", -3, 0) fs:SetWordWrap(true) fs:SetSpacing(3) end function F:CreateUtilityList(anchor) listFrame = CreateFrame("Frame", nil, Cell.frames.optionsFrame, "BackdropTemplate") Cell:StylizeFrame(listFrame, {0,1,0,0.1}, {0,0,0,1}) listFrame:SetPoint("TOPLEFT", anchor, "TOPRIGHT", 1, 0) listFrame:Hide() Cell:StylizeFrame(listFrame, nil, Cell:GetAccentColorTable()) -- update width to show full text local dumbFS1 = listFrame:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET") dumbFS1:SetText(L["Quick Assist"]) local dumbFS2 = listFrame:CreateFontString(nil, "OVERLAY", "CELL_FONT_WIDGET") dumbFS2:SetText(L["Dispel Request"]) -- buttons buttons["raidTools"] = Cell:CreateButton(listFrame, L["Raid Tools"], "transparent-accent", {20, 20}, true) buttons["raidTools"].id = "raidTools" buttons["raidTools"]:SetPoint("TOPLEFT") buttons["raidTools"]:SetPoint("TOPRIGHT") buttons["spellRequest"] = Cell:CreateButton(listFrame, L["Spell Request"], "transparent-accent", {20, 20}, true) buttons["spellRequest"].id = "spellRequest" buttons["spellRequest"]:SetPoint("TOPLEFT", buttons["raidTools"], "BOTTOMLEFT") buttons["spellRequest"]:SetPoint("TOPRIGHT", buttons["raidTools"], "BOTTOMRIGHT") buttons["dispelRequest"] = Cell:CreateButton(listFrame, L["Dispel Request"], "transparent-accent", {20, 20}, true) buttons["dispelRequest"].id = "dispelRequest" buttons["dispelRequest"]:SetPoint("TOPLEFT", buttons["spellRequest"], "BOTTOMLEFT") buttons["dispelRequest"]:SetPoint("TOPRIGHT", buttons["spellRequest"], "BOTTOMRIGHT") if Cell.isRetail then buttons["quickAssist"] = Cell:CreateButton(listFrame, L["Quick Assist"], "transparent-accent", {20, 20}, true) buttons["quickAssist"].id = "quickAssist" buttons["quickAssist"]:SetPoint("TOPLEFT", buttons["dispelRequest"], "BOTTOMLEFT") buttons["quickAssist"]:SetPoint("TOPRIGHT", buttons["dispelRequest"], "BOTTOMRIGHT") buttons["quickCast"] = Cell:CreateButton(listFrame, L["Quick Cast"], "transparent-accent", {20, 20}, true) buttons["quickCast"].id = "quickCast" buttons["quickCast"]:SetPoint("TOPLEFT", buttons["quickAssist"], "BOTTOMLEFT") buttons["quickCast"]:SetPoint("TOPRIGHT", buttons["quickAssist"], "BOTTOMRIGHT") P:Size(listFrame, ceil(max(dumbFS1:GetStringWidth(), dumbFS2:GetStringWidth())) + 13, 20*5) else P:Size(listFrame, ceil(max(dumbFS1:GetStringWidth(), dumbFS2:GetStringWidth())) + 13, 20*3) end local highlight = Cell:CreateButtonGroup(buttons, function(id) lastShown = id anchor:Click() Cell:Fire("ShowUtilitySettings", id) listFrame:Hide() end) highlight("raidTools") end function F:ShowUtilityList() listFrame:SetFrameStrata("TOOLTIP") listFrame:Show() end function F:HideUtilityList() if listFrame then listFrame:Hide() end end function F:IsUtilityListMouseover() return listFrame and listFrame:IsMouseOver() end ------------------------------------------------- -- show ------------------------------------------------- local utilityHeight = { ["raidTools"] = 320, ["spellRequest"] = 400, ["dispelRequest"] = 420, ["quickAssist"] = 510, ["quickCast"] = 510, } local init local function ShowTab(tab) if tab == "utilities" then if not init then init = true lastShown = lastShown or "raidTools" end Cell:Fire("ShowUtilitySettings", lastShown) utilitiesTab:Show() else utilitiesTab:Hide() end end Cell:RegisterCallback("ShowOptionsTab", "UtilitiesTab_ShowTab", ShowTab) Cell:RegisterCallback("ShowUtilitySettings", "UtilitiesTab_ShowUtilitySettings", function(which) P:Height(Cell.frames.optionsFrame, utilityHeight[which]) end) function F:ShowQuickAssistTab() buttons["quickAssist"]:Click() end