// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See LICENSE in the project root for license information. using System; using UnityEditor; using UnityEngine; namespace HoloToolkit.Unity { public class CertificatePasswordWindow : EditorWindow { private static readonly GUILayoutOption LabelWidth = GUILayout.Width(110f); private static readonly GUILayoutOption ButtonWidth = GUILayout.Width(110f); private string path; private string password; private GUIContent message; private GUIStyle messageStyle; private string focus; public static void Show(string path) { CertificatePasswordWindow[] array = (CertificatePasswordWindow[])Resources.FindObjectsOfTypeAll(typeof(CertificatePasswordWindow)); CertificatePasswordWindow certificatePasswordWindow = (array.Length <= 0) ? CreateInstance<CertificatePasswordWindow>() : array[0]; path = path.Replace("\\", "/"); certificatePasswordWindow.path = path.Substring(path.LastIndexOf("Assets/", StringComparison.Ordinal)); certificatePasswordWindow.password = string.Empty; certificatePasswordWindow.message = GUIContent.none; certificatePasswordWindow.messageStyle = new GUIStyle(GUI.skin.label); certificatePasswordWindow.messageStyle.fontStyle = FontStyle.Italic; certificatePasswordWindow.focus = "password"; if (array.Length > 0) { certificatePasswordWindow.Focus(); } else { certificatePasswordWindow.titleContent = new GUIContent("Enter Windows Store Certificate Password"); certificatePasswordWindow.position = new Rect(100f, 100f, 350f, 90f); certificatePasswordWindow.minSize = new Vector2(certificatePasswordWindow.position.width, certificatePasswordWindow.position.height); certificatePasswordWindow.maxSize = certificatePasswordWindow.minSize; certificatePasswordWindow.ShowUtility(); } } public void OnGUI() { Event current = Event.current; bool flag = false; bool flag2 = false; if (current.type == EventType.KeyDown) { flag = (current.keyCode == KeyCode.Escape); flag2 = (current.keyCode == KeyCode.Return || current.keyCode == KeyCode.KeypadEnter); } using (new EditorGUILayout.HorizontalScope()) { GUILayout.Space(10f); using (new EditorGUILayout.VerticalScope()) { GUILayout.FlexibleSpace(); using (new EditorGUILayout.HorizontalScope()) { GUILayout.Label(new GUIContent("Password|Certificate password."), LabelWidth); GUI.SetNextControlName("password"); password = GUILayout.PasswordField(password, '●'); } GUILayout.Space(10f); using (new EditorGUILayout.HorizontalScope()) { GUILayout.Label(message, messageStyle); GUILayout.FlexibleSpace(); if (GUILayout.Button(new GUIContent("Ok"), ButtonWidth) || flag2) { message = GUIContent.none; try { if (PlayerSettings.WSA.SetCertificate(path, password)) { flag = true; } else { message = new GUIContent("Invalid password."); } } catch (UnityException ex) { Debug.LogError(ex.Message); } } } GUILayout.FlexibleSpace(); } GUILayout.Space(10f); } if (flag) { Close(); } else if (focus != null) { EditorGUI.FocusTextInControl(focus); focus = null; } } } }