示例#1
0
 SwitchToThreadNewTabThreadsCtxMenuCommand(Lazy <ITheDebugger> theDebugger, Lazy <IThreadsContent> threadsContent, Lazy <IStackFrameManager> stackFrameManager, IFileTabManager fileTabManager, Lazy <IModuleLoader> moduleLoader)
     : base(theDebugger, threadsContent)
 {
     this.stackFrameManager = stackFrameManager;
     this.fileTabManager    = fileTabManager;
     this.moduleLoader      = moduleLoader;
 }
示例#2
0
 static void Execute(IFileTabManager fileTabManager, ResourceRef resRef)
 {
     if (resRef == null)
         return;
     var modNode = fileTabManager.FileTreeView.FindNode(resRef.Module);
     Debug.Assert(modNode != null);
     if (modNode == null)
         return;
     modNode.TreeNode.EnsureChildrenLoaded();
     var resDirNode = modNode.TreeNode.DataChildren.FirstOrDefault(a => a is IResourcesFolderNode);
     Debug.Assert(resDirNode != null);
     if (resDirNode == null)
         return;
     resDirNode.TreeNode.EnsureChildrenLoaded();
     var resSetNode = resDirNode.TreeNode.DataChildren.FirstOrDefault(a => a is IResourceElementSetNode && ((IResourceElementSetNode)a).Name == resRef.Filename);
     Debug.Assert(resSetNode != null);
     if (resSetNode == null)
         return;
     resSetNode.TreeNode.EnsureChildrenLoaded();
     var resNode = resSetNode.TreeNode.DataChildren.FirstOrDefault(a => a is IResourceElementNode && ((IResourceElementNode)a).Name == resRef.ResourceName);
     Debug.Assert(resNode != null);
     if (resNode == null)
         return;
     fileTabManager.FollowReference(resNode);
 }
示例#3
0
 AboutScreenMenuItem(IFileTabManager fileTabManager, IAppWindow appWindow, IExtensionManager extensionManager, IContentTypeRegistryService contentTypeRegistryService)
 {
     this.fileTabManager   = fileTabManager;
     this.appWindow        = appWindow;
     this.extensionManager = extensionManager;
     this.aboutContentType = contentTypeRegistryService.GetContentType(ContentTypes.AboutDnSpy);
 }
示例#4
0
 GoToSourceCallStackCtxMenuCommand(Lazy <ITheDebugger> theDebugger, Lazy <ICallStackContent> callStackContent, IFileTabManager fileTabManager, Lazy <IModuleLoader> moduleLoader, IModuleIdProvider moduleIdProvider)
     : base(theDebugger, callStackContent)
 {
     this.fileTabManager   = fileTabManager;
     this.moduleLoader     = moduleLoader;
     this.moduleIdProvider = moduleIdProvider;
 }
示例#5
0
 internal static ModuleDef GetCurrentModule(IFileTabManager fileTabManager)
 {
     var tab = fileTabManager.ActiveTab;
     if (tab == null)
         return null;
     return tab.Content.Nodes.FirstOrDefault().GetModule();
 }
示例#6
0
 AllTabsMenuItemCommand(IFileTabManager fileTabManager, ISaveManager saveManager, ITabsVMSettings tabsVMSettings, IAppWindow appWindow)
     : base(fileTabManager)
 {
     this.saveManager    = saveManager;
     this.tabsVMSettings = tabsVMSettings;
     this.appWindow      = appWindow;
 }
示例#7
0
 DocumentSaver(Lazy <IUndoCommandManager> undoCommandManager, Lazy <IMmapDisabler> mmapDisabler, IFileTabManager fileTabManager, IAppWindow appWindow)
 {
     this.undoCommandManager = undoCommandManager;
     this.mmapDisabler       = mmapDisabler;
     this.fileTabManager     = fileTabManager;
     this.appWindow          = appWindow;
 }
示例#8
0
 SwitchToFrameNewTabCallStackCtxMenuCommand(Lazy <ITheDebugger> theDebugger, Lazy <ICallStackContent> callStackContent, Lazy <IStackFrameManager> stackFrameManager, IFileTabManager fileTabManager, Lazy <IModuleLoader> moduleLoader)
     : base(theDebugger, callStackContent)
 {
     this.stackFrameManager = stackFrameManager;
     this.fileTabManager    = fileTabManager;
     this.moduleLoader      = moduleLoader;
 }
        public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref)
        {
            var node = @ref as IFileTreeNodeData;

            if (node != null)
            {
                return(Create(node));
            }
            var nsRef = @ref as NamespaceRef;

            if (nsRef != null)
            {
                return(Create(nsRef));
            }
            var file = @ref as IDnSpyFile;

            if (file != null)
            {
                return(Create(file));
            }
            var asm = @ref as AssemblyDef;

            if (asm != null)
            {
                return(Create(asm));
            }
            var mod = @ref as ModuleDef;

            if (mod != null)
            {
                return(Create(mod));
            }
            return(null);
        }
