/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(GUIContent label) { decimal value = this.ValueEntry.SmartValue; string str = value.ToString(); str = SirenixEditorFields.DelayedTextField(label, str, GUILayoutOptions.MinWidth(0)); if (GUI.changed && decimal.TryParse(str, out value)) { this.ValueEntry.SmartValue = value; } }
/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(GUIContent label) { EditorGUI.BeginChangeCheck(); string s = new string(this.ValueEntry.SmartValue, 1); s = SirenixEditorFields.DelayedTextField(label, s, GUILayoutOptions.MinWidth(0)); if (EditorGUI.EndChangeCheck() && s.Length > 0) { this.ValueEntry.SmartValue = s[0]; } }
/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(IPropertyValueEntry <char> entry, DelayedAttribute attribute, GUIContent label) { EditorGUI.BeginChangeCheck(); string s = new string(entry.SmartValue, 1); s = SirenixEditorFields.DelayedTextField(label, s); if (EditorGUI.EndChangeCheck() && s.Length > 0) { entry.SmartValue = s[0]; } }
/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(GUIContent label) { this.ValueEntry.SmartValue = SirenixEditorFields.DelayedTextField(label, this.ValueEntry.SmartValue, GUILayoutOptions.MinWidth(0)); }
/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(IPropertyValueEntry <T> entry, GUIContent label) { Context context; if (entry.Context.Get(this, "context", out context)) { context.UniqueControlName = Guid.NewGuid().ToString(); } if (!context.IsValid) { GUIHelper.PushColor(Color.red); } GUI.SetNextControlName(context.UniqueControlName); Rect rect = EditorGUILayout.GetControlRect(); if (label != null) { rect = EditorGUI.PrefixLabel(rect, label); } Rect fieldRect = rect; Rect dropdownRect = rect.AlignRight(18); // Dropdown button. EditorGUIUtility.AddCursorRect(dropdownRect, MouseCursor.Arrow); if (GUI.Button(dropdownRect, GUIContent.none, GUIStyle.none)) { TypeSelector selector = new TypeSelector(AssemblyTypeFlags.All, false); selector.SelectionConfirmed += t => { var type = t.FirstOrDefault(); entry.Property.Tree.DelayAction(() => { entry.WeakSmartValue = type; context.IsValid = true; entry.ApplyChanges(); }); }; selector.SetSelection(entry.SmartValue); selector.ShowInPopup(rect, 350); } // Reset type name. if (Event.current.type == EventType.Layout) { context.TypeNameTemp = entry.SmartValue != null?Binder.BindToName(entry.SmartValue) : null; } EditorGUI.BeginChangeCheck(); context.TypeNameTemp = SirenixEditorFields.DelayedTextField(fieldRect, context.TypeNameTemp); // Draw dropdown button. EditorIcons.TriangleDown.Draw(dropdownRect); if (!context.IsValid) { GUIHelper.PopColor(); } bool isFocused = GUI.GetNameOfFocusedControl() == context.UniqueControlName; bool defocused = false; if (isFocused != context.WasFocusedControl) { defocused = !isFocused; context.WasFocusedControl = isFocused; } if (EditorGUI.EndChangeCheck()) { if (string.IsNullOrEmpty(context.TypeNameTemp.Trim())) { // String is empty entry.SmartValue = null; context.IsValid = true; } else { Type type = Binder.BindToType(context.TypeNameTemp); if (type == null) { type = AssemblyUtilities.GetTypeByCachedFullName(context.TypeNameTemp); } if (type == null) { context.IsValid = false; } else { // Use WeakSmartValue in case of a different Type-derived instance showing up somehow, so we don't get cast errors entry.WeakSmartValue = type; context.IsValid = true; } } } if (defocused) { // Ensure we show the full type name when the control is defocused context.TypeNameTemp = entry.SmartValue == null ? "" : Binder.BindToName(entry.SmartValue); context.IsValid = true; } }
/// <summary> /// Draws the property. /// </summary> protected override void DrawPropertyLayout(IPropertyValueEntry <string> entry, DelayedAttribute attribute, GUIContent label) { entry.SmartValue = SirenixEditorFields.DelayedTextField(label, entry.SmartValue); }