static void Execute(Lazy <IUndoCommandService> undoCommandService, IAppService appService, IDocumentTreeNodeData[] nodes) { if (!CanExecute(nodes)) { return; } var ownerNode = nodes[0]; if (!(ownerNode is ITypeNode)) { ownerNode = (IDocumentTreeNodeData)ownerNode.TreeNode.Parent.Data; } var typeNode = ownerNode as ITypeNode; Debug.Assert(typeNode != null); if (typeNode == null) { throw new InvalidOperationException(); } var module = typeNode.GetModule(); Debug.Assert(module != null); if (module == null) { throw new InvalidOperationException(); } bool isInstance = !(typeNode.TypeDef.IsAbstract && typeNode.TypeDef.IsSealed); var sig = isInstance ? MethodSig.CreateInstance(module.CorLibTypes.Void) : MethodSig.CreateStatic(module.CorLibTypes.Void); var options = MethodDefOptions.Create("MyMethod", sig); if (typeNode.TypeDef.IsInterface) { options.Attributes |= MethodAttributes.Abstract | MethodAttributes.Virtual | MethodAttributes.NewSlot; } var data = new MethodOptionsVM(options, module, appService.DecompilerService, typeNode.TypeDef, null); var win = new MethodOptionsDlg(); win.Title = dnSpy_AsmEditor_Resources.CreateMethodCommand2; win.DataContext = data; win.Owner = appService.MainWindow; if (win.ShowDialog() != true) { return; } var cmd = new CreateMethodDefCommand(typeNode, data.CreateMethodDefOptions()); undoCommandService.Value.Add(cmd); appService.DocumentTabService.FollowReference(cmd.methodNode); }
static void Execute(ILSpyTreeNode[] nodes) { if (!CanExecute(nodes)) { return; } var ownerNode = nodes[0]; if (!(ownerNode is TypeTreeNode)) { ownerNode = (ILSpyTreeNode)ownerNode.Parent; } var typeNode = ownerNode as TypeTreeNode; Debug.Assert(typeNode != null); if (typeNode == null) { throw new InvalidOperationException(); } var module = ILSpyTreeNode.GetModule(typeNode); Debug.Assert(module != null); if (module == null) { throw new InvalidOperationException(); } bool isInstance = !(typeNode.TypeDef.IsAbstract && typeNode.TypeDef.IsSealed); var sig = isInstance ? MethodSig.CreateInstance(module.CorLibTypes.Void) : MethodSig.CreateStatic(module.CorLibTypes.Void); var options = MethodDefOptions.Create("MyMethod", sig); if (typeNode.TypeDef.IsInterface) { options.Attributes |= MethodAttributes.Abstract | MethodAttributes.Virtual | MethodAttributes.NewSlot; } var data = new MethodOptionsVM(options, module, MainWindow.Instance.CurrentLanguage, typeNode.TypeDef, null); var win = new MethodOptionsDlg(); win.Title = CMD_NAME; win.DataContext = data; win.Owner = MainWindow.Instance; if (win.ShowDialog() != true) { return; } var cmd = new CreateMethodDefCommand(typeNode, data.CreateMethodDefOptions()); UndoCommandManager.Instance.Add(cmd); MainWindow.Instance.JumpToReference(cmd.methodNode); }
static void Execute(ILSpyTreeNode[] nodes) { if (!CanExecute(nodes)) return; var ownerNode = nodes[0]; if (!(ownerNode is TypeTreeNode)) ownerNode = (ILSpyTreeNode)ownerNode.Parent; var typeNode = ownerNode as TypeTreeNode; Debug.Assert(typeNode != null); if (typeNode == null) throw new InvalidOperationException(); var module = ILSpyTreeNode.GetModule(typeNode); Debug.Assert(module != null); if (module == null) throw new InvalidOperationException(); bool isInstance = !(typeNode.TypeDef.IsAbstract && typeNode.TypeDef.IsSealed); var sig = isInstance ? MethodSig.CreateInstance(module.CorLibTypes.Void) : MethodSig.CreateStatic(module.CorLibTypes.Void); var options = MethodDefOptions.Create("MyMethod", sig); if (typeNode.TypeDef.IsInterface) options.Attributes |= MethodAttributes.Abstract | MethodAttributes.Virtual | MethodAttributes.NewSlot; var data = new MethodOptionsVM(options, module, MainWindow.Instance.CurrentLanguage, typeNode.TypeDef, null); var win = new MethodOptionsDlg(); win.Title = CMD_NAME; win.DataContext = data; win.Owner = MainWindow.Instance; if (win.ShowDialog() != true) return; var cmd = new CreateMethodDefCommand(typeNode, data.CreateMethodDefOptions()); UndoCommandManager.Instance.Add(cmd); MainWindow.Instance.JumpToReference(cmd.methodNode); }
public override void Execute(CodeContext context) => CreateMethodDefCommand.Execute(undoCommandService, appService, context.Nodes);
public override bool IsVisible(AsmEditorContext context) => CreateMethodDefCommand.CanExecute(context.Nodes);
public override void Execute(CodeContext context) { CreateMethodDefCommand.Execute(undoCommandManager, appWindow, context.Nodes); }
static void Execute(Lazy<IUndoCommandService> undoCommandService, IAppService appService, DocumentTreeNodeData[] nodes) { if (!CanExecute(nodes)) return; var ownerNode = nodes[0]; if (!(ownerNode is TypeNode)) ownerNode = (DocumentTreeNodeData)ownerNode.TreeNode.Parent.Data; var typeNode = ownerNode as TypeNode; Debug.Assert(typeNode != null); if (typeNode == null) throw new InvalidOperationException(); var module = typeNode.GetModule(); Debug.Assert(module != null); if (module == null) throw new InvalidOperationException(); bool isInstance = !(typeNode.TypeDef.IsAbstract && typeNode.TypeDef.IsSealed); var sig = isInstance ? MethodSig.CreateInstance(module.CorLibTypes.Void) : MethodSig.CreateStatic(module.CorLibTypes.Void); var options = MethodDefOptions.Create("MyMethod", sig); if (typeNode.TypeDef.IsInterface) options.Attributes |= MethodAttributes.Abstract | MethodAttributes.Virtual | MethodAttributes.NewSlot; var data = new MethodOptionsVM(options, module, appService.DecompilerService, typeNode.TypeDef, null); var win = new MethodOptionsDlg(); win.Title = dnSpy_AsmEditor_Resources.CreateMethodCommand2; win.DataContext = data; win.Owner = appService.MainWindow; if (win.ShowDialog() != true) return; var cmd = new CreateMethodDefCommand(typeNode, data.CreateMethodDefOptions()); undoCommandService.Value.Add(cmd); appService.DocumentTabService.FollowReference(cmd.methodNode); }
protected override void Execute(Context ctx) { CreateMethodDefCommand.Execute(ctx.Nodes); }
protected override void ExecuteInternal(ILSpyTreeNode[] nodes) { CreateMethodDefCommand.Execute(nodes); }
protected override bool CanExecuteInternal(ILSpyTreeNode[] nodes) { return(CreateMethodDefCommand.CanExecute(nodes)); }
public override void Execute(AsmEditorContext context) => CreateMethodDefCommand.Execute(undoCommandManager, appWindow, context.Nodes);