示例#10
0
 GoToSourceNewTabBreakpointCtxMenuCommand(Lazy <IBreakpointsContent> breakpointsContent, Lazy <IModuleLoader> moduleLoader, IFileTabManager fileTabManager, IModuleIdProvider moduleIdProvider)
     : base(breakpointsContent)
 {
     this.moduleLoader     = moduleLoader;
     this.fileTabManager   = fileTabManager;
     this.moduleIdProvider = moduleIdProvider;
 }
示例#11
0
		CommandLoader(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager,
			DeleteResourceCommand.EditMenuCommand removeCmd1,
			DeleteResourceElementCommand.EditMenuCommand removeCmd2,
			DeleteResourceCommand.CodeCommand removeCmd3,
			DeleteResourceElementCommand.CodeCommand removeCmd4,
			ResourceSettingsCommand.EditMenuCommand settingsCmd10,
			ResourceSettingsCommand.CodeCommand settingsCmd11,
			ResourceElementSettingsCommand.EditMenuCommand settingsCmd20,
			ResourceElementSettingsCommand.CodeCommand settingsCmd21,
			ImageResourceElementSettingsCommand.EditMenuCommand settingsCmd30,
			ImageResourceElementSettingsCommand.CodeCommand settingsCmd31,
			SerializedImageResourceElementSettingsCommand.EditMenuCommand settingsCmd40,
			SerializedImageResourceElementSettingsCommand.CodeCommand settingsCmd41,
			SerializedImageListStreamerResourceElementSettingsCommand.EditMenuCommand settingsCmd50,
			SerializedImageListStreamerResourceElementSettingsCommand.CodeCommand settingsCmd51) {
			wpfCommandManager.AddRemoveCommand(removeCmd1);
			wpfCommandManager.AddRemoveCommand(removeCmd2);
			wpfCommandManager.AddRemoveCommand(removeCmd3, fileTabManager);
			wpfCommandManager.AddRemoveCommand(removeCmd4, fileTabManager);
			wpfCommandManager.AddSettingsCommand(fileTabManager, settingsCmd10, settingsCmd11);
			wpfCommandManager.AddSettingsCommand(fileTabManager, settingsCmd20, settingsCmd21);
			wpfCommandManager.AddSettingsCommand(fileTabManager, settingsCmd30, settingsCmd31);
			wpfCommandManager.AddSettingsCommand(fileTabManager, settingsCmd40, settingsCmd41);
			wpfCommandManager.AddSettingsCommand(fileTabManager, settingsCmd50, settingsCmd51);
		}
示例#12
0
		public static bool GoToIL(IFileTabManager fileTabManager, IDnSpyFile file, uint token, uint ilOffset, bool newTab) {
			if (file == null)
				return false;

			var method = file.ModuleDef.ResolveToken(token) as MethodDef;
			if (method == null)
				return false;

			var serMod = SerializedDnModuleCreator.Create(fileTabManager.FileTreeView,  method.Module);
			var key = new SerializedDnToken(serMod, method.MDToken);

			bool found = fileTabManager.FileTreeView.FindNode(method.Module) != null;
			if (found) {
				fileTabManager.FollowReference(method, newTab, true, e => {
					Debug.Assert(e.Tab.UIContext is ITextEditorUIContext);
					if (e.Success && !e.HasMovedCaret) {
						MoveCaretTo(e.Tab.UIContext as ITextEditorUIContext, key, ilOffset);
						e.HasMovedCaret = true;
					}
				});
				return true;
			}

			Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
				fileTabManager.FollowReference(method, newTab, true, e => {
					Debug.Assert(e.Tab.UIContext is ITextEditorUIContext);
					if (e.Success && !e.HasMovedCaret) {
						MoveCaretTo(e.Tab.UIContext as ITextEditorUIContext, key, ilOffset);
						e.HasMovedCaret = true;
					}
				});
			}));
			return true;
		}
示例#13
0
 GoToModuleNewTabModulesCtxMenuCommand(Lazy <ITheDebugger> theDebugger, Lazy <IModulesContent> modulesContent, IFileTabManager fileTabManager, Lazy <IModuleLoader> moduleLoader, Lazy <IInMemoryModuleManager> inMemoryModuleManager)
     : base(theDebugger, modulesContent)
 {
     this.fileTabManager        = fileTabManager;
     this.moduleLoader          = moduleLoader;
     this.inMemoryModuleManager = inMemoryModuleManager;
 }
