void OnGUI() { LoadFilePaths(); if (settings == null) { this.LoadDefaultPageControllerSettings(); EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath); pageTemplatePrefab = AssetDatabase.LoadAssetAtPath <GameObject> (PageTemplatePath); } scrollPos = EditorGUILayout.BeginScrollView(scrollPos); PageNavEditorWindow.Settings = settings; this.titleContent = new GUIContent("PageNav Settings"); GUIStyle myStyle = new GUIStyle(); myStyle.fontSize = 20; myStyle.normal.textColor = GUI.skin.label.normal.textColor; GUILayout.Label(" ", myStyle); GUILayout.Label(" PageController Settings", myStyle); GUILayout.Label(" ", myStyle); GUI.enabled = false; settings = (PageNavSettings)EditorGUILayout.ObjectField("PageNav Settings", settings, typeof(PageNavSettings), false); GUI.enabled = true; if (GUILayout.Button("Create PageNav in open scene")) { CreatePageNavInScene(); } ShowPagesSection(); EditorGUILayout.EndScrollView(); }
void RemovePage(int removeIndex) { PageNames.RemoveAt(removeIndex); settings.PagesPrefabs.RemoveAt(removeIndex); settings.PagesCacheSettings.RemoveAt(removeIndex); settings.PagesCustomArguments.RemoveAt(removeIndex); settings.PagesTitles.RemoveAt(removeIndex); EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath); EditorUtility.SetDirty(settings); }
// Draw the property inside the given rect public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { // Using BeginProperty / EndProperty on the parent property means that // prefab override logic works on the entire property. settingsPath = PageNavEditorWindow.PathRoot + "/FrameWorkFiles/PageNavSettings.asset"; PagesEnumPath = PageNavEditorWindow.PathRoot + "/FrameWorkFiles/Scripts"; label = EditorGUI.BeginProperty(position, label, property); label.text = property.displayName; Rect pos = position; position = EditorGUI.PrefixLabel(pos, label); position.width /= 2; bool hasChanged = false; EditorGUI.BeginChangeCheck(); PagesEnum newEnum = (PagesEnum)EditorGUI.EnumPopup(position, ((PagesEnum)property.enumValueIndex)); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } position.x += position.width; if (GUI.Button(position, "Show") && newEnum != PagesEnum.None) { if (settings == null) { settings = AssetDatabase.LoadAssetAtPath <PageNavSettings> (settingsPath); } EditorGUIUtility.PingObject(settings.PagesPrefabs[(int)newEnum - 1]); } if (property.enumValueIndex >= property.enumNames.Length) { if (PageNavEditorWindow.PageNames != null) { EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNavEditorWindow.PageNames.ToArray(), PagesEnumPath); } else { Debug.LogWarning("it is necessary to rebuild the Pages Enum"); Debug.Log("it is necessary to rebuild the Pages Enum"); } property.enumValueIndex = 0; } if (hasChanged) { try{ property.enumValueIndex = (int)newEnum; }catch (Exception e) { property.enumValueIndex = 0; } } EditorGUI.EndProperty(); }
void ShowEnumEditButtons() { EditorGUILayout.BeginHorizontal(); if (PageNames.Count > 0) { if (GUILayout.Button("Re-create PageEnum") && PageNames.Count >= 0) { EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath); } } if (GUILayout.Button("Show Pages Enum")) { UnityEngine.Object enumFile = AssetDatabase.LoadAssetAtPath <UnityEngine.Object> (PagesEnumPath + "/PagesEnum.cs"); EditorGUIUtility.PingObject(enumFile); } EditorGUILayout.EndHorizontal(); }
void CreateNewPage(string newPagename) { if (!PageNames.Contains(newPageName)) { if (!string.IsNullOrEmpty(newPageName)) { Regex rgx = new Regex("[^a-zA-Z]"); if (!rgx.IsMatch(newPageName)) { if (!CheckForControllerExistance(newPageName)) { settings.PagesPrefabs.Add(CreatePageTemplatePrefab(newPageName)); PageNames.Add(newPageName); settings.PagesCacheSettings.Add(true); var pageArgs = new PageArgs(); pageArgs.PageToCreate = (PagesEnum)settings.PagesCustomArguments.Count + 1; settings.PagesCustomArguments.Add(pageArgs); settings.PagesTitles.Add(newPagename); EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath); pageCallBackGuard = false; EditorUtility.DisplayProgressBar("Please wait...", "Waiting for editor to compile scripts", 0.5f); ShowErrorBox = false; } } else { ShowErrorBox = true; errorMessage = "The page name '" + newPageName + "', has invalid characters"; Debug.LogError("The page name '" + newPageName + "', has invalid characters"); } } else { ShowErrorBox = true; errorMessage = "The pages name cannot be empty!"; Debug.LogError("The pages name cannot be empty!"); } } else { ShowErrorBox = true; errorMessage = "There is already a page named '" + newPageName + "'"; Debug.LogError("There is already a page named '" + newPageName + "'"); } }
public void RecreateEnumFile() { EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath); }