mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
193 lines
3.6 KiB
Lua
193 lines
3.6 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 PANEL = {}
|
||
|
|
|
||
|
|
--[[---------------------------------------------------------
|
||
|
|
Name: Paint
|
||
|
|
-----------------------------------------------------------]]
|
||
|
|
function PANEL:Init()
|
||
|
|
|
||
|
|
self:SetPaintBackground( false )
|
||
|
|
self:SetSize( 128, 128 )
|
||
|
|
self:SetText( "" )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:OnDepressionChanged( b )
|
||
|
|
|
||
|
|
if ( IsValid( self.checkbox ) ) then
|
||
|
|
self.checkbox:SetVisible( !b )
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Setup( name, icon, label )
|
||
|
|
|
||
|
|
self.label = label
|
||
|
|
self.name = name
|
||
|
|
self.icon = icon
|
||
|
|
|
||
|
|
self:SetMaterial( icon )
|
||
|
|
self:SetName( label or name )
|
||
|
|
|
||
|
|
self.PP = list.Get( "PostProcess" )[ name ]
|
||
|
|
if ( !self.PP ) then return end
|
||
|
|
|
||
|
|
self.DoClick = function()
|
||
|
|
|
||
|
|
if ( self.PP.onclick ) then
|
||
|
|
return self.PP.onclick()
|
||
|
|
end
|
||
|
|
|
||
|
|
if ( !self.PP.cpanel ) then return end
|
||
|
|
|
||
|
|
if ( !IsValid( self.cp ) ) then
|
||
|
|
|
||
|
|
self.cp = vgui.Create( "ControlPanel" )
|
||
|
|
self.cp:SetName( name )
|
||
|
|
self.PP.cpanel( self.cp )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
spawnmenu.ActivateToolPanel( 1, self.cp )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
if ( self.PP.convar ) then
|
||
|
|
|
||
|
|
self.checkbox = self:Add( "DCheckBox" )
|
||
|
|
self.checkbox:SetConVar( self.PP.convar )
|
||
|
|
self.checkbox:SetSize( 20, 20 )
|
||
|
|
self.checkbox:SetPos( self:GetWide() - 20 - 8, 8 )
|
||
|
|
|
||
|
|
self.Enabled = function() return self.checkbox:GetChecked() end
|
||
|
|
|
||
|
|
elseif ( self.ConVars ) then
|
||
|
|
|
||
|
|
self.checkbox = self:Add( "DCheckBox" )
|
||
|
|
self.checkbox:SetSize( 20, 20 )
|
||
|
|
self.checkbox:SetPos( self:GetWide() - 20 - 8, 8 )
|
||
|
|
|
||
|
|
self.checkbox.OnChange = function( pnl, on )
|
||
|
|
|
||
|
|
for k, v in pairs( self.ConVars ) do
|
||
|
|
|
||
|
|
if ( on ) then
|
||
|
|
RunConsoleCommand( k, v.on )
|
||
|
|
else
|
||
|
|
RunConsoleCommand( k, v.off or "" )
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
self.checkbox.Think = function( pnl, on )
|
||
|
|
|
||
|
|
local good = true
|
||
|
|
|
||
|
|
for k, v in pairs( self.ConVars ) do
|
||
|
|
|
||
|
|
if ( GetConVarString( k ) != v.on ) then
|
||
|
|
good = false
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
pnl:SetChecked( good )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
self.Enabled = function() return self.checkbox:GetChecked() end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:DoRightClick()
|
||
|
|
|
||
|
|
local pCanvas = self:GetSelectionCanvas()
|
||
|
|
if ( IsValid( pCanvas ) && pCanvas:NumSelectedChildren() > 0 && self:IsSelected() ) then
|
||
|
|
return hook.Run( "SpawnlistOpenGenericMenu", pCanvas )
|
||
|
|
end
|
||
|
|
|
||
|
|
self:OpenMenu()
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:DoClick()
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:OpenMenu()
|
||
|
|
|
||
|
|
-- Do not allow removal from read only panels
|
||
|
|
if ( IsValid( self:GetParent() ) && self:GetParent().GetReadOnly && self:GetParent():GetReadOnly() ) then return end
|
||
|
|
|
||
|
|
local menu = DermaMenu()
|
||
|
|
menu:AddOption( "#spawnmenu.menu.delete", function()
|
||
|
|
self:Remove()
|
||
|
|
hook.Run( "SpawnlistContentChanged" )
|
||
|
|
end ):SetIcon( "icon16/bin_closed.png" )
|
||
|
|
menu:Open()
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Enabled()
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:ToTable( bigtable )
|
||
|
|
|
||
|
|
local tab = {}
|
||
|
|
|
||
|
|
tab.type = "postprocess"
|
||
|
|
tab.name = self.name
|
||
|
|
tab.label = self.label
|
||
|
|
tab.icon = self.icon
|
||
|
|
tab.convars = self.ConVars
|
||
|
|
|
||
|
|
table.insert( bigtable, tab )
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function PANEL:Copy()
|
||
|
|
|
||
|
|
local copy = vgui.Create( "PostProcessIcon", self:GetParent() )
|
||
|
|
copy:CopyBounds( self )
|
||
|
|
copy.ConVars = self.ConVars
|
||
|
|
copy:Setup( self.name, self.icon, self.label )
|
||
|
|
|
||
|
|
return copy
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
vgui.Register( "PostProcessIcon", PANEL, "ContentIcon" )
|
||
|
|
|
||
|
|
spawnmenu.AddContentType( "postprocess", function( container, obj )
|
||
|
|
|
||
|
|
if ( !obj.name ) then return end
|
||
|
|
if ( !obj.icon ) then return end
|
||
|
|
|
||
|
|
local icon = vgui.Create( "PostProcessIcon", container )
|
||
|
|
|
||
|
|
if ( obj.convars ) then
|
||
|
|
icon.ConVars = obj.convars
|
||
|
|
end
|
||
|
|
|
||
|
|
icon:Setup( obj.name, obj.icon, obj.label )
|
||
|
|
|
||
|
|
container:Add( icon )
|
||
|
|
|
||
|
|
return icon
|
||
|
|
|
||
|
|
end )
|