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);
            }
        }
Beispiel #5
0
        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
        }
Beispiel #6
0
        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;
            }
        }