/// <summary> /// Called when inspector GUI is to be rendered. /// </summary> public override void OnInspectorGUI() { //DrawDefaultInspector(); var viewPresenter = (ViewPresenter)target; // main view selection int selectedViewIndex = viewPresenter.Views.IndexOf(viewPresenter.MainView) + 1; // .. add empty selection var mainViewOptions = new List <string>(viewPresenter.Views); mainViewOptions.Insert(0, "-- none --"); // .. add drop-down logic int newSelectedViewIndex = EditorGUILayout.Popup("Main View", selectedViewIndex, mainViewOptions.ToArray()); viewPresenter.MainView = newSelectedViewIndex > 0 ? viewPresenter.Views[newSelectedViewIndex - 1] : String.Empty; if (newSelectedViewIndex != selectedViewIndex) { // .. trigger reload on view presenter if (!viewPresenter.DisableAutomaticReload) { ViewData.GenerateViews(); } } // default theme selection int selectedThemeIndex = viewPresenter.Themes.IndexOf(viewPresenter.DefaultTheme) + 1; // .. add empty selection var themeOptions = new List <string>(viewPresenter.Themes); themeOptions.Insert(0, "-- none --"); // .. add drop-down logic int newSelectedThemeIndex = EditorGUILayout.Popup("Default Theme", selectedThemeIndex, themeOptions.ToArray()); viewPresenter.DefaultTheme = newSelectedThemeIndex > 0 ? viewPresenter.Themes[newSelectedThemeIndex - 1] : String.Empty; if (newSelectedThemeIndex != selectedThemeIndex) { // .. trigger reload on view presenter if (!viewPresenter.DisableAutomaticReload) { ViewData.GenerateViews(); } } // unit size option GUIContent unitSizeContent = new GUIContent("Unit Size", "User-defined unit size that can be used in XUML, e.g. Offset=\"12ux, 4uy\""); Vector3 newUnitSize = EditorGUILayout.Vector3Field(unitSizeContent, viewPresenter.UnitSize); if (newUnitSize != viewPresenter.UnitSize) { viewPresenter.UnitSize = newUnitSize; } // base directory GUIContent baseDirectoryContent = new GUIContent("Base Directory", "Base directory that will be prepended to assets paths in XUML. E.g. \"Assets/Path/To/Folder/\""); string newBaseDirectory = EditorGUILayout.TextField(baseDirectoryContent, viewPresenter.BaseDirectory); if (newBaseDirectory != viewPresenter.BaseDirectory) { viewPresenter.BaseDirectory = newBaseDirectory; } // default resource dictionary language GUIContent defaultLanguageContent = new GUIContent("Default Language", "Default language to be set on the resource dictionary"); string defaultLanguage = EditorGUILayout.TextField(defaultLanguageContent, viewPresenter.DefaultLanguage); if (defaultLanguage != viewPresenter.DefaultLanguage) { viewPresenter.DefaultLanguage = defaultLanguage; } // default resource dictionary platform GUIContent defaultPlatformContent = new GUIContent("Default Platform", "Default platform to be set on the resource dictionary"); string defaultPlatform = EditorGUILayout.TextField(defaultPlatformContent, viewPresenter.DefaultPlatform); if (defaultPlatform != viewPresenter.DefaultPlatform) { viewPresenter.DefaultPlatform = defaultPlatform; } // disable automatic reload option GUIContent disableReloadContent = new GUIContent("Disable Automatic Reload", "When checked views are only reloaded when the \"Reload Views\" button is clicked."); viewPresenter.DisableAutomaticReload = EditorGUILayout.Toggle(disableReloadContent, viewPresenter.DisableAutomaticReload); // generate XSD schema GUIContent generateSchemaContent = new GUIContent("Generate Schema", "Generates a new XSD schema for all the views. Used to get intellisense when editing XUML in visual studio. Schema need to be generated when new views are added, renamed or new view fields are added."); if (GUILayout.Button(generateSchemaContent)) { ViewPostprocessor.GenerateXsdSchema(); } // reload button GUIContent reloadViewsContent = new GUIContent("Reload Views", "Reloads the views in the scene. Views are automatically reloaded when XUML changes. The views need to be manually reloaded when XUML has been edited while the editor was closed or when only code (view models) has been modified."); if (GUILayout.Button(reloadViewsContent)) { // .. trigger reload of views ViewPostprocessor.ProcessViewAssets(); } }