|
@@ -1,40 +1,60 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
+using System.Text;
|
|
|
using Terminal.Gui;
|
|
|
+using Rune = System.Rune;
|
|
|
|
|
|
namespace UICatalog {
|
|
|
[ScenarioMetadata (Name: "TextFormatter Demo", Description: "Demos and tests the TextFormatter class.")]
|
|
|
[ScenarioCategory ("Text")]
|
|
|
[ScenarioCategory ("POC")]
|
|
|
class TextFormatterDemo : Scenario {
|
|
|
- public override void Init (Toplevel top, ColorScheme colorScheme)
|
|
|
- {
|
|
|
- Application.Init ();
|
|
|
+ //public override void Init (Toplevel top, ColorScheme colorScheme)
|
|
|
+ //{
|
|
|
+ // Application.Init ();
|
|
|
|
|
|
- Top = top;
|
|
|
- if (Top == null) {
|
|
|
- Top = Application.Top;
|
|
|
- }
|
|
|
- Win = null;
|
|
|
- }
|
|
|
+ // Top = top;
|
|
|
+ // if (Top == null) {
|
|
|
+ // Top = Application.Top;
|
|
|
+ // }
|
|
|
+ // Win = null;
|
|
|
+ //}
|
|
|
|
|
|
public override void Setup ()
|
|
|
{
|
|
|
- Top.Text = "Press CTRL-Q to Quit. This is the Text for the TopLevel View. TextAlignment.Centered was specified. It is intentionally very long to illustrate word wrap.\n" +
|
|
|
- "<-- There is a new line here to show a hard line break. You should see this text bleed underneath the subviews, which start at Y = 3.";
|
|
|
- Top.TextAlignment = TextAlignment.Centered;
|
|
|
- Top.ColorScheme = Colors.Base;
|
|
|
+ //Top.Text = "Press CTRL-Q to Quit. This is the Text for the TopLevel View. TextAlignment.Centered was specified. It is intentionally very long to illustrate word wrap.\n" +
|
|
|
+ // "<-- There is a new line here to show a hard line break. You should see this text bleed underneath the subviews, which start at Y = 3.";
|
|
|
+ //Top.TextAlignment = TextAlignment.Centered;
|
|
|
+ //Top.ColorScheme = Colors.Base;
|
|
|
+
|
|
|
+ // Make Win smaller so sizing the window horizontally will make the
|
|
|
+ // labels shrink to zero-width
|
|
|
+ Win.X = 10;
|
|
|
+ Win.Width = Dim.Fill (10);
|
|
|
|
|
|
string text = "Hello world, how are you today? Pretty neat!\nSecond line\n\nFourth Line.";
|
|
|
string unicode = "Τὴ γλῶσσα μοῦ ἔδωσαν ἑλληνικὴ\nτὸ σπίτι φτωχικὸ στὶς ἀμμουδιὲς τοῦ Ὁμήρου.\nΜονάχη ἔγνοια ἡ γλῶσσα μου στὶς ἀμμουδιὲς τοῦ Ὁμήρου.";
|
|
|
|
|
|
+ Label blockText = new Label () { ColorScheme = Colors.TopLevel, X = 0, Y = 3, Height = 7, Width = Dim.Fill (0) };
|
|
|
+
|
|
|
+ var block = new StringBuilder ();
|
|
|
+ block.AppendLine (" _/ ");
|
|
|
+ block.AppendLine (" _/_/_/ _/ _/ _/_/_/ _/_/_/");
|
|
|
+ block.AppendLine (" _/ _/ _/ _/ _/ _/ _/_/ ");
|
|
|
+ block.AppendLine (" _/ _/ _/ _/ _/ _/ _/_/ ");
|
|
|
+ block.AppendLine (" _/_/_/ _/_/_/ _/ _/ _/_/_/ _/_/_/ ");
|
|
|
+ block.AppendLine (" _/ ");
|
|
|
+ block.AppendLine ("_ /_/ ");
|
|
|
+ blockText.Text = block.ToString ();
|
|
|
+ Win.Add (blockText);
|
|
|
+
|
|
|
var unicodeCheckBox = new CheckBox ("Unicode", Top.HotKeySpecifier == (Rune)' ') {
|
|
|
X = 0,
|
|
|
- Y = 3,
|
|
|
+ Y = Pos.Bottom (blockText) + 1,
|
|
|
};
|
|
|
|
|
|
- Top.Add (unicodeCheckBox);
|
|
|
+ Win.Add (unicodeCheckBox);
|
|
|
|
|
|
var alignments = Enum.GetValues (typeof (Terminal.Gui.TextAlignment)).Cast<Terminal.Gui.TextAlignment> ().ToList ();
|
|
|
var singleLines = new Label [alignments.Count];
|
|
@@ -48,22 +68,22 @@ namespace UICatalog {
|
|
|
}
|
|
|
|
|
|
var label = new Label ($"Demonstrating single-line (should clip):") { Y = Pos.Bottom (unicodeCheckBox) + 1 };
|
|
|
- Top.Add (label);
|
|
|
+ Win.Add (label);
|
|
|
foreach (var alignment in alignments) {
|
|
|
label = new Label ($"{alignment}:") { Y = Pos.Bottom (label) };
|
|
|
- Top.Add (label);
|
|
|
+ Win.Add (label);
|
|
|
singleLines [(int)alignment].Y = Pos.Bottom (label);
|
|
|
- Top.Add (singleLines [(int)alignment]);
|
|
|
+ Win.Add (singleLines [(int)alignment]);
|
|
|
label = singleLines [(int)alignment];
|
|
|
}
|
|
|
|
|
|
label = new Label ($"Demonstrating multi-line and word wrap:") { Y = Pos.Bottom (label) };
|
|
|
- Top.Add (label);
|
|
|
+ Win.Add (label);
|
|
|
foreach (var alignment in alignments) {
|
|
|
label = new Label ($"{alignment}:") { Y = Pos.Bottom (label) };
|
|
|
- Top.Add (label);
|
|
|
+ Win.Add (label);
|
|
|
multipleLines [(int)alignment].Y = Pos.Bottom (label);
|
|
|
- Top.Add (multipleLines [(int)alignment]);
|
|
|
+ Win.Add (multipleLines [(int)alignment]);
|
|
|
label = multipleLines [(int)alignment];
|
|
|
}
|
|
|
|
|
@@ -75,4 +95,5 @@ namespace UICatalog {
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|