コード例 #1
0
ファイル: TableEditor.cs プロジェクト: migueldeicaza/gui.cs
        private void SetupScrollBar()
        {
            var _scrollBar = new ScrollBarView(tableView, true);

            _scrollBar.ChangedPosition += () => {
                tableView.RowOffset = _scrollBar.Position;
                if (tableView.RowOffset != _scrollBar.Position)
                {
                    _scrollBar.Position = tableView.RowOffset;
                }
                tableView.SetNeedsDisplay();
            };

            /*
             * _scrollBar.OtherScrollBarView.ChangedPosition += () => {
             *      _listView.LeftItem = _scrollBar.OtherScrollBarView.Position;
             *      if (_listView.LeftItem != _scrollBar.OtherScrollBarView.Position) {
             *              _scrollBar.OtherScrollBarView.Position = _listView.LeftItem;
             *      }
             *      _listView.SetNeedsDisplay ();
             * };*/

            tableView.DrawContent += (e) => {
                _scrollBar.Size     = tableView.Table?.Rows?.Count ?? 0;
                _scrollBar.Position = tableView.RowOffset;
                //	_scrollBar.OtherScrollBarView.Size = _listView.Maxlength - 1;
                //	_scrollBar.OtherScrollBarView.Position = _listView.LeftItem;
                _scrollBar.Refresh();
            };
        }
コード例 #2
0
        private void SetupScrollBar()
        {
            // When using scroll bar leave the last row of the control free (for over-rendering with scroll bar)
            treeViewFiles.Style.LeaveLastRow = true;

            var _scrollBar = new ScrollBarView(treeViewFiles, true);

            _scrollBar.ChangedPosition += () => {
                treeViewFiles.ScrollOffsetVertical = _scrollBar.Position;
                if (treeViewFiles.ScrollOffsetVertical != _scrollBar.Position)
                {
                    _scrollBar.Position = treeViewFiles.ScrollOffsetVertical;
                }
                treeViewFiles.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                treeViewFiles.ScrollOffsetHorizontal = _scrollBar.OtherScrollBarView.Position;
                if (treeViewFiles.ScrollOffsetHorizontal != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = treeViewFiles.ScrollOffsetHorizontal;
                }
                treeViewFiles.SetNeedsDisplay();
            };

            treeViewFiles.DrawContent += (e) => {
                _scrollBar.Size     = treeViewFiles.ContentHeight;
                _scrollBar.Position = treeViewFiles.ScrollOffsetVertical;
                _scrollBar.OtherScrollBarView.Size     = treeViewFiles.GetContentWidth(true);
                _scrollBar.OtherScrollBarView.Position = treeViewFiles.ScrollOffsetHorizontal;
                _scrollBar.Refresh();
            };
        }
コード例 #3
0
ファイル: ScrollBarViewTests.cs プロジェクト: hong1990/gui.cs
        public void Scrolling_With_Default_Constructor_Do_Not_Scroll()
        {
            var sbv = new ScrollBarView {
                Position = 1
            };

            Assert.NotEqual(1, sbv.Position);
            Assert.Equal(0, sbv.Position);
        }
コード例 #4
0
        public Toplevel Top()
        {
            var top = new Toplevel()
            {
                X      = 0,
                Y      = 0,
                Width  = Dim.Fill(),
                Height = Dim.Fill()
            };

            var win = new Window(Name)
            {
                X      = 0,
                Y      = 0,
                Width  = Dim.Percent(90),
                Height = Dim.Percent(90)
            };

            var scroll = new ScrollView(new Rect(0, 0, 10, 10))
            {
                ColorScheme = new ColorScheme()
                {
                    Normal = new Terminal.Gui.Attribute(Color.Brown)
                }
            };

            var scroller = new ScrollBarView(new Rect(0, 0, 10, 10), 2, 4, true);

            Application.Iteration += (s, e) =>
            {
                scroll.Frame       = new Rect(0, 0, win.Frame.Width - 2, win.Frame.Height - 2);
                scroll.ContentSize = new Size(win.Frame.Width - 2, win.Frame.Height - 2);

                scroller.X    = Pos.Right(win);
                scroller.Y    = 0;
                scroll.Height = Dim.Percent(90);
            };

            List <string> data = Enumerable.Range(0, 100).Select(a => Guid.NewGuid().ToString()).ToList();

            var list = new ListView(data);

            scroll.Add(list);

            //win.Add(list);
            win.Add(scroll);

            var operations = CreateOperationsView(top, win);

            top.Add(win, operations, scroller);

            return(top);
        }
コード例 #5
0
ファイル: ScrollBarViewTests.cs プロジェクト: hong1990/gui.cs
        public void Hosting_Two_Horizontal_ScrollBarView_Throws_ArgumentException()
        {
            var top  = new Toplevel();
            var host = new View();

            top.Add(host);
            var v = new ScrollBarView(host, false);
            var h = new ScrollBarView(host, false);

            Assert.Throws <ArgumentException> (null, () => v.OtherScrollBarView = h);
            Assert.Throws <ArgumentException> (null, () => h.OtherScrollBarView = v);
        }
コード例 #6
0
        public void Internal_Tests()
        {
            var top = Application.Top;

            Assert.Equal(new Rect(0, 0, 80, 25), top.Bounds);
            var view = new View()
            {
                Width = Dim.Fill(), Height = Dim.Fill()
            };

            top.Add(view);
            var sbv = new ScrollBarView(view, true);

            top.Add(sbv);
            Assert.Equal(view, sbv.Host);
            sbv.Size     = 40;
            sbv.Position = 0;
            sbv.OtherScrollBarView.Size     = 100;
            sbv.OtherScrollBarView.Position = 0;
            // Host bounds is empty.
            Assert.False(sbv.CanScroll(10, out int max, sbv.IsVertical));
            Assert.Equal(0, max);
            Assert.False(sbv.OtherScrollBarView.CanScroll(10, out max, sbv.OtherScrollBarView.IsVertical));
            Assert.Equal(0, max);
            // They are visible but are not drawn.
            Assert.True(sbv.Visible);
            Assert.True(sbv.OtherScrollBarView.Visible);
            top.LayoutSubviews();
            // Now the host bounds is not empty.
            Assert.True(sbv.CanScroll(10, out max, sbv.IsVertical));
            Assert.Equal(10, max);
            Assert.True(sbv.OtherScrollBarView.CanScroll(10, out max, sbv.OtherScrollBarView.IsVertical));
            Assert.Equal(10, max);
            Assert.True(sbv.CanScroll(50, out max, sbv.IsVertical));
            Assert.Equal(17, max);              // 17+23=40
            Assert.True(sbv.OtherScrollBarView.CanScroll(150, out max, sbv.OtherScrollBarView.IsVertical));
            Assert.Equal(22, max);              // 22+78=100
            Assert.True(sbv.Visible);
            Assert.True(sbv.OtherScrollBarView.Visible);
            sbv.KeepContentAlwaysInViewport = false;
            sbv.OtherScrollBarView.KeepContentAlwaysInViewport = false;
            Assert.True(sbv.CanScroll(50, out max, sbv.IsVertical));
            Assert.Equal(40, max);
            Assert.True(sbv.OtherScrollBarView.CanScroll(150, out max, sbv.OtherScrollBarView.IsVertical));
            Assert.Equal(100, max);
            Assert.True(sbv.Visible);
            Assert.True(sbv.OtherScrollBarView.Visible);
        }
コード例 #7
0
ファイル: ScrollBarViewTests.cs プロジェクト: hong1990/gui.cs
        public void Hosting_A_View_To_A_ScrollBarView()
        {
            RemoveHandlers();

            _scrollBar = new ScrollBarView(_hostView, true);

            Assert.True(_scrollBar.IsVertical);
            Assert.False(_scrollBar.OtherScrollBarView.IsVertical);

            Assert.Equal(_scrollBar.Position, _hostView.Top);
            Assert.NotEqual(_scrollBar.Size, _hostView.Lines);
            Assert.Equal(_scrollBar.OtherScrollBarView.Position, _hostView.Left);
            Assert.NotEqual(_scrollBar.OtherScrollBarView.Size, _hostView.Cols);

            AddHandlers();
            _hostView.SuperView.LayoutSubviews();
            _hostView.Redraw(_hostView.Bounds);

            Assert.Equal(_scrollBar.Position, _hostView.Top);
            Assert.Equal(_scrollBar.Size, _hostView.Lines + 1);
            Assert.Equal(_scrollBar.OtherScrollBarView.Position, _hostView.Left);
            Assert.Equal(_scrollBar.OtherScrollBarView.Size, _hostView.Cols + 1);
        }
コード例 #8
0
        public void Start()
        {
            Application.UseSystemConsole = true;
            Application.Init();
            Application.MainLoop.AddIdle(OnMainLoopIdle);
            var top      = Application.Top;
            var topFrame = top.Frame;

            _logWindow = new Window("Debugger Log")
            {
                X        = 0,
                Y        = 1,
                Width    = Dim.Fill(),
                Height   = Dim.Fill() - 3,
                CanFocus = false
            };

            // _logView = new Filler(
            //     new Rect(0, 0, 200, 200)
            // );
            _textView = new LogView()
            {
                X        = 0,
                Y        = 0,
                Width    = Dim.Fill(),
                Height   = Dim.Fill(),
                CanFocus = false
            };

            _logWindow.Add(_textView);

            _scrollBar = new ScrollBarView(_textView, true);

            _scrollBar.ChangedPosition += () => {
                _textView.TopRow = _scrollBar.Position;
                if (_textView.TopRow != _scrollBar.Position)
                {
                    _scrollBar.Position = _textView.TopRow;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _textView.LeftColumn = _scrollBar.OtherScrollBarView.Position;
                if (_textView.LeftColumn != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _textView.SetNeedsDisplay();
            };

            _textView.DrawContent += (e) => {
                _scrollBar.Size     = _textView.Lines - 1;
                _scrollBar.Position = _textView.TopRow;
                _scrollBar.OtherScrollBarView.Size     = _textView.Maxlength;
                _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                _scrollBar.LayoutSubviews();
                _scrollBar.Refresh();
            };

            var commandBar = new View()
            {
                X      = 0,
                Y      = Pos.AnchorEnd(3),
                Width  = Dim.Fill(),
                Height = 2
            };

            var commandBarText = new Label("Enter debugger commands")
            {
                X      = 0,
                Y      = 0,
                Width  = Dim.Fill(),
                Height = 1
            };

            var commandLabel = new Label(">")
            {
                X      = 0,
                Y      = 1,
                Width  = 1,
                Height = 1
            };

            var commandText = new CommandField
            {
                X        = 1,
                Y        = 1,
                Width    = Dim.Fill(),
                Height   = 1,
                CanFocus = true,
                TabIndex = 0,
            };

            commandText.CommandEntered += (s, e) => {
                _parser?.Parse(e);
                commandBar.SetFocus();
            };

            commandBar.Add(commandBarText, commandLabel, commandText);

            _menuBar = new MenuBar(
                new MenuBarItem[] {
                new MenuBarItem("_File", new MenuItem [] {
                    new MenuItem("_Save", "Save program", SaveFile),
                    new MenuItem("_Open", "Open program", OpenFile),
                    new MenuItem("_Quit", "", () => { if (Quit())
                                                      {
                                                          top.Running = false;
                                                      }
                                 })
                }),
                new MenuBarItem("_Debug", new MenuItem [] {
                    new MenuItem("_Continue", "", null),
                    new MenuItem("_Pause", "", null),
                    new MenuItem("_Step", "", null)
                })
            });


            _statusBar = new StatusBar()
            {
                ColorScheme = Colors.TopLevel,
                Visible     = true,
                Items       = new StatusItem[] {
                    _runMode,
                    _A,
                    _X,
                    _Y,
                    _PC,
                    _SP,
                    _C,
                    _Z,
                    _I,
                    _D,
                    _B,
                    _B2,
                    _V,
                    _N
                }
            };

            top.Add(_logWindow);
            top.Add(commandBar);
            top.Add(_menuBar);
            top.Add(_statusBar);

            Application.Run();

            commandBar.SetFocus();
        }
コード例 #9
0
ファイル: Editor.cs プロジェクト: dirkbretthauer/gui.cs
        public override void Init(Toplevel top, ColorScheme colorScheme)
        {
            Application.Init();
            Top = top;
            if (Top == null)
            {
                Top = Application.Top;
            }

            Win = new Window(_fileName ?? "Untitled")
            {
                X           = 0,
                Y           = 1,
                Width       = Dim.Fill(),
                Height      = Dim.Fill(),
                ColorScheme = colorScheme,
            };
            Top.Add(Win);

            _textView = new TextView()
            {
                X            = 0,
                Y            = 0,
                Width        = Dim.Fill(),
                Height       = Dim.Fill(),
                BottomOffset = 1,
                RightOffset  = 1
            };

            CreateDemoFile(_fileName);

            LoadFile();

            Win.Add(_textView);

            var menu = new MenuBar(new MenuBarItem [] {
                new MenuBarItem("_File", new MenuItem [] {
                    new MenuItem("_New", "", () => New()),
                    new MenuItem("_Open", "", () => Open()),
                    new MenuItem("_Save", "", () => Save()),
                    new MenuItem("_Save As", "", () => SaveAs()),
                    new MenuItem("_Close", "", () => CloseFile()),
                    null,
                    new MenuItem("_Quit", "", () => Quit()),
                }),
                new MenuBarItem("_Edit", new MenuItem [] {
                    new MenuItem("_Copy", "", () => Copy(), null, null, Key.CtrlMask | Key.C),
                    new MenuItem("C_ut", "", () => Cut(), null, null, Key.CtrlMask | Key.W),
                    new MenuItem("_Paste", "", () => Paste(), null, null, Key.CtrlMask | Key.Y),
                    null,
                    new MenuItem("_Find", "", () => Find(), null, null, Key.CtrlMask | Key.S),
                    new MenuItem("Find _Next", "", () => FindNext(), null, null, Key.CtrlMask | Key.ShiftMask | Key.S),
                    new MenuItem("Find P_revious", "", () => FindPrevious(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.S),
                    new MenuItem("_Replace", "", () => Replace(), null, null, Key.CtrlMask | Key.R),
                    new MenuItem("Replace Ne_xt", "", () => ReplaceNext(), null, null, Key.CtrlMask | Key.ShiftMask | Key.R),
                    new MenuItem("Replace Pre_vious", "", () => ReplacePrevious(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.R),
                    new MenuItem("Replace _All", "", () => ReplaceAll(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.A),
                    null,
                    new MenuItem("_Select All", "", () => SelectAll(), null, null, Key.CtrlMask | Key.T)
                }),
                new MenuBarItem("_ScrollBarView", CreateKeepChecked()),
                new MenuBarItem("_Cursor", new MenuItem [] {
                    new MenuItem("_Invisible", "", () => SetCursor(CursorVisibility.Invisible)),
                    new MenuItem("_Box", "", () => SetCursor(CursorVisibility.Box)),
                    new MenuItem("_Underline", "", () => SetCursor(CursorVisibility.Underline)),
                    new MenuItem("", "", () => {}, () => { return(false); }),
                    new MenuItem("xTerm :", "", () => {}, () => { return(false); }),
                    new MenuItem("", "", () => {}, () => { return(false); }),
                    new MenuItem("  _Default", "", () => SetCursor(CursorVisibility.Default)),
                    new MenuItem("  _Vertical", "", () => SetCursor(CursorVisibility.Vertical)),
                    new MenuItem("  V_ertical Fix", "", () => SetCursor(CursorVisibility.VerticalFix)),
                    new MenuItem("  B_ox Fix", "", () => SetCursor(CursorVisibility.BoxFix)),
                    new MenuItem("  U_nderline Fix", "", () => SetCursor(CursorVisibility.UnderlineFix))
                }),
                new MenuBarItem("Forma_t", new MenuItem [] {
                    CreateWrapChecked(),
                    CreateAutocomplete(),
                    CreateAllowsTabChecked()
                }),
                new MenuBarItem("_Responder", new MenuItem [] {
                    CreateCanFocusChecked(),
                    CreateEnabledChecked(),
                    CreateVisibleChecked()
                }),
            });

            Top.Add(menu);

            var statusBar = new StatusBar(new StatusItem [] {
                new StatusItem(Key.F2, "~F2~ Open", () => Open()),
                new StatusItem(Key.F3, "~F3~ Save", () => Save()),
                new StatusItem(Key.F4, "~F4~ Save As", () => SaveAs()),
                new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
                new StatusItem(Key.Null, $"OS Clipboard IsSupported : {Clipboard.IsSupported}", null)
            });

            Top.Add(statusBar);

            _scrollBar = new ScrollBarView(_textView, true);

            _scrollBar.ChangedPosition += () => {
                _textView.TopRow = _scrollBar.Position;
                if (_textView.TopRow != _scrollBar.Position)
                {
                    _scrollBar.Position = _textView.TopRow;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _textView.LeftColumn = _scrollBar.OtherScrollBarView.Position;
                if (_textView.LeftColumn != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.VisibleChanged += () => {
                if (_scrollBar.Visible && _textView.RightOffset == 0)
                {
                    _textView.RightOffset = 1;
                }
                else if (!_scrollBar.Visible && _textView.RightOffset == 1)
                {
                    _textView.RightOffset = 0;
                }
            };

            _scrollBar.OtherScrollBarView.VisibleChanged += () => {
                if (_scrollBar.OtherScrollBarView.Visible && _textView.BottomOffset == 0)
                {
                    _textView.BottomOffset = 1;
                }
                else if (!_scrollBar.OtherScrollBarView.Visible && _textView.BottomOffset == 1)
                {
                    _textView.BottomOffset = 0;
                }
            };

            _textView.DrawContent += (e) => {
                _scrollBar.Size     = _textView.Lines;
                _scrollBar.Position = _textView.TopRow;
                if (_scrollBar.OtherScrollBarView != null)
                {
                    _scrollBar.OtherScrollBarView.Size     = _textView.Maxlength;
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _scrollBar.LayoutSubviews();
                _scrollBar.Refresh();
            };

            Win.KeyPress += (e) => {
                if (winDialog != null && (e.KeyEvent.Key == Key.Esc ||
                                          e.KeyEvent.Key == (Key.Q | Key.CtrlMask)))
                {
                    DisposeWinDialog();
                }
                else if (e.KeyEvent.Key == (Key.Q | Key.CtrlMask))
                {
                    Quit();
                    e.Handled = true;
                }
            };
        }
コード例 #10
0
ファイル: Editor.cs プロジェクト: xksoft/gui.cs
        public override void Init(Toplevel top, ColorScheme colorScheme)
        {
            Application.Init();
            Top = top;
            if (Top == null)
            {
                Top = Application.Top;
            }

            var menu = new MenuBar(new MenuBarItem [] {
                new MenuBarItem("_File", new MenuItem [] {
                    new MenuItem("_New", "", () => New()),
                    new MenuItem("_Open", "", () => Open()),
                    new MenuItem("_Save", "", () => Save()),
                    null,
                    new MenuItem("_Quit", "", () => Quit()),
                }),
                new MenuBarItem("_Edit", new MenuItem [] {
                    new MenuItem("_Copy", "", () => Copy()),
                    new MenuItem("C_ut", "", () => Cut()),
                    new MenuItem("_Paste", "", () => Paste())
                }),
                new MenuBarItem("_ScrollBarView", CreateKeepChecked())
            });

            Top.Add(menu);

            var statusBar = new StatusBar(new StatusItem [] {
                new StatusItem(Key.F2, "~F2~ Open", () => Open()),
                new StatusItem(Key.F3, "~F3~ Save", () => Save()),
                new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
            });

            Top.Add(statusBar);

            CreateDemoFile(_fileName);

            Win = new Window(_fileName ?? "Untitled")
            {
                X           = 0,
                Y           = 1,
                Width       = Dim.Fill(),
                Height      = Dim.Fill(),
                ColorScheme = colorScheme,
            };
            Top.Add(Win);

            _textView = new TextView()
            {
                X      = 0,
                Y      = 0,
                Width  = Dim.Fill(),
                Height = Dim.Fill(),
            };

            LoadFile();

            Win.Add(_textView);

            _scrollBar = new ScrollBarView(_textView, true);

            _scrollBar.ChangedPosition += () => {
                _textView.TopRow = _scrollBar.Position;
                if (_textView.TopRow != _scrollBar.Position)
                {
                    _scrollBar.Position = _textView.TopRow;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _textView.LeftColumn = _scrollBar.OtherScrollBarView.Position;
                if (_textView.LeftColumn != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _textView.SetNeedsDisplay();
            };

            _textView.DrawContent += (e) => {
                _scrollBar.Size     = _textView.Lines - 1;
                _scrollBar.Position = _textView.TopRow;
                _scrollBar.OtherScrollBarView.Size     = _textView.Maxlength;
                _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                _scrollBar.LayoutSubviews();
                _scrollBar.Refresh();
            };
        }
コード例 #11
0
        public override void Setup()
        {
            _customRenderCB = new CheckBox("Render with columns")
            {
                X      = 0,
                Y      = 0,
                Height = 1,
            };
            Win.Add(_customRenderCB);
            _customRenderCB.Toggled += _customRenderCB_Toggled;

            _allowMarkingCB = new CheckBox("Allow Marking")
            {
                X      = Pos.Right(_customRenderCB) + 1,
                Y      = 0,
                Height = 1,
            };
            Win.Add(_allowMarkingCB);
            _allowMarkingCB.Toggled += AllowMarkingCB_Toggled;

            _allowMultipleCB = new CheckBox("Allow Multi-Select")
            {
                X       = Pos.Right(_allowMarkingCB) + 1,
                Y       = 0,
                Height  = 1,
                Visible = _allowMarkingCB.Checked
            };
            Win.Add(_allowMultipleCB);
            _allowMultipleCB.Toggled += AllowMultipleCB_Toggled;

            _listView = new ListView()
            {
                X      = 1,
                Y      = 2,
                Height = Dim.Fill(),
                Width  = Dim.Fill(1),
                //ColorScheme = Colors.TopLevel,
                AllowsMarking           = false,
                AllowsMultipleSelection = false
            };
            _listView.RowRender += ListView_RowRender;
            Win.Add(_listView);

            var _scrollBar = new ScrollBarView(_listView, true);

            _scrollBar.ChangedPosition += () => {
                _listView.TopItem = _scrollBar.Position;
                if (_listView.TopItem != _scrollBar.Position)
                {
                    _scrollBar.Position = _listView.TopItem;
                }
                _listView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _listView.LeftItem = _scrollBar.OtherScrollBarView.Position;
                if (_listView.LeftItem != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _listView.LeftItem;
                }
                _listView.SetNeedsDisplay();
            };

            _listView.DrawContent += (e) => {
                _scrollBar.Size     = _listView.Source.Count - 1;
                _scrollBar.Position = _listView.TopItem;
                _scrollBar.OtherScrollBarView.Size     = _listView.Maxlength - 1;
                _scrollBar.OtherScrollBarView.Position = _listView.LeftItem;
                _scrollBar.Refresh();
            };

            _listView.SetSource(_scenarios);

            var k            = "Keep Content Always In Viewport";
            var keepCheckBox = new CheckBox(k, _scrollBar.AutoHideScrollBars)
            {
                X = Pos.AnchorEnd(k.Length + 3),
                Y = 0,
            };

            keepCheckBox.Toggled += (_) => _scrollBar.KeepContentAlwaysInViewport = keepCheckBox.Checked;
            Win.Add(keepCheckBox);
        }
コード例 #12
0
        public override void Init(Toplevel top, ColorScheme colorScheme)
        {
            Application.Init();
            Top = top;
            if (Top == null)
            {
                Top = Application.Top;
            }

            Win = new Window(_fileName ?? "Untitled")
            {
                X           = 0,
                Y           = 1,
                Width       = Dim.Fill(),
                Height      = Dim.Fill(),
                ColorScheme = colorScheme,
            };
            Top.Add(Win);

            _textView = new TextView()
            {
                X            = 0,
                Y            = 0,
                Width        = Dim.Fill(),
                Height       = Dim.Fill(),
                BottomOffset = 1,
                RightOffset  = 1
            };

            CreateDemoFile(_fileName);

            LoadFile();

            Win.Add(_textView);

            var menu = new MenuBar(new MenuBarItem [] {
                new MenuBarItem("_File", new MenuItem [] {
                    new MenuItem("_New", "", () => New()),
                    new MenuItem("_Open", "", () => Open()),
                    new MenuItem("_Save", "", () => Save()),
                    new MenuItem("_Save As", "", () => SaveAs()),
                    new MenuItem("_Close", "", () => CloseFile()),
                    null,
                    new MenuItem("_Quit", "", () => Quit()),
                }),
                new MenuBarItem("_Edit", new MenuItem [] {
                    new MenuItem("_Copy", "", () => Copy(), null, null, Key.CtrlMask | Key.C),
                    new MenuItem("C_ut", "", () => Cut(), null, null, Key.CtrlMask | Key.W),
                    new MenuItem("_Paste", "", () => Paste(), null, null, Key.CtrlMask | Key.Y),
                    null,
                    new MenuItem("_Find", "", () => Find(), null, null, Key.CtrlMask | Key.S),
                    new MenuItem("Find _Next", "", () => FindNext(), null, null, Key.CtrlMask | Key.ShiftMask | Key.S),
                    new MenuItem("Find P_revious", "", () => FindPrevious(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.S),
                    new MenuItem("_Replace", "", () => Replace(), null, null, Key.CtrlMask | Key.R),
                    new MenuItem("Replace Ne_xt", "", () => ReplaceNext(), null, null, Key.CtrlMask | Key.ShiftMask | Key.R),
                    new MenuItem("Replace Pre_vious", "", () => ReplacePrevious(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.R),
                    new MenuItem("Replace _All", "", () => ReplaceAll(), null, null, Key.CtrlMask | Key.ShiftMask | Key.AltMask | Key.A),
                    null,
                    new MenuItem("_Select All", "", () => SelectAll(), null, null, Key.CtrlMask | Key.T)
                }),
                new MenuBarItem("_ScrollBarView", CreateKeepChecked()),
                new MenuBarItem("_Cursor", CreateCursorRadio()),
                new MenuBarItem("Forma_t", new MenuItem [] {
                    CreateWrapChecked(),
                    CreateAutocomplete(),
                    CreateAllowsTabChecked()
                }),
                new MenuBarItem("_Responder", new MenuItem [] {
                    CreateCanFocusChecked(),
                    CreateEnabledChecked(),
                    CreateVisibleChecked()
                }),
                new MenuBarItem("Conte_xtMenu", new MenuItem [] {
                    miForceMinimumPosToZero = new MenuItem("ForceMinimumPosTo_Zero", "", () => {
                        miForceMinimumPosToZero.Checked             = forceMinimumPosToZero = !forceMinimumPosToZero;
                        _textView.ContextMenu.ForceMinimumPosToZero = forceMinimumPosToZero;
                    })
                    {
                        CheckType = MenuItemCheckStyle.Checked, Checked = forceMinimumPosToZero
                    },
                    new MenuBarItem("_Languages", GetSupportedCultures())
                })
            });

            Top.Add(menu);

            var statusBar = new StatusBar(new StatusItem [] {
                new StatusItem(Key.F2, "~F2~ Open", () => Open()),
                new StatusItem(Key.F3, "~F3~ Save", () => Save()),
                new StatusItem(Key.F4, "~F4~ Save As", () => SaveAs()),
                new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
                new StatusItem(Key.Null, $"OS Clipboard IsSupported : {Clipboard.IsSupported}", null)
            });

            Top.Add(statusBar);

            _scrollBar = new ScrollBarView(_textView, true);

            _scrollBar.ChangedPosition += () => {
                _textView.TopRow = _scrollBar.Position;
                if (_textView.TopRow != _scrollBar.Position)
                {
                    _scrollBar.Position = _textView.TopRow;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _textView.LeftColumn = _scrollBar.OtherScrollBarView.Position;
                if (_textView.LeftColumn != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.VisibleChanged += () => {
                if (_scrollBar.Visible && _textView.RightOffset == 0)
                {
                    _textView.RightOffset = 1;
                }
                else if (!_scrollBar.Visible && _textView.RightOffset == 1)
                {
                    _textView.RightOffset = 0;
                }
            };

            _scrollBar.OtherScrollBarView.VisibleChanged += () => {
                if (_scrollBar.OtherScrollBarView.Visible && _textView.BottomOffset == 0)
                {
                    _textView.BottomOffset = 1;
                }
                else if (!_scrollBar.OtherScrollBarView.Visible && _textView.BottomOffset == 1)
                {
                    _textView.BottomOffset = 0;
                }
            };

            _textView.DrawContent += (e) => {
                _scrollBar.Size     = _textView.Lines;
                _scrollBar.Position = _textView.TopRow;
                if (_scrollBar.OtherScrollBarView != null)
                {
                    _scrollBar.OtherScrollBarView.Size     = _textView.Maxlength;
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _scrollBar.LayoutSubviews();
                _scrollBar.Refresh();
            };

            Win.KeyPress += (e) => {
                var keys = ShortcutHelper.GetModifiersKey(e.KeyEvent);
                if (winDialog != null && (e.KeyEvent.Key == Key.Esc ||
                                          e.KeyEvent.Key == (Key.Q | Key.CtrlMask)))
                {
                    DisposeWinDialog();
                }
                else if (e.KeyEvent.Key == (Key.Q | Key.CtrlMask))
                {
                    Quit();
                    e.Handled = true;
                }
                else if (winDialog != null && keys == (Key.Tab | Key.CtrlMask))
                {
                    if (_tabView.SelectedTab == _tabView.Tabs.ElementAt(_tabView.Tabs.Count - 1))
                    {
                        _tabView.SelectedTab = _tabView.Tabs.ElementAt(0);
                    }
                    else
                    {
                        _tabView.SwitchTabBy(1);
                    }
                    e.Handled = true;
                }
                else if (winDialog != null && keys == (Key.Tab | Key.CtrlMask | Key.ShiftMask))
                {
                    if (_tabView.SelectedTab == _tabView.Tabs.ElementAt(0))
                    {
                        _tabView.SelectedTab = _tabView.Tabs.ElementAt(_tabView.Tabs.Count - 1);
                    }
                    else
                    {
                        _tabView.SwitchTabBy(-1);
                    }
                    e.Handled = true;
                }
            };

            Top.Closed += (_) => Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
        }
コード例 #13
0
ファイル: Editor.cs プロジェクト: inamvar/gui.cs
        public override void Init(Toplevel top, ColorScheme colorScheme)
        {
            Application.Init();
            Top = top;
            if (Top == null)
            {
                Top = Application.Top;
            }

            var menu = new MenuBar(new MenuBarItem [] {
                new MenuBarItem("_File", new MenuItem [] {
                    new MenuItem("_New", "", () => New()),
                    new MenuItem("_Open", "", () => Open()),
                    new MenuItem("_Save", "", () => Save()),
                    new MenuItem("_Save As", "", () => SaveAs()),
                    null,
                    new MenuItem("_Quit", "", () => Quit()),
                }),
                new MenuBarItem("_Edit", new MenuItem [] {
                    new MenuItem("_Copy", "", () => Copy(), null, null, Key.CtrlMask | Key.C),
                    new MenuItem("C_ut", "", () => Cut(), null, null, Key.CtrlMask | Key.W),
                    new MenuItem("_Paste", "", () => Paste(), null, null, Key.CtrlMask | Key.Y)
                }),
                new MenuBarItem("_ScrollBarView", CreateKeepChecked()),
                new MenuBarItem("_Cursor", new MenuItem [] {
                    new MenuItem("_Invisible", "", () => SetCursor(CursorVisibility.Invisible)),
                    new MenuItem("_Box", "", () => SetCursor(CursorVisibility.Box)),
                    new MenuItem("_Underline", "", () => SetCursor(CursorVisibility.Underline)),
                    new MenuItem("", "", () => {}, () => { return(false); }),
                    new MenuItem("xTerm :", "", () => {}, () => { return(false); }),
                    new MenuItem("", "", () => {}, () => { return(false); }),
                    new MenuItem("  _Default", "", () => SetCursor(CursorVisibility.Default)),
                    new MenuItem("  _Vertical", "", () => SetCursor(CursorVisibility.Vertical)),
                    new MenuItem("  V_ertical Fix", "", () => SetCursor(CursorVisibility.VerticalFix)),
                    new MenuItem("  B_ox Fix", "", () => SetCursor(CursorVisibility.BoxFix)),
                    new MenuItem("  U_nderline Fix", "", () => SetCursor(CursorVisibility.UnderlineFix))
                }),
                new MenuBarItem("Forma_t", CreateWrapChecked())
            });

            Top.Add(menu);

            var statusBar = new StatusBar(new StatusItem [] {
                new StatusItem(Key.F2, "~F2~ Open", () => Open()),
                new StatusItem(Key.F3, "~F3~ Save", () => Save()),
                new StatusItem(Key.CtrlMask | Key.Q, "~^Q~ Quit", () => Quit()),
            });

            Top.Add(statusBar);

            CreateDemoFile(_fileName);

            Win = new Window(_fileName ?? "Untitled")
            {
                X           = 0,
                Y           = 1,
                Width       = Dim.Fill(),
                Height      = Dim.Fill(),
                ColorScheme = colorScheme,
            };
            Top.Add(Win);

            _textView = new TextView()
            {
                X            = 0,
                Y            = 0,
                Width        = Dim.Fill(),
                Height       = Dim.Fill(),
                BottomOffset = 1,
                RightOffset  = 1
            };

            LoadFile();

            Win.Add(_textView);

            _scrollBar = new ScrollBarView(_textView, true);

            _scrollBar.ChangedPosition += () => {
                _textView.TopRow = _scrollBar.Position;
                if (_textView.TopRow != _scrollBar.Position)
                {
                    _scrollBar.Position = _textView.TopRow;
                }
                _textView.SetNeedsDisplay();
            };

            _scrollBar.OtherScrollBarView.ChangedPosition += () => {
                _textView.LeftColumn = _scrollBar.OtherScrollBarView.Position;
                if (_textView.LeftColumn != _scrollBar.OtherScrollBarView.Position)
                {
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _textView.SetNeedsDisplay();
            };

            _textView.DrawContent += (e) => {
                _scrollBar.Size     = _textView.Lines;
                _scrollBar.Position = _textView.TopRow;
                if (_scrollBar.OtherScrollBarView != null)
                {
                    _scrollBar.OtherScrollBarView.Size     = _textView.Maxlength;
                    _scrollBar.OtherScrollBarView.Position = _textView.LeftColumn;
                }
                _scrollBar.LayoutSubviews();
                _scrollBar.Refresh();
            };
        }
コード例 #14
0
        public void Constructor_ShowBothScrollIndicator_False_And_IsVertical_False_Refresh_Does_Not_Throws_An_Object_Null_Exception()
        {
            var exception = Record.Exception(() => {
                Application.Init(new FakeDriver(), new FakeMainLoop(() => FakeConsole.ReadKey(true)));

                var top = Application.Top;

                var win = new Window()
                {
                    X      = 0,
                    Y      = 0,
                    Width  = Dim.Fill(),
                    Height = Dim.Fill()
                };

                List <string> source = new List <string> ();

                for (int i = 0; i < 50; i++)
                {
                    var text = $"item {i} - ";
                    for (int j = 0; j < 160; j++)
                    {
                        var col = j.ToString();
                        text   += col.Length == 1 ? col [0] : col [1];
                    }
                    source.Add(text);
                }

                var listView = new ListView(source)
                {
                    X      = 0,
                    Y      = 0,
                    Width  = Dim.Fill(),
                    Height = Dim.Fill()
                };
                win.Add(listView);

                var newScrollBarView = new ScrollBarView(listView, false, false)
                {
                    KeepContentAlwaysInViewport = true
                };
                win.Add(newScrollBarView);

                newScrollBarView.ChangedPosition += () => {
                    listView.LeftItem = newScrollBarView.Position;
                    if (listView.LeftItem != newScrollBarView.Position)
                    {
                        newScrollBarView.Position = listView.LeftItem;
                    }
                    Assert.Equal(newScrollBarView.Position, listView.LeftItem);
                    listView.SetNeedsDisplay();
                };

                listView.DrawContent += (e) => {
                    newScrollBarView.Size = listView.Maxlength - 1;
                    Assert.Equal(newScrollBarView.Size, listView.Maxlength);
                    newScrollBarView.Position = listView.LeftItem;
                    Assert.Equal(newScrollBarView.Position, listView.LeftItem);
                    newScrollBarView.Refresh();
                };

                top.Ready += () => {
                    newScrollBarView.Position = 100;
                    Assert.Equal(newScrollBarView.Position, newScrollBarView.Size - listView.LeftItem + (listView.LeftItem - listView.Bounds.Width));
                    Assert.Equal(newScrollBarView.Position, listView.LeftItem);
                    Assert.Equal(92, newScrollBarView.Position);
                    Assert.Equal(92, listView.LeftItem);
                    Application.RequestStop();
                };

                top.Add(win);

                Application.Run();

                Application.Shutdown();
            });

            Assert.Null(exception);
        }