diff options
author | Mike Krüger <mkrueger@novell.com> | 2010-01-19 16:45:19 +0300 |
---|---|---|
committer | Mike Krüger <mkrueger@novell.com> | 2010-01-19 16:45:19 +0300 |
commit | 48ae2774708c1d181e2b8a19748662b25ba14bf5 (patch) | |
tree | c5b2fed02d330e2fbc9774b06c2ab01aae63fcc1 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles | |
parent | 3c69b2f631e0332d63fde831dbb29e63a498af75 (diff) |
* gtk-gui/gui.stetic:
* gtk-gui/generated.cs:
* MonoDevelop.Ide.FindInFiles/Scope.cs:
* MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:
* gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:
* gtk-gui/MonoDevelop.Ide.FindInFiles.SearchResultWidget.cs:
Implemented 'Bug 552017 - Saner and new default options for Find in
Files -> Directories dialog'.
svn path=/trunk/monodevelop/; revision=149815
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs | 43 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs | 28 |
2 files changed, 61 insertions, 10 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs index 78b7035317..3cf0f2a441 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs @@ -102,7 +102,7 @@ namespace MonoDevelop.Ide.FindInFiles childCombo.TopAttach = 3; childCombo.BottomAttach = 4; - childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.comboboxentryFileMask]; + childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.searchentry1]; childCombo.TopAttach = 3; childCombo.BottomAttach = 4; @@ -151,6 +151,25 @@ namespace MonoDevelop.Ide.FindInFiles Hidden += delegate { Destroy (); }; UpdateStopButton (); + this.searchentry1.Ready = true; + this.searchentry1.Visible = true; + this.searchentry1.IsCheckMenu = true; + + Properties properties = (Properties)PropertyService.Get ("MonoDevelop.FindReplaceDialogs.SearchOptions", new Properties ()); + + CheckMenuItem checkMenuItem = this.searchentry1.AddFilterOption (0, GettextCatalog.GetString ("Include binary files")); + checkMenuItem.DrawAsRadio = false; + checkMenuItem.Active = properties.Get ("IncludeBinaryFiles", false); + checkMenuItem.Toggled += delegate { + properties.Set ("IncludeBinaryFiles", checkMenuItem.Active); + }; + + CheckMenuItem checkMenuItem1 = this.searchentry1.AddFilterOption (1, GettextCatalog.GetString ("Include hidden files and directories")); + checkMenuItem1.DrawAsRadio = false; + checkMenuItem1.Active = properties.Get ("IncludeHiddenFiles", false); + checkMenuItem1.Toggled += delegate { + properties.Set ("IncludeHiddenFiles", checkMenuItem1.Active); + }; } public override void Destroy () @@ -194,7 +213,7 @@ namespace MonoDevelop.Ide.FindInFiles childCombo.TopAttach = tableFindAndReplace.NRows - 3; childCombo.BottomAttach = tableFindAndReplace.NRows - 2; - childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.comboboxentryFileMask]; + childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.searchentry1]; childCombo.TopAttach = tableFindAndReplace.NRows - 3; childCombo.BottomAttach = tableFindAndReplace.NRows - 2; } @@ -259,7 +278,7 @@ namespace MonoDevelop.Ide.FindInFiles childCombo.TopAttach = tableFindAndReplace.NRows - 1; childCombo.BottomAttach = tableFindAndReplace.NRows; - childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.comboboxentryFileMask]; + childCombo = (Gtk.Table.TableChild)this.tableFindAndReplace[this.searchentry1]; childCombo.TopAttach = tableFindAndReplace.NRows - 1; childCombo.BottomAttach = tableFindAndReplace.NRows; } @@ -318,8 +337,9 @@ namespace MonoDevelop.Ide.FindInFiles LoadHistory ("MonoDevelop.FindReplaceDialogs.FindHistory", comboboxentryFind); if (showReplace) LoadHistory ("MonoDevelop.FindReplaceDialogs.ReplaceHistory", comboboxentryReplace); + searchentry1.Query = properties.Get ("MonoDevelop.FindReplaceDialogs.FileMask", ""); // LoadHistory ("MonoDevelop.FindReplaceDialogs.PathHistory", comboboxentryPath); - LoadHistory ("MonoDevelop.FindReplaceDialogs.FileMaskHistory", comboboxentryFileMask); +// LoadHistory ("MonoDevelop.FindReplaceDialogs.FileMaskHistory", comboboxentryFileMask); } static void LoadHistory (string propertyName, ComboBoxEntry entry) @@ -357,8 +377,9 @@ namespace MonoDevelop.Ide.FindInFiles StoreHistory ("MonoDevelop.FindReplaceDialogs.FindHistory", comboboxentryFind); if (showReplace) StoreHistory ("MonoDevelop.FindReplaceDialogs.ReplaceHistory", comboboxentryReplace); + properties.Set ("MonoDevelop.FindReplaceDialogs.FileMask", searchentry1.Query); // StoreHistory ("MonoDevelop.FindReplaceDialogs.PathHistory", comboboxentryPath); - StoreHistory ("MonoDevelop.FindReplaceDialogs.FileMaskHistory", comboboxentryFileMask); + //StoreHistory ("MonoDevelop.FindReplaceDialogs.FileMaskHistory", comboboxentryFileMask); } static void StoreHistory (string propertyName, Gtk.ComboBoxEntry comboBox) @@ -434,8 +455,14 @@ namespace MonoDevelop.Ide.FindInFiles return new WholeSolutionScope (); case ScopeAllOpenFiles: return new AllOpenFilesScope (); - case ScopeDirectories: - return new DirectoryScope (comboboxentryPath.Entry.Text, checkbuttonRecursively.Active); + case ScopeDirectories: + DirectoryScope directoryScope = new DirectoryScope (comboboxentryPath.Entry.Text, checkbuttonRecursively.Active); + + Properties properties = (Properties)PropertyService.Get ("MonoDevelop.FindReplaceDialogs.SearchOptions", new Properties ()); + directoryScope.IncludeBinaryFiles = properties.Get ("IncludeBinaryFiles", false); + directoryScope.IncludeHiddenFiles = properties.Get ("IncludeHiddenFiles", false); + + return directoryScope; } throw new ApplicationException ("Unknown scope:" + comboboxScope.Active); } @@ -443,7 +470,7 @@ namespace MonoDevelop.Ide.FindInFiles FilterOptions GetFilterOptions () { FilterOptions result = new FilterOptions (); - result.FileMask = !string.IsNullOrEmpty (comboboxentryFileMask.Entry.Text) ? comboboxentryFileMask.Entry.Text : "*"; + result.FileMask = !string.IsNullOrEmpty (searchentry1.Query) ? searchentry1.Query : "*"; result.CaseSensitive = checkbuttonCaseSensitive.Active; result.RegexSearch = checkbuttonRegexSearch.Active; result.WholeWordsOnly = checkbuttonWholeWordsOnly.Active; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs index d7fcc0b53a..0edea417c9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using MonoDevelop.Projects; using MonoDevelop.Ide.Gui; using MonoDevelop.Core; +using MonoDevelop.Core.Gui; namespace MonoDevelop.Ide.FindInFiles @@ -193,6 +194,16 @@ namespace MonoDevelop.Ide.FindInFiles string path; bool recurse; + public bool IncludeBinaryFiles { + get; + set; + } + + public bool IncludeHiddenFiles { + get; + set; + } + public override int GetTotalWork (FilterOptions filterOptions) { return GetFileNames (path, recurse, filterOptions).Count (); @@ -204,7 +215,16 @@ namespace MonoDevelop.Ide.FindInFiles this.recurse = recurse; } - static IEnumerable<string> GetFileNames (string path, bool recurse, FilterOptions filterOptions) + static bool MimeTypeIsBinary (string mimeType) + { + if (string.IsNullOrEmpty (mimeType)) + return false; + return !(mimeType.StartsWith ("text/") || + mimeType == "image/x-xbitmap" || + mimeType == "image/x-xpixmap"); + } + + IEnumerable<string> GetFileNames (string path, bool recurse, FilterOptions filterOptions) { foreach (string fileMask in filterOptions.FileMask.Split (',', ';')) { string[] files; @@ -216,12 +236,16 @@ namespace MonoDevelop.Ide.FindInFiles } foreach (string fileName in files) { + if (fileName.StartsWith (".") && !IncludeHiddenFiles) + continue; + if (!IncludeBinaryFiles && MimeTypeIsBinary (DesktopService.GetMimeTypeForUri (fileName))) + continue; yield return fileName; } if (recurse) { foreach (string directoryName in Directory.GetDirectories (path)) { - if (directoryName.StartsWith (".")) + if (directoryName.StartsWith (".") && !IncludeHiddenFiles) continue; foreach (string fileName in GetFileNames (Path.Combine (path, directoryName), recurse, filterOptions)) { yield return fileName; |