示例#14
0
 internal static void GoTo(Lazy <IStackFrameManager> stackFrameManager, IFileTabManager fileTabManager, Lazy <IModuleLoader> moduleLoader, ThreadsCtxMenuContext context, bool newTab)
 {
     if (context.SelectedItems.Length == 0)
     {
         return;
     }
     GoTo(fileTabManager, moduleLoader.Value, stackFrameManager.Value, context.SelectedItems[0], newTab);
 }
示例#15
0
 internal static void Execute(IStackFrameManager stackFrameManager, IFileTabManager fileTabManager, IModuleLoader moduleLoader, CallStackFrameVM vm, bool newTab)
 {
     if (vm != null)
     {
         stackFrameManager.SelectedFrameNumber = vm.Index;
         FrameUtils.GoTo(fileTabManager, moduleLoader, vm.Frame, newTab);
     }
 }
示例#16
0
文件: Commands.cs 项目: 0x53A/dnSpy
        GoToCommand(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager, IMessageBoxManager messageBoxManager)
        {
            this.fileTabManager    = fileTabManager;
            this.messageBoxManager = messageBoxManager;
            var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);

            cmds.Add(GoToRoutedCommand, Execute, CanExecute, ModifierKeys.Control, Key.G);
        }
示例#17
0
 SaveModuleCommand(IFileTabManager fileTabManager, Lazy <IUndoCommandManager> undoCommandManager, Lazy <IHexDocumentManager> hexDocumentManager, Lazy <IDocumentSaver> documentSaver)
     : base(fileTabManager.FileTreeView)
 {
     this.fileTabManager     = fileTabManager;
     this.undoCommandManager = undoCommandManager;
     this.hexDocumentManager = hexDocumentManager;
     this.documentSaver      = documentSaver;
 }
示例#18
0
 NavigationCommandInstaller(IFileTabManager fileTabManager, IAppWindow appWindow)
 {
     this.fileTabManager = fileTabManager;
     Debug.Assert(Application.Current != null && Application.Current.MainWindow != null);
     var cmds = appWindow.MainWindowCommands;
     cmds.Add(NavigationCommands.BrowseBack, new RelayCommand(a => BrowseBack(), a => CanBrowseBack));
     cmds.Add(NavigationCommands.BrowseForward, new RelayCommand(a => BrowseForward(), a => CanBrowseForward));
 }
示例#19
0
		public static bool GoTo(IFileTabManager fileTabManager, IModuleLoader moduleLoader, CorFrame frame, bool newTab) {
			if (GoToIL(fileTabManager, moduleLoader, frame, newTab))
				return true;

			//TODO: eg. native frame or internal frame

			return false;
		}
示例#20
0
        CopyILBytesLoader(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager, Lazy <IMethodAnnotations> methodAnnotations)
        {
            this.fileTabManager    = fileTabManager;
            this.methodAnnotations = methodAnnotations;
            var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);

            cmds.Add(CopyILBytesCommand, CopyILBytesExecuted, CopyILBytesCanExecute, ModifierKeys.Control, Key.B);
        }
示例#21
0
 SaveModuleCommand(IFileTabManager fileTabManager, Lazy<IUndoCommandManager> undoCommandManager, Lazy<IHexDocumentManager> hexDocumentManager, Lazy<IDocumentSaver> documentSaver)
     : base(fileTabManager.FileTreeView)
 {
     this.fileTabManager = fileTabManager;
     this.undoCommandManager = undoCommandManager;
     this.hexDocumentManager = hexDocumentManager;
     this.documentSaver = documentSaver;
 }
示例#22
0
 static void ExecuteInternal(IFileTabManager fileTabManager, Lazy <IInMemoryModuleManager> inMemoryModuleManager, ModulesCtxMenuContext context, bool newTab)
 {
     if (context == null || context.SelectedItems.Length == 0)
     {
         return;
     }
     ExecuteInternal(fileTabManager, inMemoryModuleManager, context.SelectedItems[0], newTab);
 }
示例#23
0
 FileListLoader(IAppWindow appWindow, FileListManager fileListManager, IFileTabManager fileTabManager, FileTabSerializer fileTabSerializer, [ImportMany] IEnumerable <Lazy <IFileListListener, IFileListListenerMetadata> > mefListeners)
 {
     this.fileListManager        = fileListManager;
     this.fileTabManager         = fileTabManager;
     this.fileTabSerializer      = fileTabSerializer;
     this.listeners              = mefListeners.OrderBy(a => a.Metadata.Order).ToArray();
     appWindow.MainWindowClosed += AppWindow_MainWindowClosed;
 }
