private void ApplyButton_Click(object sender, RoutedEventArgs e) { var vm = ChangesGrid.DataContext as ChangesViewModel; if (vm == null) { return; } if (Session.Action == ActionType.Extract) { foreach (var p in vm.Where(p => p.Commit).ToArray()) { var fileName = p.ModuleName + ModuleProcessing.ExtensionFromType(p.ModuleType); switch (p.ChangeType) { case ChangeType.DeleteFile: File.Delete(Path.Combine(Session.FolderPath, fileName)); if (p.ModuleType == ModuleType.Form) { File.Delete(Path.Combine(Session.FolderPath, p.ModuleName + ".frx")); } break; case ChangeType.ChangeFormControls: File.Copy(Path.Combine(_evf.FolderPath, p.ModuleName + ".frx"), Path.Combine(Session.FolderPath, p.ModuleName + ".frx"), true); break; default: File.Copy(Path.Combine(_evf.FolderPath, fileName), Path.Combine(Session.FolderPath, fileName), true); if (p.ChangeType == ChangeType.AddFile && p.ModuleType == ModuleType.Form) { File.Copy(Path.Combine(_evf.FolderPath, p.ModuleName + ".frx"), Path.Combine(Session.FolderPath, p.ModuleName + ".frx"), true); } break; } vm.Remove(p); } } else { foreach (var p in vm.Where(p => p.Commit).ToArray()) { var fileName = p.ModuleName + ModuleProcessing.ExtensionFromType(p.ModuleType); switch (p.ChangeType) { case ChangeType.DeleteFile: File.Delete(Path.Combine(_evf.FolderPath, fileName)); if (p.ModuleType == ModuleType.Form) { File.Delete(Path.Combine(_evf.FolderPath, p.ModuleName + ".frx")); } break; case ChangeType.ChangeFormControls: File.Copy(Path.Combine(Session.FolderPath, p.ModuleName + ".frx"), Path.Combine(_evf.FolderPath, p.ModuleName + ".frx"), true); break; default: File.Copy(Path.Combine(Session.FolderPath, fileName), Path.Combine(_evf.FolderPath, fileName), true); if (p.ChangeType == ChangeType.AddFile && p.ModuleType == ModuleType.Form) { File.Copy(Path.Combine(Session.FolderPath, p.ModuleName + ".frx"), Path.Combine(_evf.FolderPath, p.ModuleName + ".frx"), true); } break; } vm.Remove(p); } _evf.Write(Session.FilePath); } UpdateIncludeAllBox(); }
private void ChangesGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { var sel = (Patch)ChangesGrid.SelectedItem; var fileName = sel.ModuleName + (sel.ChangeType != ChangeType.ChangeFormControls ? ModuleProcessing.ExtensionFromType(sel.ModuleType) : ".frx"); string oldPath; string newPath; if (Session.Action == ActionType.Extract) { oldPath = Path.Combine(Session.FolderPath, fileName); newPath = Path.Combine(_evf.FolderPath, fileName); } else { oldPath = Path.Combine(_evf.FolderPath, fileName); newPath = Path.Combine(Session.FolderPath, fileName); } if (sel.ChangeType == ChangeType.ChangeFormControls) { Lib.FrxFilesAreDifferent(oldPath, newPath, out var explain); MessageBox.Show(explain, "FRX file difference", MessageBoxButton.OK, MessageBoxImage.Information); } else { var diffExePath = Environment.ExpandEnvironmentVariables(Session.DiffTool); if (!File.Exists(oldPath) || !File.Exists(newPath) || !File.Exists(diffExePath)) { return; } var p = new Process { StartInfo = new ProcessStartInfo(diffExePath, Session.DiffToolParameters.Replace("{OldFile}", oldPath).Replace("{NewFile}", newPath)) { UseShellExecute = false } }; p.Start(); } }