mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
141 lines
2.9 KiB
Lua
141 lines
2.9 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/
|
|
--]]
|
|
|
|
|
|
surface.CreateFont( "ContentHeader", {
|
|
font = "Helvetica",
|
|
size = 50,
|
|
weight = 1000
|
|
} )
|
|
|
|
local PANEL = {}
|
|
|
|
function PANEL:Init()
|
|
|
|
self:SetFont( "ContentHeader" )
|
|
self:SetBright( true )
|
|
self:SetExpensiveShadow( 2, Color( 0, 0, 0, 130 ) )
|
|
|
|
self:SetSize( 64, 64 )
|
|
|
|
self.OwnLine = true
|
|
self:SetAutoStretch( true )
|
|
|
|
end
|
|
|
|
function PANEL:PerformLayout()
|
|
|
|
self:SizeToContents()
|
|
|
|
end
|
|
|
|
function PANEL:SizeToContents()
|
|
|
|
local w = self:GetContentSize()
|
|
|
|
-- Don't let the text overflow the parent's width
|
|
if ( IsValid( self:GetParent() ) ) then
|
|
w = math.min( w, self:GetParent():GetWide() - 32 )
|
|
end
|
|
|
|
-- Add a bit more room so it looks nice as a textbox :)
|
|
-- And make sure it has at least some width
|
|
self:SetSize( math.max( w, 64 ) + 16, 64 )
|
|
|
|
end
|
|
|
|
function PANEL:ToTable( bigtable )
|
|
|
|
local tab = {}
|
|
|
|
tab.type = "header"
|
|
tab.text = self:GetText()
|
|
|
|
table.insert( bigtable, tab )
|
|
|
|
end
|
|
|
|
function PANEL:Copy()
|
|
|
|
local copy = vgui.Create( "ContentHeader", self:GetParent() )
|
|
copy:SetText( self:GetText() )
|
|
copy:CopyBounds( self )
|
|
|
|
return copy
|
|
|
|
end
|
|
|
|
function PANEL:PaintOver( w, h )
|
|
|
|
self:DrawSelections()
|
|
|
|
end
|
|
|
|
function PANEL:OnLabelTextChanged( txt )
|
|
|
|
hook.Run( "SpawnlistContentChanged" )
|
|
return txt
|
|
|
|
end
|
|
|
|
function PANEL:IsEnabled()
|
|
|
|
-- This is a hack!
|
|
return !IsValid( self:GetParent() ) || !self:GetParent().GetReadOnly || !self:GetParent():GetReadOnly()
|
|
|
|
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:UpdateColours( skin )
|
|
|
|
if ( self:GetHighlight() ) then return self:SetTextStyleColor( skin.Colours.Label.Highlight ) end
|
|
if ( self:GetBright() ) then return self:SetTextStyleColor( skin.Colours.Label.Bright ) end
|
|
if ( self:GetDark() ) then return self:SetTextStyleColor( skin.Colours.Label.Dark ) end
|
|
|
|
return self:SetTextStyleColor( skin.Colours.Label.Default )
|
|
|
|
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
|
|
|
|
vgui.Register( "ContentHeader", PANEL, "DLabelEditable" )
|
|
|
|
spawnmenu.AddContentType( "header", function( container, obj )
|
|
|
|
if ( !obj.text || !isstring( obj.text ) ) then return end
|
|
|
|
local label = vgui.Create( "ContentHeader", container )
|
|
label:SetText( obj.text )
|
|
|
|
container:Add( label )
|
|
|
|
return label
|
|
|
|
end )
|