示例#24
0
文件: TabsVM.cs 项目: lovebanyi/dnSpy
 public TabsVM(IFileTabManager fileTabManager, ISaveManager saveManager, ITabsVMSettings tabsVMSettings)
 {
     this.fileTabManager = fileTabManager;
     this.saveManager = saveManager;
     this.tabsVMSettings = tabsVMSettings;
     this.tabsList = new ObservableCollection<TabVM>(fileTabManager.SortedTabs.Select(a => new TabVM(this, a)));
     this.SelectedItem = tabsList.Count == 0 ? null : tabsList[0];
     InitializeSaveText();
 }
示例#25
0
 public TabsVM(IFileTabManager fileTabManager, ISaveManager saveManager, ITabsVMSettings tabsVMSettings)
 {
     this.fileTabManager = fileTabManager;
     this.saveManager    = saveManager;
     this.Settings       = tabsVMSettings;
     this.tabsList       = new ObservableCollection <TabVM>(fileTabManager.SortedTabs.Select(a => new TabVM(this, a)));
     this.SelectedItem   = tabsList.Count == 0 ? null : tabsList[0];
     InitializeSaveText();
 }
示例#26
0
        static void ExecuteInternal(IFileTabManager fileTabManager, MDTableContext context)
        {
            var @ref = GetAddressReference(context);

            if (@ref != null)
            {
                fileTabManager.FollowReference(@ref);
            }
        }
示例#27
0
		StackFrameManager(ITheDebugger theDebugger, IFileTabManager fileTabManager, ITextLineObjectManager textLineObjectManager, Lazy<IModuleLoader> moduleLoader, ITextEditorUIContextManager textEditorUIContextManager) {
			this.theDebugger = theDebugger;
			this.fileTabManager = fileTabManager;
			this.textLineObjectManager = textLineObjectManager;
			this.moduleLoader = moduleLoader;
			textEditorUIContextManager.Add(OnTextEditorUIContextEvent, TextEditorUIContextManagerConstants.ORDER_DEBUGGER_CALLSTACK);
			theDebugger.OnProcessStateChanged += TheDebugger_OnProcessStateChanged;
			theDebugger.ProcessRunning += TheDebugger_ProcessRunning;
		}
示例#28
0
 internal static void GoTo(IFileTabManager fileTabManager, IModuleLoader moduleLoader, IStackFrameManager stackFrameManager, ThreadVM vm, bool newTab)
 {
     if (vm == null)
     {
         return;
     }
     stackFrameManager.SelectedThread = vm.Thread;
     FrameUtils.GoTo(fileTabManager, moduleLoader, vm.Thread.AllFrames.FirstOrDefault(f => f.IsILFrame), newTab);
 }
		FileTabReferenceResult Create(TokenReference tokRef, IFileTabManager fileTabManager) {
			var node = HexFileTreeNodeDataFinder.FindNode(fileTabManager.FileTreeView, tokRef);
			if (node == null)
				return null;
			var content = fileTabManager.TryCreateContent(new IFileTreeNodeData[] { node });
			if (content == null)
				return null;
			return new FileTabReferenceResult(content);
		}
示例#30
0
        NavigationCommandInstaller(IFileTabManager fileTabManager, IAppWindow appWindow)
        {
            this.fileTabManager = fileTabManager;
            Debug.Assert(Application.Current != null && Application.Current.MainWindow != null);
            var cmds = appWindow.MainWindowCommands;

            cmds.Add(NavigationCommands.BrowseBack, new RelayCommand(a => BrowseBack(), a => CanBrowseBack));
            cmds.Add(NavigationCommands.BrowseForward, new RelayCommand(a => BrowseForward(), a => CanBrowseForward));
        }
示例#31
0
		InMemoryModuleManager(ITheDebugger theDebugger, IFileTabManager fileTabManager, Lazy<IMethodAnnotations> methodAnnotations, IAppWindow appWindow) {
			this.fileTabManager = fileTabManager;
			this.fileTreeView = fileTabManager.FileTreeView;
			this.fileManager = this.fileTreeView.FileManager;
			this.appWindow = appWindow;
			this.methodAnnotations = methodAnnotations;
			this.theDebugger = theDebugger;
			theDebugger.OnProcessStateChanged_First += TheDebugger_OnProcessStateChanged_First;
		}
