mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
169 lines
3.0 KiB
Lua
169 lines
3.0 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 = {}
|
|
AccessorFunc( PANEL, "m_bStretchToFit", "StretchToFit" )
|
|
AccessorFunc( PANEL, "m_bDepressImage", "DepressImage" )
|
|
|
|
function PANEL:Init()
|
|
|
|
self:SetPaintBackground( false )
|
|
self:SetDrawBorder( false )
|
|
self:SetStretchToFit( true )
|
|
self:SetDepressImage( true )
|
|
|
|
self:SetCursor( "hand" )
|
|
self.m_Image = vgui.Create( "DImage", self )
|
|
|
|
self:SetText( "" )
|
|
|
|
self:SetColor( color_white )
|
|
|
|
end
|
|
|
|
--
|
|
-- SetImageVisible
|
|
-- Hide the button's image
|
|
--
|
|
function PANEL:SetImageVisible( bBool )
|
|
|
|
self.m_Image:SetVisible( bBool )
|
|
|
|
end
|
|
|
|
function PANEL:SetImage( strImage, strBackup )
|
|
|
|
self.m_Image:SetImage( strImage, strBackup )
|
|
|
|
end
|
|
PANEL.SetIcon = PANEL.SetImage
|
|
|
|
function PANEL:SetColor( col )
|
|
|
|
self.m_Image:SetImageColor( col )
|
|
self.ImageColor = col
|
|
|
|
end
|
|
|
|
function PANEL:GetImage()
|
|
|
|
return self.m_Image:GetImage()
|
|
|
|
end
|
|
|
|
function PANEL:SetKeepAspect( bKeep )
|
|
|
|
self.m_Image:SetKeepAspect( bKeep )
|
|
|
|
end
|
|
|
|
-- SetMaterial should replace SetImage for cached materials
|
|
function PANEL:SetMaterial( Mat )
|
|
|
|
self.m_Image:SetMaterial( Mat )
|
|
|
|
end
|
|
|
|
function PANEL:SizeToContents()
|
|
|
|
self.m_Image:SizeToContents()
|
|
self:SetSize( self.m_Image:GetWide(), self.m_Image:GetTall() )
|
|
|
|
end
|
|
|
|
function PANEL:DepressImage()
|
|
|
|
if ( !self.m_bDepressImage ) then return end
|
|
|
|
self.m_bImageDepressed = true
|
|
|
|
if ( self.m_bStretchToFit ) then
|
|
|
|
self.m_Image:SetPos( 2, 2 )
|
|
self.m_Image:SetSize( self:GetWide() - 4, self:GetTall() - 4 )
|
|
|
|
else
|
|
|
|
self.m_Image:SizeToContents()
|
|
self.m_Image:SetSize( self.m_Image:GetWide() * 0.8, self.m_Image:GetTall() * 0.8 )
|
|
self.m_Image:Center()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:OnMousePressed( mousecode )
|
|
|
|
DButton.OnMousePressed( self, mousecode )
|
|
|
|
self:DepressImage()
|
|
|
|
end
|
|
|
|
function PANEL:OnMouseReleased( mousecode )
|
|
|
|
DButton.OnMouseReleased( self, mousecode )
|
|
|
|
self.m_bImageDepressed = nil
|
|
self:InvalidateLayout()
|
|
|
|
end
|
|
|
|
function PANEL:PerformLayout()
|
|
|
|
if ( self.m_bDepressImage && self.m_bImageDepressed ) then
|
|
|
|
self:DepressImage()
|
|
|
|
elseif ( self.m_bStretchToFit ) then
|
|
|
|
self.m_Image:SetPos( 0, 0 )
|
|
self.m_Image:SetSize( self:GetSize() )
|
|
|
|
else
|
|
|
|
self.m_Image:SizeToContents()
|
|
self.m_Image:Center()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:SetDisabled( bDisabled )
|
|
|
|
DButton.SetDisabled( self, bDisabled )
|
|
|
|
if ( bDisabled ) then
|
|
self.m_Image:SetAlpha( self.ImageColor.a * 0.4 )
|
|
else
|
|
self.m_Image:SetAlpha( self.ImageColor.a )
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:SetOnViewMaterial( MatName, Backup )
|
|
|
|
self.m_Image:SetOnViewMaterial( MatName, Backup )
|
|
|
|
end
|
|
|
|
function PANEL:GenerateExample( ClassName, PropertySheet, Width, Height )
|
|
|
|
local ctrl = vgui.Create( ClassName )
|
|
ctrl:SetImage( "gui/dupe_bg.png" )
|
|
ctrl:SetSize( 200, 200 )
|
|
|
|
PropertySheet:AddSheet( ClassName, ctrl, nil, true, true )
|
|
|
|
end
|
|
|
|
derma.DefineControl( "DImageButton", "A button which uses an image instead of text", PANEL, "DButton" )
|