Browse Source

Improved scenario to allow flipping splitter orientation

Thomas 2 years ago
parent
commit
ca0cd7cfae
2 changed files with 40 additions and 0 deletions
  1. 2 0
      Terminal.Gui/Views/SplitContainer.cs
  2. 38 0
      UICatalog/Scenarios/SplitContainerExample.cs

+ 2 - 0
Terminal.Gui/Views/SplitContainer.cs

@@ -22,6 +22,8 @@ namespace Terminal.Gui {
 
 			Setup ();
 
+			CanFocus = false;
+
 			// TODO: Actually respect collapsed statuses
 		}
 

+ 38 - 0
UICatalog/Scenarios/SplitContainerExample.cs

@@ -1,5 +1,6 @@
 using Terminal.Gui;
 using System;
+using Terminal.Gui.Graphs;
 
 namespace UICatalog.Scenarios {
 	[ScenarioMetadata (Name: "Split Container", Description: "Demonstrates the SplitContainer functionality")]
@@ -8,6 +9,9 @@ namespace UICatalog.Scenarios {
 
 		private SplitContainer splitContainer;
 
+
+		private MenuItem miVertical;
+
 		/// <summary>
 		/// Setup the scenario.
 		/// </summary>
@@ -15,6 +19,7 @@ namespace UICatalog.Scenarios {
 		{
 			// Scenario Window's.
 			Win.Title = this.GetName ();
+			Win.Y = 1;
 
 			splitContainer = new SplitContainer {
 				Width = Dim.Fill (),
@@ -23,10 +28,43 @@ namespace UICatalog.Scenarios {
 			};
 
 
+			Label lbl1;
 			splitContainer.Panel1.Add (new Label ("Hello"));
+			splitContainer.Panel1.Add (lbl1 = new Label ("Type Something:"){Y=2});
+			splitContainer.Panel1.Add (new TextField (){Width = Dim.Fill(),Y=2,X=Pos.Right(lbl1)+1});
+			
+			Label lbl2;
 			splitContainer.Panel2.Add (new Label ("World"));
+			splitContainer.Panel2.Add (lbl2 = new Label ("Type Here Too:"){Y=2});
+			splitContainer.Panel2.Add (new TextField (){Width = Dim.Fill(),Y=2,X=Pos.Right(lbl2)+1});
 
 			Win.Add (splitContainer);
+
+
+			var menu = new MenuBar (new MenuBarItem [] {
+			new MenuBarItem ("_File", new MenuItem [] {
+				new MenuItem ("_Quit", "", () => Quit()),
+			}),
+			new MenuBarItem ("_Options", new MenuItem [] {
+				miVertical = new MenuItem ("_Vertical", "", () => ToggleOrientation())
+				{
+					Checked = splitContainer.Orientation == Orientation.Vertical,
+					CheckType = MenuItemCheckStyle.Checked 
+				}})
+			});
+			Application.Top.Add (menu);
+		}
+
+		public void ToggleOrientation()
+		{
+
+			miVertical.Checked = !miVertical.Checked;
+			splitContainer.Orientation =  miVertical.Checked ? Orientation.Vertical : Orientation.Horizontal;
+		}
+
+		private void Quit ()
+		{
+			Application.RequestStop ();
 		}
 	}
 }