示例#32
0
 static ITokenResolver GetResolver(IFileTabManager fileTabManager, out IFileTab tab)
 {
     tab = fileTabManager.ActiveTab;
     if (tab == null)
     {
         return(null);
     }
     return(tab.Content.Nodes.FirstOrDefault().GetModule());
 }
        public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref)
        {
            var textRef = @ref as TextReference;

            if (textRef != null)
            {
                @ref = textRef.Reference;
            }
            var node = @ref as IFileTreeNodeData;

            if (node != null)
            {
                return(Create(node));
            }
            var nsRef = @ref as NamespaceRef;

            if (nsRef != null)
            {
                return(Create(nsRef));
            }
            var nsRef2 = @ref as NamespaceReference;

            if (nsRef2 != null)
            {
                return(Create(nsRef2));
            }
            var file = @ref as IDnSpyFile;

            if (file != null)
            {
                return(Create(file));
            }
            var asm = @ref as AssemblyDef;

            if (asm != null)
            {
                return(Create(asm));
            }
            var mod = @ref as ModuleDef;

            if (mod != null)
            {
                return(Create(mod));
            }
            var asmRef = @ref as IAssembly;

            if (asmRef != null)
            {
                file = fileTreeView.FileManager.Resolve(asmRef, null);
                if (file != null)
                {
                    return(Create(file));
                }
            }
            return(null);
        }
		public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref) {
			var addrRef = @ref as AddressReference;
			if (addrRef == null) {
				var codeRef = @ref as CodeReference;
				addrRef = codeRef == null ? null : codeRef.Reference as AddressReference;
			}
			if (addrRef != null)
				return Create(addrRef, fileTabManager.FileTreeView);
			return null;
		}
示例#35
0
		public static bool GoToIL(IFileTabManager fileTabManager, IModuleLoader moduleLoader, CorFrame frame, bool newTab) {
			if (!CanGoToIL(frame))
				return false;

			var func = frame.Function;
			if (func == null)
				return false;

			return DebugUtils.GoToIL(fileTabManager, moduleLoader.LoadModule(func.Module, true), frame.Token, frame.GetILOffset(moduleLoader), newTab);
		}
示例#36
0
        InstallTabCommands(IAppWindow appWindow, IFileTabManager fileTabManager)
        {
            this.fileTabManager = fileTabManager;
            var cmds = appWindow.MainWindowCommands;

            cmds.Add(new RoutedCommand("OpenNewTab", typeof(InstallTabCommands)), (s, e) => OpenNewTab(), (s, e) => e.CanExecute         = CanOpenNewTab, ModifierKeys.Control, Key.T);
            cmds.Add(new RoutedCommand("CloseActiveTab", typeof(InstallTabCommands)), (s, e) => CloseActiveTab(), (s, e) => e.CanExecute = CanCloseActiveTab, ModifierKeys.Control, Key.F4);
            cmds.Add(new RoutedCommand("SelectNextTab", typeof(InstallTabCommands)), (s, e) => SelectNextTab(), (s, e) => e.CanExecute   = CanSelectNextTab, ModifierKeys.Control, Key.Tab);
            cmds.Add(new RoutedCommand("SelectPrevTab", typeof(InstallTabCommands)), (s, e) => SelectPrevTab(), (s, e) => e.CanExecute   = CanSelectPrevTab, ModifierKeys.Control | ModifierKeys.Shift, Key.Tab);
        }
示例#37
0
		public static void AddSettingsCommand(this IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager, EditMenuHandler treeViewCmd, CodeContextMenuHandler textEditorCmd) {
			if (treeViewCmd != null) {
				var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_FILE_TREEVIEW);
				cmds.Add(SettingsRoutedCommand, new EditMenuHandlerCommandProxy(treeViewCmd));
			}
			if (textEditorCmd != null) {
				var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);
				cmds.Add(SettingsRoutedCommand, new CodeContextMenuHandlerCommandProxy(textEditorCmd, fileTabManager), ModifierKeys.Alt, Key.Enter);
			}
		}
示例#38
0
 StackFrameManager(ITheDebugger theDebugger, IFileTabManager fileTabManager, ITextLineObjectManager textLineObjectManager, Lazy <IModuleLoader> moduleLoader, ITextEditorUIContextManager textEditorUIContextManager)
 {
     this.theDebugger           = theDebugger;
     this.fileTabManager        = fileTabManager;
     this.textLineObjectManager = textLineObjectManager;
     this.moduleLoader          = moduleLoader;
     textEditorUIContextManager.Add(OnTextEditorUIContextEvent, TextEditorUIContextManagerConstants.ORDER_DEBUGGER_CALLSTACK);
     theDebugger.OnProcessStateChanged += TheDebugger_OnProcessStateChanged;
     theDebugger.ProcessRunning        += TheDebugger_ProcessRunning;
 }
