You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

625 lines
20 KiB

---------------------------------------------------------------------------------
--
-- Prat - A framework for World of Warcraft chat mods
--
-- Copyright (C) 2006-2018 Prat Development Team
--
-- 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:
--
-- Free Software Foundation, Inc.,
-- 51 Franklin Street, Fifth Floor,
-- Boston, MA 02110-1301, USA.
--
--
-------------------------------------------------------------------------------
--[[ BEGIN STANDARD HEADER ]] --
-- Imports
local _G = _G
local LibStub = LibStub
local tonumber = tonumber
local tostring = tostring
local pairs = pairs
local type = type
local Prat = select(2, ...)
local setmetatable = setmetatable
local tinsert = tinsert
--[[ END STANDARD HEADER ]] --
local PL = Prat.Localizations
--[==[@debug@
PL:AddLocale(nil, "enUS", {
prat = "Prat",
["display_name"] = "Display Settings",
["display_desc"] = "Chat Frame Control and Look",
["formatting_name"] = "Chat Formatting",
["formatting_desc"] = "Change the way the lines look and feel",
["extras_name"] = "Extra Stuff",
["extras_desc"] = "Msc. Modules",
["modulecontrol_name"] = "Module Control",
["modulecontrol_desc"] = "Control the loading and enabling of Prat's modules.",
["reload_required"] = "This option change may not take full effect until you %s your UI.",
load_no = "Don't Load",
load_disabled = "Disabled",
load_enabled = "Enabled",
load_desc = "Control the load behavior for this module.",
unloaded_desc = "Module is not loaded, load it to see description",
load_disabledonrestart = "Disabled (reload)",
load_enabledonrestart = "Enabled (reload)",
})
--@end-debug@]==]
-- These Localizations are auto-generated. To help with localization
-- please go to http://www.wowace.com/projects/prat-3-0/localization/
--@non-debug@
do
local L
L = {
["display_desc"] = "Chat Frame Control and Look",
["display_name"] = "Display Settings",
["extras_desc"] = "Msc. Modules",
["extras_name"] = "Extra Stuff",
["formatting_desc"] = "Change the way the lines look and feel",
["formatting_name"] = "Chat Formatting",
["load_desc"] = "Control the load behavior for this module.",
["load_disabled"] = "Disabled",
["load_disabledonrestart"] = "Disabled (reload)",
["load_enabled"] = "Enabled",
["load_enabledonrestart"] = "Enabled (reload)",
["load_no"] = "Don't Load",
["modulecontrol_desc"] = "Control the loading and enabling of Prat's modules.",
["modulecontrol_name"] = "Module Control",
["prat"] = "Prat",
["reload_required"] = "This option change may not take full effect until you %s your UI.",
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "enUS",L)
L = {
["display_desc"] = "Comportement et apparence de la fenêtre de discussion.",
["display_name"] = "Options d'affichage",
["extras_desc"] = "Modules divers",
["extras_name"] = "Suppléments",
["formatting_desc"] = "Apparence des lignes et du texte",
["formatting_name"] = "Formatage du texte",
["load_desc"] = "Contrôle le comportement de chargement de ce module.",
["load_disabled"] = "Désactivé",
["load_disabledonrestart"] = "Désactivé (recharger)",
["load_enabled"] = "Activé",
["load_enabledonrestart"] = "Activé (recharger)",
["load_no"] = "Ne pas charger",
["modulecontrol_desc"] = "Contrôler le chargement et l'activation des modules de Prat",
["modulecontrol_name"] = "Contrôle des modules",
["prat"] = "Prat",
["reload_required"] = "Le nouveau paramètre de cette option ne prendra pas effet intégralement tant que vous n'aurez pas %s votre interface.",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "frFR",L)
L = {
["display_desc"] = "Steuerung und Darstellung des Chatfensters",
["display_name"] = "Anzeigeeinstellungen",
["extras_desc"] = "Verschiedene Module",
["extras_name"] = "Sonstiges",
["formatting_desc"] = "Ändert das Erscheinungsbild der Linien",
["formatting_name"] = "Chat-Formatierung",
["load_desc"] = "Steuert das Ladeverhalten dieses Moduls.",
["load_disabled"] = "Ausgeschaltet",
["load_disabledonrestart"] = "Deaktiviert (neu laden)",
["load_enabled"] = "Eingeschaltet",
["load_enabledonrestart"] = "Aktiviert (neu laden)",
["load_no"] = "Nicht laden",
["modulecontrol_desc"] = "Steuert das Laden und Aktivieren von Prat-Modulen.",
["modulecontrol_name"] = "Modulsteuerung",
["prat"] = "Prat",
["reload_required"] = "Diese Änderung wird erst nach dem Neustart vollständig wirksam.",
["unloaded_desc"] = "Modul ist nicht geladen, lade es, um die Beschreibung zu sehen"
}
PL:AddLocale(nil, "deDE",L)
L = {
["display_desc"] = "대화창 기능 및 외형 설정",
["display_name"] = "표시 설정",
["extras_desc"] = "기타 모듈",
["extras_name"] = "기타 기능",
["formatting_desc"] = "대화창 글의 외형을 변경합니다.",
["formatting_name"] = "대화글 형식",
["load_desc"] = "이 모듈의 로드 방식을 설정합니다.",
["load_disabled"] = "사용 안 함",
["load_disabledonrestart"] = "비활성 (reload)",
["load_enabled"] = "사용",
["load_enabledonrestart"] = "활성 (reload)",
["load_no"] = "로드 안함",
["modulecontrol_desc"] = "Prat 모듈의 로드와 활성화를 제어합니다.",
["modulecontrol_name"] = "모듈 제어",
["prat"] = "Prat",
["reload_required"] = "이 옵션 변경은 UI를 %s 해야 적용됩니다.",
["unloaded_desc"] = "모듈을 불러오지 못함, 설명을 보려면 불러오세요."
}
PL:AddLocale(nil, "koKR",L)
L = {
--[[Translation missing --]]
["display_desc"] = "Chat Frame Control and Look",
--[[Translation missing --]]
["display_name"] = "Display Settings",
--[[Translation missing --]]
["extras_desc"] = "Msc. Modules",
--[[Translation missing --]]
["extras_name"] = "Extra Stuff",
--[[Translation missing --]]
["formatting_desc"] = "Change the way the lines look and feel",
--[[Translation missing --]]
["formatting_name"] = "Chat Formatting",
--[[Translation missing --]]
["load_desc"] = "Control the load behavior for this module.",
--[[Translation missing --]]
["load_disabled"] = "Disabled",
--[[Translation missing --]]
["load_disabledonrestart"] = "Disabled (reload)",
--[[Translation missing --]]
["load_enabled"] = "Enabled",
--[[Translation missing --]]
["load_enabledonrestart"] = "Enabled (reload)",
--[[Translation missing --]]
["load_no"] = "Don't Load",
--[[Translation missing --]]
["modulecontrol_desc"] = "Control the loading and enabling of Prat's modules.",
--[[Translation missing --]]
["modulecontrol_name"] = "Module Control",
--[[Translation missing --]]
["prat"] = "Prat",
--[[Translation missing --]]
["reload_required"] = "This option change may not take full effect until you %s your UI.",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "esMX",L)
L = {
["display_desc"] = "Настройка отображения чата",
["display_name"] = "Настройка отображения",
["extras_desc"] = "Различные дополнительные модули",
["extras_name"] = "Другие модули",
["formatting_desc"] = "Изменение отображения строк чата",
["formatting_name"] = "Форматирование чата",
["load_desc"] = "Настройка поведения этого модуля.",
["load_disabled"] = "Отключено",
["load_disabledonrestart"] = "Отключён (перезагрузка)",
["load_enabled"] = "Включено",
["load_enabledonrestart"] = "Включён (перезагрузка)",
["load_no"] = "Не загружать",
["modulecontrol_desc"] = "Настройка загрузки модулей Prat",
["modulecontrol_name"] = "Настройка модулей",
["prat"] = "Prat",
["reload_required"] = "Эта настройка вступит в силу только после %s вашего интерфейса.",
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "ruRU",L)
L = {
["display_desc"] = "聊天框管理与插件",
["display_name"] = "显示设置",
["extras_desc"] = "杂项模块",
["extras_name"] = "扩展选项",
["formatting_desc"] = "改变行的感观",
["formatting_name"] = "聊天格式",
["load_desc"] = "控制这个模块的载入状态",
["load_disabled"] = "禁用",
["load_disabledonrestart"] = "停用 (重载)",
["load_enabled"] = "启用",
["load_enabledonrestart"] = "启用 (重载)",
["load_no"] = "不加载",
["modulecontrol_desc"] = "控制Prat模块的读取和启用",
["modulecontrol_name"] = "模块控制",
["prat"] = "Prat",
["reload_required"] = "在%s您的插件以前,此选项不会完全生效",
["unloaded_desc"] = "模块未加载,请加载以查看描述"
}
PL:AddLocale(nil, "zhCN",L)
L = {
["display_desc"] = "Control y Aspecto del Marco del Chat",
["display_name"] = "Mostrar Ajustes",
["extras_desc"] = "Módulos Extra",
["extras_name"] = "Material adicional",
["formatting_desc"] = "Cambiar la forma del aspecto de las líneas",
["formatting_name"] = "Formato del Chat",
["load_desc"] = "Controla el comportamiento de carga de este módulo.",
["load_disabled"] = "Desactivado",
--[[Translation missing --]]
["load_disabledonrestart"] = "Disabled (reload)",
["load_enabled"] = "Activado",
--[[Translation missing --]]
["load_enabledonrestart"] = "Enabled (reload)",
["load_no"] = "No cargar",
["modulecontrol_desc"] = "Control de las cargas y activaciones de los módulos de Prat",
["modulecontrol_name"] = "Control de módulos",
["prat"] = "Prat",
["reload_required"] = "Esta opción requiere que reinicies la IU para que entre en funcionamiento",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "esES",L)
L = {
["display_desc"] = "控制及檢視聊天視窗",
["display_name"] = "顯示設定",
["extras_desc"] = "Msc. 模組",
["extras_name"] = "附加擴充",
["formatting_desc"] = "改變行的外觀以及感覺",
["formatting_name"] = "聊天格式化",
["load_desc"] = "控制此模組載入狀態。",
["load_disabled"] = "已停用",
["load_disabledonrestart"] = "已停用(重新載入)",
["load_enabled"] = "已啟用",
["load_enabledonrestart"] = "已啟用(重新載入)",
["load_no"] = "不會載入",
["modulecontrol_desc"] = "控制載入以及啟用的 Prat 模組。",
["modulecontrol_name"] = "模組控制",
["prat"] = "Prat",
["reload_required"] = "變更此選項後仍無法發揮完整功能,除非你%s你的插件。",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "zhTW",L)
L = {
--[[Translation missing --]]
["display_desc"] = "Chat Frame Control and Look",
--[[Translation missing --]]
["display_name"] = "Display Settings",
--[[Translation missing --]]
["extras_desc"] = "Msc. Modules",
--[[Translation missing --]]
["extras_name"] = "Extra Stuff",
--[[Translation missing --]]
["formatting_desc"] = "Change the way the lines look and feel",
--[[Translation missing --]]
["formatting_name"] = "Chat Formatting",
--[[Translation missing --]]
["load_desc"] = "Control the load behavior for this module.",
--[[Translation missing --]]
["load_disabled"] = "Disabled",
--[[Translation missing --]]
["load_disabledonrestart"] = "Disabled (reload)",
--[[Translation missing --]]
["load_enabled"] = "Enabled",
--[[Translation missing --]]
["load_enabledonrestart"] = "Enabled (reload)",
--[[Translation missing --]]
["load_no"] = "Don't Load",
--[[Translation missing --]]
["modulecontrol_desc"] = "Control the loading and enabling of Prat's modules.",
--[[Translation missing --]]
["modulecontrol_name"] = "Module Control",
--[[Translation missing --]]
["prat"] = "Prat",
--[[Translation missing --]]
["reload_required"] = "This option change may not take full effect until you %s your UI.",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "itIT",L)
L = {
["display_desc"] = "Controle de Visualização de Frame de Chat",
["display_name"] = "Configurações de Visualização",
["extras_desc"] = "Módulos Diversos",
--[[Translation missing --]]
["extras_name"] = "Extra Stuff",
--[[Translation missing --]]
["formatting_desc"] = "Change the way the lines look and feel",
["formatting_name"] = "Formatação do Chat",
--[[Translation missing --]]
["load_desc"] = "Control the load behavior for this module.",
["load_disabled"] = "Desativado",
--[[Translation missing --]]
["load_disabledonrestart"] = "Disabled (reload)",
["load_enabled"] = "Ativado",
--[[Translation missing --]]
["load_enabledonrestart"] = "Enabled (reload)",
["load_no"] = "Não Carregar",
["modulecontrol_desc"] = "Controla o carregamento e ativação de módulos do Prat.",
["modulecontrol_name"] = "Controle do Módulo",
["prat"] = "Prat",
["reload_required"] = "Essa alteração pode não ter efeitos até você %s sua IU.",
--[[Translation missing --]]
["unloaded_desc"] = "Module is not loaded, load it to see description"
}
PL:AddLocale(nil, "ptBR",L)
end
--@end-non-debug@
local AceConfig = LibStub("AceConfig-3.0")
--local AceConfigDialog = LibStub("AceConfigDialog-3.0")
--local AceConfigCmd = LibStub("AceConfigCmd-3.0")
local moduleControlArgs = {}
Prat.Options = {
type = "group",
childGroups = "tab",
get = "GetValue",
set = "SetValue",
args = {
display = {
type = "group",
name = PL["display_name"],
desc = PL["display_desc"],
hidden = function(info) end,
get = "GetValue",
set = "SetValue",
args = {},
order = 1,
},
formatting = {
type = "group",
name = PL["formatting_name"],
desc = PL["formatting_desc"],
hidden = function(info) end,
get = "GetValue",
set = "SetValue",
args = {},
order = 2,
},
extras = {
type = "group",
name = PL["extras_name"],
desc = PL["extras_desc"],
hidden = function(info) end,
get = "GetValue",
set = "SetValue",
args = {},
order = 3,
},
modulecontrol = {
type = "group",
name = PL["modulecontrol_name"],
desc = PL["modulecontrol_desc"],
get = "GetValue",
set = "SetValue",
args = moduleControlArgs,
order = 4,
}
}
}
--[[ WitchHunt: [Ammo] ]] --
tinsert(Prat.EnableTasks, function(self)
local acreg = LibStub("AceConfigRegistry-3.0")
acreg:RegisterOptionsTable(PL.prat, Prat.Options)
acreg:RegisterOptionsTable(PL.prat .. ": " .. Prat.Options.args.display.name, Prat.Options.args.display)
acreg:RegisterOptionsTable(PL.prat .. ": " .. Prat.Options.args.formatting.name, Prat.Options.args.formatting)
acreg:RegisterOptionsTable(PL.prat .. ": " .. Prat.Options.args.extras.name, Prat.Options.args.extras)
acreg:RegisterOptionsTable(PL.prat .. ": " .. Prat.Options.args.modulecontrol.name, Prat.Options.args.modulecontrol)
acreg:RegisterOptionsTable("Prat: " .. Prat.Options.args.profiles.name, Prat.Options.args.profiles)
local acdia = LibStub("AceConfigDialog-3.0")
acdia:AddToBlizOptions(PL.prat, PL.prat)
acdia:AddToBlizOptions(PL.prat .. ": " .. Prat.Options.args.display.name, Prat.Options.args.display.name, PL.prat)
acdia:AddToBlizOptions(PL.prat .. ": " .. Prat.Options.args.formatting.name, Prat.Options.args.formatting.name, PL.prat)
acdia:AddToBlizOptions(PL.prat .. ": " .. Prat.Options.args.extras.name, Prat.Options.args.extras.name, PL.prat)
acdia:AddToBlizOptions(PL.prat .. ": " .. Prat.Options.args.modulecontrol.name, Prat.Options.args.modulecontrol.name, PL.prat)
acdia:AddToBlizOptions(PL.prat .. ": " .. Prat.Options.args.profiles.name, Prat.Options.args.profiles.name, PL.prat)
self:RegisterChatCommand(PL.prat, function() Prat.ToggleOptionsWindow() end)
end)
do
local function getModuleFromShortName(shortname)
for k, v in Prat.Addon:IterateModules() do
if v.moduleName == shortname then
return v
end
end
end
local lastReloadMessage = 0
local function PrintReloadMessage()
local tm = _G.GetTime()
if tm - lastReloadMessage > 60 then
Prat:Print(PL.reload_required:format(Prat.GetReloadUILink()))
lastReloadMessage = tm
end
end
local function setValue(info, b)
local old = Prat.db.profile.modules[info[#info]]
Prat.db.profile.modules[info[#info]] = b
if old == 1 or b == 1 then
PrintReloadMessage()
end
local m = getModuleFromShortName(info[#info])
if not m then
-- Prat.db.profile.modules[info[#info]] = b
return
end
if b == 2 or b == 1 then
m.db.profile.on = false
m:Disable()
elseif b == 3 then
m.db.profile.on = true
m:Enable()
end
end
local function getValue(info)
local v, m
v = Prat.db.profile.modules[info[#info]]
-- if v ~= 1 then
-- m = getModuleFromShortName(info[#info])
-- if m then
-- -- Allow us to set enabled/disabled while the moduel is "dont load"
-- if v > 3 then
-- v = v - 2
--- - m.db.profile.on = v
-- else
-- v = m.db.profile.on and 3 or 2
-- end
-- end
-- end
return v
end
do
local function blue(text)
return Prat.CLR:Colorize("a0a0ff", text)
end
local function getModuleDesc(info)
local m = getModuleFromShortName(info[#info])
local controlMsg = "\n\n" .. blue(PL.load_desc)
if not m then
return PL.unloaded_desc .. controlMsg
end
return m:GetDescription() .. controlMsg
end
local moduleControlOption = {
name = function(info) return info[#info] end,
desc = getModuleDesc,
type = "select",
-- style = "radio",
values = function(info) local v = Prat.db.profile.modules[info[#info]] if v == 1 or v > 3 then
return {
[1] = "|cffA0A0A0" .. PL.load_no .. "|r",
[4] = "|cffffff80" .. PL.load_disabledonrestart .. "|r",
[5] = "|cff80ffff" .. PL.load_enabledonrestart .. "|r"
}
else
return {
"|cffA0A0A0" .. PL.load_no .. "|r", "|cffff8080" .. PL.load_disabled .. "|r", "|cff80ff80" .. PL.load_enabled .. "|r"
}
end
end,
get = getValue,
set = setValue
}
function Prat.CreateModuleControlOption(name)
moduleControlArgs[name] = moduleControlOption
end
end
end
Prat.FrameList = {}
Prat.HookedFrameList = {}
local function updateFrameNames()
for k, v in pairs(Prat.HookedFrames) do
if (v.isDocked == 1) or v:IsShown() then
Prat.HookedFrameList[k] = (v.name)
else
Prat.HookedFrameList[k] = nil
end
end
for k, v in pairs(Prat.Frames) do
if (v.isDocked == 1) or v:IsShown() then
Prat.FrameList[k] = (v.name)
else
Prat.FrameList[k] = nil
end
end
Prat.UpdateOptions()
end
function Prat.UpdateOptions()
LibStub("AceConfigRegistry-3.0"):NotifyChange(PL.prat)
end
tinsert(Prat.EnableTasks, function(self)
self:SecureHook("FCF_SetWindowName", updateFrameNames)
_G.FCF_SetWindowName(_G.ChatFrame1, (_G.GetChatWindowInfo(1)), 1)
end)
function Prat.ToggleOptionsWindow()
local acd = LibStub("AceConfigDialog-3.0")
if acd.OpenFrames[PL.prat] then
acd:Close(PL.prat)
else
acd:Open(PL.prat)
end
end