Files
wnsrc/gamemodes/sandbox/gamemode/spawnmenu/creationmenu/content/contentheader.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

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 )