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 void Setup()
        {
            _compareTools = new List <CompareToolSettings>
            {
                new CompareToolSettings
                {
                    Name    = "Beyond Compare3",
                    ExePath = "dummyPath"
                },
                new CompareToolSettings
                {
                    Name    = "KDiff3",
                    ExePath = "dummyPath"
                }
            };

            _compareToolsContainer = new CompareToolSettingsContainer(_compareTools, -1);

            _compareToolSettingsPersist = Substitute.For <ICompareToolSettingsPersist>();
            _compareToolSettingsPersist.Load().Returns(_compareToolsContainer);
            _viewModel = new CompareToolSettingsVm(_compareToolSettingsPersist);
        }
示例#3
0
        private void TryAddDifftool(string appName, string keyPath,
                                    string exeItemName,
                                    CompareToolSettingsContainer settingsContainer)
        {
            var appPath = FindAppPath(Registry.CurrentUser, keyPath, exeItemName);

            if (string.IsNullOrWhiteSpace(appPath))
            {
                appPath = FindAppPath(Registry.LocalMachine, keyPath, exeItemName);
            }
            if (string.IsNullOrWhiteSpace(appPath))
            {
                return;
            }

            var bcSettings = new CompareToolSettings()
            {
                ExePath = appPath,
                Name    = appName,
            };

            settingsContainer.CompareToolSettingses.Add(bcSettings.ToSerializable());
        }
        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;
            }
        }