Exemple #1
0
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
            case (Keys.Control | Keys.F):
                ActiveControl = FilterByNameTextBox;
                return(true);

            case (Keys.Control | Keys.S):
                var registry = RegistryManager.Instance(CurrentInstance).registry;
                if (mainModList.ComputeChangeSetFromModList(registry, CurrentInstance).Any())
                {
                    ApplyToolButton_Click(null, null);
                }

                return(true);
            }

            return(base.ProcessCmdKey(ref msg, keyData));
        }
Exemple #2
0
        public async Task ComputeChangeSetFromModList_WithConflictingMods_ThrowsInconsistentKraken()
        {
            using (var tidy = new DisposableKSP())
            {
                KSPManager manager = new KSPManager(new NullUser(), new FakeWin32Registry(tidy.KSP)) { CurrentInstance = tidy.KSP };

                var registry = Registry.Empty();
                var module = TestData.FireSpitterModule();
                module.conflicts = new List<RelationshipDescriptor> { new RelationshipDescriptor { name = "kOS" } };
                registry.AddAvailable(TestData.FireSpitterModule());
                registry.AddAvailable(TestData.kOS_014_module());
                registry.RegisterModule(module, Enumerable.Empty<string>(), tidy.KSP);

                var main_mod_list = new MainModList(null, null);
                var mod = new GUIMod(TestData.FireSpitterModule(), registry, manager.CurrentInstance.Version());
                var mod2 = new GUIMod(TestData.kOS_014_module(), registry, manager.CurrentInstance.Version());
                mod.IsInstallChecked = true;
                mod2.IsInstallChecked = true;

                var compute_change_set_from_mod_list = main_mod_list.ComputeChangeSetFromModList(registry, main_mod_list.ComputeUserChangeSet(), null, tidy.KSP.Version());
                await UtilStatic.Throws<InconsistentKraken>(async ()=> { await compute_change_set_from_mod_list; });
            }
        }
Exemple #3
0
        private void UpdateChangeSetAndConflicts(Registry registry)
        {
            IEnumerable <KeyValuePair <CkanModule, GUIModChangeType> > full_change_set;
            Dictionary <Module, string> conflicts;

            var user_change_set = mainModList.ComputeUserChangeSet();

            try
            {
                var module_installer = ModuleInstaller.GetInstance(CurrentInstance, GUI.user);
                full_change_set = MainModList.ComputeChangeSetFromModList(registry, user_change_set, module_installer,
                                                                          CurrentInstance.Version());
                conflicts = null;
            }
            catch (InconsistentKraken)
            {
                conflicts       = MainModList.ComputeConflictsFromModList(registry, user_change_set, CurrentInstance.Version());
                full_change_set = null;
            }

            Conflicts = conflicts;
            ChangeSet = full_change_set;
        }
Exemple #4
0
        public async Task ComputeChangeSetFromModList_WithConflictingMods_ThrowsInconsistentKraken()
        {
            using (var tidy = new DisposableKSP())
            {
                var registry = Registry.Empty();
                var module = TestData.FireSpitterModule();
                module.conflicts = new List<RelationshipDescriptor> { new RelationshipDescriptor { name = "kOS" } };
                registry.AddAvailable(module);
                registry.AddAvailable(TestData.kOS_014_module());
                registry.RegisterModule(module, Enumerable.Empty<string>(), tidy.KSP);

                var mainList = new MainModList(null, null, new GUIUser());
                var mod = new GUIMod(module, registry, tidy.KSP.VersionCriteria());
                var mod2 = new GUIMod(TestData.kOS_014_module(), registry, tidy.KSP.VersionCriteria());
                var mods = new List<GUIMod>() { mod, mod2 };
                mainList.ConstructModList(mods, true);
                mainList.Modules = new ReadOnlyCollection<GUIMod>(mods);
                mod2.IsInstallChecked = true;
                var computeTask = mainList.ComputeChangeSetFromModList(registry, mainList.ComputeUserChangeSet(), null,
                    tidy.KSP.VersionCriteria());

                await UtilStatic.Throws<InconsistentKraken>(() => computeTask);
            }
        }
Exemple #5
0
        public async Task TooManyProvidesCallsHandlers()
        {
            using (var tidy = new DisposableKSP())
            {
                var registry = Registry.Empty();
                var generator = new RandomModuleGenerator(new Random(0451));
                var provide_ident = "provide";
                var ksp_version = tidy.KSP.Version();
                var mod = generator.GeneratorRandomModule(depends: new List<RelationshipDescriptor>
                {
                    new RelationshipDescriptor {name = provide_ident}
                },ksp_version:ksp_version);
                var moda = generator.GeneratorRandomModule(provides: new List<string> { provide_ident }
                , ksp_version: ksp_version);
                var modb = generator.GeneratorRandomModule(provides: new List<string> { provide_ident }
                , ksp_version: ksp_version);
                var choice_of_provide = modb;
                registry.AddAvailable(mod);
                registry.AddAvailable(moda);
                registry.AddAvailable(modb);
                var installer = ModuleInstaller.GetInstance(tidy.KSP, null);
                var main_mod_list = new MainModList(null, async kraken => await Task.FromResult(choice_of_provide));
                var a = new HashSet<ModChange>
                {
                    new ModChange(new GUIMod(mod,registry,ksp_version), GUIModChangeType.Install, null)
                };

                var mod_list = await main_mod_list.ComputeChangeSetFromModList(registry, a, installer, ksp_version);
                CollectionAssert.AreEquivalent(
                    new[] {
                        new ModChange(new GUIMod(mod,registry,ksp_version), GUIModChangeType.Install, null),
                        new ModChange(new GUIMod(modb,registry,ksp_version),GUIModChangeType.Install, null)
                    }, mod_list);

            }
        }