private void OnEnable() { M = (Readme)target; list = Client.List(); }
private void DrawPackageDependencies(Readme readme) { if (M.packages == null || M.packages.Count == 0) { return; } EditorGUILayout.BeginVertical(EditorStyles.helpBox); { GUILayout.Label("Package Dependencies", EditorStyles.boldLabel); // We are adding a new package, wait for the operation to finish and then relist. if (add != null && add.IsCompleted) { add = null; list = Client.List(); } if (add != null || !list.IsCompleted) { Repaint();// Keep refreshing while we are waiting for Packman to resolve our request. } else { if (!readme.packages.All(x => HasPackage(x))) { EditorGUILayout.HelpBox($"This Asset requires the following packages to be installed in your Project. \nPlease install all the required packages!", MessageType.Warning); } } foreach (var req in readme.packages) { Rect rect = EditorGUILayout.GetControlRect(true, 20); GUI.Label(rect, new GUIContent(req), EditorStyles.label); rect.width -= 160; rect.x += 160; if (add != null || !list.IsCompleted) { using (new EditorGUI.DisabledScope(true)) { GUI.Label(rect, "checking…", EditorStyles.label); } } else if (HasPackage(req)) { GUI.Label(rect, $"OK \u2713", EditorStyles.boldLabel); } else { GUI.Label(rect, "Missing \u2717", EditorStyles.label); rect.x += rect.width - 80; rect.width = 80; if (GUI.Button(rect, "Install")) { add = Client.Add(req); } } } } EditorGUILayout.EndVertical(); }