public void OnGUI() { bool initialGuiEnabled = GUI.enabled; HeaderedVerticalLayout layout = null; if (Title != null) { layout = new HeaderedVerticalLayout(Title); } using (var bar = new GUILayout.HorizontalScope()) { string title = string.Format("{0} {1}", m_name, SpinnerString()); GUI.enabled = !Running && initialGuiEnabled; if (GUILayout.Button(title)) { Execute(); } GUI.enabled = Running && initialGuiEnabled; if (GUILayout.Button("Cancel")) { Cancel(); } GUI.enabled = initialGuiEnabled; } string shortName = m_name.Split(' ')[0]; if (HasRun) { GUILayout.Label( string.Format("{0} {1} at {2}", shortName, Succeeded ? "Succeeded" : "Failed", FinishTime)); } else if (Running) { GUILayout.Label(string.Format("{0} is running.", shortName)); } else { GUILayout.Label(string.Format("{0} has not run yet.", shortName)); } if (Output != null) { foreach (string line in Output) { GUILayout.Label(line); } } if (layout != null) { layout.Dispose(); } }
private void BuildActionsGui() { using (var builds = new HeaderedVerticalLayout("Build")) { EditorGUILayout.LabelField("Build Path", m_currentBuildPath); if (!String.IsNullOrEmpty(m_adbPath)) { EditorGUILayout.LabelField("Adb Path", m_adbPath); if (!File.Exists(m_adbPath)) { EditorGUILayout.LabelField("Adb status", "ADB not found in expected path."); } } if (m_currentBuildTime.HasValue) { TimeSpan age = DateTime.Now - m_currentBuildTime.Value; EditorGUILayout.LabelField("Creation Time", m_currentBuildTime.Value.ToString()); StringBuilder textAge = new StringBuilder(); if (age.Days > 0) { textAge.AppendFormat("{0}d ", age.Days); } if (age.Hours > 0) { textAge.AppendFormat("{0}h ", age.Hours); } if (age.Minutes > 0) { textAge.AppendFormat("{0}m ", age.Minutes); } textAge.AppendFormat("{0}s", age.Seconds); EditorGUILayout.LabelField("Age", textAge.ToString()); if (BuildTiltBrush.GuiSelectedBuildTarget == BuildTarget.Android) { GUI.enabled = AndroidConnected && !BuildTiltBrush.DoingBackgroundBuild; m_upload.OnGUI(); m_launch.OnGUI(); m_turnOnAdbDebugging.OnGUI(); m_launchWithProfile.OnGUI(); m_terminate.OnGUI(); GUI.enabled = true; } } else { GUILayout.Label("Not built yet."); } } }
private void DeviceGui() { using (var droids = new HeaderedVerticalLayout("Android devices")) { foreach (string device in m_androidDevices) { bool selected = device == m_selectedAndroid; bool newSelected = GUILayout.Toggle(selected, device); if (selected != newSelected) { m_selectedAndroid = device; } } } }
private void MakeBuildsGui() { using (var buildBar = new HeaderedVerticalLayout("Build")) { using (var buttonBar = new GUILayout.HorizontalScope()) { bool build = GUILayout.Button("Build"); GUI.enabled = !BuildTiltBrush.DoingBackgroundBuild; bool buildBackground = GUILayout.Button("Background Build"); GUI.enabled = BuildTiltBrush.DoingBackgroundBuild; if (GUILayout.Button("Cancel")) { BuildTiltBrush.TerminateBackgroundBuild(); } GUI.enabled = true; if (build) { EditorApplication.delayCall += () => { bool oldBackground = BuildTiltBrush.BackgroundBuild; try { BuildTiltBrush.BackgroundBuild = false; ResetBuildLog(); BuildStartTime = DateTime.Now; BuildTiltBrush.MenuItem_Build(); } finally { BuildTiltBrush.BackgroundBuild = oldBackground; } }; } if (buildBackground) { ResetBuildLog(); BuildStartTime = DateTime.Now; BuildTiltBrush.DoBackgroundBuild(BuildTiltBrush.GetGuiOptions(), false); } } using (var optionsBar = new GUILayout.HorizontalScope()) { UploadAfterBuild = GUILayout.Toggle(UploadAfterBuild, "Upload after Build"); RunAfterUpload = GUILayout.Toggle(RunAfterUpload, "Run after Upload"); } int start = Mathf.Clamp(m_buildLog.Count - 11, 0, int.MaxValue); if (m_buildLogPosition.HasValue) { start = m_buildLogPosition.Value; } if (m_buildLog.Count > 0) { int width = (int)(position.width - 35); int end = Mathf.Clamp(start + 10, 0, m_buildLog.Count); using (var horizSection = new GUILayout.HorizontalScope()) { using (var vertSection = new GUILayout.VerticalScope(GUILayout.Width(width))) { for (int i = start; i < end; ++i) { GUILayout.Label(m_buildLog[i], GUILayout.Width(width)); } } float size = 10f / m_buildLog.Count; float newStart = GUILayout.VerticalScrollbar(start, size, 0, m_buildLog.Count, GUILayout.Height(180)); if (newStart >= (m_buildLog.Count - 11f)) { m_buildLogPosition = null; } else { m_buildLogPosition = (int)newStart; } } } if (BuildTiltBrush.DoingBackgroundBuild) { Rect r = EditorGUILayout.BeginVertical(); float buildSeconds = (float)(DateTime.Now - BuildStartTime).TotalSeconds; float progress = Mathf.Clamp01(buildSeconds / SuccessfulBuildSeconds) * 0.95f; float remaining = SuccessfulBuildSeconds - buildSeconds; string time = "???"; if (remaining > 0) { var span = TimeSpan.FromSeconds(remaining); time = string.Format("{0}:{1:00}", (int)span.TotalMinutes, span.Seconds); } EditorGUI.ProgressBar(r, progress, string.Format("Building - {0} remaining.", time)); GUILayout.Space(18); EditorGUILayout.EndVertical(); } } }
private void BuildSetupGui() { GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandHeight(true), }; GUILayoutOption[] toggleOpt = new GUILayoutOption[] { GUILayout.Width(150), }; using (var changeScope = new EditorGUI.ChangeCheckScope()) { using (var setupBar = new GUILayout.HorizontalScope(GUILayout.Height(110))) { // Sdk Modes using (var sdkBar = new HeaderedVerticalLayout("VR SDK", options)) { SdkMode[] sdks = BuildTiltBrush.SupportedSdkModes(); SdkMode selectedSdk = BuildTiltBrush.GuiSelectedSdk; foreach (var sdk in sdks) { bool selected = sdk == selectedSdk; bool newSelected = GUILayout.Toggle(selected, sdk.ToString(), toggleOpt); if (selected != newSelected) { BuildTiltBrush.GuiSelectedSdk = sdk; } } } // Platforms using (var platformBar = new HeaderedVerticalLayout("Platform", options)) { BuildTarget[] targets = BuildTiltBrush.SupportedBuildTargets(); BuildTarget selectedTarget = BuildTiltBrush.GuiSelectedBuildTarget; SdkMode selectedSdk = BuildTiltBrush.GuiSelectedSdk; foreach (var target in targets) { GUI.enabled = BuildTiltBrush.BuildTargetSupported(selectedSdk, target); bool selected = target == selectedTarget; bool newSelected = GUILayout.Toggle(selected, target.ToString(), toggleOpt); if (selected != newSelected) { BuildTiltBrush.GuiSelectedBuildTarget = target; } } GUI.enabled = true; } // Runtime using (var runtimeBar = new HeaderedVerticalLayout("Runtime", options)) { bool isIl2cpp = BuildTiltBrush.GuiRuntimeIl2cpp; bool newIsMono = GUILayout.Toggle(!isIl2cpp, "Mono", toggleOpt); bool newIsIl2cpp = GUILayout.Toggle(isIl2cpp, "IL2CPP", toggleOpt); if (isIl2cpp != newIsIl2cpp || isIl2cpp != !newIsMono) { BuildTiltBrush.GuiRuntimeIl2cpp = !isIl2cpp; } } // Options using (var optionsBar = new HeaderedVerticalLayout("Options", options)) { BuildTiltBrush.GuiDevelopment = GUILayout.Toggle(BuildTiltBrush.GuiDevelopment, "Development"); BuildTiltBrush.GuiExperimental = GUILayout.Toggle(BuildTiltBrush.GuiExperimental, "Experimental"); BuildTiltBrush.GuiAutoProfile = GUILayout.Toggle(BuildTiltBrush.GuiAutoProfile, "Auto Profile"); } } if (changeScope.changed) { OnBuildSettingsChanged(); } } }