private void txtFind_TextChanged(object sender, EventArgs e)
        {
            txtFind.BackColor = SystemColors.Window;
            if (txtFind.Text == string.Empty)
            {
                return;
            }
            if (_scintilla == null)
            {
                return;
            }

            int pos = Math.Min(_scintilla.CurrentPosition, _scintilla.AnchorPosition);

            ScintillaNET_FindReplaceDialog.CharacterRange r = _findReplace.Find(pos, _scintilla.TextLength, txtFind.Text, _findReplace.Window.GetSearchFlags());
            if (r.cpMin == r.cpMax)
            {
                r = _findReplace.Find(0, pos, txtFind.Text, _findReplace.Window.GetSearchFlags());
            }

            if (r.cpMin != r.cpMax)
            {
                _scintilla.SetSel(r.cpMin, r.cpMax);
            }
            else
            {
                txtFind.BackColor = Color.Tomato;
            }

            MoveFormAwayFromSelection();
        }
        private void findPrevious()
        {
            if (txtFind.Text == string.Empty)
            {
                return;
            }
            if (_scintilla == null)
            {
                return;
            }

            ScintillaNET_FindReplaceDialog.CharacterRange r = _findReplace.FindPrevious(txtFind.Text, true, _findReplace.Window.GetSearchFlags());
            if (r.cpMin != r.cpMax)
            {
                _scintilla.SetSel(r.cpMin, r.cpMax);
            }

            MoveFormAwayFromSelection();
        }
Пример #3
0
        public CharacterRange FindPrevious(string searchString, bool wrap, SearchFlags flags, CharacterRange searchRange)
        {
            int caret = _scintilla.CurrentPosition;

            if (!(caret >= searchRange.cpMin && caret <= searchRange.cpMax))
            {
                return(Find(searchRange.cpMax, searchRange.cpMin, searchString, flags));
            }

            int anchor = _scintilla.AnchorPosition;

            if (!(anchor >= searchRange.cpMin && anchor <= searchRange.cpMax))
            {
                anchor = caret;
            }

            CharacterRange r = Find(anchor, searchRange.cpMin, searchString, flags);

            if (r.cpMin != r.cpMax)
            {
                return(r);
            }
            else if (wrap)
            {
                return(Find(searchRange.cpMax, anchor, searchString, flags));
            }
            else
            {
                return(new CharacterRange());
            }
        }
Пример #4
0
 public List <CharacterRange> FindAll(CharacterRange rangeToSearch, string searchString, SearchFlags flags, bool Mark, bool Highlight)
 {
     return(FindAll(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, _flags, Mark, Highlight));
 }
Пример #5
0
        public CharacterRange FindNext(string searchString, bool wrap, SearchFlags flags, CharacterRange searchRange)
        {
            int caret = _scintilla.CurrentPosition;

            if (!(caret >= searchRange.cpMin && caret <= searchRange.cpMax))
            {
                return(Find(searchRange.cpMin, searchRange.cpMax, searchString, flags));
            }

            CharacterRange r = Find(caret, searchRange.cpMax, searchString, flags);

            if (r.cpMin != r.cpMax)
            {
                return(r);
            }
            else if (wrap)
            {
                return(Find(searchRange.cpMin, caret, searchString, flags));
            }
            else
            {
                return(new CharacterRange());
            }
        }
Пример #6
0
 public CharacterRange Find(CharacterRange r, Regex findExpression)
 {
     return(Find(r, findExpression, false));
 }
Пример #7
0
 public CharacterRange Find(CharacterRange rangeToSearch, string searchString, SearchFlags searchflags)
 {
     return(Find(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, searchflags));
 }
