9c36ee6e47
* 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
170 lines
5.0 KiB
Lua
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)
|