mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-27 00:07:58 +01:00
UI catalog (#387)
* key down/up support * line endings? * line endings * KeyDown/Up support * line endings * line endings * Revert "Drop NuGet restore" This reverts commit5c7a0d05f0. * Revert "Revert "Drop NuGet restore"" This reverts commit2dc5fce865. * updated demo * defined styles * Smarter StatusBar bottom tracking. * Prepping for https://github.com/migueldeicaza/gui.cs/issues/376 * Oops. * Fixed StatusBar 'snap to bottom' * line endings * Revert "Fixed StatusBar 'snap to bottom'" This reverts commit9a91c957e2. * started UICatalog project * Initial working POC. * Fix newlines * merge * textalignment demo tweaks * textalignment demo tweaks * Unicode Menu Scenario * not sure why this keeps changing * re-added project to .sln file * re-enabled status bar * moved scenarios to dir * building a dim and pos demo * terminal.sln * progress...barely * fixed exit * progress with some underlying fixes to Label * added readme * fixes build issue * launch * made default colors readable on Windows * major UI Catalog upgrade * added more demos and updated readme * refactored and added more tests * added ref to Issue #437 * added OnKeyUp support to Curses and Net drivers * more tweaks - grab PR #438 first * Added a OpenSelectedItem event to the ListView #429 * updates * moved KeyUpHandler out of special ESC stuff * more tweaks & improvements * testing top window bug * supported OpenSelectedItem * lots of updates * fixed regression, fixed #444 * better button scenario * tweaks * add Ready event to Toplevel * dotfx .gitignroe * ready for ready * updated colors based on feedback; consolodated config code * tweaked readme * readme * Added Editor demonstrating TextView * Added Editor demonstrating TextView * added hexeditor scenario Co-authored-by: Miguel de Icaza <miguel@gnome.org> Co-authored-by: BDisp <bd.bdisp@gmail.com>
This commit is contained in:
@@ -677,6 +677,8 @@ namespace Terminal.Gui {
|
||||
keyHandler (new KeyEvent (map));
|
||||
keyDownHandler (new KeyEvent (map));
|
||||
} else {
|
||||
// Key Up - Fire KeyDown Event and KeyStroke (ProcessKey) Event
|
||||
keyHandler (new KeyEvent (map));
|
||||
keyUpHandler (new KeyEvent (map));
|
||||
}
|
||||
}
|
||||
|
||||
82
UICatalog/Scenarios/DimAndPosLayout.cs
Normal file
82
UICatalog/Scenarios/DimAndPosLayout.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Terminal.Gui;
|
||||
|
||||
namespace UICatalog {
|
||||
/// <summary>
|
||||
/// 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
|
||||
/// [ ] - ...
|
||||
/// </summary>
|
||||
[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<Label> ();
|
||||
labelList.Add (new Label ($"Label:"));
|
||||
labelList.Add (new Label ($"{i++}-{txt}") { TextAlignment = Terminal.Gui.TextAlignment.Left, Width = Dim.Fill (1), X = 0, Y = Pos.Bottom (labelList.LastOrDefault ()) + 1, ColorScheme = Colors.Dialog });
|
||||
labelList.Add (new Label ($"{i++}-{txt}") { TextAlignment = Terminal.Gui.TextAlignment.Right, Width = Dim.Fill (1), X = 0, Y = Pos.Bottom (labelList.LastOrDefault ()) + 1, ColorScheme = Colors.Dialog });
|
||||
labelList.Add (new Label ($"{i++}-{txt}") { TextAlignment = Terminal.Gui.TextAlignment.Centered, Width = Dim.Fill (1), X = 0, Y = Pos.Bottom (labelList.LastOrDefault ()) + 1, ColorScheme = Colors.Dialog });
|
||||
labelList.Add (new Label ($"{i++}-{txt}") { TextAlignment = Terminal.Gui.TextAlignment.Justified, Width = Dim.Fill (1), X = 0, Y = Pos.Bottom (labelList.LastOrDefault ()) + 1, ColorScheme = Colors.Dialog });
|
||||
|
||||
subWin.Add (labelList.ToArray ());
|
||||
//subWin.LayoutSubviews ();
|
||||
}
|
||||
|
||||
public override void Run ()
|
||||
{
|
||||
base.Run ();
|
||||
}
|
||||
}
|
||||
|
||||
public static class StringExtensions {
|
||||
public static string Repeat (this string instr, int n)
|
||||
{
|
||||
if (n <= 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty (instr) || n == 1) {
|
||||
return instr;
|
||||
}
|
||||
|
||||
return new StringBuilder (instr.Length * n)
|
||||
.Insert (0, instr, n)
|
||||
.ToString ();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user