mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
include( "contentheader.lua" )
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
Derma_Hook( PANEL, "Paint", "Paint", "Tree" )
|
||||
PANEL.m_bBackground = true -- Hack for above
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self:SetOpenSize( 200 )
|
||||
self:DockPadding( 5, 5, 5, 5 )
|
||||
|
||||
local label = vgui.Create( "DTextEntry", self )
|
||||
label:Dock( TOP )
|
||||
label:SetZPos( 1 )
|
||||
label:DockMargin( 0, 0, 0, 2 )
|
||||
label:SetTooltip( "#spawnmenu.listname_tooltip" )
|
||||
|
||||
local panel = vgui.Create( "DPanel", self )
|
||||
panel:Dock( TOP )
|
||||
panel:SetZPos( 2 )
|
||||
panel:SetSize( 24, 24 )
|
||||
panel:DockPadding( 2, 2, 2, 2 )
|
||||
|
||||
local Button = vgui.Create( "DImageButton", panel )
|
||||
Button:SetImage( "icon16/text_heading_1.png" )
|
||||
Button:Dock( LEFT )
|
||||
Button:SetStretchToFit( false )
|
||||
Button:SetSize( 20, 20 )
|
||||
Button:SetCursor( "sizeall" )
|
||||
Button:SetTooltip( "#spawnmenu.header_tooltip" )
|
||||
Button:Droppable( "SandboxContentPanel" )
|
||||
|
||||
Button.OnDrop = function( s, target )
|
||||
|
||||
local label = vgui.Create( "ContentHeader", target )
|
||||
return label
|
||||
|
||||
end
|
||||
|
||||
local panel = vgui.Create( "Panel", self )
|
||||
panel:Dock( FILL )
|
||||
panel:SetZPos( 3 )
|
||||
|
||||
local icon_filter = vgui.Create( "DTextEntry", panel )
|
||||
icon_filter:Dock( TOP )
|
||||
icon_filter:SetUpdateOnType( true )
|
||||
icon_filter:SetPlaceholderText( "#spawnmenu.quick_filter" )
|
||||
icon_filter:DockMargin( 0, 2, 0, 1 )
|
||||
|
||||
local icons = vgui.Create( "DIconBrowser", panel )
|
||||
icons:Dock( FILL )
|
||||
|
||||
icon_filter.OnValueChange = function( s, str )
|
||||
icons:FilterByText( str )
|
||||
end
|
||||
|
||||
local overlay = vgui.Create( "DPanel", self )
|
||||
overlay:SetZPos( 9999 )
|
||||
overlay.Paint = function( s, w, h )
|
||||
surface.SetDrawColor( 0, 0, 0, 200 )
|
||||
surface.DrawRect( 0, 0, w, h )
|
||||
end
|
||||
self.Overlay = overlay
|
||||
|
||||
--
|
||||
-- If we select a node from the sidebar, update the text/icon/actions in the toolbox (at the bottom)
|
||||
--
|
||||
hook.Add( "ContentSidebarSelection", "SidebarToolboxSelection", function( pnlContent, node )
|
||||
|
||||
if ( !IsValid( node ) || !IsValid( label ) || !IsValid( icons ) ) then return end
|
||||
|
||||
if ( node.CustomSpawnlist ) then
|
||||
label:SetText( node:GetText() )
|
||||
icons:SelectIcon( node:GetIcon() )
|
||||
icons:ScrollToSelected()
|
||||
overlay:SetVisible( false )
|
||||
else
|
||||
label:SetText( "" )
|
||||
overlay:SetVisible( true )
|
||||
end
|
||||
|
||||
label.OnChange = function()
|
||||
if ( !node.CustomSpawnlist ) then return end
|
||||
node:SetText( label:GetText() )
|
||||
hook.Run( "SpawnlistContentChanged" )
|
||||
end
|
||||
|
||||
icons.OnChange = function()
|
||||
if ( !node.CustomSpawnlist ) then return end
|
||||
node:SetIcon( icons:GetSelectedIcon() )
|
||||
hook.Run( "SpawnlistContentChanged" )
|
||||
end
|
||||
|
||||
end )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:PerformLayout()
|
||||
-- Not using docking because it will mess up other elements using docking!
|
||||
self.Overlay:SetSize( self:GetSize() )
|
||||
end
|
||||
|
||||
vgui.Register( "ContentSidebarToolbox", PANEL, "DDrawer" )
|
||||
Reference in New Issue
Block a user