Ejemplo n.º 1
0
 private bool TryFindNext(string pattern, RegexOptions opt, FindNextDirection direction, Range range, out Place foundMatchPlace)
 {
     if (direction == FindNextDirection.Next)
     {
         foreach (var r in range.GetRangesByLines(pattern, opt))
         {
             foundMatchPlace = r.Start;
             tb.Selection    = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return(true); // always return on the first match
         }
     }
     else // find previous
     {
         foreach (var r in range.GetRangesByLinesReversed(pattern, opt))
         {
             foundMatchPlace = r.Start;
             tb.Selection    = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return(true); // always return on the first match
         }
     }
     foundMatchPlace = Place.Empty;
     return(false);
 }
Ejemplo n.º 2
0
 /// <summary>
 ///     <summary>
 ///         Find Next
 ///     </summary>
 ///     <param name="pattern"></param>
 ///     id FindNext(string pattern)
 public void FindNext(string pattern)
 {
     try
     {
         var opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
         if (!cbRegex.Checked)
         {
             pattern = Regex.Escape(pattern);
         }
         if (cbWholeWord.Checked)
         {
             pattern = "\\b" + pattern + "\\b";
         }
         //
         var range = tb.Selection.Clone();
         range.Normalize();
         //
         if (_firstSearch)
         {
             _startPlace  = range.Start;
             _firstSearch = false;
         }
         //
         range.Start = range.End;
         range.End   = range.Start >= _startPlace
             ? new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1)
             : _startPlace;
         //
         foreach (var r in range.GetRanges(pattern, opt))
         {
             tb.Selection = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return;
         }
         //
         if (range.Start >= _startPlace && _startPlace > Place.Empty)
         {
             tb.Selection.Start = new Place(0, 0);
             FindNext(pattern);
             return;
         }
         MessageBox.Show("Not found");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 3
0
        public virtual void FindNext(string pattern)
        {
            List <Range> ranges = null;
            Place        end;

            try
            {
                RegexOptions opt = CaseChecked ? RegexOptions.None : RegexOptions.IgnoreCase;/*match case*/

                if (WholeWordChecked)
                {
                    pattern = "\\b" + pattern + "\\b"; /*match all*/
                }
                //
                Range range = tb.Selection.Clone();
                range.Normalize();
                //
                range.Start = range.End;
                range.End   = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
                //
                ranges = new List <Range>(range.GetRangesByLines(pattern, opt));
                foreach (Range r in ranges)
                {
                    tb.Selection = r;
                    tb.DoSelectionVisible();
                    tb.Invalidate();
                    return;
                }
                //
                end         = range.Start;
                range.Start = new Place(0, 0);
                range.End   = end;
                //
                ranges = new List <Range>(range.GetRangesByLines(pattern, opt));
                foreach (Range r in ranges)
                {
                    tb.Selection = r;
                    tb.DoSelectionVisible();
                    tb.Invalidate();
                    return;
                }
                //MessageBox.Show("Not found");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public virtual void FindNext(string pattern)
        {
            try
            {
                RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
                if (!cbRegex.Checked)
                {
                    pattern = Regex.Escape(pattern);
                }
                if (cbWholeWord.Checked)
                {
                    pattern = "\\b" + pattern + "\\b";
                }
                //
                Range range = tb.Selection.Clone();
                range.Normalize();
                //
                if (firstSearch)
                {
                    startPlace  = range.Start;
                    firstSearch = false;
                }
                //
                range.Start = range.End;
                if (range.Start >= startPlace)
                {
                    range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
                }
                else
                {
                    range.End = startPlace;
                }
                //
                foreach (var r in range.GetRangesByLines(pattern, opt))
                {
                    tb.Selection = r;
                    tb.DoSelectionVisible();
                    tb.Invalidate();
                    tsStatusUpdateLabel.Text = "Find: Found search term '" + tbFind.Text + "'.";
                    return;
                }

                //
                if (range.Start >= startPlace && startPlace > Place.Empty)
                {
                    tb.Selection.Start = new Place(0, 0);
                    FindNext(pattern);
                    return;
                }

                tsStatusUpdateLabel.Text = "Find: Unable to find search term '" + tbFind.Text + "'.";
            }
            catch (Exception Ex)
            {
                Console.WriteLine(Ex);
            }
        }
Ejemplo n.º 5
0
 private void FindNext()
 {
     try
     {
         string       pattern = tbFind.Text;
         RegexOptions opt     = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
         if (!cbRegex.Checked)
         {
             pattern = Regex.Replace(pattern, RegexSpecSymbolsPattern, "\\$0");
         }
         if (cbWholeWord.Checked)
         {
             pattern = "\\b" + pattern + "\\b";
         }
         //
         Range range = tb.Selection.Clone();
         range.Normalize();
         //
         if (firstSearch)
         {
             startPlace  = range.Start;
             firstSearch = false;
         }
         //
         range.Start = range.End;
         if (range.Start >= startPlace)
         {
             range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
         }
         else
         {
             range.End = startPlace;
         }
         //
         foreach (var r in range.GetRanges(pattern, opt))
         {
             tb.Selection = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return;
         }
         //
         if (range.Start >= startPlace && startPlace > Place.Empty)
         {
             tb.Selection.Start = new Place(0, 0);
             FindNext();
             return;
         }
         MessageBox.Show("Not found");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
 public void FindNext(string pattern)
 {
     try
     {
         tbFind.BackColor = Color.White;
         RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
         if (!cbRegex.Checked)
         {
             pattern = Regex.Escape(pattern);
         }
         if (cbWholeWord.Checked)
         {
             pattern = "\\b" + pattern + "\\b";
         }
         //
         Range range = tb.Selection.Clone();
         range.Normalize();
         //
         if (firstSearch)
         {
             startPlace  = range.Start;
             firstSearch = false;
         }
         //
         range.Start = range.End;
         if (range.Start >= startPlace)
         {
             range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
         }
         else
         {
             range.End = startPlace;
         }
         //
         foreach (var r in range.GetRangesByLines(pattern, opt))
         {
             tb.Selection = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return;
         }
         //
         if (range.Start >= startPlace && startPlace > Place.Empty)
         {
             tb.Selection.Start = new Place(0, 0);
             FindNext(pattern);
             return;
         }
         tbFind.BackColor = Color.LightCoral;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
Ejemplo n.º 7
0
 public virtual void FindNext(string pattern)
 {
     try
     {
         RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
         if (!cbRegex.Checked)
         {
             pattern = Regex.Escape(pattern);
         }
         if (cbWholeWord.Checked)
         {
             pattern = "\\b" + pattern + "\\b";
         }
         //
         Range range = tb.Selection.Clone();
         range.Normalize();
         //
         if (firstSearch)
         {
             startPlace  = range.Start;
             firstSearch = false;
         }
         //
         range.Start = range.End;
         if (range.Start >= startPlace)
         {
             range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
         }
         else
         {
             range.End = startPlace;
         }
         //
         foreach (var r in range.GetRangesByLines(pattern, opt))
         {
             tb.Selection = r;
             tb.DoSelectionVisible();
             tb.Invalidate();
             return;
         }
         //
         if (range.Start >= startPlace && startPlace > Place.Empty)
         {
             tb.Selection.Start = new Place(0, 0);
             FindNext(pattern);
             return;
         }
         MessageBox.Show("Совпадений не найдено", MBCaption, MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, MBCaption, MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Ejemplo n.º 8
0
        public bool Find(string pattern)
        {
            RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;

            if (!cbRegex.Checked)
            {
                pattern = Regex.Escape(pattern);
            }
            if (cbWholeWord.Checked)
            {
                pattern = "\\b" + pattern + "\\b";
            }
            //
            Range range = tb.Selection.Clone();

            range.Normalize();
            //
            if (firstSearch)
            {
                startPlace  = range.Start;
                firstSearch = false;
            }

            //
            range.Start = range.End;
            if (range.Start >= startPlace)
            {
                range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
            }
            else
            {
                range.End = startPlace;
            }
            //
            foreach (var r in range.GetRangesByLines(pattern, opt))
            {
                tb.Selection.Start = r.Start;
                tb.Selection.End   = r.End;
                tb.DoSelectionVisible();
                tb.Invalidate();
                return(true);
            }

            if (range.Start >= startPlace && startPlace > Place.Empty)
            {
                tb.Selection.Start = new Place(0, 0);
                return(Find(pattern));
            }

            return(false);
        }
Ejemplo n.º 9
0
        public bool Find(string pattern)
        {
            try
            {
                RegexOptions opt = cbMatchCase.Checked ? RegexOptions.None : RegexOptions.IgnoreCase;
                if (!cbRegex.Checked)
                {
                    pattern = Regex.Escape(pattern);
                }
                if (cbWholeWord.Checked)
                {
                    pattern = "\\b" + pattern + "\\b";
                }
                //
                Range range = tb.Selection.Clone();
                range.Normalize();

                //get count
                Range rangetmp = range.Clone();
                rangetmp.Start = new Place(0, 0);
                rangetmp.End   = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
                int total = rangetmp.GetRangesByLines(pattern, opt).Count();

                //
                if (firstSearch)
                {
                    startPlace  = range.Start;
                    firstSearch = false;
                }
                //
                range.Start = range.End;
                if (range.Start >= startPlace)
                {
                    range.End = new Place(tb.GetLineLength(tb.LinesCount - 1), tb.LinesCount - 1);
                }
                else
                {
                    range.End = startPlace;
                }
                //
                IEnumerable <Range> ranges = range.GetRangesByLines(pattern, opt);
                ShowFindInfo(total, total - ranges.Count());
                foreach (var r in ranges)
                {
                    tb.Selection = r;
                    tb.DoSelectionVisible();
                    tb.Invalidate();
                    return(true);
                }
                //
                if (range.Start >= startPlace && startPlace > Place.Empty)
                {
                    tb.Selection.Start = new Place(0, 0);
                    Find(pattern);
                    return(true);
                }
                tb.Selection.Start = new Place(0, 0);
                //this.Title = "Not found";
            }
            catch (Exception ex)
            {
                //this.Title = ex.Message;
            }

            return(true);
        }