mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-18 22:23:46 +03:00
Upload
This commit is contained in:
107
addons/sam-master/lua/sam/menu/tabs/config.lua
Normal file
107
addons/sam-master/lua/sam/menu/tabs/config.lua
Normal file
@@ -0,0 +1,107 @@
|
||||
--[[
|
||||
| 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)
|
||||
Reference in New Issue
Block a user