Initial commit: Chatter v1.2.11 (Curse package)
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
local mod = Chatter:NewModule("Timestamps", "AceHook-3.0","AceEvent-3.0")
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
|
||||
mod.modName = L["Timestamps"]
|
||||
|
||||
local date = _G.date
|
||||
|
||||
local SELECTED_FORMAT
|
||||
local COLOR
|
||||
local FORMATS = {
|
||||
["%I:%M:%S %p"] = L["HH:MM:SS AM (12-hour)"],
|
||||
["%I:%M:S"] = L["HH:MM (12-hour)"],
|
||||
["%X"] = L["HH:MM:SS (24-hour)"],
|
||||
["%I:%M"] = L["HH:MM (12-hour)"],
|
||||
["%H:%M"] = L["HH:MM (24-hour)"],
|
||||
["%M:%S"] = L["MM:SS"],
|
||||
}
|
||||
local CHATFRAMES = {
|
||||
["Frame1"] = L["Chat Frame "].."1",
|
||||
["Frame3"] = L["Chat Frame "].."3",
|
||||
["Frame4"] = L["Chat Frame "].."4",
|
||||
["Frame5"] = L["Chat Frame "].."5",
|
||||
["Frame6"] = L["Chat Frame "].."6",
|
||||
["Frame7"] = L["Chat Frame "].."7",
|
||||
["Frame8"] = L["Chat Frame "].."8",
|
||||
["Frame9"] = L["Chat Frame "].."9",
|
||||
["Frame10"] = L["Chat Frame "].."10",
|
||||
["Frame11"] = L["Chat Frame "].."11",
|
||||
["Frame12"] = L["Chat Frame "].."12",
|
||||
["Frame13"] = L["Chat Frame "].."13",
|
||||
["Frame14"] = L["Chat Frame "].."14",
|
||||
["Frame15"] = L["Chat Frame "].."15",
|
||||
["Frame16"] = L["Chat Frame "].."16",
|
||||
["Frame17"] = L["Chat Frame "].."17",
|
||||
["Frame18"] = L["Chat Frame "].."18",
|
||||
}
|
||||
|
||||
local defaults = {
|
||||
profile = { format = "%X", color = { r = 0.45, g = 0.45, b = 0.45 }, frames = {["Frame1"] = true, ["Frame3"] = true, ["Frame4"] = true, ["Frame5"] = true, ["Frame6"] = true, ["Frame7"] = true} }
|
||||
}
|
||||
|
||||
local options = {
|
||||
format = {
|
||||
type = "select",
|
||||
name = L["Timestamp format"],
|
||||
desc = L["Timestamp format"],
|
||||
values = FORMATS,
|
||||
get = function() return mod.db.profile.format end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.format = v
|
||||
SELECTED_FORMAT = ("[" .. v .. "]")
|
||||
end
|
||||
},
|
||||
customFormat = {
|
||||
type = "input",
|
||||
name = L["Custom format (advanced)"],
|
||||
desc = L["Enter a custom time format. See http://www.lua.org/pil/22.1.html for a list of valid formatting symbols."],
|
||||
get = function() return mod.db.profile.customFormat end,
|
||||
set = function(info, v)
|
||||
if #v == 0 then v = nil end
|
||||
mod.db.profile.customFormat = v
|
||||
SELECTED_FORMAT = v
|
||||
end,
|
||||
order = 101
|
||||
},
|
||||
color = {
|
||||
type = "color",
|
||||
name = L["Timestamp color"],
|
||||
desc = L["Timestamp color"],
|
||||
get = function()
|
||||
local c = mod.db.profile.color
|
||||
return c.r, c.g, c.b
|
||||
end,
|
||||
set = function(info, r, g, b, a)
|
||||
local c = mod.db.profile.color
|
||||
c.r, c.g, c.b = r, g, b
|
||||
COLOR = ("%02x%02x%02x"):format(r * 255, g * 255, b * 255)
|
||||
end,
|
||||
disabled = function() return mod.db.profile.colorByChannel end
|
||||
},
|
||||
useChannelColor = {
|
||||
type = "toggle",
|
||||
name = L["Use channel color"],
|
||||
desc = L["Color timestamps the same as the channel they appear in."],
|
||||
get = function()
|
||||
return mod.db.profile.colorByChannel
|
||||
end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.colorByChannel = v
|
||||
end
|
||||
},
|
||||
frames = {
|
||||
type = "multiselect",
|
||||
name = L["Per chat frame settings"],
|
||||
desc = L["Choose which chat frames display timestamps"],
|
||||
values = CHATFRAMES,
|
||||
get = function(info, k) return mod.db.profile.frames[k] end,
|
||||
set = function(info, k, v) mod.db.profile.frames[k] = v end,
|
||||
},
|
||||
}
|
||||
|
||||
function mod:OnInitialize()
|
||||
self.db = Chatter.db:RegisterNamespace("Timestamps", defaults)
|
||||
end
|
||||
|
||||
function mod:Decorate(frame)
|
||||
if not self:IsHooked(frame,"AddMessage") then
|
||||
self:RawHook(frame, "AddMessage", true)
|
||||
end
|
||||
end
|
||||
|
||||
function mod:OnEnable()
|
||||
SELECTED_FORMAT = mod.db.profile.customFormat or ("[" .. self.db.profile.format .. "]")
|
||||
local c = self.db.profile.color
|
||||
COLOR = ("%02x%02x%02x"):format(c.r * 255, c.g * 255, c.b * 255)
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
local cf = _G["ChatFrame" .. i]
|
||||
if cf ~= COMBATLOG then
|
||||
self:RawHook(cf, "AddMessage", true)
|
||||
end
|
||||
end
|
||||
for index,name in ipairs(self.TempChatFrames) do
|
||||
local cf = _G[name]
|
||||
if cf then
|
||||
self:RawHook(cf, "AddMessage", true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:AddMessage(frame, text, ...)
|
||||
local id = frame:GetID()
|
||||
if id and self.db.profile.frames["Frame"..id] and not(CHAT_TIMESTAMP_FORMAT) then
|
||||
if not Chatter.loading then
|
||||
if not text then
|
||||
return self.hooks[frame].AddMessage(frame, text, ...)
|
||||
end
|
||||
if self.db.profile.colorByChannel then
|
||||
text = date(SELECTED_FORMAT) .. text
|
||||
else
|
||||
text = "|cff"..COLOR..date(SELECTED_FORMAT).."|r".. text
|
||||
end
|
||||
end
|
||||
return self.hooks[frame].AddMessage(frame, text, ...)
|
||||
end
|
||||
return self.hooks[frame].AddMessage(frame, text, ...)
|
||||
end
|
||||
|
||||
function mod:Info()
|
||||
return L["Adds timestamps to chat."]
|
||||
end
|
||||
|
||||
function mod:GetOptions()
|
||||
return options
|
||||
end
|
||||
Reference in New Issue
Block a user