public MemberPickerVM(IFileSearcherCreator fileSearcherCreator, IFileTreeView fileTreeView, ILanguageManager languageManager, IFileTreeNodeFilter filter, string title, IEnumerable <IDnSpyFile> assemblies) { this.title = title; this.fileSearcherCreator = fileSearcherCreator; this.languageManager = languageManager; this.fileTreeView = fileTreeView; this.language = languageManager.SelectedLanguage; this.filter = filter; this.delayedSearch = new DelayedAction(DEFAULT_DELAY_SEARCH_MS, DelayStartSearch); this.searchResults = new ObservableCollection <ISearchResult>(); this.searchResultsCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(searchResults); this.searchResultsCollectionView.CustomSort = new SearchResult_Comparer(); foreach (var file in assemblies) { fileTreeView.FileManager.ForceAdd(file, false, null); } fileTreeView.FileManager.CollectionChanged += (s, e) => Restart(); this.CaseSensitive = false; this.MatchWholeWords = false; this.MatchAnySearchTerm = false; RefreshTreeView(); }
public FileTreeNodeDataContext(IFileTreeView fileTreeView, IResourceNodeFactory resourceNodeFactory, IFileTreeNodeFilter filter) { this.FileTreeView = fileTreeView; this.ResourceNodeFactory = resourceNodeFactory; this.Filter = filter; this.FilterVersion = 1; this.CanDragAndDrop = true; }
public FileTreeView(bool isGlobal, IFileTreeNodeFilter filter, IThemeManager themeManager, ITreeViewManager treeViewManager, ILanguageManager languageManager, IFileManager fileManager, IFileTreeViewSettings fileTreeViewSettings, IMenuManager menuManager, IDotNetImageManager dotNetImageManager, IWpfCommandManager wpfCommandManager, IResourceNodeFactory resourceNodeFactory, IAppSettings appSettings, [ImportMany] IEnumerable <Lazy <IDnSpyFileNodeProvider, IDnSpyFileNodeProviderMetadata> > dnSpyFileNodeProviders, [ImportMany] IEnumerable <Lazy <IFileTreeNodeDataFinder, IFileTreeNodeDataFinderMetadata> > mefFinders) { this.languageManager = languageManager; this.themeManager = themeManager; this.fileTreeViewSettings = fileTreeViewSettings; this.appSettings = appSettings; this.context = new FileTreeNodeDataContext(this, resourceNodeFactory, filter ?? FilterNothingFileTreeNodeFilter.Instance) { SyntaxHighlight = fileTreeViewSettings.SyntaxHighlight, SingleClickExpandsChildren = fileTreeViewSettings.SingleClickExpandsTreeViewChildren, ShowAssemblyVersion = fileTreeViewSettings.ShowAssemblyVersion, ShowAssemblyPublicKeyToken = fileTreeViewSettings.ShowAssemblyPublicKeyToken, ShowToken = fileTreeViewSettings.ShowToken, Language = languageManager.Language, UseNewRenderer = appSettings.UseNewRenderer_FileTreeView, DeserializeResources = fileTreeViewSettings.DeserializeResources, CanDragAndDrop = isGlobal, }; var options = new TreeViewOptions { AllowDrop = true, IsVirtualizing = true, VirtualizationMode = VirtualizationMode.Recycling, TreeViewListener = this, RootNode = new RootNode { DropNodes = OnDropNodes, DropFiles = OnDropFiles, }, }; this.fileTreeNodeGroups = new FileTreeNodeGroups(); this.dnSpyFileNodeProviders = dnSpyFileNodeProviders.OrderBy(a => a.Metadata.Order).ToArray(); this.TreeView = treeViewManager.Create(new Guid(TVConstants.FILE_TREEVIEW_GUID), options); this.TreeView.SelectionChanged += TreeView_SelectionChanged; this.FileManager = fileManager; this.DotNetImageManager = dotNetImageManager; this.dispatcher = Dispatcher.CurrentDispatcher; this.FileManager.SetDispatcher(AddAction); fileManager.CollectionChanged += FileManager_CollectionChanged; languageManager.LanguageChanged += LanguageManager_LanguageChanged; themeManager.ThemeChanged += ThemeManager_ThemeChanged; fileTreeViewSettings.PropertyChanged += FileTreeViewSettings_PropertyChanged; appSettings.PropertyChanged += AppSettings_PropertyChanged; this.WpfCommands = wpfCommandManager.GetCommands(CommandConstants.GUID_FILE_TREEVIEW); if (isGlobal) { menuManager.InitializeContextMenu((FrameworkElement)this.TreeView.UIObject, new Guid(MenuConstants.GUIDOBJ_FILES_TREEVIEW_GUID), new GuidObjectsProvider(this.TreeView)); wpfCommandManager.Add(CommandConstants.GUID_FILE_TREEVIEW, (UIElement)TreeView.UIObject); } this.nodeFinders = mefFinders.OrderBy(a => a.Metadata.Order).ToArray(); InitializeFileTreeNodeGroups(); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) { return(res.FilterType); } return(FilterType.CheckChildren); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(MethodDef); if (res.FilterType != FilterType.Default) { return(res.FilterType); } if (Context.Decompiler.ShowMember(MethodDef)) { return(FilterType.Visible); } return(FilterType.Hide); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(this.EventDef); if (res.FilterType != FilterType.Default) { return(res.FilterType); } if (Context.Language.ShowMember(this.EventDef)) { return(FilterType.Visible); } return(FilterType.Hide); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) { return(res.FilterType); } var type = TypeDef; if (type.IsNested && !Context.Language.ShowMember(type)) { return(FilterType.Hide); } return(FilterType.Visible); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var p = TreeNode.Parent; var parent = p == null ? null : p.Data as IModuleFileNode; Debug.Assert(parent != null); if (parent == null) { return(FilterType.Default); } var res = filter.GetResult(Name, parent.DnSpyFile); if (res.FilterType != FilterType.Default) { return(res.FilterType); } return(FilterType.CheckChildren); }
public T GetDnlibType <T>(string title, IFileTreeNodeFilter filter, T selectedObject, ModuleDef ownerModule) where T : class { var newFileTreeView = fileTreeViewCreator.Create(filter); try { var data = new MemberPickerVM(fileSearcherCreator, newFileTreeView, languageManager, filter, title, fileTreeView.FileManager.GetFiles()); data.SyntaxHighlight = fileTreeViewSettings.SyntaxHighlight; var win = new MemberPickerDlg(fileTreeView, newFileTreeView, imageManager); 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 { newFileTreeView.Dispose(); } }
/// <inheritdoc/> public sealed override FilterType GetFilterType(IFileTreeNodeFilter filter) => filter.GetResult(this).FilterType;
public override FilterType GetFilterType(IFileTreeNodeFilter filter) => filter.GetResult(DnSpyFile).FilterType;
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { Debug.Fail("Shouldn't be called"); return FilterType.Default; }
/// <summary> /// Constructor /// </summary> /// <param name="allowedMod">Module</param> /// <param name="filter">Filter</param> public SameAssemblyFileTreeNodeFilter(ModuleDef allowedMod, IFileTreeNodeFilter filter) : base(filter) { this.allowedAsm = allowedMod.Assembly; this.allowedMod = allowedMod; }
public IFileTreeView Create(IFileTreeNodeFilter filter) { return new FileTreeView(false, filter, themeManager, treeViewManager, languageManager, fileManagerCreator.Create(), fileTreeViewSettings, menuManager, dotNetImageManager, wpfCommandManager, resourceNodeFactory, appSettings, dnSpyFileNodeCreators.ToArray(), mefFinders.ToArray()); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) => filter.GetResult(AssemblyRef).FilterType;
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return filter.GetResult(assemblyRef).FilterType; }
public virtual FilterType GetFilterType(IFileTreeNodeFilter filter) { return filter.GetResult(this).FilterType; }
public virtual FilterType GetFilterType(IFileTreeNodeFilter filter) { return(filter.GetResult(this).FilterType); }
public SameModuleFileTreeNodeFilter(ModuleDef allowedModule, IFileTreeNodeFilter filter) : base(filter) { this.allowedModule = allowedModule; }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) => filter.GetResult(ModuleRef).FilterType;
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return(filter.GetResult(assemblyRef).FilterType); }
public ChainFileTreeNodeFilter(IFileTreeNodeFilter filter) { this.filter = filter; }
public override sealed FilterType GetFilterType(IFileTreeNodeFilter filter) { return filter.GetResult(this).FilterType; }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(PropertyDef); if (res.FilterType != FilterType.Default) return res.FilterType; if (Context.Language.ShowMember(PropertyDef)) return FilterType.Visible; return FilterType.Hide; }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) return res.FilterType; var type = TypeDef; if (type.IsNested && !Context.Language.ShowMember(type)) return FilterType.Hide; return FilterType.Visible; }
public SameAssemblyFileTreeNodeFilter(ModuleDef allowedMod, IFileTreeNodeFilter filter) : base(filter) { this.allowedAsm = allowedMod.Assembly; this.allowedMod = allowedMod; }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var p = TreeNode.Parent; var parent = p == null ? null : p.Data as IModuleFileNode; Debug.Assert(parent != null); if (parent == null) return FilterType.Default; var res = filter.GetResult(Name, parent.DnSpyFile); if (res.FilterType != FilterType.Default) return res.FilterType; return FilterType.CheckChildren; }
public MemberPickerVM(IFileSearcherCreator fileSearcherCreator, IFileTreeView fileTreeView, ILanguageManager languageManager, IFileTreeNodeFilter filter, string title, IEnumerable<IDnSpyFile> assemblies) { this.title = title; this.fileSearcherCreator = fileSearcherCreator; this.languageManager = languageManager; this.fileTreeView = fileTreeView; this.language = languageManager.SelectedLanguage; this.filter = filter; this.delayedSearch = new DelayedAction(DEFAULT_DELAY_SEARCH_MS, DelayStartSearch); this.searchResults = new ObservableCollection<ISearchResult>(); this.searchResultsCollectionView = (ListCollectionView)CollectionViewSource.GetDefaultView(searchResults); this.searchResultsCollectionView.CustomSort = new SearchResult_Comparer(); foreach (var file in assemblies) fileTreeView.FileManager.ForceAdd(file, false, null); fileTreeView.FileManager.CollectionChanged += (s, e) => Restart(); this.CaseSensitive = false; this.MatchWholeWords = false; this.MatchAnySearchTerm = false; RefreshTreeView(); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return filter.GetResult(DnSpyFile).FilterType; }
/// <inheritdoc/> public virtual FilterType GetFilterType(IFileTreeNodeFilter filter) => filter.GetResult(this).FilterType;
public FileTreeView(bool isGlobal, IFileTreeNodeFilter filter, IThemeManager themeManager, ITreeViewManager treeViewManager, ILanguageManager languageManager, IFileManager fileManager, IFileTreeViewSettings fileTreeViewSettings, IMenuManager menuManager, IDotNetImageManager dotNetImageManager, IWpfCommandManager wpfCommandManager, IResourceNodeFactory resourceNodeFactory, IAppSettings appSettings, [ImportMany] IEnumerable <Lazy <IDnSpyFileNodeCreator, IDnSpyFileNodeCreatorMetadata> > dnSpyFileNodeCreators, [ImportMany] IEnumerable <Lazy <IFileTreeNodeDataFinder, IFileTreeNodeDataFinderMetadata> > mefFinders) { this.languageManager = languageManager; this.themeManager = themeManager; this.fileTreeViewSettings = fileTreeViewSettings; this.appSettings = appSettings; this.context = new FileTreeNodeDataContext(this, resourceNodeFactory, filter ?? FilterNothingFileTreeNodeFilter.Instance) { SyntaxHighlight = fileTreeViewSettings.SyntaxHighlight, SingleClickExpandsChildren = fileTreeViewSettings.SingleClickExpandsTreeViewChildren, ShowAssemblyVersion = fileTreeViewSettings.ShowAssemblyVersion, ShowAssemblyPublicKeyToken = fileTreeViewSettings.ShowAssemblyPublicKeyToken, ShowToken = fileTreeViewSettings.ShowToken, Language = languageManager.SelectedLanguage, UseNewRenderer = appSettings.UseNewRenderer_FileTreeView, DeserializeResources = fileTreeViewSettings.DeserializeResources, CanDragAndDrop = isGlobal, }; var options = new TreeViewOptions { AllowDrop = true, IsVirtualizing = true, VirtualizationMode = VirtualizationMode.Recycling, TreeViewListener = this, RootNode = new RootNode { DropNodes = OnDropNodes, DropFiles = OnDropFiles, }, }; this.fileTreeNodeGroups = new FileTreeNodeGroups(); this.dnSpyFileNodeCreators = dnSpyFileNodeCreators.OrderBy(a => a.Metadata.Order).ToArray(); this.treeView = treeViewManager.Create(new Guid(TVConstants.FILE_TREEVIEW_GUID), options); this.fileManager = fileManager; this.dotNetImageManager = dotNetImageManager; var dispatcher = Dispatcher.CurrentDispatcher; this.fileManager.SetDispatcher(a => { if (!dispatcher.HasShutdownFinished && !dispatcher.HasShutdownStarted) { bool callInvoke; lock (actionsToCall) { actionsToCall.Add(a); callInvoke = actionsToCall.Count == 1; } if (callInvoke) { // Always notify with a delay because adding stuff to the tree view could // cause some problems with the tree view or the list box it derives from. dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(CallActions)); } } }); fileManager.CollectionChanged += FileManager_CollectionChanged; languageManager.LanguageChanged += LanguageManager_LanguageChanged; themeManager.ThemeChanged += ThemeManager_ThemeChanged; fileTreeViewSettings.PropertyChanged += FileTreeViewSettings_PropertyChanged; appSettings.PropertyChanged += AppSettings_PropertyChanged; this.wpfCommands = wpfCommandManager.GetCommands(CommandConstants.GUID_FILE_TREEVIEW); if (isGlobal) { menuManager.InitializeContextMenu((FrameworkElement)this.treeView.UIObject, new Guid(MenuConstants.GUIDOBJ_FILES_TREEVIEW_GUID), new GuidObjectsCreator(this.treeView)); wpfCommandManager.Add(CommandConstants.GUID_FILE_TREEVIEW, (UIElement)treeView.UIObject); } this.nodeFinders = mefFinders.OrderBy(a => a.Metadata.Order).ToArray(); InitializeFileTreeNodeGroups(); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return(filter.GetResult(DnSpyFile.AssemblyDef).FilterType); }
public IFileTreeView Create(IFileTreeNodeFilter filter) => new FileTreeView(false, filter, themeManager, treeViewManager, languageManager, fileManagerProvider.Create(), fileTreeViewSettings, menuManager, dotNetImageManager, wpfCommandManager, resourceNodeFactory, appSettings, dnSpyFileNodeProviders.ToArray(), mefFinders.ToArray());
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { Debug.Fail("Shouldn't be called"); return(FilterType.Default); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return(filter.GetResult(this).FilterType); }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { return filter.GetResult(ModuleRef).FilterType; }
public override FilterType GetFilterType(IFileTreeNodeFilter filter) { var res = filter.GetResult(this); if (res.FilterType != FilterType.Default) return res.FilterType; return FilterType.CheckChildren; }