/// <summary> /// Draws an enum selector field using the enum selector. /// </summary> public static T DrawEnumField(Rect rect, GUIContent label, GUIContent contentLabel, T value, GUIStyle style = null) { int id; bool hasFocus; Action <EnumSelector <T> > bindSelector; Func <IEnumerable <T> > getResult; SirenixEditorGUI.GetFeatureRichControl(rect, out id, out hasFocus); if (DrawSelectorButton(rect, contentLabel, style ?? EditorStyles.popup, id, out bindSelector, out getResult)) { var selector = new EnumSelector <T>(); if (!EditorGUI.showMixedValue) { selector.SetSelection(value); } var window = selector.ShowInPopup(new Vector2(rect.xMin, rect.yMax)); if (isFlagEnum) { window.OnClose += selector.SelectionTree.Selection.ConfirmSelection; } bindSelector(selector); } if (getResult != null) { value = getResult().FirstOrDefault(); } return(value); }
private void DrawFirstToolbar() { GUILayout.Space(1); var typeName = " " + (this.targetType == null ? "Select Type" : this.targetType.GetNiceFullName()) + " "; var rect = GUILayoutUtility.GetRect(0, 21, SirenixGUIStyles.ToolbarBackground); var rect2 = rect.AlignRight(80); var rect1 = rect.SetXMax(rect2.xMin); TypeSelector.DrawSelectorDropdown(rect1, new GUIContent(typeName), SelectType, btnStyle); EditorGUI.BeginChangeCheck(); this.targetTypeFlags = EnumSelector <AssemblyTypeFlags> .DrawEnumField(rect2, null, new GUIContent("Type Filter"), this.targetTypeFlags, btnStyle); if (EditorGUI.EndChangeCheck()) { EditorPrefs.SetInt(TargetTypeFlagsPrefKey, (int)this.targetTypeFlags); } if (Event.current.type == EventType.Repaint) { var icon = GUIHelper.GetAssetThumbnail(null, this.targetType ?? typeof(int), false); if (icon != null) { rect1.x += 8; GUI.DrawTexture(rect1.AlignLeft(16).AlignMiddle(16), icon, ScaleMode.ScaleToFit); } } }
private void DrawSecondToolbar() { var rect = GUILayoutUtility.GetRect(0, 21); if (Event.current.type == EventType.Repaint) { SirenixGUIStyles.ToolbarBackground.Draw(rect, GUIContent.none, 0); SirenixEditorGUI.DrawBorders(rect, 0, 0, 0, 1); } var rect3 = rect.AlignRight(80); var rect2 = rect3.SubX(100).SetWidth(100); var rect1 = rect.SetXMax(rect2.xMin); EditorGUI.BeginChangeCheck(); this.memberTypes = EnumSelector <MemberTypeFlags> .DrawEnumField(rect2, null, this.memberTypes, btnStyle); this.accessModifiers = EnumSelector <AccessModifierFlags> .DrawEnumField(rect3, null, this.accessModifiers, btnStyle); if (EditorGUI.EndChangeCheck()) { EditorPrefs.SetInt(AccessModifierFlagsPrefKey, (int)this.accessModifiers); EditorPrefs.SetInt(MemberTypeFlagsPrefKey, (int)this.memberTypes); } this.DrawSearchField(rect1); }
/// <summary> /// Draws an enum selector field using the enum selector. /// </summary> public static T DrawEnumField(GUIContent label, T value) { int id; bool hasFocus; Rect rect; Action <EnumSelector <T> > bindSelector; Func <IEnumerable <T> > getResult; var display = (isFlagEnum && Convert.ToInt64(value) == 0) ? "None" : (EditorGUI.showMixedValue ? "—" : value.ToString()); TempFeatureRichControlRect(label, out id, out hasFocus, out rect); if (DrawSelectorButton(rect, display, EditorStyles.popup, id, out bindSelector, out getResult)) { var selector = new EnumSelector <T>(); if (!EditorGUI.showMixedValue) { selector.SetSelection(value); } var window = selector.ShowInPopup(new Vector2(rect.xMin, rect.yMax)); if (isFlagEnum) { window.OnClose += selector.SelectionTree.Selection.ConfirmSelection; } bindSelector(selector); } if (getResult != null) { value = getResult().FirstOrDefault(); GUI.changed = true; } return(value); }