static void Execute(ILSpyTreeNode[] nodes) { if (!CanExecute(nodes)) return; var imgRsrcElNode = (SerializedImageResourceElementTreeNode)nodes[0]; var options = new ResourceElementOptions(imgRsrcElNode.GetAsRawImage()); var data = new ImageResourceElementVM(options); var win = new ImageResourceElementDlg(); win.Title = CMD_NAME; win.DataContext = data; win.Owner = MainWindow.Instance; if (win.ShowDialog() != true) return; var opts = data.CreateResourceElementOptions(); string error; try { opts = new ResourceElementOptions(imgRsrcElNode.Serialize(opts.Create())); error = imgRsrcElNode.CheckCanUpdateData(opts.Create()); } catch (Exception ex) { error = string.Format("New data must be an image. Error: {0}", ex.Message); } if (!string.IsNullOrEmpty(error)) { MainWindow.Instance.ShowMessageBox(error); return; } UndoCommandManager.Instance.Add(new SerializedImageResourceElementSettingsCommand(imgRsrcElNode, opts)); }
static void Execute(Lazy<IUndoCommandManager> undoCommandManager, IAppWindow appWindow, IFileTreeNodeData[] nodes) { if (!CanExecute(nodes)) return; var imgRsrcElNode = (ISerializedImageResourceElementNode)nodes[0]; var options = new ResourceElementOptions(imgRsrcElNode.GetAsRawImage()); var data = new ImageResourceElementVM(options); var win = new ImageResourceElementDlg(); win.Title = dnSpy_AsmEditor_Resources.EditResourceCommand2; win.DataContext = data; win.Owner = appWindow.MainWindow; if (win.ShowDialog() != true) return; var opts = data.CreateResourceElementOptions(); string error; try { opts = new ResourceElementOptions(SerializedImageUtils.Serialize(opts.Create())); error = imgRsrcElNode.CheckCanUpdateData(opts.Create()); } catch (Exception ex) { error = string.Format(dnSpy_AsmEditor_Resources.Error_NewResourceDataMustBeImage, ex.Message); } if (!string.IsNullOrEmpty(error)) { Shared.App.MsgBox.Instance.Show(error); return; } undoCommandManager.Value.Add(new SerializedImageResourceElementSettingsCommand(imgRsrcElNode, opts)); }