using System; using System.Collections.Generic; using System.Linq; using System.Text; using Terminal.Gui; namespace UICatalog { /// /// This Scenario demonstrates how to use Termina.gui's Dim and Pos Layout System. /// [x] - Using Dim.Fill to fill a window /// [x] - Using Dim.Fill and Dim.Pos to automatically align controls based on an initial control /// [ ] - ... /// [ScenarioMetadata (Name: "DimAndPosLayout", Description: "Demonstrates using the Dim and Pos Layout System")] [ScenarioCategory ("Layout")] class DimAndPosLayout : Scenario { public override void Setup () { Top.LayoutStyle = LayoutStyle.Computed; // Demonstrate using Dim to create a ruler that always measures the top-level window's width // BUGBUG: Dim.Fill returns too big a value sometimes. //const string rule = "|123456789"; //var labelRuler = new Label ("ruler") { // X = 0, // Y = 0, // Width = Dim.Fill (1), // BUGBUG: I don't think this should be needed; DimFill() should respect container's frame. X does. // ColorScheme = Colors.Error //}; //Application.OnResized += () => { // labelRuler.Text = rule.Repeat ((int)Math.Ceiling((double)(labelRuler.Bounds.Width) / (double)rule.Length))[0..(labelRuler.Bounds.Width)]; //}; //win.Add (labelRuler); // Demonstrate using Dim to create a window that fills the parent with a margin int margin = 20; var subWin = new Window ($"Sub Windoww with {margin} character margin") { X = margin, Y = 2, Width = Dim.Fill (margin), Height = Dim.Fill () }; Win.Add (subWin); int i = 1; string txt = "Hello world, how are you doing today"; var labelList = new List