Пример #8
0
        private void btnReplaceAll_Click(object sender, EventArgs e)
        {
            if (txtFindR.Text == string.Empty)
            {
                return;
            }

            AddReplaceMru();
            lblStatus.Text = string.Empty;
            int foundCount = 0;

            #region RegEx

            if (rdoRegexR.Checked)
            {
                Regex rr = null;
                try
                {
                    rr = new Regex(txtFindR.Text, GetRegexOptions());
                }
                catch (ArgumentException ex)
                {
                    lblStatus.Text = "Error in Regular Expression: " + ex.Message;
                    return;
                }

                if (chkSearchSelectionR.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    foundCount = FindReplace.ReplaceAll(_searchRange, rr, txtReplace.Text, false, false);
                }
                else
                {
                    _searchRange = new CharacterRange();
                    foundCount   = FindReplace.ReplaceAll(rr, txtReplace.Text, false, false);
                }
            }

            #endregion

            #region Non-RegEx

            if (!rdoRegexR.Checked)
            {
                if (chkSearchSelectionR.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    string textToFind    = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                    string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text;
                    foundCount = FindReplace.ReplaceAll(_searchRange, textToFind, textToReplace, GetSearchFlags(), false, false);
                }
                else
                {
                    _searchRange = new CharacterRange();
                    string textToFind    = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                    string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text;
                    foundCount = FindReplace.ReplaceAll(textToFind, textToReplace, GetSearchFlags(), false, false);
                }
            }

            #endregion

            lblStatus.Text = "Total Replaced: " + foundCount.ToString();
        }
Пример #9
0
        private void btnFindAll_Click(object sender, EventArgs e)
        {
            if (txtFindF.Text == string.Empty)
            {
                return;
            }

            AddFindMru();

            lblStatus.Text = string.Empty;

            btnClear_Click(null, null);
            int foundCount = 0;

            #region RegEx

            if (rdoRegexF.Checked)
            {
                Regex rr = null;
                try
                {
                    rr = new Regex(txtFindF.Text, GetRegexOptions());
                }
                catch (ArgumentException ex)
                {
                    lblStatus.Text = "Error in Regular Expression: " + ex.Message;
                    return;
                }

                if (chkSearchSelectionF.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    foundCount = FindReplace.FindAll(_searchRange, rr, chkMarkLine.Checked, chkHighlightMatches.Checked).Count;
                }
                else
                {
                    _searchRange = new CharacterRange();
                    foundCount   = FindReplace.FindAll(rr, chkMarkLine.Checked, chkHighlightMatches.Checked).Count;
                }
            }

            #endregion

            #region Non-RegEx

            if (!rdoRegexF.Checked)
            {
                if (chkSearchSelectionF.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    string textToFind = rdoExtendedF.Checked ? FindReplace.Transform(txtFindF.Text) : txtFindF.Text;
                    foundCount = FindReplace.FindAll(_searchRange, textToFind, GetSearchFlags(), chkMarkLine.Checked, chkHighlightMatches.Checked).Count;
                }
                else
                {
                    _searchRange = new CharacterRange();
                    string textToFind = rdoExtendedF.Checked ? FindReplace.Transform(txtFindF.Text) : txtFindF.Text;
                    foundCount = FindReplace.FindAll(textToFind, GetSearchFlags(), chkMarkLine.Checked, chkHighlightMatches.Checked).Count;
                }
            }

            #endregion

            lblStatus.Text = "Total found: " + foundCount.ToString();
        }
