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.
130 lines
3.2 KiB
130 lines
3.2 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 type = type
|
|
local select = select
|
|
local wipe = table.wipe
|
|
local pairs = pairs
|
|
local tostring = tostring
|
|
|
|
-- Isolate the environment
|
|
setfenv(1, select(2, ...))
|
|
|
|
--[[ END STANDARD HEADER ]] --
|
|
|
|
do
|
|
local chanTable = {}
|
|
local function buildChanTable(t, num, name, _, ...)
|
|
if name and num then
|
|
name = _G.ChatFrame_ResolveChannelName(name)
|
|
t[num] = name
|
|
t[name] = num
|
|
return buildChanTable(t, ...)
|
|
end
|
|
|
|
return t
|
|
end
|
|
|
|
function GetChannelTable(t)
|
|
if not t then
|
|
t = chanTable
|
|
end
|
|
|
|
wipe(t)
|
|
|
|
buildChanTable(t, _G.GetChannelList())
|
|
|
|
if not t["LookingForGroup"] then
|
|
local lfgnum = GetChannelName("LookingForGroup")
|
|
if lfgnum and lfgnum > 0 then
|
|
t["LookingForGroup"] = lfgnum
|
|
t[lfgnum] = "LookingForGroup"
|
|
end
|
|
end
|
|
|
|
for k, v in pairs(t) do
|
|
if type(k) == "string" then
|
|
t[k:lower()] = v
|
|
end
|
|
end
|
|
return t
|
|
end
|
|
end
|
|
|
|
function GetChannelNumber(channel)
|
|
if not channel then return end
|
|
|
|
local num = GetChannelName(channel)
|
|
|
|
if num and num > 0 then return num end
|
|
|
|
local t = GetChannelTable()
|
|
|
|
num = t[channel] or t[channel:lower()]
|
|
|
|
if num == nil then
|
|
local trynum = tonumber(channel)
|
|
|
|
if trynum ~= nil and t[trynum] then
|
|
channel = trynum
|
|
num = t[trynum]
|
|
end
|
|
end
|
|
|
|
if type(num) == "string" then
|
|
return channel
|
|
end
|
|
|
|
|
|
return num
|
|
end
|
|
|
|
-- "CHANNEL_CATEGORY_CUSTOM", "CHANNEL_CATEGORY_WORLD", "CHANNEL_CATEGORY_GROUP"
|
|
local name, header, collapsed, channelNumber, active, count, category, voiceEnabled, voiceActive;
|
|
function GetChannelCategory(num)
|
|
num = GetChannelNumber(num)
|
|
for i = 1, _G.GetNumDisplayChannels(), 1 do
|
|
name, header, collapsed, channelNumber, count, active, category, voiceEnabled, voiceActive = _G.GetChannelDisplayInfo(i)
|
|
|
|
if channelNumber == num then
|
|
return category
|
|
end
|
|
end
|
|
end
|
|
|
|
local name, t
|
|
function IsPrivateChannel(num)
|
|
return select(4, _G.GetChannelName(num))
|
|
end
|
|
|
|
function IsCustomChannel(num)
|
|
return GetChannelCategory(num) == "CHANNEL_CATEGORY_CUSTOM"
|
|
end
|