mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
136 lines
3.2 KiB
Lua
136 lines
3.2 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
local PLUGIN = PLUGIN
|
||
|
|
|
||
|
|
local PANEL = {}
|
||
|
|
|
||
|
|
function PANEL:Init()
|
||
|
|
ix.gui.chatTabCustomize = self
|
||
|
|
|
||
|
|
self:SetTitle(L("chatNewTab"))
|
||
|
|
self:SetSize(ScrW() * 0.5, ScrH() * 0.5)
|
||
|
|
DFrameFixer(self)
|
||
|
|
|
||
|
|
self.settings = self:Add("ixSettings")
|
||
|
|
self.settings:Dock(FILL)
|
||
|
|
self.settings:SetSearchEnabled(true)
|
||
|
|
self.settings:AddCategory(L("chatAllowedClasses"))
|
||
|
|
|
||
|
|
-- controls
|
||
|
|
local controlsPanel = self:Add("Panel")
|
||
|
|
controlsPanel:Dock(BOTTOM)
|
||
|
|
controlsPanel:DockMargin(0, SScaleMin(4 / 3), 0, 0)
|
||
|
|
controlsPanel:SetTall(SScaleMin(32 / 3))
|
||
|
|
self.settings.contentFrame:SetSize(self:GetWide(), self:GetTall() - SScaleMin(25 / 3) - controlsPanel:GetTall())
|
||
|
|
|
||
|
|
self.create = controlsPanel:Add("DButton")
|
||
|
|
self.create:SetText(L("create"))
|
||
|
|
self.create:SizeToContents()
|
||
|
|
self.create:Dock(FILL)
|
||
|
|
self.create:DockMargin(0, 0, SScaleMin(4 / 3), 0)
|
||
|
|
self.create:SetFont("MenuFontNoClamp")
|
||
|
|
self.create.DoClick = ix.util.Bind(self, self.CreateClicked)
|
||
|
|
|
||
|
|
local uncheckAll = controlsPanel:Add("DButton")
|
||
|
|
uncheckAll:SetText(L("uncheckAll"))
|
||
|
|
uncheckAll:SetFont("MenuFontNoClamp")
|
||
|
|
uncheckAll:SizeToContents()
|
||
|
|
uncheckAll:Dock(RIGHT)
|
||
|
|
uncheckAll.DoClick = function()
|
||
|
|
self:SetAllValues(false)
|
||
|
|
end
|
||
|
|
|
||
|
|
local checkAll = controlsPanel:Add("DButton")
|
||
|
|
checkAll:SetText(L("checkAll"))
|
||
|
|
checkAll:SetFont("MenuFontNoClamp")
|
||
|
|
checkAll:SizeToContents()
|
||
|
|
checkAll:Dock(RIGHT)
|
||
|
|
checkAll:DockMargin(0, 0, SScaleMin(4 / 3), 0)
|
||
|
|
checkAll.DoClick = function()
|
||
|
|
self:SetAllValues(true)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- chat class settings
|
||
|
|
self.name = self.settings:AddRow(ix.type.string)
|
||
|
|
self.name:SetText(L("chatTabName"))
|
||
|
|
self.name:SetValue(L("chatNewTabTitle"))
|
||
|
|
self.name:SetZPos(-1)
|
||
|
|
|
||
|
|
for k, _ in SortedPairs(ix.chat.classes) do
|
||
|
|
local panel = self.settings:AddRow(ix.type.bool, L("chatAllowedClasses"))
|
||
|
|
panel:SetText(k)
|
||
|
|
panel:SetValue(true, true)
|
||
|
|
end
|
||
|
|
|
||
|
|
self.settings:SizeToContents()
|
||
|
|
self:Center()
|
||
|
|
self:MakePopup()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:PopulateFromTab(name, filter)
|
||
|
|
self.tab = name
|
||
|
|
|
||
|
|
self:SetTitle(L("chatCustomize"))
|
||
|
|
self.create:SetText(L("update"))
|
||
|
|
self.name:SetValue(name)
|
||
|
|
|
||
|
|
for _, v in ipairs(self.settings:GetRows()) do
|
||
|
|
if (filter[v:GetText()]) then
|
||
|
|
v:SetValue(false, true)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:SetAllValues(bValue)
|
||
|
|
for _, v in ipairs(self.settings:GetRows()) do
|
||
|
|
if (v == self.name) then
|
||
|
|
continue
|
||
|
|
end
|
||
|
|
|
||
|
|
v:SetValue(tobool(bValue), true)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:CreateClicked()
|
||
|
|
local name = self.tab and self.tab or self.name:GetValue()
|
||
|
|
|
||
|
|
if (self.tab != self.name:GetValue() and PLUGIN:TabExists(name)) then
|
||
|
|
ix.util.Notify(L("chatTabExists"))
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local filter = {}
|
||
|
|
|
||
|
|
for _, v in ipairs(self.settings:GetRows()) do
|
||
|
|
-- we only want to add entries for classes we don't want shown
|
||
|
|
if (!v:GetValue()) then
|
||
|
|
filter[v:GetText()] = true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (self.tab) then
|
||
|
|
self:OnTabUpdated(name, filter, self.name:GetValue())
|
||
|
|
else
|
||
|
|
self:OnTabCreated(name, filter)
|
||
|
|
end
|
||
|
|
|
||
|
|
self:Remove()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:OnTabCreated(id, filter)
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:OnTabUpdated(id, filter, newID)
|
||
|
|
end
|
||
|
|
|
||
|
|
vgui.Register("ixChatboxTabCustomize", PANEL, "DFrame")
|