public override void Init(Toplevel top, ColorScheme colorScheme)
        {
            top.Dispose();
            Application.Init();

            top = Application.Top;

            var borderStyle     = BorderStyle.Double;
            var drawMarginFrame = false;
            var borderThickness = new Thickness(1, 2, 3, 4);
            var borderBrush     = Colors.Base.HotFocus.Foreground;
            var padding         = new Thickness(1, 2, 3, 4);
            var background      = Colors.Base.HotNormal.Foreground;
            var effect3D        = true;

            var win = new Window(new Rect(5, 5, 40, 20), "Test", 8,
                                 new Border()
            {
                BorderStyle     = borderStyle,
                DrawMarginFrame = drawMarginFrame,
                BorderThickness = borderThickness,
                BorderBrush     = borderBrush,
                Padding         = padding,
                Background      = background,
                Effect3D        = effect3D
            });

            var tf1 = new TextField("1234567890")
            {
                Width = 10
            };

            var button = new Button("Press me!")
            {
                X = Pos.Center(),
                Y = Pos.Center(),
            };

            button.Clicked += () => MessageBox.Query(20, 7, "Hi", "I'm a Window?", "Yes", "No");
            var label = new Label("I'm a Window")
            {
                X = Pos.Center(),
                Y = Pos.Center() - 3,
            };
            var tv = new TextView()
            {
                Y           = Pos.AnchorEnd(2),
                Width       = 10,
                Height      = Dim.Fill(),
                ColorScheme = Colors.Dialog,
                Text        = "1234567890"
            };
            var tf2 = new TextField("1234567890")
            {
                X     = Pos.AnchorEnd(10),
                Y     = Pos.AnchorEnd(1),
                Width = 10
            };

            win.Add(tf1, button, label, tv, tf2);
            top.Add(win);

            var top2 = new Border.ToplevelContainer(new Rect(50, 5, 40, 20),
                                                    new Border()
            {
                BorderStyle     = borderStyle,
                DrawMarginFrame = drawMarginFrame,
                BorderThickness = borderThickness,
                BorderBrush     = borderBrush,
                Padding         = padding,
                Background      = background,
                Effect3D        = effect3D
            },
                                                    "Test2")
            {
                ColorScheme = Colors.Base,
            };

            var tf3 = new TextField("1234567890")
            {
                Width = 10
            };

            var button2 = new Button("Press me!")
            {
                X = Pos.Center(),
                Y = Pos.Center(),
            };

            button2.Clicked += () => MessageBox.Query(20, 7, "Hi", "I'm a Toplevel?", "Yes", "No");
            var label2 = new Label("I'm a Toplevel")
            {
                X = Pos.Center(),
                Y = Pos.Center() - 3,
            };
            var tv2 = new TextView()
            {
                Y           = Pos.AnchorEnd(2),
                Width       = 10,
                Height      = Dim.Fill(),
                ColorScheme = Colors.Dialog,
                Text        = "1234567890"
            };
            var tf4 = new TextField("1234567890")
            {
                X     = Pos.AnchorEnd(10),
                Y     = Pos.AnchorEnd(1),
                Width = 10
            };

            top2.Add(tf3, button2, label2, tv2, tf4);
            top.Add(top2);

            var frm = new FrameView(new Rect(95, 5, 40, 20), "Test3", null,
                                    new Border()
            {
                BorderStyle     = borderStyle,
                DrawMarginFrame = drawMarginFrame,
                BorderThickness = borderThickness,
                BorderBrush     = borderBrush,
                Padding         = padding,
                Background      = background,
                Effect3D        = effect3D
            })
            {
                ColorScheme = Colors.Base
            };

            var tf5 = new TextField("1234567890")
            {
                Width = 10
            };

            var button3 = new Button("Press me!")
            {
                X = Pos.Center(),
                Y = Pos.Center(),
            };

            button3.Clicked += () => MessageBox.Query(20, 7, "Hi", "I'm a FrameView?", "Yes", "No");
            var label3 = new Label("I'm a FrameView")
            {
                X = Pos.Center(),
                Y = Pos.Center() - 3,
            };
            var tv3 = new TextView()
            {
                Y           = Pos.AnchorEnd(2),
                Width       = 10,
                Height      = Dim.Fill(),
                ColorScheme = Colors.Dialog,
                Text        = "1234567890"
            };
            var tf6 = new TextField("1234567890")
            {
                X     = Pos.AnchorEnd(10),
                Y     = Pos.AnchorEnd(1),
                Width = 10
            };

            frm.Add(tf5, button3, label3, tv3, tf6);
            top.Add(frm);

            Application.Run();
        }
