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.

797 lines
31 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.
--
--
-------------------------------------------------------------------------------
Prat:AddModuleToLoad(function()
local PRAT_MODULE = Prat:RequestModuleName("History")
if PRAT_MODULE == nil then
return
end
local module = Prat:NewModule(PRAT_MODULE, "AceHook-3.0")
local PL = module.PL
--[==[@debug@
PL:AddLocale(PRAT_MODULE, "enUS", {
["History"] = true,
["Chat history options."] = true,
["Set Chat Lines"] = true,
["Set the number of lines of chat history for each window."] = true,
["Set Command History"] = true,
["Maximum number of lines of command history to save."] = true,
["Save Command History"] = true,
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = true,
["Scrollback"] = true,
["Store the chat lines between sessions"] = true,
["Scrollback Options"] = true,
["Command History Options"] = true,
divider = "========== End of Scrollback ==========",
scrollbackduration_name = "Scrollback Duration",
scrollbackduration_desc = "How many hours to keep the saved messages.",
["Colors the GMOTD label"] = true,
["Color GMOTD"] = true,
delaygmotd_name = "Delay GMOTD",
delaygmotd_desc = "Delay GMOTD until after all the startup spam",
bnet_removed = "<BNET REMOVED>",
removespam_name = "Remove Spam",
removespam_desc = "Remove addon spam messages when restoring the chat history"
})
--@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 = {
["History"] = {
["bnet_removed"] = "<BNET REMOVED>",
["Chat history options."] = true,
["Color GMOTD"] = true,
["Colors the GMOTD label"] = true,
["Command History Options"] = true,
["delaygmotd_desc"] = "Delay GMOTD until after all the startup spam",
["delaygmotd_name"] = "Delay GMOTD",
["divider"] = "========== End of Scrollback ==========",
["History"] = true,
["Maximum number of lines of command history to save."] = true,
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
["removespam_name"] = "Remove Spam",
["Save Command History"] = true,
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = true,
["Scrollback"] = true,
["Scrollback Options"] = true,
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
["scrollbackduration_name"] = "Scrollback Duration",
["scrollbacklen_desc"] = "Number of chatlines to save in the scrollback buffer.",
["scrollbacklen_name"] = "Scrollback Length",
["Set Chat Lines"] = true,
["Set Command History"] = true,
["Set the number of lines of chat history for each window."] = true,
["storage_char"] = "Character",
["storage_desc"] = "Which location should the history be saved to.",
["storage_name"] = "Save To",
["storage_server"] = "Server",
["Store the chat lines between sessions"] = true,
}
}
PL:AddLocale(PRAT_MODULE, "enUS",L)
L = {
["History"] = {
--[[Translation missing --]]
["bnet_removed"] = "<BNET REMOVED>",
["Chat history options."] = "Option de l'historique.",
--[[Translation missing --]]
["Color GMOTD"] = "Color GMOTD",
--[[Translation missing --]]
["Colors the GMOTD label"] = "Colors the GMOTD label",
--[[Translation missing --]]
["Command History Options"] = "Command History Options",
["delaygmotd_desc"] = "Afficher le message du jour de la guilde après tous les autres messages lors de la connexion.",
--[[Translation missing --]]
["delaygmotd_name"] = "Delay GMOTD",
["divider"] = "========== Fin de l'historique ==========",
["History"] = "Historique",
["Maximum number of lines of command history to save."] = "Nombre maximum de lignes de commande à sauvegarder dans l'historique.",
--[[Translation missing --]]
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
--[[Translation missing --]]
["removespam_name"] = "Remove Spam",
["Save Command History"] = "Historique de commandes",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Sauvegarde l'historique des commandes entre les sessions (à utiliser avec alt+haut ou juste haut)",
--[[Translation missing --]]
["Scrollback"] = "Scrollback",
--[[Translation missing --]]
["Scrollback Options"] = "Scrollback Options",
--[[Translation missing --]]
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
--[[Translation missing --]]
["scrollbackduration_name"] = "Scrollback Duration",
["scrollbacklen_desc"] = "Nombre de lignes de discussions à sauvegarder dans l'historique.",
["scrollbacklen_name"] = "Taille de l'historique",
["Set Chat Lines"] = "Historique de discussions",
["Set Command History"] = "Historique de commandes",
["Set the number of lines of chat history for each window."] = "Définit le nombre de lignes dans l'historique pour chaque fenêtre.",
--[[Translation missing --]]
["storage_char"] = "Character",
--[[Translation missing --]]
["storage_desc"] = "Which location should the history be saved to.",
--[[Translation missing --]]
["storage_name"] = "Save To",
--[[Translation missing --]]
["storage_server"] = "Server",
["Store the chat lines between sessions"] = "Sauvegarder l'historique des discussions entre les sessions.",
}
}
PL:AddLocale(PRAT_MODULE, "frFR",L)
L = {
["History"] = {
["bnet_removed"] = "<BNET ENTFERNT>",
["Chat history options."] = "Optionen zum Chatverlauf.",
["Color GMOTD"] = "Farbe der Gildennachricht des Tages",
["Colors the GMOTD label"] = "Färbt die Gildennachricht des Tages-Beschriftung",
["Command History Options"] = "Befehlsverlaufsoptionen",
["delaygmotd_desc"] = "GMOTD verzögern, bis die Ausgabe aller Mitteilungen nach dem Einloggen vollendet ist.",
["delaygmotd_name"] = "GMOTD verzögern",
["divider"] = "========== Ende des Zurückblättern ==========",
["History"] = "Verlauf",
["Maximum number of lines of command history to save."] = "Maximal zu speichernde Zeilenanzahl des Befehlsverlaufs.",
["removespam_desc"] = "Entfernt Addon Spam-Nachrichten, wenn du den Chat-Verlauf wiederherstellst",
["removespam_name"] = "Spam entfernen",
["Save Command History"] = "Befehlsverlauf speichern",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Speichert Befehlsverlauf zwischen Sitzungen (um mit Alt + \"Pfeil nach oben\" oder nur \"Pfeil nach oben\" verwendet zu werden).",
["Scrollback"] = "Zurückblättern",
["Scrollback Options"] = "Optionen für das Zurückblättern",
["scrollbackduration_desc"] = "Wie viele Stunden, um die gespeicherten Nachrichten zu speichern.",
["scrollbackduration_name"] = "Dauer vom Zurückblättern",
["scrollbacklen_desc"] = "Anzahl der Chat-Zeilen, die im Zurückblättern Puffer gespeichert werden sollen.",
["scrollbacklen_name"] = "Länge vom Zurückblättern",
["Set Chat Lines"] = "Chatzeilen einstellen",
["Set Command History"] = "Befehlsverlauf einstellen",
["Set the number of lines of chat history for each window."] = "Die Zeilenanzahl des Chatverlaufs für jedes Fenster einstellen.",
["storage_char"] = "Charakter",
["storage_desc"] = "An welchem Ort soll der Verlauf gespeichert werden?",
["storage_name"] = "Speichern unter",
["storage_server"] = "Server",
["Store the chat lines between sessions"] = "Speichert die Chat-Zeilen zwischen den Sitzungen",
}
}
PL:AddLocale(PRAT_MODULE, "deDE",L)
L = {
["History"] = {
["bnet_removed"] = "<베틀넷 제거됨>",
["Chat history options."] = "대화 내역 옵션입니다.",
["Color GMOTD"] = "오늘의 길드 메시지에 색상입히기",
["Colors the GMOTD label"] = "오늘의 길드 메시지 제목에 색상입히기",
["Command History Options"] = "명령어 내역 옵션",
["delaygmotd_desc"] = "모든 시작 스팸이 표시 될때까지 오늘의 길드 메시지 지연시키기",
["delaygmotd_name"] = "오늘의 길드 메시지 지연",
["divider"] = "========== 이전 대화 목록의 끝 ==========",
["History"] = "내역 [History]",
["Maximum number of lines of command history to save."] = "저장할 명령어 내역의 최대 갯수입니다.",
["removespam_desc"] = "채팅 기록을 복원 할 때 애드온 스팸 메시지 제거",
["removespam_name"] = "스팸 제거",
["Save Command History"] = "명령어 내역 저장",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "세션 간 명령어 내역을 저장합니다 (Alt+위 화살표나 위 화살표로 사용하는)",
["Scrollback"] = "스크롤백",
["Scrollback Options"] = "스크롤백 옵션",
["scrollbackduration_desc"] = "저장된 메시지를 보관할 시간.",
["scrollbackduration_name"] = "스크롤백 구간",
["scrollbacklen_desc"] = "스크롤백 저장소에 저장할 대화 줄의 숫자입니다.",
["scrollbacklen_name"] = "스크롤백 길이",
["Set Chat Lines"] = "대화 내역 설정",
["Set Command History"] = "명령어 내역 설정",
["Set the number of lines of chat history for each window."] = "각 대화창 별로 대화 내역의 줄의 갯수를 설정합니다.",
["storage_char"] = "캐릭터",
["storage_desc"] = "기록을 저장할 위치",
["storage_name"] = "저장",
["storage_server"] = "서버",
["Store the chat lines between sessions"] = "세션 간 대화 내용 저장하기",
}
}
PL:AddLocale(PRAT_MODULE, "koKR",L)
L = {
["History"] = {
--[[Translation missing --]]
["bnet_removed"] = "<BNET REMOVED>",
--[[Translation missing --]]
["Chat history options."] = "Chat history options.",
--[[Translation missing --]]
["Color GMOTD"] = "Color GMOTD",
--[[Translation missing --]]
["Colors the GMOTD label"] = "Colors the GMOTD label",
--[[Translation missing --]]
["Command History Options"] = "Command History Options",
--[[Translation missing --]]
["delaygmotd_desc"] = "Delay GMOTD until after all the startup spam",
--[[Translation missing --]]
["delaygmotd_name"] = "Delay GMOTD",
--[[Translation missing --]]
["divider"] = "========== End of Scrollback ==========",
--[[Translation missing --]]
["History"] = "History",
--[[Translation missing --]]
["Maximum number of lines of command history to save."] = "Maximum number of lines of command history to save.",
--[[Translation missing --]]
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
--[[Translation missing --]]
["removespam_name"] = "Remove Spam",
--[[Translation missing --]]
["Save Command History"] = "Save Command History",
--[[Translation missing --]]
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Saves command history between sessions (for use with alt+up arrow or just the up arrow)",
--[[Translation missing --]]
["Scrollback"] = "Scrollback",
--[[Translation missing --]]
["Scrollback Options"] = "Scrollback Options",
--[[Translation missing --]]
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
--[[Translation missing --]]
["scrollbackduration_name"] = "Scrollback Duration",
--[[Translation missing --]]
["scrollbacklen_desc"] = "Number of chatlines to save in the scrollback buffer.",
--[[Translation missing --]]
["scrollbacklen_name"] = "Scrollback Length",
--[[Translation missing --]]
["Set Chat Lines"] = "Set Chat Lines",
--[[Translation missing --]]
["Set Command History"] = "Set Command History",
--[[Translation missing --]]
["Set the number of lines of chat history for each window."] = "Set the number of lines of chat history for each window.",
--[[Translation missing --]]
["storage_char"] = "Character",
--[[Translation missing --]]
["storage_desc"] = "Which location should the history be saved to.",
--[[Translation missing --]]
["storage_name"] = "Save To",
--[[Translation missing --]]
["storage_server"] = "Server",
--[[Translation missing --]]
["Store the chat lines between sessions"] = "Store the chat lines between sessions",
}
}
PL:AddLocale(PRAT_MODULE, "esMX",L)
L = {
["History"] = {
["bnet_removed"] = "<BNET УДАЛЕН>",
["Chat history options."] = "Настройки истории чата.",
["Color GMOTD"] = "Цвет GMOTD",
["Colors the GMOTD label"] = "Цвета названия СДГ",
["Command History Options"] = "Параметры истории команд",
["delaygmotd_desc"] = "Задерживать отображение СДГ вплоть до окончания спама при входе в игру",
["delaygmotd_name"] = "задержка GMOTD",
["divider"] = "========== Конец истории сообщений ==========",
["History"] = "История",
["Maximum number of lines of command history to save."] = "Максимальное число строк сохранённых в истории команд.",
["removespam_desc"] = "Удалять спам-сообщения аддона при восстановлении истории чата",
["removespam_name"] = "Удалить спам",
["Save Command History"] = "Сохранять историю команд",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Сохранять историю команд между сеансами (для использования используйте alt+ стрелка вверх или просто стрелку вверх)",
["Scrollback"] = "История сообщений",
["Scrollback Options"] = "Вернуть опции",
["scrollbackduration_desc"] = "Сколько часов хранить сохраненные сообщения.",
["scrollbackduration_name"] = "Длительность прокрутки",
["scrollbacklen_desc"] = "Количество строк чата, которое надо сохранять в буфере истории сообщений.",
["scrollbacklen_name"] = "Длина истории сообщений",
["Set Chat Lines"] = "Задать число строк чата",
["Set Command History"] = "История команд",
["Set the number of lines of chat history for each window."] = "Установите число строк истории чата для всех окон чата.",
["storage_char"] = "Персонаж",
["storage_desc"] = "В какое место следует сохранять историю.",
["storage_name"] = "Сохранить В",
["storage_server"] = "Сервер ",
["Store the chat lines between sessions"] = "Сохранять строки чата между сессиями",
}
}
PL:AddLocale(PRAT_MODULE, "ruRU",L)
L = {
["History"] = {
--[[Translation missing --]]
["bnet_removed"] = "<BNET REMOVED>",
["Chat history options."] = "历史聊天记录选项",
["Color GMOTD"] = "每日公会信息颜色",
["Colors the GMOTD label"] = "为每日公会信息标签着色",
--[[Translation missing --]]
["Command History Options"] = "Command History Options",
["delaygmotd_desc"] = "延迟每日公会信息直到起始垃圾信息显示完毕为止",
["delaygmotd_name"] = "延迟 GMOTD",
["divider"] = "========== 回卷结束 ==========",
["History"] = "历史记录",
["Maximum number of lines of command history to save."] = "存储命令记录最大行数",
--[[Translation missing --]]
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
--[[Translation missing --]]
["removespam_name"] = "Remove Spam",
["Save Command History"] = "命令记录存储",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "存储会话之间命令的历史记录(使用alt+上箭头键或仅上箭头键)",
["Scrollback"] = "回卷",
["Scrollback Options"] = "回滚选项",
--[[Translation missing --]]
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
--[[Translation missing --]]
["scrollbackduration_name"] = "Scrollback Duration",
["scrollbacklen_desc"] = "聊天内容回滚缓冲数量",
["scrollbacklen_name"] = "回卷长度",
["Set Chat Lines"] = "聊天行设置",
["Set Command History"] = "命令历史记录",
["Set the number of lines of chat history for each window."] = "为每个聊天窗口设置聊天历史记录行数",
--[[Translation missing --]]
["storage_char"] = "Character",
--[[Translation missing --]]
["storage_desc"] = "Which location should the history be saved to.",
--[[Translation missing --]]
["storage_name"] = "Save To",
--[[Translation missing --]]
["storage_server"] = "Server",
["Store the chat lines between sessions"] = "在会话之间存储聊天内容",
}
}
PL:AddLocale(PRAT_MODULE, "zhCN",L)
L = {
["History"] = {
--[[Translation missing --]]
["bnet_removed"] = "<BNET REMOVED>",
["Chat history options."] = "Opciones del historial del chat.",
--[[Translation missing --]]
["Color GMOTD"] = "Color GMOTD",
--[[Translation missing --]]
["Colors the GMOTD label"] = "Colors the GMOTD label",
--[[Translation missing --]]
["Command History Options"] = "Command History Options",
--[[Translation missing --]]
["delaygmotd_desc"] = "Delay GMOTD until after all the startup spam",
--[[Translation missing --]]
["delaygmotd_name"] = "Delay GMOTD",
["divider"] = "========== Fin del Registro ==========",
["History"] = "Historial",
["Maximum number of lines of command history to save."] = "Máximo número de líneas a guardar por el comando historial.",
--[[Translation missing --]]
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
--[[Translation missing --]]
["removespam_name"] = "Remove Spam",
["Save Command History"] = "Comando Guardar Historial",
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Guarda el historial de comandos entre sesiones (para utilizar con alt+flecha arriba o sólo la flecha arriba)",
--[[Translation missing --]]
["Scrollback"] = "Scrollback",
--[[Translation missing --]]
["Scrollback Options"] = "Scrollback Options",
--[[Translation missing --]]
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
--[[Translation missing --]]
["scrollbackduration_name"] = "Scrollback Duration",
--[[Translation missing --]]
["scrollbacklen_desc"] = "Number of chatlines to save in the scrollback buffer.",
--[[Translation missing --]]
["scrollbacklen_name"] = "Scrollback Length",
["Set Chat Lines"] = "Establecer Líneas de Chat",
["Set Command History"] = "Establecer Historial de Comandos",
["Set the number of lines of chat history for each window."] = "Establece el número de líneas del historial de chat para cada ventana.",
--[[Translation missing --]]
["storage_char"] = "Character",
--[[Translation missing --]]
["storage_desc"] = "Which location should the history be saved to.",
--[[Translation missing --]]
["storage_name"] = "Save To",
--[[Translation missing --]]
["storage_server"] = "Server",
--[[Translation missing --]]
["Store the chat lines between sessions"] = "Store the chat lines between sessions",
}
}
PL:AddLocale(PRAT_MODULE, "esES",L)
L = {
["History"] = {
--[[Translation missing --]]
["bnet_removed"] = "<BNET REMOVED>",
["Chat history options."] = "歷史訊息選項。",
["Color GMOTD"] = "顏色 GMOTD",
["Colors the GMOTD label"] = "顏色 GMOTD 標籤",
--[[Translation missing --]]
["Command History Options"] = "Command History Options",
--[[Translation missing --]]
["delaygmotd_desc"] = "Delay GMOTD until after all the startup spam",
["delaygmotd_name"] = "延遲 GMOTD",
["divider"] = "========== 捲動結束 ==========",
["History"] = "歷史訊息",
["Maximum number of lines of command history to save."] = "最大行數的指令記錄儲存。",
--[[Translation missing --]]
["removespam_desc"] = "Remove addon spam messages when restoring the chat history",
--[[Translation missing --]]
["removespam_name"] = "Remove Spam",
["Save Command History"] = "儲存指令歷史",
--[[Translation missing --]]
["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"] = "Saves command history between sessions (for use with alt+up arrow or just the up arrow)",
["Scrollback"] = "捲動",
["Scrollback Options"] = "捲動選項",
--[[Translation missing --]]
["scrollbackduration_desc"] = "How many hours to keep the saved messages.",
--[[Translation missing --]]
["scrollbackduration_name"] = "Scrollback Duration",
--[[Translation missing --]]
["scrollbacklen_desc"] = "Number of chatlines to save in the scrollback buffer.",
["scrollbacklen_name"] = "捲動長度",
["Set Chat Lines"] = "設定聊天行數",
["Set Command History"] = "設定指令歷史",
["Set the number of lines of chat history for each window."] = "設定行數的聊天記錄每個視窗。",
--[[Translation missing --]]
["storage_char"] = "Character",
--[[Translation missing --]]
["storage_desc"] = "Which location should the history be saved to.",
--[[Translation missing --]]
["storage_name"] = "Save To",
--[[Translation missing --]]
["storage_server"] = "Server",
--[[Translation missing --]]
["Store the chat lines between sessions"] = "Store the chat lines between sessions",
}
}
PL:AddLocale(PRAT_MODULE, "zhTW",L)
end
--@end-non-debug@
Prat:SetModuleDefaults(module.name, {
profile = {
on = true,
chatlinesframes = {},
chatlines = 384,
maxlines = 50,
scrollbackduration = 24,
savehistory = false,
scrollback = true,
removespam = true,
colorgmotd = true,
delaygmotd = true,
}
})
module.pluginopts = {}
Prat:SetModuleOptions(module.name, {
name = PL["History"],
desc = PL["Chat history options."],
type = "group",
plugins = module.pluginopts,
args = {
chatlinesframes = {
name = PL["Set Chat Lines"],
desc = PL["Set the number of lines of chat history for each window."],
type = "multiselect",
values = Prat.HookedFrameList,
get = "GetSubValue",
set = "SetSubValue"
},
chatlines = {
name = PL["Set Chat Lines"],
desc = PL["Set the number of lines of chat history for each window."],
type = "range",
order = 120,
min = 300,
max = 5000,
step = 10,
bigStep = 50,
},
cmdhistheader = {
name = PL["Command History Options"],
type = "header",
order = 130,
},
maxlines = {
name = PL["Set Command History"],
desc = PL["Maximum number of lines of command history to save."],
type = "range",
order = 132,
min = 0,
max = 500,
step = 10,
bigStep = 50,
disabled = function() return not module.db.profile.savehistory end
},
savehistory = {
name = PL["Save Command History"],
desc = PL["Saves command history between sessions (for use with alt+up arrow or just the up arrow)"],
type = "toggle",
order = 131,
},
-- colorgmotd = {
-- name = PL["Color GMOTD"],
-- desc = PL["Colors the GMOTD label"],
-- type = "toggle",
-- order = 150,
-- },
-- delaygmotd = {
-- name = PL.delaygmotd_name,
-- desc = PL.delaygmotd_desc,
-- type = "toggle",
-- order = 151
-- }
}
})
local function applyEditBox(func)
for i = 1, NUM_CHAT_WINDOWS do
local f = _G["ChatFrame" .. i .. "EditBox"]
func(f)
end
end
--[[------------------------------------------------
Module Event Functions
------------------------------------------------]] --
-- things to do when the module is enabled
function module:OnModuleEnable()
Prat3CharDB = Prat3CharDB or {}
Prat3CharDB.history = Prat3CharDB.history or {}
Prat3CharDB.history.cmdhistory = Prat3CharDB.history.cmdhistory or {}
-- if self.db.profile.cmdhistory then
-- Prat3CharDB.history.cmdhistory = self.db.profile.cmdhistory
-- self.db.profile.cmdhistory = nil
-- end
for i, v in ipairs(Prat3CharDB.history.cmdhistory) do
if (type(v) == "string" and v:sub(1, 9) ~= "ChatFrame") then
Prat3CharDB.history.cmdhistory[i] = nil
end
end
applyEditBox(function(edit)
local name = edit:GetName()
Prat3CharDB.history.cmdhistory[name] = Prat3CharDB.history.cmdhistory[name] or {}
end)
self:ConfigureAllChatFrames()
for k in pairs(Prat3CharDB.history.cmdhistory) do
local edit = _G[k]
if (edit) then
self:SecureHook(edit, "AddHistoryLine")
if self.db.profile.savehistory then
self:addSavedHistory(edit)
end
self:SecureHook(edit, "ClearHistory")
end
end
-- Clean out any old data
if self.db.profile.cmdhistory then
self.db.profile.cmdhistory = nil
end
-- if IsInGuild() then
-- self.frame = self.frame or CreateFrame("Frame")
--
-- if self.db.profile.delaygmotd then
-- self:DelayGMOTD(self.frame)
-- end
--
-- if self.db.profile.colorgmotd then
-- local a, b = strsplit(":", GUILD_MOTD_TEMPLATE)
-- if a and b then
-- GUILD_MOTD_TEMPLATE = "|cffffffff" .. a .. "|r:" .. b
-- end
-- end
-- end
end
function module:GetDescription()
return PL["Chat history options."]
end
-- things to do when the module is enabled
function module:OnModuleDisable()
self:ConfigureAllChatFrames(384)
end
function module:ConfigureAllChatFrames(lines)
local lines = lines or self.db.profile.chatlines
for k, v in pairs(self.db.profile.chatlinesframes) do
self:SetHistory(_G[k], lines)
end
for k in pairs(Prat3CharDB.history.cmdhistory) do
local edit = _G[k]
if (edit) then
if self.db.profile.savehistory then
edit:SetHistoryLines(self.db.profile.maxlines)
edit.history_lines = Prat3CharDB.history.cmdhistory[k]
else
edit.history_lines = {}
end
edit.history_index = 0
end
end
end
function module:OnSubvalueChanged()
self:ConfigureAllChatFrames()
end
function module:OnValueChanged()
self:ConfigureAllChatFrames()
end
-- function module:DelayGMOTD(frame)
-- local delay = 2.5
-- local maxtime = 60
-- ChatFrame1:UnregisterEvent("GUILD_MOTD")
-- frame:SetScript("OnUpdate", function(this, expired)
-- delay = delay - expired
-- if delay < 0 then
-- local msg = GetGuildRosterMOTD()
-- if maxtime < 0 or (msg and msg:len() > 0) then
-- ChatFrame1:RegisterEvent("GUILD_MOTD")
--
-- for _, f in pairs(Prat.Frames) do
-- if f:IsEventRegistered("GUILD_MOTD") then
-- ChatFrame_SystemEventHandler(f, "GUILD_MOTD", msg)
-- end
-- end
-- this:Hide()
-- else
-- delay = 2.5
-- maxtime = maxtime - 2.5
-- end
-- end
-- end)
-- end
--[[------------------------------------------------
Core Functions
------------------------------------------------]] --
function module:SetHistory(f, lines)
if f == nil then return end
f:SetMaxLines(lines)
end
function module:addSavedHistory(editBox)
local editBox = editBox or ChatFrame1EditBox
local cmdhistory = Prat3CharDB.history.cmdhistory[editBox:GetName()] or {}
local cmdindex = #cmdhistory
-- where there"s a while, there"s a way
while cmdindex > 0 do
editBox:AddHistoryLine(cmdhistory[cmdindex])
cmdindex = cmdindex - 1
-- way
end
end
function module:saveLine(text, editBox)
if not text or (text == "") then
return false
end
local maxlines = self.db.profile.maxlines
local cmdhistory = editBox.history_lines or {}
if cmdhistory[1] == text then return end
table.insert(cmdhistory, 1, text)
local cmdcount = #cmdhistory - maxlines
while cmdcount > 0 do
table.remove(cmdhistory)
cmdcount = cmdcount - 1
end
end
function module:ClearHistory(editBox)
editBox = editBox or ChatFrame1EditBox
local cmdhistory = editBox.history_lines or {}
local cmdcount = #cmdhistory
while cmdcount > 0 do
table.remove(cmdhistory)
cmdcount = cmdcount - 1
end
end
function module:AddHistoryLine(editBox)
editBox = editBox or ChatFrame1EditBox
-- following code mostly ripped off from Blizzard, but at least I understand it now
local text = ""
local type = editBox:GetAttribute("chatType")
local header = _G["SLASH_" .. type .. "1"]
if (header) then
text = header
end
if (type == "WHISPER") and editBox:GetAttribute("tellTarget") ~= nil then
text = text .. " " .. editBox:GetAttribute("tellTarget")
elseif (type == "CHANNEL") and editBox:GetAttribute("channelTarget") ~= nil then
text = "/" .. editBox:GetAttribute("channelTarget")
end
local editBoxText = editBox:GetText();
if (strlen(editBoxText) > 0 and not IsSecureCmd(editBoxText:match("^/[%a%d_]+") or "")) then
text = (header and (text .. " ") or "") .. editBoxText;
self:saveLine(text, editBox)
end
end
return
end) -- Prat:AddModuleToLoad