Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* _
- ( )
- _| | __ _ __ ___ ___ _ _
- /'_` | /'__`\( '__)/' _ ` _ `\ /'_` )
- ( (_| |( ___/| | | ( ) ( ) |( (_| |
- `\__,_)`\____)(_) (_) (_) (_)`\__,_)
- DForm
- */
- local PANEL = {}
- AccessorFunc( PANEL, "m_bSizeToContents", "AutoSize", FORCE_BOOL)
- AccessorFunc( PANEL, "m_bBackground", "DrawBackground", FORCE_BOOL )
- AccessorFunc( PANEL, "m_iSpacing", "Spacing" )
- AccessorFunc( PANEL, "m_Padding", "Padding" )
- Derma_Hook( PANEL, "Paint", "Paint", "Form" )
- Derma_Hook( PANEL, "ApplySchemeSettings", "Scheme", "Form" )
- /*---------------------------------------------------------
- Name: Init
- ---------------------------------------------------------*/
- function PANEL:Init()
- self.Items = {}
- self:SetSpacing( 4 )
- self:SetPadding( 10 )
- self:SetDrawBackground( true )
- self:SetMouseInputEnabled( true )
- self:SetKeyboardInputEnabled( true )
- self.Label = vgui.Create( "DLabel", self )
- end
- /*---------------------------------------------------------
- Name: SetName
- ---------------------------------------------------------*/
- function PANEL:SetName( name )
- self.Label:SetText( name )
- end
- /*---------------------------------------------------------
- Name: Clear
- ---------------------------------------------------------*/
- function PANEL:Clear()
- for k, v in pairs( self.Items ) do
- if ( v.Left ) then v.Left:Remove() end
- if ( v.Right ) then v.Right:Remove() end
- end
- self.Items = {}
- end
- /*---------------------------------------------------------
- Name: AddItem
- ---------------------------------------------------------*/
- function PANEL:AddItem( left, right )
- table.insert( self.Items, { Left = left, Right = right } )
- if ( left ) then left:SetParent( self ) end
- if ( right ) then right:SetParent( self ) end
- self:InvalidateLayout()
- end
- /*---------------------------------------------------------
- Name: TextEntry
- ---------------------------------------------------------*/
- function PANEL:TextEntry( strLabel, strConVar )
- local left = vgui.Create( "DLabel", self )
- left:SetText( strLabel )
- local right = vgui.Create( "DTextEntry", self )
- right:SetConVar( strConVar )
- right.Stretch = true
- self:AddItem( left, right )
- return right, left
- end
- /*---------------------------------------------------------
- Name: MultiChoice
- ---------------------------------------------------------*/
- function PANEL:MultiChoice( strLabel, strConVar )
- local left = vgui.Create( "DLabel", self )
- left:SetText( strLabel )
- local right = vgui.Create( "DMultiChoice", self )
- right:SetConVar( strConVar )
- right.Stretch = true
- self:AddItem( left, right )
- return right, left
- end
- /*---------------------------------------------------------
- Name: MultiChoice
- ---------------------------------------------------------*/
- function PANEL:NumberWang( strLabel, strConVar, numMin, numMax, numDecimals )
- local left = vgui.Create( "DLabel", self )
- left:SetText( strLabel )
- local right = vgui.Create( "DNumberWang", self )
- right:SetMinMax( numMin, numMax )
- if ( numDecimals != nil ) then right:SetDecimals( numDecimals ) end
- right:SetConVar( strConVar )
- right:SizeToContents()
- self:AddItem( left, right )
- return right, left
- end
- /*---------------------------------------------------------
- Name: MultiChoice
- ---------------------------------------------------------*/
- function PANEL:NumSlider( strLabel, strConVar, numMin, numMax, numDecimals )
- local left = vgui.Create( "DNumSlider", self )
- left:SetText( strLabel )
- left:SetMinMax( numMin, numMax )
- if ( numDecimals != nil ) then left:SetDecimals( numDecimals ) end
- left:SetConVar( strConVar )
- left:SizeToContents()
- self:AddItem( left, nil )
- return left
- end
- /*---------------------------------------------------------
- Name: MultiChoice
- ---------------------------------------------------------*/
- function PANEL:CheckBox( strLabel, strConVar )
- local left = vgui.Create( "DCheckBoxLabel", self )
- left:SetText( strLabel )
- left:SetConVar( strConVar )
- left:SetIndent( 5 )
- self:AddItem( left, nil )
- return left
- end
- /*---------------------------------------------------------
- Name: Help
- ---------------------------------------------------------*/
- function PANEL:Help( strHelp )
- local left = vgui.Create( "DLabel", self )
- left:SetWrap( true )
- left:SetFont( "DefaultSmall" )
- left:SetTextInset( 8 )
- left:SetText( strHelp )
- left:SetContentAlignment( 7 )
- left:SetAutoStretchVertical( true )
- self:AddItem( left, nil )
- return left
- end
- /*---------------------------------------------------------
- Name: Button
- Note: If you're running a console command like "maxplayers 10" you
- need to add the "10" to the arguments, like so
- Button( "LabelName", "maxplayers", "10" )
- ---------------------------------------------------------*/
- function PANEL:Button( strName, strConCommand, ... /* console command args!! */ )
- local left = vgui.Create( "DButton", self )
- if ( strConCommand ) then
- left:SetConsoleCommand( strConCommand, ... )
- end
- left:SetText( strName )
- self:AddItem( left, nil )
- return left
- end
- /*---------------------------------------------------------
- Name: PanelSelect
- ---------------------------------------------------------*/
- function PANEL:PanelSelect()
- local left = vgui.Create( "DPanelSelect", self )
- self:AddItem( left, nil )
- return left
- end
- /*---------------------------------------------------------
- Name: ComboBox
- ---------------------------------------------------------*/
- function PANEL:ComboBox( strLabel )
- if ( strLabel ) then
- local left = vgui.Create( "DLabel", self )
- left:SetText( strLabel )
- self:AddItem( left )
- end
- local right = vgui.Create( "DComboBox", self )
- //right:SetConVar( strConVar )
- right.Stretch = true
- self:AddItem( right )
- return right, left
- end
- /*---------------------------------------------------------
- Name: Rebuild
- ---------------------------------------------------------*/
- function PANEL:Rebuild()
- end
- /*---------------------------------------------------------
- Name: Rebuild
- ---------------------------------------------------------*/
- function PANEL:PerformLayout()
- self.Label:SetPos( 5, 0 )
- self.Label:SizeToContents()
- local y = self:GetPadding() + 15
- local Col2 = self:GetWide() * 0.3
- for k, v in pairs( self.Items ) do
- if ( v.Right ) then
- v.Left:SizeToContents()
- Col2 = math.max( Col2, v.Left:GetWide() + self:GetPadding() * 2 )
- end
- end
- for k, v in pairs( self.Items ) do
- if ( v.Right ) then
- v.Left:SetPos( self:GetPadding(), y )
- v.Right:SetPos( Col2, y )
- if ( v.Right.Stretch ) then
- v.Right:SetWide( self:GetWide() - Col2 - self:GetPadding() )
- v.Right:InvalidateLayout( true )
- end
- y = y + math.max( v.Left:GetTall(), v.Right:GetTall() ) + self.m_iSpacing
- else
- v.Left:SetPos( self:GetPadding(), y )
- v.Left:SetWide( self:GetWide() - self:GetPadding() * 2 )
- v.Left:InvalidateLayout( true )
- y = y + v.Left:GetTall() + self.m_iSpacing
- end
- end
- self:SetTall( y + self:GetPadding() )
- self:TellParentAboutSizeChanges()
- end
- derma.DefineControl( "DForm", "", PANEL, "Panel" )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement