Ejemplo n.º 1
0
        public TextEditorViewModel(ITextDocument document, ISourceFile file) : base(file)
        {
            _lastLineNumber = -1;
            _visualFontSize = _fontSize = 14;
            _zoomLevel      = 1;

            if (_studio != null)
            {
                ZoomLevel = _studio.GlobalZoomLevel;
            }

            _document = document;

            _inputHelpers = new List <ITextEditorInputHelper>();

            _inputHelpers.Add(new DefaultIndentationInputHelper());

            this.WhenAnyValue(x => x.Line).Subscribe(lineNumber =>
            {
                if (lineNumber != _lastLineNumber && lineNumber > 0)
                {
                    var line = Document.Lines[Line];

                    var text = Document.GetText(line);

                    if (string.IsNullOrWhiteSpace(text))
                    {
                        foreach (var helper in InputHelpers)
                        {
                            helper.CaretMovedToEmptyLine(this);
                        }
                    }

                    _lastLineNumber = lineNumber;
                }
            });

            this.WhenAnyValue(x => x.Offset).ObserveOn(RxApp.MainThreadScheduler).Subscribe(x =>
            {
                _statusBar?.SetTextPosition(Offset, Line, Column);
            });

            _statusBar = IoC.Get <IStatusBar>();
        }