Exemple #1
0
        private void pasteFromClipboard()
        {
            string text;

            try
            {
                text = Clipboard.GetText();
            }
            catch (ExternalException)
            {
                return;
            }

            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            var preProcessedText = removeExtraWhitespaces(text);

            var source = getSearchInputState();
            var token  = new MtgTolerantTokenizer(source.Text).GetTokenForArbitraryInsertion(source.Caret);

            pasteText(preProcessedText, TokenType.None, source, token, positionCaretToNextValue: false);
        }
        private TolerantTokenizer tokenize(string queryStr)
        {
            Log.Debug(queryStr);

            var parser = new MtgTolerantTokenizer(queryStr);

            parser.Parse();

            if (parser.SyntaxErrors.Count > 0)
            {
                Log.Debug("Errors:");
            }

            foreach (string error in parser.SyntaxErrors)
            {
                Log.Debug(error);
            }

            Log.Debug("Tokens:");

            foreach (var token in parser.Tokens)
            {
                Log.Debug(token);
            }

            return(parser);
        }
Exemple #3
0
        public void Any_field_is_recognized_as_field(string query, string caretIndicator)
        {
            int caret = caretIndicator.IndexOf("^", Str.Comparison);
            var token = new MtgTolerantTokenizer(query).GetEditedToken(caret);

            Assert.That(token, Is.Not.Null);
            Assert.That(token.ParentField, Is.EqualTo("*"));
            Assert.That(token.Type.IsAny(TokenType.FieldValue), Is.True);
        }
        public void Highlight()
        {
            if (Runtime.IsMono)
            {
                return;
            }

            var start = _findEditor.SelectionStart;
            var len   = _findEditor.SelectionLength;

            var tokenizer = new MtgTolerantTokenizer(_findEditor.Text);

            tokenizer.Parse();

            _findEditor.BeginUpdate();

            try
            {
                setColor(0, _findEditor.TextLength, SystemColors.WindowText);

                foreach (var token in tokenizer.Tokens)
                {
                    if (token.Type.IsAny(TokenType.FieldValue))
                    {
                        setColor(token.Position, token.Value.Length, null);
                    }
                    else if (token.Type.IsAny(TokenType.Field | TokenType.Colon))
                    {
                        setColor(token.Position, token.Value.Length,
                                 SystemColors.HotTrack.TransformHsv(h: _ =>
                                                                    _ + Color.RoyalBlue.RotationTo(Color.DarkCyan)));
                    }
                    else if (token.Type.IsAny(TokenType.RegexBody))
                    {
                        setColor(token.Position, token.Value.Length,
                                 SystemColors.HotTrack.TransformHsv(h: _ =>
                                                                    _ + Color.RoyalBlue.RotationTo(Color.DarkRed)));
                    }
                    else
                    {
                        setColor(token.Position, token.Value.Length, SystemColors.Highlight);
                    }
                }

                _findEditor.SelectionStart  = start;
                _findEditor.SelectionLength = len;
            }
            finally
            {
                _findEditor.EndUpdate();
            }
        }
        public void Highlight()
        {
            bool hasFocus = _findEditor.Focused;

            HighlightingInProgress = true;

            _findEditor.Parent.SuspendLayout();
            _findEditor.Visible = false;

            var start = _findEditor.SelectionStart;
            var len   = _findEditor.SelectionLength;

            var tokenizer = new MtgTolerantTokenizer(_findEditor.Text);

            tokenizer.Parse();

            setColor(0, _findEditor.TextLength, Color.Black, false);

            foreach (var token in tokenizer.Tokens)
            {
                if (token.Type.IsAny(TokenType.FieldValue))
                {
                    setColor(token.Position, token.Value.Length, null, true);
                }
                else if (token.Type.IsAny(TokenType.Field | TokenType.Colon))
                {
                    setColor(token.Position, token.Value.Length, Color.Teal, false);
                }
                else if (token.Type.IsAny(TokenType.RegexBody))
                {
                    setColor(token.Position, token.Value.Length, Color.DarkRed, false);
                }
                else
                {
                    setColor(token.Position, token.Value.Length, Color.MediumBlue, false);
                }
            }

            _findEditor.SelectionStart  = start;
            _findEditor.SelectionLength = len;

            _findEditor.Visible = true;
            _findEditor.Parent.ResumeLayout(false);

            if (hasFocus)
            {
                _findEditor.Focus();
            }

            HighlightingInProgress = false;
        }
Exemple #6
0
        public void Highlight()
        {
            bool hasFocus = _findEditor.Focused;

            _findEditor.Parent.SuspendLayout();
            _findEditor.Visible = false;

            var start = _findEditor.SelectionStart;
            var len   = _findEditor.SelectionLength;

            var tokenizer = new MtgTolerantTokenizer(_findEditor.Text);

            tokenizer.Parse();

            setColor(0, _findEditor.TextLength, SystemColors.WindowText);

            foreach (var token in tokenizer.Tokens)
            {
                if (token.Type.IsAny(TokenType.FieldValue))
                {
                    setColor(token.Position, token.Value.Length, null);
                }
                else if (token.Type.IsAny(TokenType.Field | TokenType.Colon))
                {
                    setColor(token.Position, token.Value.Length, SystemColors.HotTrack.TransformHsv(h: _ => _ + Color.RoyalBlue.RotationTo(Color.DarkCyan)));
                }
                else if (token.Type.IsAny(TokenType.RegexBody))
                {
                    setColor(token.Position, token.Value.Length, SystemColors.HotTrack.TransformHsv(h: _ => _ + Color.RoyalBlue.RotationTo(Color.DarkRed)));
                }
                else
                {
                    setColor(token.Position, token.Value.Length, SystemColors.Highlight);
                }
            }

            _findEditor.SelectionStart  = start;
            _findEditor.SelectionLength = len;

            _findEditor.Visible = true;
            _findEditor.Parent.ResumeLayout(false);

            if (hasFocus)
            {
                _findEditor.Focus();
            }
        }
Exemple #7
0
        private void gridSearchClicked(object view, SearchArgs searchArgs)
        {
            var query  = GetFieldValueQuery(searchArgs.FieldName, searchArgs.FieldValue, searchArgs.UseAndOperator);
            var source = getSearchInputState();

            int queryStartIndex = source.Text.IndexOf(query, Str.Comparison);

            if (queryStartIndex >= 0)
            {
                removeQueryFromInput(queryStartIndex, query, source);
            }
            else
            {
                var token = new MtgTolerantTokenizer(source.Text).GetTokenForTermInsertion(source.Caret);
                pasteText(query, TokenType.None, source, token, positionCaretToNextValue: true);
            }

            Apply();
        }
Exemple #8
0
        private void gridSearchClicked(object view, SearchArgs searchArgs)
        {
            string query             = GetFieldValueQuery(searchArgs.FieldName, searchArgs.FieldValue);
            var    preProcessedQuery = removeExtraWhitespaces(query);
            var    source            = getSearchInputState();

            int queryStartIndex = source.Text.IndexOf(preProcessedQuery, Str.Comparison);

            if (queryStartIndex >= 0)
            {
                removeQueryFromInput(queryStartIndex, preProcessedQuery, source);
            }
            else
            {
                var token = new MtgTolerantTokenizer(source.Text).GetTokenForTermInsertion(source.Caret);
                pasteText(preProcessedQuery, TokenType.Field, source, token, positionCaretToNextValue: true);
            }

            Apply();
        }