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;
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
            }
        }
Exemple #7
0
        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);
 }