mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
196 lines
3.6 KiB
Lua
196 lines
3.6 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 = {}
|
|
|
|
function PANEL:Init()
|
|
|
|
self:SetTextInset( 5, 0 )
|
|
|
|
end
|
|
|
|
function PANEL:UpdateColours( skin )
|
|
|
|
if ( self:GetParent():IsLineSelected() ) then return self:SetTextStyleColor( skin.Colours.Label.Bright ) end
|
|
|
|
return self:SetTextStyleColor( skin.Colours.Label.Dark )
|
|
|
|
end
|
|
|
|
function PANEL:GenerateExample()
|
|
|
|
-- Do nothing!
|
|
|
|
end
|
|
|
|
derma.DefineControl( "DListViewLabel", "", PANEL, "DLabel" )
|
|
|
|
--[[---------------------------------------------------------
|
|
DListView_Line
|
|
-----------------------------------------------------------]]
|
|
|
|
local PANEL = {}
|
|
|
|
Derma_Hook( PANEL, "Paint", "Paint", "ListViewLine" )
|
|
Derma_Hook( PANEL, "ApplySchemeSettings", "Scheme", "ListViewLine" )
|
|
Derma_Hook( PANEL, "PerformLayout", "Layout", "ListViewLine" )
|
|
|
|
AccessorFunc( PANEL, "m_iID", "ID" )
|
|
AccessorFunc( PANEL, "m_pListView", "ListView" )
|
|
AccessorFunc( PANEL, "m_bAlt", "AltLine" )
|
|
|
|
function PANEL:Init()
|
|
|
|
self:SetSelectable( true )
|
|
self:SetMouseInputEnabled( true )
|
|
|
|
self.Columns = {}
|
|
self.Data = {}
|
|
|
|
end
|
|
|
|
function PANEL:OnSelect()
|
|
|
|
-- For override
|
|
|
|
end
|
|
|
|
function PANEL:OnRightClick()
|
|
|
|
-- For override
|
|
|
|
end
|
|
|
|
function PANEL:OnMousePressed( mcode )
|
|
|
|
if ( mcode == MOUSE_RIGHT ) then
|
|
|
|
-- This is probably the expected behaviour..
|
|
if ( !self:IsLineSelected() ) then
|
|
|
|
self:GetListView():OnClickLine( self, true )
|
|
self:OnSelect()
|
|
|
|
end
|
|
|
|
self:GetListView():OnRowRightClick( self:GetID(), self )
|
|
self:OnRightClick()
|
|
|
|
return
|
|
|
|
end
|
|
|
|
self:GetListView():OnClickLine( self, true )
|
|
self:OnSelect()
|
|
|
|
end
|
|
|
|
function PANEL:OnCursorMoved()
|
|
|
|
if ( input.IsMouseDown( MOUSE_LEFT ) ) then
|
|
self:GetListView():OnClickLine( self )
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:SetSelected( b )
|
|
|
|
self.m_bSelected = b
|
|
|
|
-- Update colors of the lines
|
|
for id, column in pairs( self.Columns ) do
|
|
column:ApplySchemeSettings()
|
|
end
|
|
|
|
end
|
|
|
|
function PANEL:IsLineSelected()
|
|
|
|
return self.m_bSelected
|
|
|
|
end
|
|
|
|
function PANEL:SetColumnText( i, strText )
|
|
|
|
if ( type( strText ) == "Panel" ) then
|
|
|
|
if ( IsValid( self.Columns[ i ] ) ) then self.Columns[ i ]:Remove() end
|
|
|
|
strText:SetParent( self )
|
|
self.Columns[ i ] = strText
|
|
self.Columns[ i ].Value = strText
|
|
return
|
|
|
|
end
|
|
|
|
if ( !IsValid( self.Columns[ i ] ) ) then
|
|
|
|
self.Columns[ i ] = vgui.Create( "DListViewLabel", self )
|
|
self.Columns[ i ]:SetMouseInputEnabled( false )
|
|
|
|
end
|
|
|
|
self.Columns[ i ]:SetText( tostring( strText ) )
|
|
self.Columns[ i ].Value = strText
|
|
return self.Columns[ i ]
|
|
|
|
end
|
|
PANEL.SetValue = PANEL.SetColumnText
|
|
|
|
function PANEL:GetColumnText( i )
|
|
|
|
if ( !self.Columns[ i ] ) then return "" end
|
|
|
|
return self.Columns[ i ].Value
|
|
|
|
end
|
|
|
|
PANEL.GetValue = PANEL.GetColumnText
|
|
|
|
--[[---------------------------------------------------------
|
|
Allows you to store data per column
|
|
|
|
Used in the SortByColumn function for incase you want to
|
|
sort with something else than the text
|
|
-----------------------------------------------------------]]
|
|
function PANEL:SetSortValue( i, data )
|
|
|
|
self.Data[ i ] = data
|
|
|
|
end
|
|
|
|
function PANEL:GetSortValue( i )
|
|
|
|
return self.Data[ i ]
|
|
|
|
end
|
|
|
|
function PANEL:DataLayout( ListView )
|
|
|
|
self:ApplySchemeSettings()
|
|
|
|
local height = self:GetTall()
|
|
|
|
local x = 0
|
|
for k, Column in pairs( self.Columns ) do
|
|
|
|
local w = ListView:ColumnWidth( k )
|
|
Column:SetPos( x, 0 )
|
|
Column:SetSize( w, height )
|
|
x = x + w
|
|
|
|
end
|
|
|
|
end
|
|
|
|
derma.DefineControl( "DListViewLine", "A line from the List View", PANEL, "Panel" )
|
|
derma.DefineControl( "DListView_Line", "A line from the List View", PANEL, "Panel" )
|