Files
coa-clique/Clique/config/DenylistConfig.lua
T
Anthony Narkevicius 9c36ee6e47 Update to 1.6 version (#6)
* Merge from origin https://gitlab.com/Tsoukie/clique-3.3.5

* Linting

* Ascension Modifications
Fixes Spec swap and adds the 12 slots
Fixes ascension compact raid frame support
Fixes ascension spell panel integration

* Add profile dropdown to binding window

* Fix menu buttons showing as invisible

* cleanup xml button definitions

* enable or disable Bind Spell button when spellbook is visible

* give the labels a bit more spacing for default UI
2025-11-09 10:40:17 -07:00

170 lines
5.0 KiB
Lua

--[[-------------------------------------------------------------------------
-- FrameOptionsPanel.lua
--
-- This file contains the definitions of the frame blacklist options panel.
--
-- Events registered:
-- None
-------------------------------------------------------------------------]] --
local addonName, addon = ...
local L = addon.L
local panel = CreateFrame("Frame")
panel.name = "Frame Blacklist"
panel.parent = addonName
addon.optpanels["BLACKLIST"] = panel
panel:SetScript("OnShow", function(self)
if not panel.initialized then
panel:CreateOptions()
panel.refresh()
end
panel.refresh()
end)
local function make_label(name, template)
local label = panel:CreateFontString("OVERLAY", "CliqueOptionsBlacklist" .. name, template)
label:SetWidth(panel:GetWidth())
label:SetJustifyH("LEFT")
label:SetJustifyV("TOP")
label.type = "label"
return label
end
local function make_checkbox(name, parent, label)
local frame = CreateFrame("CheckButton", "CliqueOptionsBlacklist" .. name, parent, "UICheckButtonTemplate")
frame.text = _G[frame:GetName() .. "Text"]
frame.type = "checkbox"
frame.text:SetText(label)
return frame
end
local state = {}
function panel:CreateOptions()
panel.initialized = true
self.intro = make_label("Intro", "GameFontHighlightSmall")
self.intro:SetPoint("TOPLEFT", panel, 5, -5)
self.intro:SetPoint("RIGHT", panel, -5, 0)
self.intro:SetHeight(45)
self.intro:SetText(
L["This panel allows you to blacklist certain frames from being included for Clique bindings. Any frames that are selected in this list will not be registered, although you may have to reload your user interface to have them return to their original bindings."])
self.scrollframe = CreateFrame("ScrollFrame", "CliqueOptionsBlacklistScrollFrame", self, "FauxScrollFrameTemplate")
self.scrollframe:SetPoint("TOPLEFT", self.intro, "BOTTOMLEFT", 0, -5)
self.scrollframe:SetPoint("RIGHT", self, "RIGHT", -30, 0)
self.scrollframe:SetHeight(320)
self.scrollframe:Show()
local function row_onclick(row) state[row.frameName] = not not row:GetChecked() end
self.rows = {}
-- Create and anchor some items
for idx = 1, 10 do
self.rows[idx] = make_checkbox("Item" .. idx, self.scrollframe, L["Frame name"])
self.rows[idx]:SetScript("OnClick", row_onclick)
if idx == 1 then
self.rows[idx]:SetPoint("TOPLEFT", self.scrollframe, "TOPLEFT", 0, 0)
else
self.rows[idx]:SetPoint("TOPLEFT", self.rows[idx - 1], "BOTTOMLEFT", 0, 0)
end
end
self.rowheight = self.rows[1]:GetHeight()
-- Number of items?
local function update() self:UpdateScrollFrame() end
self.scrollframe:SetScript("OnVerticalScroll", function(frame, offset) FauxScrollFrame_OnVerticalScroll(frame, offset, self.rowheight, update) end)
self.selectall = CreateFrame("Button", "CliqueOptionsBlacklistSelectAll", self, "UIPanelButtonTemplate2")
self.selectall:SetText(L["Select All"])
self.selectall:SetPoint("BOTTOMLEFT", 10, 10)
self.selectall:SetWidth(100)
self.selectall:SetScript("OnClick", function(button)
for frame in pairs(addon.ccframes) do
local name = frame:GetName()
if name then state[name] = true end
end
for name, frame in pairs(addon.hccframes) do state[name] = true end
self:UpdateScrollFrame()
end)
self.selectnone = CreateFrame("Button", "CliqueOptionsBlacklistSelectNone", self, "UIPanelButtonTemplate2")
self.selectnone:SetText(L["Select None"])
self.selectnone:SetPoint("BOTTOMLEFT", self.selectall, "BOTTOMRIGHT", 5, 0)
self.selectnone:SetWidth(100)
self.selectnone:SetScript("OnClick", function(button)
for frame in pairs(addon.ccframes) do
local name = frame:GetName()
if name then state[name] = false end
end
for name, frame in pairs(addon.hccframes) do state[name] = false end
self:UpdateScrollFrame()
end)
end
function panel:UpdateScrollFrame()
local sort = {}
for frame in pairs(addon.ccframes) do
local name = frame:GetName()
if name then table.insert(sort, name) end
end
for name, frame in pairs(addon.hccframes) do table.insert(sort, name) end
table.sort(sort)
local offset = FauxScrollFrame_GetOffset(self.scrollframe)
FauxScrollFrame_Update(self.scrollframe, #sort, 10, self.rowheight)
for i = 1, 10 do
local idx = offset + i
local row = self.rows[i]
if idx <= #sort then
row.frameName = sort[idx]
row.text:SetText(sort[idx])
row:SetChecked(state[sort[idx]])
row:Show()
else
row:Hide()
end
end
end
function panel.okay()
-- Clear the existing blacklist
for frame, value in pairs(state) do
if not not value then
addon.settings.blacklist[frame] = true
else
addon.settings.blacklist[frame] = nil
end
end
addon:FireMessage("BLACKLIST_CHANGED")
end
function panel.refresh()
for frame in pairs(addon.ccframes) do
local name = frame:GetName()
if name then state[name] = false end
end
for name, frame in pairs(addon.hccframes) do state[name] = false end
for frame, value in pairs(addon.settings.blacklist) do state[frame] = value end
panel:UpdateScrollFrame()
end
InterfaceOptions_AddCategory(panel, addon.optpanels.ABOUT)