示例#39
0
            static MethodDef GetEntryPoint(IFileTabManager fileTabManager, IMenuItemContext context)
            {
                if (context.CreatorObject.Guid != new Guid(MenuConstants.GUIDOBJ_TEXTEDITORCONTROL_GUID))
                {
                    return(null);
                }
                var module = GetCurrentModule(fileTabManager);

                return(module == null ? null : module.EntryPoint as MethodDef);
            }
示例#40
0
 InMemoryModuleManager(ITheDebugger theDebugger, IFileTabManager fileTabManager, Lazy <IMethodAnnotations> methodAnnotations, IAppWindow appWindow)
 {
     this.fileTabManager                 = fileTabManager;
     this.fileTreeView                   = fileTabManager.FileTreeView;
     this.fileManager                    = this.fileTreeView.FileManager;
     this.appWindow                      = appWindow;
     this.methodAnnotations              = methodAnnotations;
     this.theDebugger                    = theDebugger;
     theDebugger.OnProcessStateChanged2 += TheDebugger_OnProcessStateChanged2;
 }
		public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref) {
			var tokRef = @ref as TokenReference;
			if (tokRef == null) {
				var codeRef = @ref as CodeReference;
				tokRef = codeRef == null ? null : codeRef.Reference as TokenReference;
			}
			if (tokRef != null)
				return Create(tokRef, fileTabManager);
			return null;
		}
示例#42
0
        BreakpointsContent(IWpfCommandManager wpfCommandManager, Lazy <IBreakpointsVM> breakpointsVM, Lazy <IModuleLoader> moduleLoader, IFileTabManager fileTabManager)
        {
            this.breakpointsControl = new BreakpointsControl();
            this.moduleLoader       = moduleLoader;
            this.fileTabManager     = fileTabManager;
            this.vmBreakpoints      = breakpointsVM;

            wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_BREAKPOINTS_CONTROL, breakpointsControl);
            wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_BREAKPOINTS_LISTVIEW, breakpointsControl.ListView);
        }
示例#43
0
        internal static ModuleDef GetCurrentModule(IFileTabManager fileTabManager)
        {
            var tab = fileTabManager.ActiveTab;

            if (tab == null)
            {
                return(null);
            }
            return(tab.Content.Nodes.FirstOrDefault().GetModule());
        }
示例#44
0
		public TreeViewUpdater(IFileTabManager fileTabManager, CorModuleDefFile cmdf, IModuleFileNode node, HashSet<uint> modifiedTypes, HashSet<uint> loadedClassTokens) {
			Debug.Assert(node.DnSpyFile == cmdf);
			this.fileTabManager = fileTabManager;
			this.CorModuleDefFile = cmdf;
			this.ModuleNode = node;
			this.modifiedTypes = new HashSet<uint>(modifiedTypes);
			this.loadedClassTokens = loadedClassTokens;
			this.checkedTypes = new HashSet<TypeDef>();
			this.modNode = node;
		}
示例#45
0
 public TreeViewUpdater(IFileTabManager fileTabManager, CorModuleDefFile cmdf, IModuleFileNode node, HashSet <uint> modifiedTypes, HashSet <uint> loadedClassTokens)
 {
     Debug.Assert(node.DnSpyFile == cmdf);
     this.fileTabManager    = fileTabManager;
     this.CorModuleDefFile  = cmdf;
     this.ModuleNode        = node;
     this.modifiedTypes     = new HashSet <uint>(modifiedTypes);
     this.loadedClassTokens = loadedClassTokens;
     this.checkedTypes      = new HashSet <TypeDef>();
     this.modNode           = node;
 }
示例#46
0
        public static bool GoTo(IFileTabManager fileTabManager, IModuleLoader moduleLoader, CorFrame frame, bool newTab)
        {
            if (GoToIL(fileTabManager, moduleLoader, frame, newTab))
            {
                return(true);
            }

            //TODO: eg. native frame or internal frame

            return(false);
        }
示例#47
0
		internal static void ExecuteInternal(IFileTabManager fileTabManager) {
			IFileTab tab;
			var resolver = GetResolver(fileTabManager, out tab);
			if (resolver == null)
				return;

			var member = AskForDef(dnSpy_Resources.GoToToken_Title, resolver);
			if (member == null)
				return;

			tab.FollowReference(member, false);
		}
