예제 #1
0
        internal static void SetNewRecentSearchInFilesDirs(SearchInFiles form, String path)
        {
            String fileContent = FileUtil.ReadToEndWithStandardEncoding(Path.Combine(ConstantUtil.ApplicationExecutionPath(), ConstantUtil.sfFile));

            const int maxRecentFolders = 10;

            //Opening-saving patterns has already been censed into file
            if (fileContent.IndexOf(path + Environment.NewLine) >= 0)
            {
                fileContent = fileContent.Remove(fileContent.IndexOf(path + Environment.NewLine), path.Length + Environment.NewLine.Length);
            }

            String[] rows = fileContent.Replace(Environment.NewLine, ConstantUtil.newLine).Split(new[] { Convert.ToChar(ConstantUtil.newLine) }, StringSplitOptions.RemoveEmptyEntries);

            if (rows.Length >= maxRecentFolders)
            {
                fileContent = String.Empty;

                for (int i = 0; i < maxRecentFolders - 1; i++)
                {
                    fileContent += rows[i] + Environment.NewLine;
                }
            }

            fileContent = path + Environment.NewLine + fileContent;

            SaveFileList(ConstantUtil.sfFile, fileContent);
            LoadRecentSearchInFilesDirs(form);
        }
예제 #2
0
        internal static void ShowSearchInFiles(Form form)
        {
            SearchInFiles searchInFiles = new SearchInFiles {
                Owner = form
            };

            searchInFiles.InitializeForm();
            searchInFiles.Show(form);
            searchInFiles.Focus();
        }
예제 #3
0
        internal static void GetPath(SearchInFiles form)
        {
            FolderBrowserDialog folderBrowserDialog  = form.folderBrowserDialog;
            ComboBox            searchFolderComboBox = form.searchFolderComboBox;

            folderBrowserDialog.Description  = LanguageUtil.GetCurrentLanguageString("folderDialogDefault", className);
            folderBrowserDialog.SelectedPath = Directory.Exists(searchFolderComboBox.Text) ? searchFolderComboBox.Text : Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);

            if (form.folderBrowserDialog.ShowDialog() == DialogResult.OK)
            {
                searchFolderComboBox.Text = folderBrowserDialog.SelectedPath;
            }
        }
예제 #4
0
        internal static void LoadRecentSearchInFilesDirs(SearchInFiles form)
        {
            ComboBox searchFolderComboBox = form.searchFolderComboBox;

            searchFolderComboBox.Items.Clear();
            searchFolderComboBox.Items.Add(String.Empty);

            String fileContent = FileUtil.ReadToEndWithStandardEncoding(Path.Combine(ConstantUtil.ApplicationExecutionPath(), ConstantUtil.sfFile));

            String[] separator           = { Environment.NewLine };
            String[] splittedFileContent = fileContent.Split(separator, StringSplitOptions.RemoveEmptyEntries);

            foreach (String splittedFileContentString in splittedFileContent)
            {
                searchFolderComboBox.Items.Add(splittedFileContentString);
            }
        }
예제 #5
0
        internal static void SearchTextInFiles(SearchInFiles form, Delegate threadCallBackResult)
        {
            TextBox  textToSearchTextBox     = form.textToSearchTextBox;
            TextBox  filenamePatternTextBox  = form.filenamePatternTextBox;
            TextBox  exclusionPatternTextBox = form.exclusionPatternTextBox;
            CheckBox searchSubdirsCheckBox   = form.searchSubdirsCheckBox;
            CheckBox hiddenFilesCheckBox     = form.hiddenFilesCheckBox;
            CheckBox caseSensitiveCheckBox   = form.caseSensitiveCheckBox;

            String stringToSearch = textToSearchTextBox.Text;
            String directoryWhereStartToSearch = form.searchFolder;
            String filePattern         = filenamePatternTextBox.Text;
            String filePatternNegative = exclusionPatternTextBox.Text;
            bool   topDirectoryOnly    = !searchSubdirsCheckBox.Checked;

            List <String>        result       = new List <String>();
            SearchOption         searchOption = topDirectoryOnly ? SearchOption.TopDirectoryOnly : SearchOption.AllDirectories;
            IEnumerable <String> filesFounded = FileUtil.GetFiles(directoryWhereStartToSearch, filePattern, searchOption); //Directory.GetFiles(directoryWhereStartToSearch, filePattern, searchOption);

            if (!String.IsNullOrEmpty(filePatternNegative) && filePatternNegative != "*.*")
            {
                List <String> filesFoundedTemp = new List <String>();
                String[]      negativeFilters  = filePatternNegative.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (String fileName in filesFounded)
                {
                    String fileNameWithoutPath = Path.GetFileName(fileName);
                    bool   shouldBeAdded       = false;

                    foreach (String negativeFilter in negativeFilters)
                    {
                        String negativeFilterTrimmed = negativeFilter.Trim();
                        if ((negativeFilterTrimmed.StartsWith("*.") && fileNameWithoutPath.EndsWith(negativeFilterTrimmed.Substring(1))) || (fileNameWithoutPath == negativeFilterTrimmed))
                        {
                            shouldBeAdded = false;
                            break;
                        }
                        shouldBeAdded = true;
                    }

                    if (shouldBeAdded)
                    {
                        filesFoundedTemp.Add(fileName);
                    }
                }

                filesFounded = filesFoundedTemp;
            }

            foreach (String fileName in filesFounded)
            {
                FileInfo fileInfo = new FileInfo(fileName);
                if (fileInfo.Attributes.ToString().Contains("Hidden") && !hiddenFilesCheckBox.Checked)
                {
                    continue;
                }

                String fileContents = FileUtil.ReadToEndWithEncoding(fileName);

                if (!caseSensitiveCheckBox.Checked)
                {
                    fileContents   = fileContents.ToLower();
                    stringToSearch = stringToSearch.ToLower();
                }

                if (fileContents.Contains(stringToSearch))
                {
                    result.Add(fileName.Replace(directoryWhereStartToSearch + "\\", String.Empty)); //".."
                }
            }

            form.Invoke(threadCallBackResult, result);
        }