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); }
internal static void ShowSearchInFiles(Form form) { SearchInFiles searchInFiles = new SearchInFiles { Owner = form }; searchInFiles.InitializeForm(); searchInFiles.Show(form); searchInFiles.Focus(); }
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; } }
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); } }
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); }