示例#48
0
		ThreadsContent(IWpfCommandManager wpfCommandManager, IThreadsVM threadsVM, IThemeManager themeManager, Lazy<IStackFrameManager> stackFrameManager, IFileTabManager fileTabManager, Lazy<IModuleLoader> moduleLoader) {
			this.stackFrameManager = stackFrameManager;
			this.fileTabManager = fileTabManager;
			this.moduleLoader = moduleLoader;
			this.threadsControl = new ThreadsControl();
			this.vmThreads = threadsVM;
			this.threadsControl.DataContext = this.vmThreads;
			this.threadsControl.ThreadsListViewDoubleClick += ThreadsControl_ThreadsListViewDoubleClick;
			themeManager.ThemeChanged += ThemeManager_ThemeChanged;

			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_THREADS_CONTROL, threadsControl);
			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_THREADS_LISTVIEW, threadsControl.ListView);
		}
        public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref)
        {
            var codeRef = @ref as CodeReference;
            if (codeRef != null) {
                var result = CreateMemberRefResult(fileTabManager, codeRef.Reference);
                if (result != null)
                    return result;

                return CreateLocalRefResult(sourceContent, codeRef);
            }

            return CreateMemberRefResult(fileTabManager, @ref);
        }
示例#50
0
		ModulesContent(IWpfCommandManager wpfCommandManager, IThemeManager themeManager, IModulesVM modulesVM, IFileTabManager fileTabManager, Lazy<ModuleLoader> moduleLoader, Lazy<IInMemoryModuleManager> inMemoryModuleManager) {
			this.modulesControl = new ModulesControl();
			this.vmModules = modulesVM;
			this.fileTabManager = fileTabManager;
			this.moduleLoader = moduleLoader;
			this.inMemoryModuleManager = inMemoryModuleManager;
			this.modulesControl.DataContext = this.vmModules;
			this.modulesControl.ModulesListViewDoubleClick += ModulesControl_ModulesListViewDoubleClick;
			themeManager.ThemeChanged += ThemeManager_ThemeChanged;

			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_MODULES_CONTROL, modulesControl);
			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_MODULES_LISTVIEW, modulesControl.ListView);
		}
示例#51
0
		CallStackContent(IWpfCommandManager wpfCommandManager, IThemeManager themeManager, ICallStackVM callStackVM, Lazy<IStackFrameManager> stackFrameManager, IFileTabManager fileTabManager, Lazy<IModuleLoader> moduleLoader) {
			this.callStackControl = new CallStackControl();
			this.vmCallStack = callStackVM;
			this.stackFrameManager = stackFrameManager;
			this.fileTabManager = fileTabManager;
			this.moduleLoader = moduleLoader;
			this.callStackControl.DataContext = this.vmCallStack;
			this.callStackControl.CallStackListViewDoubleClick += CallStackControl_CallStackListViewDoubleClick;
			themeManager.ThemeChanged += ThemeManager_ThemeChanged;

			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_CALLSTACK_CONTROL, callStackControl);
			wpfCommandManager.Add(CommandConstants.GUID_DEBUGGER_CALLSTACK_LISTVIEW, callStackControl.ListView);
		}
示例#52
0
		GoToTokenLoader(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager) {
			this.fileTabManager = fileTabManager;
			var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);
			cmds.Add(GoToToken,
				(s, e) => GoToTokenCommand.ExecuteInternal(fileTabManager),
				(s, e) => e.CanExecute = GoToTokenCommand.CanExecuteInternal(fileTabManager),
				ModifierKeys.Control, Key.D);
			cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_FILE_TREEVIEW);
			cmds.Add(GoToToken,
				(s, e) => GoToTokenCommand.ExecuteInternal(fileTabManager),
				(s, e) => e.CanExecute = GoToTokenCommand.CanExecuteInternal(fileTabManager),
				ModifierKeys.Control, Key.D);
		}
 public FileTabReferenceResult Create(IFileTabManager fileTabManager, IFileTabContent sourceContent, object @ref)
 {
     var node = @ref as IFileTreeNodeData;
     if (node != null)
         return Create(node);
     var nsRef = @ref as NamespaceRef;
     if (nsRef != null)
         return Create(nsRef);
     var file = @ref as IDnSpyFile;
     if (file != null)
         return Create(file);
     var asm = @ref as AssemblyDef;
     if (asm != null)
         return Create(asm);
     var mod = @ref as ModuleDef;
     if (mod != null)
         return Create(mod);
     return null;
 }
