Exemple #1
0
        private void UpdateEnd(int index, int delta)
        {
            FindPosition position = searchResult[index];

            position.endPoint.X += delta;
            searchResult[index]  = position;
        }
Exemple #2
0
        private void ReplaceSingleOccurence(FindPosition position, string textToReplace)
        {
            string resultString = lineList[position.startPoint.Y].Substring(0, position.startPoint.X);

            resultString += textToReplace;
            resultString += lineList[position.startPoint.Y].Substring(position.endPoint.X + 1);
            List <string> originalContent = new List <string>();

            originalContent.Add(lineList[position.startPoint.Y]);
            undoRedoRecorder.RecordInsertion(position.startPoint.Y,
                                             1, originalContent, position.endPoint);
            lineList[position.startPoint.Y] = resultString;
        }
Exemple #3
0
        private void UpdateStartEnd(int currentIndex, int delta)
        {
            FindPosition currentReplace = searchResult[currentIndex];

            for (int i = currentIndex + 1; i < searchResult.Count; i++)
            {
                if (searchResult[i].endPoint.Y != currentReplace.endPoint.Y)
                {
                    break;
                }
                else
                {
                    FindPosition position = searchResult[i];
                    position.startPoint.X += delta;
                    position.endPoint.X   += delta;
                    searchResult[i]        = position;
                }
            }
        }
Exemple #4
0
        private void FindAllOccurences(string textToSearch, FindOptions option, bool isFindOnly)
        {
            searchResult = new List <FindPosition>();
            int lineNumber = 0;
            int column     = 0;

            foreach (string line in lineList)
            {
                if (option.HasFlag(FindOptions.MatchCase) || (prevOption != null && ((option.HasFlag(FindOptions.FindNext) || option.Equals(FindOptions.FindPrevious)) && prevOption.Equals("MatchCase"))))
                {
                    column = line.IndexOf(textToSearch);
                }
                else
                {
                    column = line.IndexOf(textToSearch, StringComparison.CurrentCultureIgnoreCase);
                }

                if (column != -1)
                {
                    while (column != -1)
                    {
                        FindPosition position = new FindPosition();
                        position.startPoint = new Point(column, lineNumber);
                        position.endPoint   = new Point(column + textToSearch.Length - 1, lineNumber);
                        searchResult.Add(position);
                        if (column + textToSearch.Length < line.Length)
                        {
                            // "previousColumn stores how much column has already moved
                            int previousColumn = column;

                            if (option.HasFlag(FindOptions.MatchCase) || (prevOption != null && ((option.HasFlag(FindOptions.FindNext) || option.Equals(FindOptions.FindPrevious)) && prevOption.Equals("MatchCase"))))
                            {
                                column = line.Substring(column + textToSearch.Length).IndexOf(textToSearch);
                            }
                            else
                            {
                                column = line.Substring(column + textToSearch.Length).IndexOf(textToSearch, StringComparison.CurrentCultureIgnoreCase);
                            }


                            if (column != -1)
                            {
                                column += textToSearch.Length + previousColumn;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                lineNumber++;
            }

            if (searchResult.Count <= 0)
            {
                CurrentSearchIndex = -1;
            }

            if ((option.HasFlag(FindOptions.FindNext) || option.HasFlag(FindOptions.FindPrevious) || option.HasFlag(FindOptions.ReplaceOnce) && !isFindOnly))
            {
                return;
            }

            if (searchResult.Count > 0)
            {
                CurrentSearchIndex = 0;
            }

            if (option.HasFlag(FindOptions.MatchCase) || isFindOnly)
            {
                prevOption = option.ToString();
            }
        }