Files
coa-quartz/Quartz/Config.lua
T
Andrew6810 3b75efe038 init
2022-10-21 07:30:59 -07:00

216 lines
6.2 KiB
Lua

--[[
Copyright (C) 2006-2007 Nymbia
Copyright (C) 2010 Hendrik "Nevcairiel" Leppkes < h.leppkes@gmail.com >
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
]]
local Quartz3 = LibStub("AceAddon-3.0"):GetAddon("Quartz3")
local L = LibStub("AceLocale-3.0"):GetLocale("Quartz3")
local media = LibStub("LibSharedMedia-3.0")
----------------------------
-- Upvalues
-- GLOBALS: LibStub, InterfaceOptionsFrame_OpenToCategory
local pairs, unpack, type = pairs, unpack, type
local getOpt, setOpt, getColor, setColor
do
function getOpt(info)
local key = info[#info]
return Quartz3.db.profile[key]
end
function setOpt(info, value)
local key = info[#info]
Quartz3.db.profile[key] = value
Quartz3:ApplySettings()
end
function getColor(info)
return unpack(getOpt(info))
end
function setColor(info, r, g, b, a)
setOpt(info, {r, g, b, a})
end
end
local options, moduleOptions = nil, {}
local function getOptions()
if not options then
options = {
type = "group",
args = {
general = {
type = "group",
inline = true,
name = "",
args = {
unlock = {
type = "execute",
name = L["Toggle Bar Lock"],
desc = L["Unlock the Bars to be able to move them around."],
func = function()
Quartz3:ToggleLock(true)
end,
order = 50,
},
nllock = {
type = "description",
name = "",
order = 51,
},
hidesamwise = {
type = "toggle",
name = L["Hide Samwise Icon"],
desc = L["Hide the icon for spells with no icon"],
order = 101,
get = getOpt,
set = setOpt,
},
casttimeprecision = {
type = "range",
name = L["Cast Time Precision"],
desc = L["Number of decimals to show for the Cast Time"],
min = 0, max = 3, step = 1,
get = getOpt,
set = setOpt,
order = 102,
},
colors = {
type = "group",
name = L["Colors"],
desc = L["Colors"],
guiInline = true,
order = 450,
get = getColor,
set = setColor,
args = {
spelltextcolor = {
type = "color",
name = L["Spell Text"],
desc = L["Set the color of the %s"]:format(L["Spell Text"]),
order = 98,
},
timetextcolor = {
type = "color",
name = L["Time Text"],
desc = L["Set the color of the %s"]:format(L["Time Text"]),
order = 98,
},
header = {
type = "header",
name = "",
order = 99,
},
castingcolor = {
type = "color",
name = L["Casting"],
desc = L["Set the color of the cast bar when %s"]:format(L["Casting"]),
},
channelingcolor = {
type = "color",
name = L["Channeling"],
desc = L["Set the color of the cast bar when %s"]:format(L["Channeling"]),
},
completecolor = {
type = "color",
name = L["Complete"],
desc = L["Set the color of the cast bar when %s"]:format(L["Complete"]),
},
failcolor = {
type = "color",
name = L["Failed"],
desc = L["Set the color of the cast bar when %s"]:format(L["Failed"]),
},
sparkcolor = {
type = "color",
name = L["Spark Color"],
desc = L["Set the color of the casting bar spark"],
hasAlpha = true,
},
nl1 = {
type = "description",
name = "",
order = 101,
},
backgroundcolor = {
type = "color",
name = L["Background"],
desc = L["Set the color of the casting bar background"],
order = 102,
},
backgroundalpha = {
type = "range",
name = L["Background Alpha"],
desc = L["Set the alpha of the casting bar background"],
isPercent = true,
min = 0, max = 1, bigStep = 0.025,
get = getOpt,
set = setOpt,
order = 103,
},
bordercolor = {
type = "color",
name = L["Border"],
desc = L["Set the color of the casting bar border"],
order = 104,
},
borderalpha = {
type = "range",
name = L["Border Alpha"],
desc = L["Set the alpha of the casting bar border"],
isPercent = true,
min = 0, max = 1, bigStep = 0.025,
get = getOpt,
set = setOpt,
order = 105,
},
},
},
},
},
},
}
for k,v in pairs(moduleOptions) do
options.args[k] = (type(v) == "function") and v() or v
end
end
return options
end
function Quartz3:ChatCommand(input)
if not input or input:trim() == "" then
InterfaceOptionsFrame_OpenToCategory(Quartz3.optFrames.Profiles)
InterfaceOptionsFrame_OpenToCategory(Quartz3.optFrames.Quartz3)
else
LibStub("AceConfigCmd-3.0").HandleCommand(Quartz3, "quartz", "Quartz3", input)
end
end
function Quartz3:SetupOptions()
self.optFrames = {}
LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("Quartz3", getOptions)
self.optFrames.Quartz3 = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Quartz3", "Quartz 3", nil, "general")
self:RegisterModuleOptions("Profiles", LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db), "Profiles")
self:RegisterChatCommand("quartz", "ChatCommand")
self:RegisterChatCommand("q3", "ChatCommand")
end
function Quartz3:RegisterModuleOptions(name, optTable, displayName)
moduleOptions[name] = optTable
self.optFrames[name] = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Quartz3", displayName or name, "Quartz 3", name)
end