public override void RenderImpl(Rect position) { if (isUpdateAvailable()) { RenderBanner("Fabric plugin update available", viewUpdateClickHandler); } RenderHeader("Please select a kit to install"); importedKits = importedKits == null?listImportedKits() : importedKits; availableKits = listAvailableKits(); if (availableKits == null) { return; } List <KitRowData> kitRowDataList = new List <KitRowData> (); bool hasConfiguredKits = false; bool hasInstalledKits = false; foreach (var availableKit in availableKits) { ImportedKit importedKit = (importedKits == null) ? null : importedKits.Find((ImportedKit k) => { return(k.Name.Equals(availableKit.Name, StringComparison.OrdinalIgnoreCase)); }); KitRowData kitRowData = new KitRowData(availableKit, importedKit); hasConfiguredKits |= kitRowData.Status == KitStatus.Configured; hasInstalledKits |= kitRowData.Status == KitStatus.Installed; kitRowDataList.Add(kitRowData); } if (hasConfiguredKits) { checkKitActivation(); } bool shouldDisableBack = EditorApplication.isCompiling || hasConfiguredKits || hasInstalledKits; if (shouldDisableBack) { RenderFooter(null, null); } else { RenderFooter(back, null); } Components.RenderKitList( kitRowDataList, onKitSelected, clearKitLists, EditorApplication.isCompiling ); }
private void RecreateKitInstance() { if (kit == null) { if (!String.IsNullOrEmpty(Settings.Instance.Kit)) { kit = KitUtils.ListImportedKits(Api)().Find(k => k.Name.Equals(Settings.Instance.Kit)); } } }
private Action <KitsObject, ImportedKit, DisplayedKitStatus> SelectKit() { return(delegate(KitsObject availableKit, ImportedKit importedKit, DisplayedKitStatus status) { string kitName = importedKit != null ? importedKit.Name : availableKit.Name; if (Update.PeriodicUpdateManager.IsPluginUpdateRequired(kitName)) { EditorUtility.DisplayDialog( "A plugin update is required", kitName + " requires a newer version of the Fabric Plugin, please update by clicking 'View Update'.", "OK" ); return; } if (importedKit != null) { // If the latest version of a kit is installed, or the latest version is imported into the project, // start the normal kit flow. if (status == DisplayedKitStatus.Installed || importedKit.Instance.Version() == new System.Version(availableKit.Version)) { Settings.Instance.FlowSequence = 0; Settings.Instance.Kit = importedKit.Name; this.kit = importedKit; return; } } // Kit is imported, but not at the latest version, or the kit is not imported. This means // we need to download the newest version. FabricInstaller.Config config = new FabricInstaller.Config( availableKit.PackageUrl, availableKit.PackageName, availableKit.ReleaseNotesUrl ); kit = null; Settings.Instance.FlowSequence = (int)UpdateFlow.Kit; Settings.Instance.Kit = kitName; List <string> kitsToUpdateDueToDependencies = Update.PeriodicUpdateManager.Resolve(Settings.Instance.Kit); if (kitsToUpdateDueToDependencies.Count == 0) { ShowUpdatePage(() => { return config; }, UpdateFlow.Kit)(); return; } //TODO: implement dependency resolution Utils.Log("There is a dependency issue that needs resolution"); }); }
public static bool IsUpToDate(KitsObject availableKit, ImportedKit importedKit) { System.Version latestKitVersion = new System.Version(availableKit.Version); System.Version currentKitVersion = new System.Version(); // Default is 0.0 if (importedKit != null) { currentKitVersion = importedKit.Instance.Version(); } return(latestKitVersion <= currentKitVersion); }
public static void RenderKitList( ref KitsList availableKits, ref List <ImportedKit> importedKits, Action <KitsObject, ImportedKit, DisplayedKitStatus> onSelected, Func <KitsObject, ImportedKit, KeyValuePair <DisplayedKitStatus, Version> > displayedKitStatusAndVersion, bool disabled ) { if (availableKits == null) { return; } scroll = GUILayout.BeginScrollView(scroll, ScrollStyle); GUI.enabled = !disabled; foreach (var kit in availableKits) { ImportedKit imported = null; if (importedKits != null) { imported = importedKits.Find((ImportedKit k) => { return(k.Name.ToLower().Equals(kit.Name.ToLower())); }); } KeyValuePair <DisplayedKitStatus, Version> status = displayedKitStatusAndVersion(kit, imported); if (GUILayout.Button(MakeRowCaption( kit.Name, status.Value.ToString(), kit.Version.ToString(), status.Key ), RowStyle)) { onSelected(kit, imported, status.Key); importedKits = null; availableKits = null; } } GUI.enabled = true; GUILayout.EndScrollView(); }
private Action <KitsObject, ImportedKit, bool> SelectKit() { return(delegate(KitsObject availableKit, ImportedKit importedKit, bool checkForConflicts) { if (Update.PeriodicUpdateManager.IsPluginUpdateRequired(availableKit.Name)) { EditorUtility.DisplayDialog( "A plugin update is required", availableKit.Name + " requires a newer version of the Fabric Plugin, please update by clicking 'View Update'.", "OK" ); return; } Settings.Instance.Kit = availableKit.Name; if (importedKit != null && KitUtils.IsUpToDate(availableKit, importedKit)) { // Delegate to the kit's controller. this.kit = importedKit; Settings.Instance.FlowSequence = 0; return; } // We need to download the latest version of the kit, because it's either not imported or needs updating. this.kit = null; Settings.Instance.FlowSequence = (int)UpdateFlow.Kit; FabricInstaller.Config config = new FabricInstaller.Config( availableKit.PackageUrl, availableKit.PackageName, availableKit.ReleaseNotesUrl ); if (!checkForConflicts || !HasConflictingDependencies(Settings.Instance.Kit)) { ShowUpdatePage(() => { return config; }, UpdateFlow.Kit)(); return; } Settings.Instance.Conflict = Settings.Instance.Kit; ShowConflictPage(); }); }
public KitRowData(KitsObject availableKit, ImportedKit importedKit) { this.AvailableKit = availableKit; this.ImportedKit = importedKit; this.LatestVersion = availableKit.Version.ToString(); this.IsUpToDate = KitUtils.IsUpToDate(availableKit, importedKit); this.Name = availableKit.Name; this.Status = KitStatus.Available; this.CurrentVersion = new System.Version().ToString(); // Default is 0.0 if (importedKit != null) { this.Name = importedKit.Name; this.Status = KitUtils.StatusFor(importedKit); this.CurrentVersion = importedKit.Instance.Version().ToString(); } }
public static KitStatus StatusFor(ImportedKit importedKit) { Settings.InstalledKit installedKit = Settings.Instance.InstalledKits.Find(kit => { return(kit.Name == importedKit.Name); }); if (installedKit == null) { return(KitStatus.Imported); } Settings.KitInstallationStatus installationStatus = installedKit.InstallationStatus; switch (installationStatus) { case Settings.KitInstallationStatus.Configured: return(KitStatus.Configured); case Settings.KitInstallationStatus.Installed: return(KitStatus.Installed); case Settings.KitInstallationStatus.Imported: default: return(KitStatus.Imported); } }
private static KeyValuePair <DisplayedKitStatus, Version> DisplayedKitStatusAndVersion(KitsObject kit, ImportedKit imported) { DisplayedKitStatus kitStatus = DisplayedKitStatus.NotInstalled; System.Version kitVersion = new System.Version(kit.Version); if (imported != null && imported.Status == ImportedKit.InstallationStatus.Installed) { kitVersion = imported.Instance.Version(); kitStatus = kitVersion < new System.Version(kit.Version) ? DisplayedKitStatus.UpgradeAvailable : DisplayedKitStatus.Installed; } return(new KeyValuePair <DisplayedKitStatus, Version> (kitStatus, kitVersion)); }