public void UpdateRepo() { var old_dialog = currentUser.displayYesNo; currentUser.displayYesNo = YesNoDialog; tabController.RenameTab("WaitTabPage", "Updating repositories"); CurrentInstance.ScanGameData(); try { m_UpdateRepoWorker.RunWorkerAsync(); } finally { currentUser.displayYesNo = old_dialog; } Util.Invoke(this, SwitchEnabledState); SetDescription("Contacting repository.."); ClearLog(); ShowWaitDialog(); }
private void PostUpdateRepo(object sender, RunWorkerCompletedEventArgs e) { SetDescription("Scanning for manually installed mods"); CurrentInstance.ScanGameData(); UpdateModsList(); HideWaitDialog(true); AddStatusMessage("Repository successfully updated"); Util.Invoke(ModList, () => ModList.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)); Util.Invoke(this, () => Enabled = true); Util.Invoke(this, () => RecreateDialogs()); }
public void UpdateRepo() { m_TabController.RenameTab("WaitTabPage", "Updating repository"); CurrentInstance.ScanGameData(); m_UpdateRepoWorker.RunWorkerAsync(); Util.Invoke(this, () => Enabled = false); SetDescription("Contacting repository.."); ClearLog(); ShowWaitDialog(); }
public void UpdateRepo() { tabController.RenameTab("WaitTabPage", "Updating repositories"); CurrentInstance.ScanGameData(); try { m_UpdateRepoWorker.RunWorkerAsync(); } catch { } Util.Invoke(this, SwitchEnabledState); SetDescription("Contacting repository.."); ClearLog(); ShowWaitDialog(); }
private void UpdateRepo(object sender, DoWorkEventArgs e) { try { AddStatusMessage("Scanning GameData for DLCs and manually installed modules..."); bool scanChanged = CurrentInstance.ScanGameData(); AddStatusMessage("Updating repositories..."); // Note the current mods' compatibility for the NewlyCompatible filter KspVersionCriteria versionCriteria = CurrentInstance.VersionCriteria(); IRegistryQuerier registry = RegistryManager.Instance(CurrentInstance).registry; Dictionary <string, bool> oldModules = registry.Available(versionCriteria) .ToDictionary(m => m.identifier, m => false); registry.Incompatible(versionCriteria) .Where(m => !oldModules.ContainsKey(m.identifier)) .ToList() .ForEach(m => oldModules.Add(m.identifier, true)); RepoUpdateResult result = Repo.UpdateAllRepositories( RegistryManager.Instance(CurrentInstance), CurrentInstance, Manager.Cache, GUI.user); if (result == RepoUpdateResult.NoChanges && scanChanged) { result = RepoUpdateResult.Updated; } e.Result = new KeyValuePair <RepoUpdateResult, Dictionary <string, bool> >( result, oldModules); } catch (UriFormatException ex) { errorDialog.ShowErrorDialog(ex.Message); } catch (MissingCertificateKraken ex) { errorDialog.ShowErrorDialog(ex.ToString()); } catch (Exception ex) { errorDialog.ShowErrorDialog("Failed to connect to repository. Exception: " + ex.Message); } }
/// <summary> /// React to switching to a new game instance /// </summary> /// <param name="allowRepoUpdate">true if a repo update is allowed if needed (e.g. on initial load), false otherwise</param> private void CurrentInstanceUpdated(bool allowRepoUpdate) { CurrentInstance.ScanGameData(); Util.Invoke(this, () => { Text = $"CKAN {Meta.GetVersion()} - KSP {CurrentInstance.Version()} -- {CurrentInstance.GameDir().Replace('/', Path.DirectorySeparatorChar)}"; StatusInstanceLabel.Text = string.Format( Properties.Resources.StatusInstanceLabelText, CurrentInstance.Name, CurrentInstance.Version()?.ToString() ); }); configuration = GUIConfiguration.LoadOrCreateConfiguration( Path.Combine(CurrentInstance.CkanDir(), "GUIConfig.xml") ); if (CurrentInstance.CompatibleVersionsAreFromDifferentKsp) { new CompatibleKspVersionsDialog(CurrentInstance, !actuallyVisible) .ShowDialog(); } (RegistryManager.Instance(CurrentInstance).registry as Registry) ?.BuildTagIndex(ManageMods.mainModList.ModuleTags); bool repoUpdateNeeded = configuration.RefreshOnStartup || !RegistryManager.Instance(CurrentInstance).registry.HasAnyAvailable(); if (allowRepoUpdate && repoUpdateNeeded) { // Update the filters after UpdateRepo() completed. // Since this happens with a backgroundworker, Filter() is added as callback for RunWorkerCompleted. // Remove it again after it ran, else it stays there and is added again and again. void filterUpdate(object sender, RunWorkerCompletedEventArgs e) { ManageMods.Filter( (GUIModFilter)configuration.ActiveFilter, ManageMods.mainModList.ModuleTags.Tags.GetOrDefault(configuration.TagFilter), ManageMods.mainModList.ModuleLabels.LabelsFor(CurrentInstance.Name) .FirstOrDefault(l => l.Name == configuration.CustomLabelFilter) ); m_UpdateRepoWorker.RunWorkerCompleted -= filterUpdate; } m_UpdateRepoWorker.RunWorkerCompleted += filterUpdate; ManageMods.ModGrid.Rows.Clear(); UpdateRepo(); } else { ManageMods.UpdateModsList(); ManageMods.Filter( (GUIModFilter)configuration.ActiveFilter, ManageMods.mainModList.ModuleTags.Tags.GetOrDefault(configuration.TagFilter), ManageMods.mainModList.ModuleLabels.LabelsFor(CurrentInstance.Name) .FirstOrDefault(l => l.Name == configuration.CustomLabelFilter) ); } ManageMods.InstanceUpdated(CurrentInstance); }