public MemberPickerVM(IDocumentSearcherProvider fileSearcherProvider, IDocumentTreeView documentTreeView, IDecompilerService decompilerService, IDocumentTreeNodeFilter filter, string title, IEnumerable <IDsDocument> assemblies) { Title = title; this.fileSearcherProvider = fileSearcherProvider; this.decompilerService = decompilerService; this.documentTreeView = documentTreeView; allDecompilers = new ObservableCollection <DecompilerVM>(decompilerService.AllDecompilers.Select(a => new DecompilerVM(a))); decompiler = allDecompilers.FirstOrDefault(a => a.Decompiler == decompilerService.Decompiler); this.filter = filter; delayedSearch = new DelayedAction(DEFAULT_DELAY_SEARCH_MS, DelayStartSearch); SearchResults = new ObservableCollection <ISearchResult>(); searchResultsCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(SearchResults); searchResultsCollectionView.CustomSort = new SearchResult_Comparer(); foreach (var file in assemblies) { documentTreeView.DocumentService.ForceAdd(file, false, null); } documentTreeView.DocumentService.CollectionChanged += (s, e) => Restart(); CaseSensitive = false; MatchWholeWords = false; MatchAnySearchTerm = false; RefreshTreeView(); }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(TypeDef); if (res.FilterType != FilterType.Default) return res.FilterType; if (Context.Decompiler.ShowMember(TypeDef)) return FilterType.Visible; return FilterType.Hide; }
public DocumentTreeNodeDataContext(IDocumentTreeView documentTreeView, IResourceNodeFactory resourceNodeFactory, IDocumentTreeNodeFilter filter, ITreeViewNodeTextElementProvider treeViewNodeTextElementProvider) { DocumentTreeView = documentTreeView; ResourceNodeFactory = resourceNodeFactory; Filter = filter; TreeViewNodeTextElementProvider = treeViewNodeTextElementProvider; FilterVersion = 1; CanDragAndDrop = true; }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) return res.FilterType; var type = TypeDef; if (type.IsNested && !Context.Decompiler.ShowMember(type)) return FilterType.Hide; return FilterType.Visible; }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) { return(res.FilterType); } return(FilterType.CheckChildren); }
public DocumentTreeView(bool isGlobal, IDocumentTreeNodeFilter filter, ITreeViewService treeViewService, IDecompilerService decompilerService, IDsDocumentService documentService, IDocumentTreeViewSettings documentTreeViewSettings, IMenuService menuService, IDotNetImageService dotNetImageService, IWpfCommandService wpfCommandService, IResourceNodeFactory resourceNodeFactory, IAppSettings appSettings, [ImportMany] IEnumerable <Lazy <IDsDocumentNodeProvider, IDsDocumentNodeProviderMetadata> > dsDocumentNodeProvider, [ImportMany] IEnumerable <Lazy <IDocumentTreeNodeDataFinder, IDocumentTreeNodeDataFinderMetadata> > mefFinders, ITreeViewNodeTextElementProvider treeViewNodeTextElementProvider) { this.decompilerService = decompilerService; this.documentTreeViewSettings = documentTreeViewSettings; this.appSettings = appSettings; this.context = new DocumentTreeNodeDataContext(this, resourceNodeFactory, filter ?? FilterNothingDocumentTreeNodeFilter.Instance, treeViewNodeTextElementProvider) { SyntaxHighlight = documentTreeViewSettings.SyntaxHighlight, SingleClickExpandsChildren = documentTreeViewSettings.SingleClickExpandsTreeViewChildren, ShowAssemblyVersion = documentTreeViewSettings.ShowAssemblyVersion, ShowAssemblyPublicKeyToken = documentTreeViewSettings.ShowAssemblyPublicKeyToken, ShowToken = documentTreeViewSettings.ShowToken, Decompiler = decompilerService.Decompiler, UseNewRenderer = appSettings.UseNewRenderer_DocumentTreeView, DeserializeResources = documentTreeViewSettings.DeserializeResources, CanDragAndDrop = isGlobal, }; var options = new TreeViewOptions { AllowDrop = true, IsVirtualizing = true, VirtualizationMode = VirtualizationMode.Recycling, TreeViewListener = this, RootNode = new RootNode { DropNodes = OnDropNodes, DropFiles = OnDropFiles, }, }; this.documentTreeNodeGroups = new DocumentTreeNodeGroups(); this.dsDocumentNodeProvider = dsDocumentNodeProvider.OrderBy(a => a.Metadata.Order).ToArray(); this.TreeView = treeViewService.Create(new Guid(TreeViewConstants.DOCUMENT_TREEVIEW_GUID), options); this.TreeView.SelectionChanged += TreeView_SelectionChanged; this.DocumentService = documentService; this.DotNetImageService = dotNetImageService; this.dispatcher = Dispatcher.CurrentDispatcher; this.DocumentService.SetDispatcher(AddAction); documentService.CollectionChanged += DocumentService_CollectionChanged; decompilerService.DecompilerChanged += DecompilerService_DecompilerChanged; documentTreeViewSettings.PropertyChanged += DocumentTreeViewSettings_PropertyChanged; appSettings.PropertyChanged += AppSettings_PropertyChanged; this.WpfCommands = wpfCommandService.GetCommands(ControlConstants.GUID_DOCUMENT_TREEVIEW); if (isGlobal) { menuService.InitializeContextMenu(this.TreeView.UIObject, new Guid(MenuConstants.GUIDOBJ_DOCUMENTS_TREEVIEW_GUID), new GuidObjectsProvider(this.TreeView)); wpfCommandService.Add(ControlConstants.GUID_DOCUMENT_TREEVIEW, TreeView.UIObject); } this.nodeFinders = mefFinders.OrderBy(a => a.Metadata.Order).ToArray(); InitializeDocumentTreeNodeGroups(); }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(TypeDef); if (res.FilterType != FilterType.Default) { return(res.FilterType); } if (Context.Decompiler.ShowMember(TypeDef)) { return(FilterType.Visible); } return(FilterType.Hide); }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) { return(res.FilterType); } var type = TypeDef; if (type.IsNested && !Context.Decompiler.ShowMember(type)) { return(FilterType.Hide); } return(FilterType.Visible); }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var p = TreeNode.Parent; var parent = p == null ? null : p.Data as ModuleDocumentNode; Debug.Assert(parent != null); if (parent == null) { return(FilterType.Default); } var res = filter.GetResult(Name, parent.Document); if (res.FilterType != FilterType.Default) { return(res.FilterType); } return(FilterType.CheckChildren); }
public T GetDnlibType <T>(string title, IDocumentTreeNodeFilter filter, T selectedObject, ModuleDef ownerModule) where T : class { var newDocumentTreeView = documentTreeViewProvider.Create(filter); try { var win = new MemberPickerDlg(documentTreeView, newDocumentTreeView); var data = new MemberPickerVM(fileSearcherProvider, newDocumentTreeView, decompilerService, filter, title, documentTreeView.DocumentService.GetDocuments()); data.SyntaxHighlight = documentTreeViewSettings.SyntaxHighlight; win.DataContext = data; win.Owner = ownerWindow ?? appWindow.MainWindow; data.SelectItem(selectedObject); if (win.ShowDialog() != true) { return(null); } return(ImportObject(ownerModule, data.SelectedDnlibObject) as T); } finally { newDocumentTreeView.Dispose(); } }
/// <summary> /// Constructor /// </summary> /// <param name="filter"></param> public ChainDocumentTreeNodeFilter(IDocumentTreeNodeFilter filter) { this.filter = filter; }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) => filter.GetResult(ModuleRef).FilterType;
/// <inheritdoc/> public sealed override FilterType GetFilterType(IDocumentTreeNodeFilter filter) => filter.GetResult(this).FilterType;
public IDocumentTreeView Create(IDocumentTreeNodeFilter filter) => new DocumentTreeView(false, filter, treeViewService, decompilerService, documentServiceProvider.Create(), documentTreeViewSettings, menuService, dotNetImageService, wpfCommandService, resourceNodeFactory, appSettings, dsDocumentNodeProviders.ToArray(), mefFinders.ToArray(), treeViewNodeTextElementProvider);
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) => filter.GetResultOther(this).FilterType;
/// <summary> /// Constructor /// </summary> /// <param name="allowedMod">Module</param> /// <param name="filter">Filter</param> public SameAssemblyDocumentTreeNodeFilter(ModuleDef allowedMod, IDocumentTreeNodeFilter filter) : base(filter) { this.allowedAsm = allowedMod.Assembly; this.allowedMod = allowedMod; }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) => filter.GetResult(AssemblyRef).FilterType;
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { Debug.Fail("Shouldn't be called"); return FilterType.Default; }
/// <summary> /// Constructor /// </summary> /// <param name="allowedMod">Module</param> /// <param name="filter">Filter</param> public SameAssemblyDocumentTreeNodeFilter(ModuleDef allowedMod, IDocumentTreeNodeFilter filter) : base(filter) { allowedAsm = allowedMod.Assembly; this.allowedMod = allowedMod; }
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) return res.FilterType; return FilterType.CheckChildren; }
/// <inheritdoc/> public virtual FilterType GetFilterType(IDocumentTreeNodeFilter filter) => filter.GetResult(this).FilterType;
public override FilterType GetFilterType(IDocumentTreeNodeFilter filter) { Debug.Fail("Shouldn't be called"); return(FilterType.Default); }
/// <summary> /// Constructor /// </summary> /// <param name="allowedModule">Module</param> /// <param name="filter">Filter</param> public SameModuleDocumentTreeNodeFilter(ModuleDef allowedModule, IDocumentTreeNodeFilter filter) : base(filter) { this.allowedModule = allowedModule; }
public MemberPickerVM(IDocumentSearcherProvider fileSearcherProvider, IDocumentTreeView documentTreeView, IDecompilerService decompilerService, IDocumentTreeNodeFilter filter, string title, IEnumerable<IDsDocument> assemblies) { Title = title; this.fileSearcherProvider = fileSearcherProvider; this.decompilerService = decompilerService; this.documentTreeView = documentTreeView; decompiler = decompilerService.Decompiler; this.filter = filter; delayedSearch = new DelayedAction(DEFAULT_DELAY_SEARCH_MS, DelayStartSearch); SearchResults = new ObservableCollection<ISearchResult>(); searchResultsCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(SearchResults); searchResultsCollectionView.CustomSort = new SearchResult_Comparer(); foreach (var file in assemblies) documentTreeView.DocumentService.ForceAdd(file, false, null); documentTreeView.DocumentService.CollectionChanged += (s, e) => Restart(); CaseSensitive = false; MatchWholeWords = false; MatchAnySearchTerm = false; RefreshTreeView(); }