mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
195
lua/vgui/dlistview_line.lua
Normal file
195
lua/vgui/dlistview_line.lua
Normal file
@@ -0,0 +1,195 @@
|
||||
--[[
|
||||
| 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" )
|
||||
Reference in New Issue
Block a user