Example #1
0
 /// <summary>
 /// Cuts the selected text and puts it in the clipboard.
 /// </summary>
 public void Cut()
 {
     if (_textArea.SelectionManager.HasSomethingSelected)
     {
         if (CopyTextToClipboard(_textArea.SelectionManager.SelectedText))
         {
             if (_textArea.SelectionManager.SelectionIsReadonly)
             {
                 return;
             }
             // Remove text
             _textArea.BeginUpdate();
             _textArea.Caret.Position = _textArea.SelectionManager.Selections[0].StartPosition;
             _textArea.SelectionManager.RemoveSelectedText();
             _textArea.EndUpdate();
         }
     }
     else if (_textArea.Document.TextEditorProperties.CutCopyWholeLine)
     {
         // No text was selected, select and cut the entire line
         int         curLineNr        = _textArea.Document.GetLineNumberForOffset(_textArea.Caret.Offset);
         LineSegment lineWhereCaretIs = _textArea.Document.GetLineSegment(curLineNr);
         string      caretLineText    = _textArea.Document.GetText(lineWhereCaretIs.Offset, lineWhereCaretIs.TotalLength);
         _textArea.SelectionManager.SetSelection(_textArea.Document.OffsetToPosition(lineWhereCaretIs.Offset), _textArea.Document.OffsetToPosition(lineWhereCaretIs.Offset + lineWhereCaretIs.TotalLength));
         if (CopyTextToClipboard(caretLineText, true))
         {
             if (_textArea.SelectionManager.SelectionIsReadonly)
             {
                 return;
             }
             // remove line
             _textArea.BeginUpdate();
             _textArea.Caret.Position = _textArea.Document.OffsetToPosition(lineWhereCaretIs.Offset);
             _textArea.SelectionManager.RemoveSelectedText();
             _textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.PositionToEnd, new TextLocation(0, curLineNr)));
             _textArea.EndUpdate();
         }
     }
 }
 protected void OnDragDrop(object sender, DragEventArgs e)
 {
     if (e.Data.GetDataPresent(typeof(string)))
     {
         _textArea.BeginUpdate();
         _textArea.Document.UndoStack.StartUndoGroup();
         try
         {
             int offset = _textArea.Caret.Offset;
             if (_textArea.IsReadOnly(offset))
             {
                 // prevent dragging text into readonly section
                 return;
             }
             if (e.Data.GetDataPresent(typeof(DefaultSelection)))
             {
                 ISelection sel = (ISelection)e.Data.GetData(typeof(DefaultSelection));
                 if (sel.ContainsPosition(_textArea.Caret.Position))
                 {
                     return;
                 }
                 if (GetDragDropEffect(e) == DragDropEffects.Move)
                 {
                     if (SelectionManager.SelectionIsReadOnly(_textArea.Document, sel))
                     {
                         // prevent dragging text out of readonly section
                         return;
                     }
                     int len = sel.Length;
                     _textArea.Document.Remove(sel.Offset, len);
                     if (sel.Offset < offset)
                     {
                         offset -= len;
                     }
                 }
             }
             _textArea.SelectionManager.ClearSelection();
             InsertString(offset, (string)e.Data.GetData(typeof(string)));
             _textArea.Document.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.WholeTextArea));
         }
         finally
         {
             _textArea.Document.UndoStack.EndUndoGroup();
             _textArea.EndUpdate();
         }
     }
 }