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); }
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; }
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(); } }
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(); }
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(); }