private void InitLeftPane() { var stack = grid.Add(new StackPanel() { AutoSize = false, Orientation = Orientation.Vertical }, 0, 0); var formOptions = FormOptions.FromObject(Settings); formOptions.LabelColumnPercentage = .7f; var settingsForm = stack.Add(new Form(formOptions) { Height = 10 }).FillHorizontally(); Settings.SuppressEqualChanges = true; Settings.SubscribeForLifetime(AnyProperty, () => { settingsHasChanged = true; }, this); ConsoleApp.Current.SetTimeout(() => { foreach (var control in settingsForm.Descendents) { control.Unfocused.SubscribeForLifetime(() => { if (settingsHasChanged) { RefreshChart(); settingsHasChanged = false; } }, this); } }, TimeSpan.FromSeconds(1)); }
private void InitListView() { listOptions = new ListGridOptions <IResource>() { Columns = new List <ListGridColumnDefinition <IResource> >() { new ListGridColumnDefinition <IResource>() { Header = "Resource".ToYellow(), Formatter = r => new Label() { Text = r.DisplayName.ToConsoleString() }, Type = GridValueType.RemainderValue, Width = 2, }, new ListGridColumnDefinition <IResource>() { Header = "Current Value".ToYellow(), Formatter = r => new Label() { Text = r.GetFormattedSample() }, Type = GridValueType.RemainderValue, Width = 1, } }, DataSource = new SyncList <IResource>(resources), ShowColumnHeaders = true, ShowPager = false, }; listView = layout.Add(new ListGrid <IResource>(listOptions), 0, 0); }
public MailDetailsPage(MailDetailsViewModel model) : base() { this.model = model; this.BindingContext = this.model; this.Title = "Mail Details"; var fromDescLbl = new Label { Text = "From:" }; var fromLbl = new Label(); fromLbl.SetBinding(Label.TextProperty, new Binding("From")); var subjectDescLbl = new Label { Text = "Subject:", }; var subjectLbl = new Label(); subjectLbl.SetBinding(Label.TextProperty, new Binding("Subject")); var bodyLbl = new Label { LineBreakMode = LineBreakMode.WordWrap, MinimumHeightRequest = 200 }; bodyLbl.SetBinding(Label.TextProperty, new Binding("Body")); // Use a GridLayout, just to see how it works. var layout = new GridLayout(); // Row 1: From layout.Add(fromDescLbl, 0, 0); layout.Add(fromLbl, 1, 0); // Row 2: subject layout.Add(subjectDescLbl, 0, 1); layout.Add(subjectLbl, 1, 1); // Row 3 (spanned): body layout.Add(bodyLbl, 0, 2, 2, 3); layout.SetColumnSpacing(0, 60); layout.SetRowSpacing(2, 20); this.Content = layout; }
protected override void OnCreateForm(Form form) { form.Spacing = 5; form.Add(new Headline("Create Subfolders")); LinearLayout lyButton = LinearLayout.Horizontal(); Button button = new Button("Ok", ButtonClicked); button.Width = 100; lyButton.Add(new View()).Add(button); Label lblSubfolders = new Label("Subfolders:"); lblSubfolders.Width = 150; GridLayout lyCheckboxes = new GridLayout(3, GridLayout.EOrientation.Vertical); foreach (string folder in new string[] { "Scripts", "Scenes", "Prefabs", "Resources", "Textures", "Materials", "Meshes" }) { Toggle toggle = new Toggle(false, folder); subfolders.Add(toggle); lyCheckboxes.Add(toggle); } form.Add(lyCheckboxes); form.Add(new View()); form.Add(lyButton); }
public void AddedMauiViewGetsDefaultRowAndColumn() { var gl = new GridLayout(); var view = NSubstitute.Substitute.For <IView>(); gl.Add(view); Assert.AreEqual(0, gl.GetRow(view)); Assert.AreEqual(0, gl.GetColumn(view)); Assert.AreEqual(1, gl.GetRowSpan(view)); Assert.AreEqual(1, gl.GetColumnSpan(view)); }
public void AddedViewGetsDefaultRowAndColumn() { var gl = new GridLayout(); var view = new Label(); gl.Add(view); Assert.AreEqual(0, gl.GetRow(view)); Assert.AreEqual(0, gl.GetColumn(view)); Assert.AreEqual(1, gl.GetRowSpan(view)); Assert.AreEqual(1, gl.GetColumnSpan(view)); }
public void AddViewRowColumn() { var gridLayout = new GridLayout(); var label = new Label(); gridLayout.Add(label, 3, 4); Assert.AreEqual(3, gridLayout.GetColumn(label)); Assert.AreEqual(4, gridLayout.GetRow(label)); }
public void AddViewDefaultColumn() { var gridLayout = new GridLayout(); var label = new Label(); gridLayout.Add(label, row: 3); Assert.AreEqual(0, gridLayout.GetColumn(label)); Assert.AreEqual(3, gridLayout.GetRow(label)); }
protected override void OnCreateForm(Form form) { form.Spacing = 5; form.Add(new Headline("Create Folder")); Label lblNamespace = new Label("Namespace:"); lblNamespace.Width = 150; txtNamespace = new TextField(transitiveSourceInfo.@namespace); LinearLayout lyNamespace = LinearLayout.Horizontal().Add(lblNamespace).Add(txtNamespace); lyNamespace.Height = 30; Label lblFolder = new Label("Folder:"); lblFolder.Width = 150; txtFolderName = new TextField(); LinearLayout lyFolder = LinearLayout.Horizontal().Add(lblFolder).Add(txtFolderName); lyFolder.Height = 30; lblError = new Label(""); lblError.style.fontStyle = FontStyle.Bold; LinearLayout lyButton = LinearLayout.Horizontal(); Button button = new Button("Ok", ButtonClicked); button.Width = 100; lyButton.Add(new View()).Add(button); Label lblSubfolders = new Label("Create subfolders:"); lblSubfolders.Width = 150; GridLayout lyCheckboxes = new GridLayout(3, GridLayout.EOrientation.Vertical); foreach (string folder in new string[] { "Scripts", "Scenes", "Prefabs", "Resources", "Textures", "Materials", "Meshes" }) { Toggle toggle = new Toggle(false, folder); subfolders.Add(toggle); lyCheckboxes.Add(toggle); } LinearLayout lySubfolders = LinearLayout.Horizontal().Add(lblSubfolders).Add(lyCheckboxes); form.Add(lyNamespace); form.Add(lyFolder); form.Add(lblError); form.Add(lySubfolders); form.Add(lyButton); form.RequestFocusForView = txtFolderName; }
public void RemovedMauiViewsHaveNoRowColumnInfo() { var gl = new GridLayout(); var view = NSubstitute.Substitute.For <IView>(); gl.Add(view); gl.SetRow(view, 2); // Check our assumptions Assert.AreEqual(2, gl.GetRow(view)); // Okay, removing the View from the Grid should mean that any attempt to get row/column info // for that View should fail gl.Remove(view); Assert.Throws(typeof(KeyNotFoundException), () => gl.GetRow(view)); Assert.Throws(typeof(KeyNotFoundException), () => gl.GetRowSpan(view)); Assert.Throws(typeof(KeyNotFoundException), () => gl.GetColumn(view)); Assert.Throws(typeof(KeyNotFoundException), () => gl.GetColumnSpan(view)); }
public void ChangingChildRowInvalidatesGrid() { var grid = new GridLayout() { RowDefinitions = new RowDefinitionCollection { new RowDefinition(), new RowDefinition() } }; var view = Substitute.For <IView>(); grid.Add(view); var handler = ListenForInvalidation(grid); grid.SetRow(view, 1); AssertInvalidated(handler); }
public LayoutUpdatesPage() { var root = new GridLayout() { Margin = 40, BackgroundColor = Colors.Beige }; root.RowDefinitions = new RowDefinitionCollection() { new RowDefinition() { Height = GridLength.Auto }, new RowDefinition() { Height = GridLength.Auto }, new RowDefinition() { Height = GridLength.Auto }, new RowDefinition() { Height = GridLength.Auto } }; root.ColumnDefinitions = new ColumnDefinitionCollection() { new ColumnDefinition() { Width = GridLength.Star }, new ColumnDefinition() { Width = GridLength.Star }, }; var addButton = new Button { Text = "Add" }; root.Add(addButton); var removeButton = new Button { Text = "Remove" }; root.Add(removeButton); root.SetColumn(removeButton, 1); var insertButton = new Button { Text = "Insert" }; root.Add(insertButton); root.SetRow(insertButton, 1); var clearButton = new Button { Text = "Clear" }; root.Add(clearButton); root.SetColumn(clearButton, 1); root.SetRow(clearButton, 1); var updateButton = new Button { Text = "Update" }; root.Add(updateButton); root.SetRow(updateButton, 2); var stack = new VerticalStackLayout(); double shapeWidth = 200; double shapeHeight = 80; double overlap = -20; double leftMarginIncrement = 20; var r1 = new Shapes.Rectangle() { WidthRequest = shapeWidth, HeightRequest = shapeHeight, Fill = new SolidColorBrush(NextColor()), Margin = new Thickness(0, 0, 0, 0) }; var r2 = new Shapes.Rectangle() { WidthRequest = shapeWidth, HeightRequest = shapeHeight, Fill = new SolidColorBrush(NextColor()), Margin = new Thickness(leftMarginIncrement, overlap, 0, 0) }; stack.Add(r1); stack.Add(r2); root.Add(stack); root.SetRow(stack, 3); root.SetColumnSpan(stack, 2); addButton.Clicked += (sender, args) => { var left = leftMarginIncrement * stack.Count; var rect = new Shapes.Rectangle() { WidthRequest = shapeWidth, HeightRequest = shapeHeight, Fill = new SolidColorBrush(NextColor()), Margin = new Thickness(left, overlap, 0, 0) }; stack.Add(rect); }; insertButton.Clicked += (sender, args) => { if (stack.Count < 2) { return; } var left = leftMarginIncrement * stack.Count; var rect = new Shapes.Rectangle() { WidthRequest = shapeWidth, HeightRequest = shapeHeight, Fill = new SolidColorBrush(NextColor()), Margin = new Thickness(left, overlap, 0, 0) }; stack.Insert(1, rect); }; clearButton.Clicked += (sender, args) => { stack.Clear(); }; removeButton.Clicked += (sender, args) => { if (stack.Count > 0) { stack.RemoveAt(stack.Count - 1); } }; updateButton.Clicked += (sender, args) => { if (stack.Count > 0) { var left = leftMarginIncrement * stack.Count; var rect = new Shapes.Rectangle() { WidthRequest = shapeWidth, HeightRequest = shapeHeight, Fill = new SolidColorBrush(NextColor()), Margin = new Thickness(left, overlap, 0, 0) }; stack[0] = rect; } }; Content = root; }
private void InitMenu() { var menuStack = layout.Add(new StackPanel() { Orientation = Orientation.Vertical }, 0, 0); menuStack.Add(new Label() { Text = "Samples Menu".ToYellow(underlined: true) }); menuStack.Add(new Label() { Text = ConsoleString.Empty }); var overviewButton = menuStack.Add(new Button() { Tag = MenuTag, Shortcut = new KeyboardShortcut(ConsoleKey.O, null), Text = "Overview".ToWhite() }); SetupMenuItem(overviewButton, () => { var panel = new ConsolePanel(); var label = panel.Add(new Label() { Text = "Welcome to the PowerArgs sample app.".ToGreen() }).CenterBoth(); return(panel); }); var calculatorButton = menuStack.Add(new Button() { Tag = MenuTag, Shortcut = new KeyboardShortcut(ConsoleKey.C, null), Text = "Calculator program".ToWhite() }); SetupMenuItem(calculatorButton, () => { var panel = new ConsolePanel(); var console = panel.Add(new SampleConsole(() => new CommandLineArgumentsDefinition(typeof(CalculatorProgram)))).Fill(); return(panel); }); var args = new PerfTestArgs() { Test = TestCase.FallingChars }; var perfButton = menuStack.Add(new Button() { Tag = MenuTag, Shortcut = new KeyboardShortcut(ConsoleKey.P, null), Text = "Perf Test".ToWhite() }); SetupMenuItem(perfButton, () => { var panel = new StackPanel() { Height = 3, Orientation = Orientation.Vertical }; panel.Add(new Form(FormOptions.FromObject(args)) { Height = 2 }).FillHorizontally(); var runButton = panel.Add(new Button() { Text = "Run".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.R) }); runButton.Pressed.SubscribeOnce(() => { panel.Controls.Clear(); var console = panel.Add(new PerfTest(args)).Fill(); }); QueueAction(() => panel.Descendents.Where(d => d.CanFocus).FirstOrDefault()?.TryFocus()); return(panel); }); var colorArgs = new ColorTestArgs { From = ConsoleColor.Black, To = ConsoleColor.Green, Mode = ConsoleMode.VirtualTerminal }; var colorButton = menuStack.Add(new Button() { Tag = MenuTag, Shortcut = new KeyboardShortcut(ConsoleKey.R, null), Text = "RGB Test".ToWhite() }); SetupMenuItem(colorButton, () => { var panel = new ConsolePanel() { Height = 4 }; panel.Add(new Form(FormOptions.FromObject(colorArgs)) { Height = 3 }).FillHorizontally(); var runButton = panel.Add(new Button() { Y = 3, Text = "Run".ToWhite(), Shortcut = new KeyboardShortcut(ConsoleKey.R) }); runButton.Pressed.SubscribeOnce(() => { panel.Controls.Clear(); if (colorArgs.Mode == ConsoleMode.VirtualTerminal) { ConsoleProvider.Fancy = true; } if (colorArgs.Mode == ConsoleMode.Console) { ConsoleProvider.Fancy = false; } var toColor = panel.Add(new ConsolePanel() { Width = 20, Height = 3, Background = colorArgs.From }).CenterBoth(); var label = toColor.Add(new Label() { Text = toColor.Background.ToRGBString().ToWhite(toColor.Background, underlined: true) }).CenterBoth(); RGB.AnimateAsync(new RGBAnimationOptions() { Transitions = new System.Collections.Generic.List <System.Collections.Generic.KeyValuePair <RGB, RGB> >() { new System.Collections.Generic.KeyValuePair <RGB, RGB>(colorArgs.From, colorArgs.To), } , Duration = 1500, EasingFunction = Animator.EaseInOut, AutoReverse = true, Loop = this, AutoReverseDelay = 500, OnColorsChanged = (c) => { toColor.Background = c[0]; label.Text = toColor.Background.ToRGBString().ToWhite(toColor.Background, underlined: true); } }); }); QueueAction(() => panel.Descendents.Where(d => d.CanFocus).FirstOrDefault()?.TryFocus()); return(panel); }); overviewButton.Pressed.Fire(); }