--[[ 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