mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 07:47:54 +01:00
224 lines
7.6 KiB
C#
224 lines
7.6 KiB
C#
#nullable enable
|
||
|
||
using System.Text;
|
||
|
||
namespace UICatalog.Scenarios;
|
||
|
||
[ScenarioMetadata ("Unicode", "Tries to test Unicode in all controls (#204)")]
|
||
[ScenarioCategory ("Text and Formatting")]
|
||
[ScenarioCategory ("Controls")]
|
||
public class UnicodeInMenu : Scenario
|
||
{
|
||
public override void Main ()
|
||
{
|
||
var unicode =
|
||
"Τὴ γλῶσσα μοῦ ἔδωσαν ἑλληνικὴ\nτὸ σπίτι φτωχικὸ στὶς ἀμμουδιὲς τοῦ Ὁμήρου.\nΜονάχη ἔγνοια ἡ γλῶσσα μου στὶς ἀμμουδιὲς τοῦ Ὁμήρου.";
|
||
|
||
var gitString =
|
||
$"gui.cs 糊 (hú) {Glyphs.IdenticalTo} {Glyphs.DownArrow}18 {Glyphs.UpArrow}10 {Glyphs.VerticalFourDots}1 {Glyphs.HorizontalEllipsis}";
|
||
|
||
Application.Init ();
|
||
|
||
Window appWindow = new ()
|
||
{
|
||
Title = GetQuitKeyAndName (),
|
||
BorderStyle = LineStyle.None
|
||
};
|
||
|
||
// MenuBar
|
||
MenuBar menu = new ();
|
||
|
||
menu.Add (
|
||
new MenuBarItem (
|
||
"_Файл",
|
||
[
|
||
new MenuItem
|
||
{
|
||
Title = "_Создать",
|
||
HelpText = "Creates new file"
|
||
},
|
||
new MenuItem
|
||
{
|
||
Title = "_Открыть"
|
||
},
|
||
new MenuItem
|
||
{
|
||
Title = "Со_хранить"
|
||
},
|
||
new MenuItem
|
||
{
|
||
Title = "_Выход",
|
||
Action = () => Application.RequestStop ()
|
||
}
|
||
]
|
||
)
|
||
);
|
||
|
||
menu.Add (
|
||
new MenuBarItem (
|
||
"_Edit",
|
||
[
|
||
new MenuItem
|
||
{
|
||
Title = "_Copy"
|
||
},
|
||
new MenuItem
|
||
{
|
||
Title = "C_ut"
|
||
},
|
||
new MenuItem
|
||
{
|
||
Title = "_糊",
|
||
HelpText = "hú (Paste)"
|
||
}
|
||
]
|
||
)
|
||
);
|
||
|
||
appWindow.Add (menu);
|
||
|
||
Label label = new () { X = 0, Y = Pos.Bottom (menu), Text = "Label:" };
|
||
appWindow.Add (label);
|
||
|
||
Label testlabel = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (50),
|
||
Text = gitString
|
||
};
|
||
appWindow.Add (testlabel);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (label) + 1, Text = "Label (CanFocus):" };
|
||
appWindow.Add (label);
|
||
|
||
StringBuilder sb = new ();
|
||
sb.Append ('e');
|
||
sb.Append ('\u0301');
|
||
sb.Append ('\u0301');
|
||
|
||
testlabel = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (50),
|
||
CanFocus = true,
|
||
HotKeySpecifier = new ('&'),
|
||
Text = $"Should be [e with two accents, but isn't due to #2616]: [{sb}]"
|
||
};
|
||
appWindow.Add (testlabel);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (label) + 1, Text = "Button:" };
|
||
appWindow.Add (label);
|
||
|
||
Button button = new () { X = 20, Y = Pos.Y (label), Text = "A123456789♥♦♣♠JQK" };
|
||
appWindow.Add (button);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (label) + 1, Text = "CheckBox:" };
|
||
appWindow.Add (label);
|
||
|
||
CheckBox checkBox = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (50),
|
||
Height = 1,
|
||
Text = gitString
|
||
};
|
||
appWindow.Add (checkBox);
|
||
|
||
CheckBox checkBoxRight = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Bottom (checkBox),
|
||
Width = Dim.Percent (50),
|
||
Height = 1,
|
||
TextAlignment = Alignment.End,
|
||
Text = $"End - {gitString}"
|
||
};
|
||
appWindow.Add (checkBoxRight);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (checkBoxRight) + 2, Text = "HexView:" };
|
||
appWindow.Add (label);
|
||
|
||
HexView hexView = new (new MemoryStream (Encoding.ASCII.GetBytes (gitString + " Со_хранить")))
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (60),
|
||
Height = 5
|
||
};
|
||
appWindow.Add (hexView);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (hexView) + 1, Text = "ListView:" };
|
||
appWindow.Add (label);
|
||
|
||
ListView listView = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (60),
|
||
Height = 3,
|
||
Source = new ListWrapper<string> (
|
||
["item #1", gitString, "Со_хранить", unicode]
|
||
)
|
||
};
|
||
appWindow.Add (listView);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (listView) + 1, Text = "OptionSelector:" };
|
||
appWindow.Add (label);
|
||
|
||
OptionSelector optionSelector = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (60),
|
||
Labels = ["item #1", gitString, "Со_хранить", "𝔽𝕆𝕆𝔹𝔸ℝ"]
|
||
};
|
||
appWindow.Add (optionSelector);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (optionSelector) + 1, Text = "TextField:" };
|
||
appWindow.Add (label);
|
||
|
||
TextField textField = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (60),
|
||
Text = gitString + " = Со_хранить"
|
||
};
|
||
appWindow.Add (textField);
|
||
|
||
label = new () { X = Pos.X (label), Y = Pos.Bottom (textField) + 1, Text = "TextView:" };
|
||
appWindow.Add (label);
|
||
|
||
TextView textView = new ()
|
||
{
|
||
X = 20,
|
||
Y = Pos.Y (label),
|
||
Width = Dim.Percent (60),
|
||
Height = 5,
|
||
Text = unicode
|
||
};
|
||
appWindow.Add (textView);
|
||
|
||
// StatusBar
|
||
StatusBar statusBar = new (
|
||
[
|
||
new (
|
||
Application.QuitKey,
|
||
"Выход",
|
||
() => Application.RequestStop ()
|
||
),
|
||
new (Key.F2, "Создать", null),
|
||
new (Key.F3, "Со_хранить", null)
|
||
]
|
||
);
|
||
appWindow.Add (statusBar);
|
||
|
||
Application.Run (appWindow);
|
||
appWindow.Dispose ();
|
||
Application.Shutdown ();
|
||
}
|
||
}
|