private void AppsListClick(object userData, string[] options, int selected) { PreferencesWindow.AppsListUserData appsListUserData = (PreferencesWindow.AppsListUserData)userData; if (options[selected] == "Browse...") { string text = EditorUtility.OpenFilePanel("Browse for application", string.Empty, (Application.platform != RuntimePlatform.OSXEditor) ? "exe" : "app"); if (text.Length != 0) { appsListUserData.str.str = text; if (appsListUserData.onChanged != null) { appsListUserData.onChanged(); } } } else { appsListUserData.str.str = appsListUserData.paths[selected]; if (appsListUserData.onChanged != null) { appsListUserData.onChanged(); } } this.WritePreferences(); this.ReadPreferences(); }
private void FilePopup(string label, string selectedString, ref string[] names, ref string[] paths, PreferencesWindow.RefString outString, Action onChanged) { GUIStyle popup = EditorStyles.popup; GUILayout.BeginHorizontal(new GUILayoutOption[0]); EditorGUILayout.PrefixLabel(label, popup); int[] array = new int[] { Array.IndexOf <string>(paths, selectedString) }; GUIContent content = new GUIContent(names[array[0]]); Rect rect = GUILayoutUtility.GetRect(GUIContent.none, popup); PreferencesWindow.AppsListUserData userData = new PreferencesWindow.AppsListUserData(paths, outString, onChanged); if (EditorGUI.ButtonMouseDown(rect, content, FocusType.Native, popup)) { ArrayUtility.Add <string>(ref names, "Browse..."); EditorUtility.DisplayCustomMenu(rect, names, array, new EditorUtility.SelectMenuItemFunction(this.AppsListClick), userData); } GUILayout.EndHorizontal(); }