示例#1
0
        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));
        }
示例#2
0
 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);
 }
示例#3
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;
        }
示例#4
0
        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);
        }
示例#5
0
        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));
        }
示例#6
0
        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));
        }
示例#7
0
        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));
        }
示例#8
0
        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;
        }
示例#10
0
        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));
        }
示例#11
0
        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);
        }
示例#12
0
        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;
        }
示例#13
0
        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();
        }