/// <summary> /// Draws the cog button. /// </summary> /// <param name="unityInterface">The unity interface.</param> /// <param name="methodDescription">The method description.</param> /// <param name="bddExtensionRunner">The BDD extension runner.</param> internal void DrawCogButton(IUnityInterfaceWrapper unityInterface, MethodDescription methodDescription, BDDExtensionRunner bddExtensionRunner) { string cogTexture = @"cog.png"; string cogTextureFullPath = Utilities.GetAssetFullPath(bddExtensionRunner, cogTexture); Texture2D inputTexture = unityInterface.AssetDatabaseLoadAssetAtPath(cogTextureFullPath, typeof(Texture2D)); GUILayoutOption[] options = new GUILayoutOption[2] { unityInterface.GUILayoutWidth(16), unityInterface.GUILayoutHeight(16) }; if (unityInterface.GUILayoutButton(inputTexture, EditorStyles.label, options)) { GenericMenu menu = new GenericMenu(); GUIContent content = new GUIContent("Open method source"); bool on = false; MethodInfo method = null; if (methodDescription != null) { on = true; method = methodDescription.Method; menu.AddItem(content, on, () => { SourcesManagement.OpenMethodSourceCode(method, unityInterface); }); } else { menu.AddDisabledItem(content); } menu.ShowAsContext(); } }
/// <summary> /// Draws the given errors. /// </summary> /// <param name="errors">The errors.</param> /// <param name="unityInterface">The unity interface.</param> public void Errors(List <UnityTestBDDError> errors, IUnityInterfaceWrapper unityInterface) { BDDExtensionRunner bddExtensionRunner = this.component.gameObject.GetComponent <BDDExtensionRunner>(); string openComponentButtonTextureFullPath = Utilities.GetAssetFullPath(bddExtensionRunner, this.OpenComponentButtonTextureFileName); string errorTextureFullPath = Utilities.GetAssetFullPath(bddExtensionRunner, this.ErrorTextureFileName); foreach (UnityTestBDDError error in errors) { unityInterface.EditorGUILayoutBeginHorizontal(); unityInterface.EditorGUILayoutSeparator(); unityInterface.EditorGUILayoutSeparator(); unityInterface.EditorGUILayoutEndHorizontal(); unityInterface.EditorGUILayoutBeginHorizontal(); float currentViewWidth = unityInterface.EditorGUIUtilityCurrentViewWidth(); Texture2D errorTexture = unityInterface.AssetDatabaseLoadAssetAtPath(errorTextureFullPath, typeof(Texture2D)); GUILayoutOption[] errorTextureOptions = new GUILayoutOption[2] { unityInterface.GUILayoutWidth(24), unityInterface.GUILayoutHeight(24) }; unityInterface.EditorGUILayoutLabelField(errorTexture, errorTextureOptions); float labelWidth = currentViewWidth - 100; unityInterface.EditorGUILayoutLabelField(error.Message, labelWidth); Texture2D openComponentButtonTexture = unityInterface.AssetDatabaseLoadAssetAtPath(openComponentButtonTextureFullPath, typeof(Texture2D)); GUILayoutOption[] options = new GUILayoutOption[2] { unityInterface.GUILayoutWidth(24), unityInterface.GUILayoutHeight(24) }; if (unityInterface.GUILayoutButton(openComponentButtonTexture, EditorStyles.label, options)) { if (error.MethodMethodInfo != null) { SourcesManagement.OpenMethodSourceCode(error.MethodMethodInfo, unityInterface); } else if (error.Component != null) { SourcesManagement.OpenSourceCode(error.Component, unityInterface); } else { MethodInfo[] methods = this.component.GetType().GetMethods(); foreach (MethodInfo method in methods) { if (method.DeclaringType.Name.Equals(this.component.GetType().Name)) { SourcesManagement.OpenSourceCode(method, unityInterface); } } } } unityInterface.EditorGUILayoutEndHorizontal(); } }
/// <summary> /// Draws the given errors. /// </summary> /// <param name="errors">The errors.</param> /// <param name="unityInterface">The unity interface.</param> /// <param name="bddExtensionRunner">The BDD extension runner.</param> public void Errors(List <UnityTestBDDError> errors, IUnityInterfaceWrapper unityInterface, BDDExtensionRunner bddExtensionRunner) { string openComponentButtonTextureFullPath = Utilities.GetAssetFullPath(bddExtensionRunner, this.OpenComponentButtonTextureFileName); string errorTextureFullPath = Utilities.GetAssetFullPath(bddExtensionRunner, this.ErrorTextureFileName); foreach (UnityTestBDDError error in errors) { unityInterface.EditorGUILayoutBeginHorizontal(); unityInterface.EditorGUILayoutSeparator(); unityInterface.EditorGUILayoutSeparator(); unityInterface.EditorGUILayoutEndHorizontal(); unityInterface.EditorGUILayoutBeginHorizontal(); float currentViewWidth = unityInterface.EditorGUIUtilityCurrentViewWidth(); if (error.ShowRedExclamationMark) { Texture2D errorTexture = unityInterface.AssetDatabaseLoadAssetAtPath(errorTextureFullPath, typeof(Texture2D)); GUILayoutOption[] errorTextureOptions = new GUILayoutOption[2] { unityInterface.GUILayoutWidth(24), unityInterface.GUILayoutHeight(24) }; unityInterface.EditorGUILayoutLabelField(errorTexture, errorTextureOptions); } float labelWidth = currentViewWidth - 100; unityInterface.EditorGUILayoutLabelField(error.Message, labelWidth); Texture2D openComponentButtonTexture = unityInterface.AssetDatabaseLoadAssetAtPath(openComponentButtonTextureFullPath, typeof(Texture2D)); GUILayoutOption[] options = new GUILayoutOption[2] { unityInterface.GUILayoutWidth(24), unityInterface.GUILayoutHeight(24) }; if (error.ShowButton) { if (unityInterface.GUILayoutButton(openComponentButtonTexture, EditorStyles.label, options)) { if (error.MethodMethodInfo != null) { SourcesManagement.OpenMethodSourceCode(error.MethodMethodInfo, unityInterface); } else if (error.Component != null) { SourcesManagement.OpenSourceCode(error.Component, unityInterface); } } } unityInterface.EditorGUILayoutEndHorizontal(); } }