mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
107 lines
2.5 KiB
Lua
107 lines
2.5 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/
|
|
--]]
|
|
|
|
if SAM_LOADED then return end
|
|
|
|
local sam = sam
|
|
local config = sam.config
|
|
|
|
local tabs = {}
|
|
if CLIENT then
|
|
function config.add_tab(name, func, check, pos)
|
|
local tab = {
|
|
name = name,
|
|
func = func,
|
|
check = check,
|
|
pos = pos
|
|
}
|
|
for k, v in ipairs(tabs) do
|
|
if v.name == name then
|
|
tabs[k] = tab
|
|
return
|
|
end
|
|
end
|
|
table.insert(tabs, tab)
|
|
end
|
|
end
|
|
|
|
for _, f in ipairs(file.Find("sam/menu/tabs/config/*.lua", "LUA")) do
|
|
sam.load_file("sam/menu/tabs/config/" .. f, "cl_")
|
|
end
|
|
|
|
if SERVER then return end
|
|
|
|
local SUI = sam.SUI
|
|
local GetColor = SUI.GetColor
|
|
local Line = sui.TDLib.LibClasses.Line
|
|
|
|
sam.menu.add_tab("https://raw.githubusercontent.com/Srlion/Addons-Data/main/icons/sam/config.png", function(column_sheet)
|
|
local tab_body = column_sheet:Add("Panel")
|
|
tab_body:Dock(FILL)
|
|
tab_body:DockMargin(0, 1, 0, 0)
|
|
|
|
do
|
|
local title = tab_body:Add("SAM.Label")
|
|
title:Dock(TOP)
|
|
title:DockMargin(10, 10, 0, 0)
|
|
title:SetFont(SAM_TAB_TITLE_FONT)
|
|
title:SetText("Config")
|
|
title:SetTextColor(GetColor("menu_tabs_title"))
|
|
title:SizeToContents()
|
|
|
|
local total = tab_body:Add("SAM.Label")
|
|
total:Dock(TOP)
|
|
total:DockMargin(10, 6, 0, 0)
|
|
total:SetFont(SAM_TAB_DESC_FONT)
|
|
total:SetText("Some settings may require a server restart")
|
|
total:SetTextColor(GetColor("menu_tabs_title"))
|
|
total:SetPos(10, SUI.Scale(40))
|
|
total:SizeToContents()
|
|
end
|
|
|
|
local body = tab_body:Add("Panel")
|
|
body:Dock(FILL)
|
|
body:DockMargin(10, 5, 10, 10)
|
|
|
|
Line(body, nil, 0, 0, 0, 10)
|
|
|
|
local sheet = body:Add("SAM.PropertySheet")
|
|
sheet:Dock(FILL)
|
|
sheet:InvalidateParent(true)
|
|
sheet:InvalidateLayout(true)
|
|
|
|
local sheets = {}
|
|
for _, v in SortedPairsByMemberValue(tabs, "pos") do
|
|
sheets[v.name] = sheet:AddSheet(v.name, v.func)
|
|
end
|
|
|
|
local tab_scroller = sheet.tab_scroller:GetCanvas()
|
|
function tab_body.Think()
|
|
for _, v in ipairs(tabs) do
|
|
local tab = sheets[v.name]
|
|
if v.check and not v.check() then
|
|
if tab:IsVisible() then
|
|
tab:SetVisible(false)
|
|
if sheet:GetActiveTab() == tab then
|
|
sheet:SetActiveTab(sheet.tabs[1])
|
|
end
|
|
tab_scroller:InvalidateLayout()
|
|
end
|
|
elseif not tab:IsVisible() then
|
|
tab:SetVisible(true)
|
|
tab_scroller:InvalidateLayout()
|
|
end
|
|
end
|
|
end
|
|
|
|
return tab_body
|
|
end, function()
|
|
return LocalPlayer():HasPermission("manage_config")
|
|
end, 5) |