Initial commit: Chatter v1.2.11 (Curse package)
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
local mod = Chatter:NewModule("Chat Font", "AceEvent-3.0")
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
|
||||
mod.modName = L["Chat Font"]
|
||||
|
||||
local Media = LibStub("LibSharedMedia-3.0")
|
||||
local pairs = _G.pairs
|
||||
local player_entered_world = false
|
||||
|
||||
local defaults = {
|
||||
profile = {
|
||||
frames = {}
|
||||
}
|
||||
}
|
||||
|
||||
local outlines = {[""] = "None", ["OUTLINE"] = "Outline", ["THICKOUTLINE"] = "Thick Outline"}
|
||||
|
||||
local options = {
|
||||
font = {
|
||||
type = "select",
|
||||
name = L["Font"],
|
||||
desc = L["Font"],
|
||||
dialogControl = 'LSM30_Font',
|
||||
values = Media:HashTable("font"),
|
||||
get = function() return mod.db.profile.font end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.font = v
|
||||
mod:SetFont(nil, v)
|
||||
end
|
||||
},
|
||||
fontsize = {
|
||||
type = "range",
|
||||
name = L["Font size"],
|
||||
desc = L["Font size"],
|
||||
min = 4,
|
||||
max = 30,
|
||||
step = 1,
|
||||
bigStep = 1,
|
||||
get = function() return mod.db.profile.fontsize end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.fontsize = v
|
||||
mod:SetFont(nil, nil, v)
|
||||
end
|
||||
},
|
||||
outline = {
|
||||
type = "select",
|
||||
name = L["Font Outline"],
|
||||
desc = L["Font outlining"],
|
||||
values = outlines,
|
||||
get = function() return mod.db.profile.outline or "" end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.outline = v
|
||||
mod:SetFont(nil, nil, nil, v)
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
function mod:OnInitialize()
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
defaults.profile.frames["FRAME_" .. i] = {}
|
||||
end
|
||||
self.db = Chatter.db:RegisterNamespace("ChatFont", defaults)
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
local cf = _G["ChatFrame" .. i]
|
||||
local t = {
|
||||
type = "group",
|
||||
name = L["Chat Frame "] .. i,
|
||||
desc = L["Chat Frame "] .. i,
|
||||
args = {
|
||||
fontsize = {
|
||||
type = "range",
|
||||
name = L["Font size"],
|
||||
desc = L["Font size"],
|
||||
min = 4,
|
||||
max = 30,
|
||||
step = 1,
|
||||
bigStep = 1,
|
||||
get = function() return mod.db.profile.frames["FRAME_" .. i].fontsize or mod.db.profile.fontsize end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.frames["FRAME_" .. i].fontsize = v
|
||||
mod:SetFont(cf, nil, v)
|
||||
end
|
||||
},
|
||||
font = {
|
||||
type = "select",
|
||||
name = L["Font"],
|
||||
desc = L["Font"],
|
||||
dialogControl = 'LSM30_Font',
|
||||
values = Media:HashTable("font"),
|
||||
get = function() return mod.db.profile.frames["FRAME_" .. i].font or mod.db.profile.font end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.frames["FRAME_" .. i].font = v
|
||||
mod:SetFont(cf, v)
|
||||
end
|
||||
},
|
||||
outline = {
|
||||
type = "select",
|
||||
name = L["Font Outline"],
|
||||
desc = L["Font outlining"],
|
||||
values = outlines,
|
||||
get = function() return mod.db.profile.frames["FRAME_" .. i].outline or "" end,
|
||||
set = function(info, v)
|
||||
mod.db.profile.frames["FRAME_" .. i].outline = v
|
||||
mod:SetFont(cf, nil, nil, v)
|
||||
end
|
||||
}
|
||||
}
|
||||
}
|
||||
options["frame" .. i] = t
|
||||
end
|
||||
end
|
||||
|
||||
function mod:LibSharedMedia_Registered()
|
||||
self:SetFont()
|
||||
end
|
||||
|
||||
function mod:Popout(frame,src)
|
||||
local fontName, fontHeight, fontFlags = src:GetFont()
|
||||
frame:SetFont(fontName,fontHeight,fontFlags)
|
||||
end
|
||||
|
||||
function mod:OnEnable()
|
||||
Media.RegisterCallback(mod, "LibSharedMedia_Registered")
|
||||
self:LibSharedMedia_Registered()
|
||||
if not player_entered_world then
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
end
|
||||
end
|
||||
|
||||
function mod:PLAYER_ENTERING_WORLD()
|
||||
self:SetFont()
|
||||
self:UnregisterAllEvents()
|
||||
player_entered_world = true
|
||||
end
|
||||
|
||||
function mod:OnDisable()
|
||||
Media.UnregisterCallback(mod, "LibSharedMedia_Registered")
|
||||
self:SetFont(nil, "Arial Narrow", 12, "")
|
||||
end
|
||||
|
||||
function mod:SetFont(cf, font, size, outline)
|
||||
if cf then
|
||||
self:SetFrameFont(cf, font, size, outline)
|
||||
else
|
||||
for i = 1, NUM_CHAT_WINDOWS do
|
||||
cf = _G["ChatFrame" .. i]
|
||||
self:SetFrameFont(cf, font, size, outline)
|
||||
end
|
||||
for index,name in ipairs(self.TempChatFrames) do
|
||||
local cf = _G[name]
|
||||
if cf then
|
||||
self:SetFrameFont(cf, font, size, outline)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mod:SetFrameFont(cf, font, size, outline)
|
||||
local f = "FRAME_" .. cf:GetName():match("%d+")
|
||||
local prof = self.db.profile.frames[f]
|
||||
local profFont = nil
|
||||
if prof then
|
||||
profFont = prof.font
|
||||
else
|
||||
prof = {}
|
||||
end
|
||||
if profFont == "Default" then
|
||||
profFont = nil
|
||||
end
|
||||
local f, s, m = cf:GetFont()
|
||||
font = Media:Fetch("font", font or profFont or self.db.profile.font or f)
|
||||
size = size or prof.fontsize or self.db.profile.fontsize or s
|
||||
outline = outline or prof.outline or self.db.profile.outline or m
|
||||
cf:SetFont(font, size, outline)
|
||||
end
|
||||
|
||||
function mod:GetOptions()
|
||||
return options
|
||||
end
|
||||
|
||||
function mod:Info()
|
||||
return L["Enables you to set a custom font and font size for your chat frames"]
|
||||
end
|
||||
Reference in New Issue
Block a user