Browse Source

fix #214 - GUI - Search for: "Everything"

pull/703/head
Siegfried Pammer 11 years ago
parent
commit
a2cbd6d345
  1. 9
      ILSpy/SearchPane.cs
  2. 49
      ILSpy/SearchStrategies.cs

9
ILSpy/SearchPane.cs

@ -58,6 +58,7 @@ namespace ICSharpCode.ILSpy @@ -58,6 +58,7 @@ namespace ICSharpCode.ILSpy
private SearchPane()
{
InitializeComponent();
searchModeComboBox.Items.Add(new { Image = Images.Library, Name = "Types and Members" });
searchModeComboBox.Items.Add(new { Image = Images.Class, Name = "Type" });
searchModeComboBox.Items.Add(new { Image = Images.Property, Name = "Member" });
searchModeComboBox.Items.Add(new { Image = Images.Method, Name = "Method" });
@ -65,7 +66,7 @@ namespace ICSharpCode.ILSpy @@ -65,7 +66,7 @@ namespace ICSharpCode.ILSpy
searchModeComboBox.Items.Add(new { Image = Images.Property, Name = "Property" });
searchModeComboBox.Items.Add(new { Image = Images.Event, Name = "Event" });
searchModeComboBox.Items.Add(new { Image = Images.Literal, Name = "Constant" });
searchModeComboBox.SelectedIndex = (int)SearchMode.Type;
searchModeComboBox.SelectedIndex = (int)SearchMode.TypeAndMember;
ContextMenuProvider.Add(listBox);
MainWindow.Instance.CurrentAssemblyListChanged += MainWindow_Instance_CurrentAssemblyListChanged;
@ -253,6 +254,9 @@ namespace ICSharpCode.ILSpy @@ -253,6 +254,9 @@ namespace ICSharpCode.ILSpy
AbstractSearchStrategy GetSearchStrategy(SearchMode mode, string[] terms)
{
if (terms.Length == 1) {
if (terms[0].StartsWith("tm:", StringComparison.Ordinal))
return new TypeAndMemberSearchStrategy(terms[0].Substring(3));
if (terms[0].StartsWith("t:", StringComparison.Ordinal))
return new TypeSearchStrategy(terms[0].Substring(2));
@ -277,6 +281,8 @@ namespace ICSharpCode.ILSpy @@ -277,6 +281,8 @@ namespace ICSharpCode.ILSpy
switch (mode)
{
case SearchMode.TypeAndMember:
return new TypeAndMemberSearchStrategy(terms);
case SearchMode.Type:
return new TypeSearchStrategy(terms);
case SearchMode.Member:
@ -333,6 +339,7 @@ namespace ICSharpCode.ILSpy @@ -333,6 +339,7 @@ namespace ICSharpCode.ILSpy
public enum SearchMode
{
TypeAndMember,
Type,
Member,
Method,

49
ILSpy/SearchStrategies.cs

@ -373,4 +373,53 @@ namespace ICSharpCode.ILSpy @@ -373,4 +373,53 @@ namespace ICSharpCode.ILSpy
}
}
class TypeAndMemberSearchStrategy : AbstractSearchStrategy
{
public TypeAndMemberSearchStrategy(params string[] terms)
: base(terms)
{
}
public override void Search(TypeDefinition type, Language language, Action<SearchResult> addResult)
{
if (IsMatch(type.Name) || IsMatch(type.FullName))
{
addResult(new SearchResult
{
Member = type,
Image = TypeTreeNode.GetIcon(type),
Name = language.TypeToString(type, includeNamespace: false),
LocationImage = type.DeclaringType != null ? TypeTreeNode.GetIcon(type.DeclaringType) : Images.Namespace,
Location = type.DeclaringType != null ? language.TypeToString(type.DeclaringType, includeNamespace: true) : type.Namespace
});
}
foreach (TypeDefinition nestedType in type.NestedTypes)
{
Search(nestedType, language, addResult);
}
base.Search(type, language, addResult);
}
protected override bool IsMatch(FieldDefinition field)
{
return IsMatch(field.Name);
}
protected override bool IsMatch(PropertyDefinition property)
{
return IsMatch(property.Name);
}
protected override bool IsMatch(EventDefinition ev)
{
return IsMatch(ev.Name);
}
protected override bool IsMatch(MethodDefinition m)
{
return IsMatch(m.Name);
}
}
}

Loading…
Cancel
Save