Пример #10
0
        private CharacterRange ReplaceNext(bool searchUp)
        {
            Regex          rr       = null;
            CharacterRange selRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);

            //	We only do the actual replacement if the current selection exactly
            //	matches the find.
            if (selRange.cpMax - selRange.cpMin > 0)
            {
                if (rdoRegexR.Checked)
                {
                    rr = new Regex(txtFindR.Text, GetRegexOptions());
                    string selRangeText = Scintilla.GetTextRange(selRange.cpMin, selRange.cpMax - selRange.cpMin + 1);

                    if (selRange.Equals(FindReplace.Find(selRange, rr, false)))
                    {
                        //	If searching up we do the replacement using the range object.
                        //	Otherwise we use the selection object. The reason being if
                        //	we use the range the caret is positioned before the replaced
                        //	text. Conversely if we use the selection object the caret will
                        //	be positioned after the replaced text. This is very important
                        //	becuase we don't want the new text to be potentially matched
                        //	in the next search.
                        if (searchUp)
                        {
                            _scintilla.SelectionStart = selRange.cpMin;
                            _scintilla.SelectionEnd   = selRange.cpMax;
                            _scintilla.ReplaceSelection(rr.Replace(selRangeText, txtReplace.Text));
                            _scintilla.GotoPosition(selRange.cpMin);
                        }
                        else
                        {
                            Scintilla.ReplaceSelection(rr.Replace(selRangeText, txtReplace.Text));
                        }
                    }
                }
                else
                {
                    string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                    if (selRange.Equals(FindReplace.Find(selRange, textToFind, false)))
                    {
                        //	If searching up we do the replacement using the range object.
                        //	Otherwise we use the selection object. The reason being if
                        //	we use the range the caret is positioned before the replaced
                        //	text. Conversely if we use the selection object the caret will
                        //	be positioned after the replaced text. This is very important
                        //	becuase we don't want the new text to be potentially matched
                        //	in the next search.
                        if (searchUp)
                        {
                            string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text;
                            _scintilla.SelectionStart = selRange.cpMin;
                            _scintilla.SelectionEnd   = selRange.cpMax;
                            _scintilla.ReplaceSelection(textToReplace);

                            _scintilla.GotoPosition(selRange.cpMin);
                        }
                        else
                        {
                            string textToReplace = rdoExtendedR.Checked ? FindReplace.Transform(txtReplace.Text) : txtReplace.Text;
                            Scintilla.ReplaceSelection(textToReplace);
                        }
                    }
                }
            }
            return(FindNextR(searchUp, ref rr));
        }
Пример #11
0
        private CharacterRange FindNextR(bool searchUp, ref Regex rr)
        {
            CharacterRange foundRange;

            if (rdoRegexR.Checked)
            {
                if (rr == null)
                {
                    rr = new Regex(txtFindR.Text, GetRegexOptions());
                }

                if (chkSearchSelectionR.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    if (searchUp)
                    {
                        foundRange = FindReplace.FindPrevious(rr, chkWrapR.Checked, _searchRange);
                    }
                    else
                    {
                        foundRange = FindReplace.FindNext(rr, chkWrapR.Checked, _searchRange);
                    }
                }
                else
                {
                    _searchRange = new CharacterRange();
                    if (searchUp)
                    {
                        foundRange = FindReplace.FindPrevious(rr, chkWrapR.Checked);
                    }
                    else
                    {
                        foundRange = FindReplace.FindNext(rr, chkWrapR.Checked);
                    }
                }
            }
            else
            {
                if (chkSearchSelectionF.Checked)
                {
                    if (_searchRange.cpMin == _searchRange.cpMax)
                    {
                        _searchRange = new CharacterRange(_scintilla.Selections[0].Start, _scintilla.Selections[0].End);
                    }

                    if (searchUp)
                    {
                        string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                        foundRange = FindReplace.FindPrevious(textToFind, chkWrapR.Checked, GetSearchFlags(), _searchRange);
                    }
                    else
                    {
                        string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                        foundRange = FindReplace.FindNext(textToFind, chkWrapR.Checked, GetSearchFlags(), _searchRange);
                    }
                }
                else
                {
                    _searchRange = new CharacterRange();
                    if (searchUp)
                    {
                        string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                        foundRange = FindReplace.FindPrevious(textToFind, chkWrapF.Checked, GetSearchFlags());
                    }
                    else
                    {
                        string textToFind = rdoExtendedR.Checked ? FindReplace.Transform(txtFindR.Text) : txtFindR.Text;
                        foundRange = FindReplace.FindNext(textToFind, chkWrapF.Checked, GetSearchFlags());
                    }
                }
            }
            return(foundRange);
        }
Пример #12
0
 public int ReplaceAll(CharacterRange rangeToSearch, string searchString, string replaceString, SearchFlags flags, bool Mark, bool Highlight)
 {
     return(ReplaceAll(rangeToSearch.cpMin, rangeToSearch.cpMax, searchString, replaceString, _flags, Mark, Highlight));
 }