/// <summary> /// Saves all assemblies and returns true if all assemblies were saved to disk /// </summary> /// <param name="asms">All assemblies to save</param> /// <returns></returns> public static bool SaveAssemblies(IEnumerable<LoadedAssembly> asms) { var asmsAry = asms.ToArray(); if (asmsAry.Length == 0) return true; if (asmsAry.Length == 1) { var optsData = new SaveModuleOptionsVM(asmsAry[0].ModuleDefinition); var optsWin = new SaveModuleOptions(); optsWin.Owner = MainWindow.Instance; optsWin.DataContext = optsData; var res = optsWin.ShowDialog(); if (res != true) return false; var data = new SaveMultiModuleVM(optsData); var win = new SaveSingleModule(); win.Owner = MainWindow.Instance; win.DataContext = data; data.Save(); win.ShowDialog(); return MarkAsSaved(data, asmsAry); } else { var data = new SaveMultiModuleVM(asmsAry.Select(a => a.ModuleDefinition)); var win = new SaveMultiModule(); win.Owner = MainWindow.Instance; win.DataContext = data; win.ShowDialog(); return MarkAsSaved(data, asmsAry); } }
/// <summary> /// Saves all assemblies and returns true if all assemblies were saved to disk /// </summary> /// <param name="asms">All assemblies to save</param> /// <returns></returns> public static bool SaveAssemblies(IEnumerable <LoadedAssembly> asms) { var asmsAry = asms.ToArray(); if (asmsAry.Length == 0) { return(true); } if (asmsAry.Length == 1) { var optsData = new SaveModuleOptionsVM(asmsAry[0].ModuleDefinition); var optsWin = new SaveModuleOptions(); optsWin.Owner = MainWindow.Instance; optsWin.DataContext = optsData; var res = optsWin.ShowDialog(); if (res != true) { return(false); } var data = new SaveMultiModuleVM(optsData); var win = new SaveSingleModule(); win.Owner = MainWindow.Instance; win.DataContext = data; data.Save(); win.ShowDialog(); return(MarkAsSaved(data, asmsAry)); } else { var data = new SaveMultiModuleVM(asmsAry.Select(a => a.ModuleDefinition)); var win = new SaveMultiModule(); win.Owner = MainWindow.Instance; win.DataContext = data; win.ShowDialog(); return(MarkAsSaved(data, asmsAry)); } }
static bool MarkAsSaved(SaveMultiModuleVM vm, LoadedAssembly[] asms) { bool setNewFileName = false; bool allSaved = true; foreach (var asm in asms) { if (!vm.WasSaved(asm.ModuleDefinition)) { allSaved = false; } else { UndoCommandManager.Instance.MarkAsSaved(asm); if (string.IsNullOrEmpty(asm.FileName)) { var filename = vm.GetSavedFileName(asm.ModuleDefinition); if (!string.IsNullOrWhiteSpace(filename)) { asm.ModuleDefinition.Location = filename; asm.FileName = filename; setNewFileName = true; var asmNode = MainWindow.Instance.FindTreeNode(asm.ModuleDefinition) as AssemblyTreeNode; Debug.Assert(asmNode != null); if (asmNode != null) { asmNode.OnFileNameChanged(); Utils.NotifyModifiedAssembly(asm); } } } } } if (setNewFileName) { MainWindow.Instance.CurrentAssemblyList.RefreshSave(); } return(allSaved); }
static bool MarkAsSaved(SaveMultiModuleVM vm, LoadedAssembly[] asms) { bool setNewFileName = false; bool allSaved = true; foreach (var asm in asms) { if (!vm.WasSaved(asm.ModuleDefinition)) allSaved = false; else { UndoCommandManager.Instance.MarkAsSaved(asm); if (string.IsNullOrEmpty(asm.FileName)) { var filename = vm.GetSavedFileName(asm.ModuleDefinition); if (!string.IsNullOrWhiteSpace(filename)) { asm.ModuleDefinition.Location = filename; asm.FileName = filename; setNewFileName = true; var asmNode = MainWindow.Instance.FindTreeNode(asm.ModuleDefinition) as AssemblyTreeNode; Debug.Assert(asmNode != null); if (asmNode != null) { asmNode.OnFileNameChanged(); Utils.NotifyModifiedAssembly(asm); } } } } } if (setNewFileName) MainWindow.Instance.CurrentAssemblyList.RefreshSave(); return allSaved; }