private void CorrectsCompareToolsWithSelection() { if (!IsValidSetting(SelectedComapreToolSettings)) { if (_orgContainer.CurrentActiveIndex != -1) { SelectedComapreToolSettings = _orgContainer.GetCompareTools() .ElementAt(_orgContainer.CurrentActiveIndex); } return; } var exists = CompareTools.FirstOrDefault( x => String.Equals(x.Name, SelectedComapreToolSettings.Name, StringComparison.InvariantCultureIgnoreCase)); if (exists == null) { CompareTools.Insert(0, SelectedComapreToolSettings); } else { exists.Parameters = SelectedComapreToolSettings.Parameters; exists.ExePath = SelectedComapreToolSettings.ExePath; SelectedComapreToolSettings = exists; } }
private static string CheckOffsetTranslatation(string swcName, byte[] original, AbcFile abc) { byte[] result; int index; foreach (var body in abc.MethodBodies) { var code = body.IL; code.TranslateOffsets(); code.TranslateIndicesEnabled = true; code.TranslateIndices(); } try { result = abc.ToByteArray(); } catch (Exception e) { return(string.Format("Unable to serialize ABC file.\nException: {0}", e)); } string err = CompareTools.CompareByteArrays(original, result, out index); if (!string.IsNullOrEmpty(err)) { return("SWC: " + swcName + ". ABC: " + abc.Name + "." + err); } return(err); }
private void miCompareTextFiles_Click(object sender, EventArgs e) { using (var dlg = new OpenFileDialog()) { dlg.Multiselect = true; if (dlg.ShowDialog() == DialogResult.OK) { var files = dlg.FileNames; if (files.Length == 2) { try { string out1 = File.ReadAllText(files[0]); string out2 = File.ReadAllText(files[1]); string err = CompareTools.CompareLines(out1, out2, true); err = Path.GetFileName(files[0]) + " " + Path.GetFileName(files[1]) + "\n" + err; docOutput.Text = err; } catch (Exception exc) { MessageBox.Show(exc.ToString()); } } } } }
public bool HasChanges() { var valids = CompareTools.Where(IsValidSetting).ToList(); var containerChanged = !valids.SequenceEqual(_orgContainer.GetCompareTools()); var indexChanged = IsValidSetting(SelectedComapreToolSettings) && valids.IndexOf(SelectedComapreToolSettings) != _orgContainer.CurrentActiveIndex; return(containerChanged || indexChanged); }
public async Task Load() { try { IsProcessing = true; var tools = await Task.Run(() => _compareToolSettingsPersist.Load()); _orgContainer = tools; CompareTools.Assign(tools.GetCompareTools()); SelectedComapreToolSettings = CompareTools.ElementAtOrDefault(tools.CurrentActiveIndex); } finally { IsProcessing = false; } }
public async Task Save() { try { IsProcessing = true; CorrectsCompareToolsWithSelection(); var toRemove = CompareTools.Where(r => !IsValidSetting(r)).ToList(); foreach (var rm in toRemove) { CompareTools.Remove(rm); } // Reverse before distinct so the later one will be kept. var toKeep = CompareTools.Reverse().Distinct().ToArray(); foreach (var tool in CompareTools.ToList()) { if (!toKeep.Contains(tool)) { CompareTools.Remove(tool); } } var newIndx = -1; if (SelectedComapreToolSettings != null) { newIndx = CompareTools.IndexOf(SelectedComapreToolSettings); } var serializable = new CompareToolSettingsContainer(CompareTools, newIndx); await Task.Run(() => _compareToolSettingsPersist.Save(serializable)); } finally { IsProcessing = false; } }
static string Test(string swcName, byte[] original) { AbcFile abc; try { abc = new AbcFile(original); } catch (Exception e) { return(string.Format("Unable to load ABC file.\nException: {0}", e)); } byte[] result; try { result = abc.ToByteArray(); } catch (Exception e) { return(string.Format("Unable to serialize ABC file.\nException: {0}", e)); } int index; string err = CompareTools.CompareByteArrays(original, result, out index); if (!string.IsNullOrEmpty(err)) { return("SWC: " + swcName + ". ABC: " + abc.Name + "." + err); } //NOTE: Test below is not passed //err = CheckOffsetTranslatation(swcName, original, abc); return(err); }
public void PrepareNewTool() { this.SelectedComapreToolSettings = new CompareToolSettings(); CompareTools.Add(this.SelectedComapreToolSettings); }