using System; using System.Collections.Generic; using System.Diagnostics; using Terminal.Gui; namespace UICatalog.Scenarios; [ScenarioMetadata ("ProcessTable", "Demonstrates TableView with the currently running processes.")] [ScenarioCategory ("TableView")] public class ProcessTable : Scenario { private TableView tableView; public override void Setup () { Win.Title = GetName (); Win.Y = 1; // menu Win.Height = Dim.Fill (1); // status bar tableView = new TableView { X = 0, Y = 0, Width = Dim.Fill (), Height = Dim.Fill (1) }; // First time CreateProcessTable (); // Then every second Application.AddTimeout ( TimeSpan.FromSeconds (1), () => { CreateProcessTable (); return true; } ); Win.Add (tableView); } private void CreateProcessTable () { int ro = tableView.RowOffset; int co = tableView.ColumnOffset; tableView.Table = new EnumerableTableSource ( Process.GetProcesses (), new Dictionary> { { "ID", p => p.Id }, { "Name", p => p.ProcessName }, { "Threads", p => p.Threads.Count }, { "Virtual Memory", p => p.VirtualMemorySize64 }, { "Working Memory", p => p.WorkingSet64 } } ); tableView.RowOffset = ro; tableView.ColumnOffset = co; tableView.EnsureValidScrollOffsets (); } }