public InternalTextEditWidget(string text, double pointSize, bool multiLine, int tabIndex, TypeFace typeFace = null) { TabIndex = tabIndex; TabStop = true; MergeTypingDuringUndo = true; internalTextWidget = new TextWidget(text, pointSize: pointSize, ellipsisIfClipped: false, textColor: _textColor, typeFace: typeFace); internalTextWidget.Selectable = false; internalTextWidget.AutoExpandBoundsToText = true; AddChild(internalTextWidget); UpdateLocalBounds(); Multiline = multiLine; FixBarPosition(DesiredXPositionOnLine.Set); var newUndoData = new TextWidgetUndoCommand(this); undoBuffer.Add(newUndoData); Cursor = Cursors.IBeam; internalTextWidget.TextChanged += new EventHandler(InternalTextWidget_TextChanged); internalTextWidget.BoundsChanged += new EventHandler(InternalTextWidget_BoundsChanged); }
public void DeleteSelection(bool createUndoMarker = true) { if (ReadOnly) { return; } if (Selecting) { if (CharIndexToInsertBefore < SelectionIndexToStartBefore) { DeleteIndexRange(CharIndexToInsertBefore, SelectionIndexToStartBefore - 1); } else { DeleteIndexRange(SelectionIndexToStartBefore, CharIndexToInsertBefore - 1); CharIndexToInsertBefore = SelectionIndexToStartBefore; } if (createUndoMarker) { var newUndoDeleteData = new TextWidgetUndoCommand(this); undoBuffer.Add(newUndoDeleteData); } Selecting = false; } }
public void ClearUndoHistory() { undoBuffer.ClearHistory(); var newUndoData = new TextWidgetUndoCommand(this); undoBuffer.Add(newUndoData); }
public void PasteFromClipboard() { if (ReadOnly) { return; } if (Clipboard.Instance.ContainsText) { if (Selecting) { DeleteSelection(false); } var stringBuilder = new StringBuilder(internalTextWidget.Text); string stringOnClipboard = Clipboard.Instance.GetText(); if (!Multiline) { stringOnClipboard = Regex.Replace(stringOnClipboard, @"\r\n?|\n", " "); } stringBuilder.Insert(CharIndexToInsertBefore, stringOnClipboard); CharIndexToInsertBefore += stringOnClipboard.Length; internalTextWidget.Text = stringBuilder.ToString(); var newUndoCommand = new TextWidgetUndoCommand(this); undoBuffer.Add(newUndoCommand); } }
private void PasteFromClipboard() { #if SILVERLIGHT throw new NotImplementedException(); #else if (Clipboard.ContainsText()) { if (Selecting) { DeleteSelection(false); } StringBuilder stringBuilder = new StringBuilder(internalTextWidget.Text); String stringOnClipboard = Clipboard.GetText(); if (!Multiline) { stringOnClipboard = Regex.Replace(stringOnClipboard, @"\r\n?|\n", " "); } stringBuilder.Insert(CharIndexToInsertBefore, stringOnClipboard); CharIndexToInsertBefore += stringOnClipboard.Length; internalTextWidget.Text = stringBuilder.ToString(); TextWidgetUndoCommand newUndoCommand = new TextWidgetUndoCommand(this); undoBuffer.Add(newUndoCommand); } #endif }
public override void OnKeyPress(KeyPressEventArgs keyPressEvent) { if (Selecting) { DeleteSelection(); Selecting = false; } StringBuilder tempString = new StringBuilder(internalTextWidget.Text); tempString.Insert(CharIndexToInsertBefore, keyPressEvent.KeyChar.ToString()); keyPressEvent.Handled = true; CharIndexToInsertBefore++; internalTextWidget.Text = tempString.ToString(); base.OnKeyPress(keyPressEvent); FixBarPosition(DesiredXPositionOnLine.Set); TextWidgetUndoCommand newUndoData = new TextWidgetUndoCommand(this); if (MergeTypingDuringUndo && charIndexToAcceptAsMerging == CharIndexToInsertBefore - 1 && keyPressEvent.KeyChar != '\n' && keyPressEvent.KeyChar != '\r') { undoBuffer.Add(newUndoData); } else { undoBuffer.Add(newUndoData); } charIndexToAcceptAsMerging = CharIndexToInsertBefore; }
public override void OnKeyPress(KeyPressEventArgs keyPressEvent) { // this must be called first to ensure we get the correct Handled state base.OnKeyPress(keyPressEvent); if (!keyPressEvent.Handled) { if (keyPressEvent.KeyChar < 32 && keyPressEvent.KeyChar != 13 && keyPressEvent.KeyChar != 9) { return; } if (ReadOnly) { return; } if (Selecting) { DeleteSelection(); Selecting = false; } var tempString = new StringBuilder(internalTextWidget.Text); if (keyPressEvent.KeyChar == '\r') { tempString.Insert(CharIndexToInsertBefore, "\n"); } else { tempString.Insert(CharIndexToInsertBefore, keyPressEvent.KeyChar.ToString()); } keyPressEvent.Handled = true; CharIndexToInsertBefore++; internalTextWidget.Text = tempString.ToString(); FixBarPosition(DesiredXPositionOnLine.Set); var newUndoData = new TextWidgetUndoCommand(this); if (MergeTypingDuringUndo && charIndexToAcceptAsMerging == CharIndexToInsertBefore - 1 && keyPressEvent.KeyChar != '\n' && keyPressEvent.KeyChar != '\r') { undoBuffer.Add(newUndoData); } else { undoBuffer.Add(newUndoData); } charIndexToAcceptAsMerging = CharIndexToInsertBefore; } }