/// <summary> /// Returns a human readable string indicating the highest compatible /// version of KSP this module will run with. (Eg: 1.0.2, 1.0.2+, /// "All version", etc). /// /// This is for *human consumption only*, as the strings may change in the /// future as we support additional locales. /// </summary> public string HighestCompatibleKSP() { // Find the highest compatible KSP version if (!String.IsNullOrEmpty(ksp_version_max.ToString())) { return(ksp_version_max.ToLongMax().ToString()); } else if (!String.IsNullOrEmpty(ksp_version.ToString())) { return(ksp_version.ToLongMax().ToString()); } else if (!String.IsNullOrEmpty(ksp_version_min.ToString())) { return(ksp_version_min.ToLongMin().ToString() + "+"); } return("All versions"); }
private void _UpdateModsList(bool markUpdates) { Registry registry = RegistryManager.Instance(KSPManager.CurrentInstance).registry; ModList.Rows.Clear(); List <CkanModule> modules = GetModsByFilter(m_ModFilter); // filter by left menu selection switch (m_ModFilter) { case GUIModFilter.All: break; case GUIModFilter.Installed: modules.RemoveAll(m => !registry.IsInstalled(m.identifier)); break; case GUIModFilter.InstalledUpdateAvailable: modules.RemoveAll ( m => !(registry.IsInstalled(m.identifier) && m.version.IsGreaterThan( registry.InstalledVersion(m.identifier))) ); break; case GUIModFilter.NewInRepository: break; case GUIModFilter.NotInstalled: modules.RemoveAll(m => registry.IsInstalled(m.identifier)); break; case GUIModFilter.Incompatible: break; } // filter by name modules.RemoveAll(m => !m.name.ToLowerInvariant().Contains(m_ModNameFilter.ToLowerInvariant())); foreach (CkanModule mod in modules) { var item = new DataGridViewRow(); item.Tag = mod; bool isInstalled = registry.IsInstalled(mod.identifier); // installed if (m_ModFilter != GUIModFilter.Incompatible) { var installedCell = new DataGridViewCheckBoxCell(); installedCell.Value = isInstalled; item.Cells.Add(installedCell); } else { var installedCell = new DataGridViewTextBoxCell(); installedCell.Value = "-"; item.Cells.Add(installedCell); } // want update if (!isInstalled) { var updateCell = new DataGridViewTextBoxCell(); item.Cells.Add(updateCell); updateCell.ReadOnly = true; updateCell.Value = "-"; } else { bool isUpToDate = !registry.InstalledVersion(mod.identifier).IsLessThan(mod.version); if (!isUpToDate) { var updateCell = new DataGridViewCheckBoxCell(); item.Cells.Add(updateCell); updateCell.ReadOnly = false; } else { var updateCell = new DataGridViewTextBoxCell(); item.Cells.Add(updateCell); updateCell.ReadOnly = true; updateCell.Value = "-"; } } // name var nameCell = new DataGridViewTextBoxCell(); nameCell.Value = mod.name; item.Cells.Add(nameCell); // author var authorCell = new DataGridViewTextBoxCell(); if (mod.author != null) { string authors = ""; for (int i = 0; i < mod.author.Count(); i++) { authors += mod.author[i]; if (i != mod.author.Count() - 1) { authors += ", "; } } authorCell.Value = authors; } else { authorCell.Value = "N/A"; } item.Cells.Add(authorCell); // installed version Version installedVersion = registry.InstalledVersion(mod.identifier); var installedVersionCell = new DataGridViewTextBoxCell(); if (installedVersion != null) { installedVersionCell.Value = installedVersion.ToString(); } else { installedVersionCell.Value = "-"; } item.Cells.Add(installedVersionCell); // latest version Version latestVersion = mod.version; var latestVersionCell = new DataGridViewTextBoxCell(); if (latestVersion != null) { latestVersionCell.Value = latestVersion.ToString(); } else { latestVersionCell.Value = "-"; } item.Cells.Add(latestVersionCell); // KSP version KSPVersion kspVersion = mod.ksp_version; var kspVersionCell = new DataGridViewTextBoxCell(); if (kspVersion != null) { kspVersionCell.Value = kspVersion.ToString(); } else { kspVersionCell.Value = "-"; } item.Cells.Add(kspVersionCell); // description var descriptionCell = new DataGridViewTextBoxCell(); descriptionCell.Value = mod.@abstract; item.Cells.Add(descriptionCell); // homepage var homepageCell = new DataGridViewLinkCell(); if (mod.resources != null && mod.resources.homepage != null) { homepageCell.Value = mod.resources.homepage; } else { homepageCell.Value = "N/A"; } item.Cells.Add(homepageCell); ModList.Rows.Add(item); // sort by name ModList.Sort(ModList.Columns[2], ListSortDirection.Ascending); ModList.Refresh(); } }