示例#54
0
 AppWindow(IThemeManager themeManager, IImageManager imageManager, IAppSettings appSettings, ISettingsManager settingsManager, IFileTabManager fileTabManager, AppToolBar appToolBar, MainWindowControl mainWindowControl, IWpfCommandManager wpfCommandManager, ILanguageManager languageManager)
 {
     this.assemblyInformationalVersion = CalculateAssemblyInformationalVersion(GetType().Assembly);
     this.uiSettings = new UISettings(settingsManager);
     this.uiSettings.Read();
     this.appSettings = appSettings;
     this.stackedContent = new StackedContent<IStackedContentChild>(margin: new Thickness(6));
     this.themeManager = themeManager;
     themeManager.ThemeChanged += ThemeManager_ThemeChanged;
     this.imageManager = imageManager;
     this.fileTabManager = fileTabManager;
     this.statusBar = new AppStatusBar();
     this.appToolBar = appToolBar;
     this.mainWindowControl = mainWindowControl;
     this.wpfCommandManager = wpfCommandManager;
     this.languageManager = languageManager;
     this.mainWindowCommands = wpfCommandManager.GetCommands(CommandConstants.GUID_MAINWINDOW);
     this.mainWindowClosing = new WeakEventList<CancelEventArgs>();
     this.mainWindowClosed = new WeakEventList<EventArgs>();
     this.appSettings.PropertyChanged += AppSettings_PropertyChanged;
     InitializeTextFormatterProvider();
 }
示例#55
0
		AnalyzeCommandLoader(IMainToolWindowManager mainToolWindowManager, IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager, Lazy<IAnalyzerManager> analyzerManager, ILanguageManager languageManager) {
			this.mainToolWindowManager = mainToolWindowManager;
			this.fileTabManager = fileTabManager;
			this.analyzerManager = analyzerManager;
			this.languageManager = languageManager;

			var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);
			cmds.Add(AnalyzeRoutedCommand, TextEditor_Executed, TextEditor_CanExecute, ModifierKeys.Control, Key.R);
			cmds.Add(AnalyzeRoutedCommand, ShowAnalyzerExecuted, ShowAnalyzerCanExecute, ModifierKeys.Control, Key.R);

			cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_FILE_TREEVIEW);
			cmds.Add(AnalyzeRoutedCommand, FileTreeView_Executed, FileTreeView_CanExecute, ModifierKeys.Control, Key.R);
			cmds.Add(AnalyzeRoutedCommand, ShowAnalyzerExecuted, ShowAnalyzerCanExecute, ModifierKeys.Control, Key.R);

			cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_ANALYZER_TREEVIEW);
			cmds.Add(AnalyzeRoutedCommand, AnalyzerTreeView_Executed, AnalyzerTreeView_CanExecute, ModifierKeys.Control, Key.R);
			cmds.Add(AnalyzeRoutedCommand, ShowAnalyzerExecuted, ShowAnalyzerCanExecute, ModifierKeys.Control, Key.R);

			cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_SEARCH_LISTBOX);
			cmds.Add(AnalyzeRoutedCommand, SearchListBox_Executed, SearchListBox_CanExecute, ModifierKeys.Control, Key.R);
			cmds.Add(AnalyzeRoutedCommand, ShowAnalyzerExecuted, ShowAnalyzerCanExecute, ModifierKeys.Control, Key.R);
		}
示例#56
0
		BamlRefresher(BamlSettingsImpl bamlSettings, IFileTabManager fileTabManager) {
			this.fileTabManager = fileTabManager;
			bamlSettings.PropertyChanged += BamlSettings_PropertyChanged;
		}
示例#57
0
		CopyILBytesLoader(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager, Lazy<IMethodAnnotations> methodAnnotations) {
			this.fileTabManager = fileTabManager;
			this.methodAnnotations = methodAnnotations;
			var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_TEXTEDITOR_UICONTEXT);
			cmds.Add(CopyILBytesCommand, CopyILBytesExecuted, CopyILBytesCanExecute, ModifierKeys.Control, Key.B);
		}
		DecompilerAppSettingsModifiedListener(IFileTabManager fileTabManager) {
			this.fileTabManager = fileTabManager;
		}
示例#59
0
 ShowCodeEditorCommandLoader(IWpfCommandManager wpfCommandManager, IFileTabManager fileTabManager)
 {
     var cmds = wpfCommandManager.GetCommands(CommandConstants.GUID_MAINWINDOW);
     cmds.Add(ShowCodeEditorRoutedCommand,
         (s, e) => { var tab = fileTabManager.ActiveTab; if (tab != null) tab.TrySetFocus(); },
         (s, e) => e.CanExecute = fileTabManager.ActiveTab != null,
         ModifierKeys.Control | ModifierKeys.Alt, Key.D0,
         ModifierKeys.Control | ModifierKeys.Alt, Key.NumPad0,
         ModifierKeys.None, Key.F7);
     cmds.Add(ShowCodeEditorRoutedCommand, ModifierKeys.None, Key.Escape);
 }
示例#60
0
 SaveTabCtxMenuCommand(ISaveManager saveManager, IFileTabManager fileTabManager)
     : base(ApplicationCommands.Save)
 {
     this.saveManager = saveManager;
     this.fileTabManager = fileTabManager;
 }