Exemple #2
0
        public override void Setup()
        {
            var borderStyle     = BorderStyle.Double;
            var drawMarginFrame = false;
            var borderThickness = new Thickness(1, 2, 3, 4);
            var borderBrush     = Colors.Base.HotFocus.Foreground;
            var padding         = new Thickness(1, 2, 3, 4);
            var background      = Colors.Base.HotNormal.Foreground;
            var effect3D        = true;

            var smartView = new Border.ToplevelContainer()
            {
                X      = Pos.Center(),
                Y      = Pos.Center() - 7,
                Width  = 40,
                Height = 20,
                Border = new Border()
                {
                    BorderStyle     = borderStyle,
                    DrawMarginFrame = drawMarginFrame,
                    BorderThickness = borderThickness,
                    BorderBrush     = borderBrush,
                    Padding         = padding,
                    Background      = background,
                    Effect3D        = effect3D
                },
                ColorScheme = Colors.TopLevel
            };

            var tf1 = new TextField("1234567890")
            {
                Width = 10
            };

            var button = new Button("Press me!")
            {
                X = Pos.Center(),
                Y = Pos.Center(),
            };

            button.Clicked += () => MessageBox.Query(20, 7, "Hi", "I'm a Toplevel?", "Yes", "No");
            var label = new Label("I'm a Toplevel")
            {
                X = Pos.Center(),
                Y = Pos.Center() - 3,
            };
            var tf2 = new TextField("1234567890")
            {
                X     = Pos.AnchorEnd(10),
                Y     = Pos.AnchorEnd(1),
                Width = 10
            };
            var tv = new TextView()
            {
                Y           = Pos.AnchorEnd(2),
                Width       = 10,
                Height      = Dim.Fill(),
                ColorScheme = Colors.Dialog,
                Text        = "1234567890"
            };

            smartView.Add(tf1, button, label, tf2, tv);

            Win.Add(new Label("Padding:")
            {
                X = Pos.Center() - 23,
            });

            var paddingTopEdit = new TextField("")
            {
                X     = Pos.Center() - 22,
                Y     = 1,
                Width = 5
            };

            paddingTopEdit.TextChanging += (e) => {
                try {
                    smartView.Border.Padding = new Thickness(smartView.Border.Padding.Left,
                                                             int.Parse(e.NewText.ToString()), smartView.Border.Padding.Right,
                                                             smartView.Border.Padding.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            paddingTopEdit.Text = $"{smartView.Border.Padding.Top}";

            Win.Add(paddingTopEdit);

            var paddingLeftEdit = new TextField("")
            {
                X     = Pos.Center() - 30,
                Y     = 2,
                Width = 5
            };

            paddingLeftEdit.TextChanging += (e) => {
                try {
                    smartView.Border.Padding = new Thickness(int.Parse(e.NewText.ToString()),
                                                             smartView.Border.Padding.Top, smartView.Border.Padding.Right,
                                                             smartView.Border.Padding.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            paddingLeftEdit.Text = $"{smartView.Border.Padding.Left}";
            Win.Add(paddingLeftEdit);

            var paddingRightEdit = new TextField("")
            {
                X     = Pos.Center() - 15,
                Y     = 2,
                Width = 5
            };

            paddingRightEdit.TextChanging += (e) => {
                try {
                    smartView.Border.Padding = new Thickness(smartView.Border.Padding.Left,
                                                             smartView.Border.Padding.Top, int.Parse(e.NewText.ToString()),
                                                             smartView.Border.Padding.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            paddingRightEdit.Text = $"{smartView.Border.Padding.Right}";
            Win.Add(paddingRightEdit);

            var paddingBottomEdit = new TextField("")
            {
                X     = Pos.Center() - 22,
                Y     = 3,
                Width = 5
            };

            paddingBottomEdit.TextChanging += (e) => {
                try {
                    smartView.Border.Padding = new Thickness(smartView.Border.Padding.Left,
                                                             smartView.Border.Padding.Top, smartView.Border.Padding.Right,
                                                             int.Parse(e.NewText.ToString()));
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            paddingBottomEdit.Text = $"{smartView.Border.Padding.Bottom}";
            Win.Add(paddingBottomEdit);

            var replacePadding = new Button("Replace all based on top")
            {
                X = Pos.Center() - 35,
                Y = 5
            };

            replacePadding.Clicked += () => {
                smartView.Border.Padding = new Thickness(smartView.Border.Padding.Top);
                if (paddingTopEdit.Text.IsEmpty)
                {
                    paddingTopEdit.Text = "0";
                }
                paddingBottomEdit.Text = paddingLeftEdit.Text = paddingRightEdit.Text = paddingTopEdit.Text;
            };
            Win.Add(replacePadding);

            Win.Add(new Label("Border:")
            {
                X = Pos.Center() + 11,
            });

            var borderTopEdit = new TextField("")
            {
                X     = Pos.Center() + 12,
                Y     = 1,
                Width = 5
            };

            borderTopEdit.TextChanging += (e) => {
                try {
                    smartView.Border.BorderThickness = new Thickness(smartView.Border.BorderThickness.Left,
                                                                     int.Parse(e.NewText.ToString()), smartView.Border.BorderThickness.Right,
                                                                     smartView.Border.BorderThickness.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            borderTopEdit.Text = $"{smartView.Border.BorderThickness.Top}";

            Win.Add(borderTopEdit);

            var borderLeftEdit = new TextField("")
            {
                X     = Pos.Center() + 5,
                Y     = 2,
                Width = 5
            };

            borderLeftEdit.TextChanging += (e) => {
                try {
                    smartView.Border.BorderThickness = new Thickness(int.Parse(e.NewText.ToString()),
                                                                     smartView.Border.BorderThickness.Top, smartView.Border.BorderThickness.Right,
                                                                     smartView.Border.BorderThickness.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            borderLeftEdit.Text = $"{smartView.Border.BorderThickness.Left}";
            Win.Add(borderLeftEdit);

            var borderRightEdit = new TextField("")
            {
                X     = Pos.Center() + 19,
                Y     = 2,
                Width = 5
            };

            borderRightEdit.TextChanging += (e) => {
                try {
                    smartView.Border.BorderThickness = new Thickness(smartView.Border.BorderThickness.Left,
                                                                     smartView.Border.BorderThickness.Top, int.Parse(e.NewText.ToString()),
                                                                     smartView.Border.BorderThickness.Bottom);
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            borderRightEdit.Text = $"{smartView.Border.BorderThickness.Right}";
            Win.Add(borderRightEdit);

            var borderBottomEdit = new TextField("")
            {
                X     = Pos.Center() + 12,
                Y     = 3,
                Width = 5
            };

            borderBottomEdit.TextChanging += (e) => {
                try {
                    smartView.Border.BorderThickness = new Thickness(smartView.Border.BorderThickness.Left,
                                                                     smartView.Border.BorderThickness.Top, smartView.Border.BorderThickness.Right,
                                                                     int.Parse(e.NewText.ToString()));
                } catch {
                    if (!e.NewText.IsEmpty)
                    {
                        e.Cancel = true;
                    }
                }
            };
            borderBottomEdit.Text = $"{smartView.Border.BorderThickness.Bottom}";
            Win.Add(borderBottomEdit);

            var replaceBorder = new Button("Replace all based on top")
            {
                X = Pos.Center() + 1,
                Y = 5
            };

            replaceBorder.Clicked += () => {
                smartView.Border.BorderThickness = new Thickness(smartView.Border.BorderThickness.Top);
                if (borderTopEdit.Text.IsEmpty)
                {
                    borderTopEdit.Text = "0";
                }
                borderBottomEdit.Text = borderLeftEdit.Text = borderRightEdit.Text = borderTopEdit.Text;
            };
            Win.Add(replaceBorder);

            Win.Add(new Label("BorderStyle:"));

            var borderStyleEnum = Enum.GetValues(typeof(BorderStyle)).Cast <BorderStyle> ().ToList();
            var rbBorderStyle   = new RadioGroup(borderStyleEnum.Select(
                                                     e => NStack.ustring.Make(e.ToString())).ToArray())
            {
                X            = 2,
                Y            = 1,
                SelectedItem = (int)smartView.Border.BorderStyle
            };

            Win.Add(rbBorderStyle);

            var cbDrawMarginFrame = new CheckBox("Draw Margin Frame", smartView.Border.DrawMarginFrame)
            {
                X     = Pos.AnchorEnd(20),
                Y     = 0,
                Width = 5
            };

            cbDrawMarginFrame.Toggled += (e) => {
                try {
                    smartView.Border.DrawMarginFrame = cbDrawMarginFrame.Checked;
                    if (cbDrawMarginFrame.Checked != smartView.Border.DrawMarginFrame)
                    {
                        cbDrawMarginFrame.Checked = smartView.Border.DrawMarginFrame;
                    }
                } catch { }
            };
            Win.Add(cbDrawMarginFrame);

            rbBorderStyle.SelectedItemChanged += (e) => {
                smartView.Border.BorderStyle = (BorderStyle)e.SelectedItem;
                smartView.SetNeedsDisplay();
                if (cbDrawMarginFrame.Checked != smartView.Border.DrawMarginFrame)
                {
                    cbDrawMarginFrame.Checked = smartView.Border.DrawMarginFrame;
                }
            };

            var cbEffect3D = new CheckBox("Draw 3D effects", smartView.Border.Effect3D)
            {
                X     = Pos.AnchorEnd(20),
                Y     = 1,
                Width = 5
            };

            Win.Add(cbEffect3D);

            Win.Add(new Label("Effect3D Offset:")
            {
                X = Pos.AnchorEnd(20),
                Y = 2
            });
            Win.Add(new Label("X:")
            {
                X = Pos.AnchorEnd(19),
                Y = 3
            });

            var effect3DOffsetX = new TextField("")
            {
                X     = Pos.AnchorEnd(16),
                Y     = 3,
                Width = 5
            };

            effect3DOffsetX.TextChanging += (e) => {
                try {
                    smartView.Border.Effect3DOffset = new Point(int.Parse(e.NewText.ToString()),
                                                                smartView.Border.Effect3DOffset.Y);
                } catch {
                    if (!e.NewText.IsEmpty && e.NewText != CultureInfo.CurrentCulture.NumberFormat.NegativeSign)
                    {
                        e.Cancel = true;
                    }
                }
            };
            effect3DOffsetX.Text = $"{smartView.Border.Effect3DOffset.X}";
            Win.Add(effect3DOffsetX);

            Win.Add(new Label("Y:")
            {
                X = Pos.AnchorEnd(10),
                Y = 3
            });

            var effect3DOffsetY = new TextField("")
            {
                X     = Pos.AnchorEnd(7),
                Y     = 3,
                Width = 5
            };

            effect3DOffsetY.TextChanging += (e) => {
                try {
                    smartView.Border.Effect3DOffset = new Point(smartView.Border.Effect3DOffset.X,
                                                                int.Parse(e.NewText.ToString()));
                } catch {
                    if (!e.NewText.IsEmpty && e.NewText != CultureInfo.CurrentCulture.NumberFormat.NegativeSign)
                    {
                        e.Cancel = true;
                    }
                }
            };
            effect3DOffsetY.Text = $"{smartView.Border.Effect3DOffset.Y}";
            Win.Add(effect3DOffsetY);

            cbEffect3D.Toggled += (e) => {
                try {
                    smartView.Border.Effect3D   = effect3DOffsetX.Enabled =
                        effect3DOffsetY.Enabled = cbEffect3D.Checked;
                } catch { }
            };

            Win.Add(new Label("Background:")
            {
                Y = 5
            });

            var colorEnum    = Enum.GetValues(typeof(Color)).Cast <Color> ().ToList();
            var rbBackground = new RadioGroup(colorEnum.Select(
                                                  e => NStack.ustring.Make(e.ToString())).ToArray())
            {
                X            = 2,
                Y            = 6,
                SelectedItem = (int)smartView.Border.Background
            };

            rbBackground.SelectedItemChanged += (e) => {
                smartView.Border.Background = (Color)e.SelectedItem;
            };
            Win.Add(rbBackground);

            Win.Add(new Label("BorderBrush:")
            {
                X = Pos.AnchorEnd(20),
                Y = 5
            });

            var rbBorderBrush = new RadioGroup(colorEnum.Select(
                                                   e => NStack.ustring.Make(e.ToString())).ToArray())
            {
                X            = Pos.AnchorEnd(18),
                Y            = 6,
                SelectedItem = (int)smartView.Border.BorderBrush
            };

            rbBorderBrush.SelectedItemChanged += (e) => {
                smartView.Border.BorderBrush = (Color)e.SelectedItem;
            };
            Win.Add(rbBorderBrush);

            Win.Add(smartView);
        }