Browse Source

Initial commit

Tig Kindel 1 year ago
parent
commit
8bf1ea2d05
1 changed files with 71 additions and 0 deletions
  1. 71 0
      Terminal.Gui/Views/Bar.cs

+ 71 - 0
Terminal.Gui/Views/Bar.cs

@@ -0,0 +1,71 @@
+using System;
+using System.Linq;
+
+namespace Terminal.Gui;
+
+
+public class BarItem : View {
+	public BarItem ()
+	{
+		Height = 1;
+	}
+	public override string Text {
+		set {
+			base.Text = $"{KeyBindings.Bindings.FirstOrDefault (b => b.Value.Scope != KeyBindingScope.Focused).Key} `{value}`";
+		}
+		get {
+			return $"{KeyBindings.Bindings.FirstOrDefault(b => b.Value.Scope != KeyBindingScope.Focused).Key} `{base.Text}`";
+		}
+	}
+}
+/// <summary>
+/// The Bar <see cref="View"/> provides a container for other views to be used as a toolbar or status bar.
+/// </summary>
+/// <remarks>
+/// Views added to a Bar will be positioned horizontally from left to right.
+/// </remarks>
+public class Bar : View {
+	/// <inheritdoc/>
+	public Bar () => SetInitialProperties ();
+
+	void SetInitialProperties ()
+	{
+		X = 0;
+		Y = Pos.AnchorEnd (1);
+		Width = Dim.Fill ();
+		Height = 1;
+		AutoSize = false;
+		ColorScheme = Colors.Menu;
+	}
+
+	public override void Add (View view)
+	{
+		// Align the views horizontally from left to right. Use Border to separate them.
+
+		// until we know this view is not the rightmost, make it fill the bar
+		//view.Width = Dim.Fill ();
+
+		view.Margin.Thickness = new Thickness (1, 0, 0, 0);
+		view.Margin.ColorScheme = Colors.Menu;
+
+		// Light up right border
+		view.BorderStyle = LineStyle.Single;
+		view.Border.Thickness = new Thickness (0, 0, 1, 0);
+		view.Padding.Thickness = new Thickness (0, 0, 1, 0);
+		view.Padding.ColorScheme = Colors.Menu;
+
+		// leftmost view is at X=0
+		if (Subviews.Count == 0) {
+			view.X = 0;
+		} else {
+			// Make view to right be autosize
+			//Subviews [^1].AutoSize = true;
+
+			// Align the view to the right of the previous view
+			view.X = Pos.Right (Subviews [^1]);
+
+		}
+
+		base.Add (view);
+	}
+}