public override void InvokeUndo(InternalTextLayerController textLayer) { textLayer.CurrentLineNumber = _startLineNumber; textLayer.TryMoveCaretTo(_startCharIndex); textLayer.StartSelect(); textLayer.CurrentLineNumber = _endLineNumber; textLayer.TryMoveCaretTo(_endCharIndex); textLayer.EndSelect(); }
public bool CanAcceptThisChar(char c) { //TODO: review here, enable this feature or not //some char can't be a start char on blank line if (CurrentLine.IsBlankLine && !InternalTextLayerController.CanCaretStopOnThisChar(c)) { return(false); } return(true); }
public override void InvokeRedo(InternalTextLayerController textLayer) { textLayer.CurrentLineNumber = _startLineNumber; textLayer.TryMoveCaretTo(_startCharIndex); if (_singleInsertTextRun != null) { textLayer.AddTextRunToCurrentLine(_singleInsertTextRun); } else { textLayer.AddTextRunsToCurrentLine(_insertingTextRuns); } }
public void AddCharacter(char c) { if (CurrentLine.IsBlankLine) { //TODO: review here, enable this feature or not //some char can't be a start char on blank line if (!InternalTextLayerController.CanCaretStopOnThisChar(c)) { return; } // //1. new EditableRun t = new EditableTextRun(this.RootGfx, c, this.CurrentSpanStyle); var owner = this.FlowLayer.OwnerRenderElement; CurrentLine.AddLast(t); SetCurrentTextRun(t); } else { EditableRun cRun = CurrentTextRun; if (cRun != null) { if (cRun.IsInsertable) { cRun.InsertAfter(CurrentTextRunCharIndex, c); } else { AddTextSpan(new EditableTextRun(this.RootGfx, c, this.CurrentSpanStyle)); return; } } else { throw new NotSupportedException(); } } CurrentLine.TextLineReCalculateActualLineSize(); CurrentLine.RefreshInlineArrange(); SetCurrentCharStepRight(); }
public TextEditRenderBox( RootGraphic rootgfx, int width, int height, bool isMultiLine, bool isEditable = true) : base(rootgfx, width, height) { _isEditable = isEditable; if (isEditable) { GlobalCaretController.RegisterCaretBlink(rootgfx); // _myCaret = new CaretRenderElement(rootgfx, 2, 17); _myCaret.TransparentForAllEvents = true; } RenderBackground = RenderCaret = RenderSelectionRange = RenderMarkers = true; // MayHasViewport = true; BackgroundColor = Color.White;// Color.Transparent; _currentSpanStyle = new TextSpanStyle(); _currentSpanStyle.FontColor = Color.Black;//set default _currentSpanStyle.ReqFont = rootgfx.DefaultTextEditFontInfo; // _textLayer = new EditableTextFlowLayer(this); //presentation _internalTextLayerController = new InternalTextLayerController(_textLayer); //controller _isMultiLine = isMultiLine; if (isMultiLine) { _textLayer.SetUseDoubleCanvas(false, true); } else { _textLayer.SetUseDoubleCanvas(true, false); } NeedClipArea = true; IsBlockElement = false; NumOfWhitespaceForSingleTab = 4;//default?, configurable? }
public override void InvokeUndo(InternalTextLayerController textLayer) { textLayer.CurrentLineNumber = _startLineNumber; textLayer.TryMoveCaretTo(_startCharIndex); textLayer.AddCharToCurrentLine(_c); }
public override void InvokeRedo(InternalTextLayerController textLayer) { textLayer.CurrentLineNumber = _startLineNumber; textLayer.TryMoveCaretTo(_startCharIndex); textLayer.DoDelete(); }
public override void InvokeUndo(InternalTextLayerController textLayer) { textLayer.CurrentLineNumber = _startLineNumber; textLayer.DoEnd(); textLayer.DoDelete(); }
public DocumentCommandCollection(InternalTextLayerController textdomManager) { _textdom = textdomManager; }
public override void InvokeRedo(InternalTextLayerController textLayer) { }
public abstract void InvokeRedo(InternalTextLayerController textLayer);
public override void InvokeUndo(InternalTextLayerController textLayer) { textLayer.CancelSelect(); textLayer.AddTextRunsToCurrentLine(_deletedTextRuns); }