private RenameOperationSortingButtonEvent DrawReorderingButtons(Rect containingRect, bool disableUpButton, bool disableDownButton) { const string BigUpArrowUnicode = "\u25B2"; const string BigDownArrowUnicode = "\u25BC"; RenameOperationSortingButtonEvent buttonEvent = RenameOperationSortingButtonEvent.None; EditorGUI.BeginDisabledGroup(disableUpButton); var leftButtonStyle = new GUIStyle(EditorStyles.miniButtonLeft); leftButtonStyle.margin = new RectOffset(-1, -1, leftButtonStyle.margin.top, leftButtonStyle.margin.bottom); leftButtonStyle.fontSize = 8; var leftSplit = containingRect.GetSplitHorizontal(1, 3, 0.0f); if (GUI.Button(leftSplit, BigUpArrowUnicode, leftButtonStyle)) { buttonEvent = RenameOperationSortingButtonEvent.MoveUp; } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(disableDownButton); var midButtonStyle = new GUIStyle(EditorStyles.miniButtonMid); midButtonStyle.margin = new RectOffset(-1, -1, midButtonStyle.margin.top, midButtonStyle.margin.bottom); midButtonStyle.fontSize = 8; var midSplit = containingRect.GetSplitHorizontal(2, 3, 0.0f); if (GUI.Button(midSplit, BigDownArrowUnicode, midButtonStyle)) { buttonEvent = RenameOperationSortingButtonEvent.MoveDown; } EditorGUI.EndDisabledGroup(); var rightButtonStyle = new GUIStyle(EditorStyles.miniButtonRight); rightButtonStyle.margin = new RectOffset(-1, -1, rightButtonStyle.margin.top, rightButtonStyle.margin.bottom); rightButtonStyle.fontSize = 10; var rightSplit = containingRect.GetSplitHorizontal(3, 3, 0.0f); if (GUI.Button(rightSplit, "X", rightButtonStyle)) { buttonEvent = RenameOperationSortingButtonEvent.Delete; } return(buttonEvent); }
/// <summary> /// Draws the element, returning an event that indicates how the minibuttons are pressed. /// </summary> /// <param name="containingRect">The rect to draw the element inside.</param> /// <param name = "guiOptions">Options to use when drawing the operation GUI.</param> /// <returns>A ListButtonEvent indicating if a button was clicked.</returns> public RenameOperationSortingButtonEvent DrawGUI(Rect containingRect, RenameOperationGUIOptions guiOptions) { var paddedContainer = containingRect.AddPadding(Padding.left, Padding.right, Padding.top, Padding.bottom); var operationStyle = new GUIStyle("ScriptText"); GUI.Box(containingRect, "", operationStyle); var headerRect = new Rect(paddedContainer); headerRect.height = HeaderHeight; RenameOperationSortingButtonEvent buttonEvent = this.DrawHeaderAndReorderButtons( headerRect, this.HeadingLabel, guiOptions.DisableUpButton, guiOptions.DisableDownButton); EditorGUI.indentLevel++; var contentsRect = new Rect(paddedContainer); contentsRect.y += headerRect.height + HeaderAndContentSpacing; contentsRect.height -= headerRect.height; this.DrawContents(contentsRect, guiOptions.ControlPrefix); EditorGUI.indentLevel--; var coloredHighlightRect = new Rect(containingRect); coloredHighlightRect.yMin += 2.0f; coloredHighlightRect.yMax -= 1.0f; coloredHighlightRect.xMin += 2.0f; coloredHighlightRect.width = 3.0f; var oldColor = GUI.color; GUI.color = this.HighlightColor; GUI.DrawTexture(coloredHighlightRect, Texture2D.whiteTexture); GUI.color = oldColor; return(buttonEvent); }
/// <summary> /// Draws the header and reorder buttons. /// </summary> /// <returns>The header and reorder buttons.</returns> /// <param name="header">Header text to display.</param> /// <param name="disableUpButton">If set to <c>true</c> disable the MoveUp button.</param> /// <param name="disableDownButton">If set to <c>true</c> disable the MoveDown button.</param> protected RenameOperationSortingButtonEvent DrawHeaderAndReorderButtons(Rect containingRect, string header, bool disableUpButton, bool disableDownButton) { // Add some padding for the colored highlight var labelRect = new Rect(containingRect); var labelPaddingX = 4.0f; labelRect.x += labelPaddingX; labelRect.width -= labelPaddingX; EditorGUI.LabelField(labelRect, header, EditorStyles.boldLabel); RenameOperationSortingButtonEvent buttonEvent = RenameOperationSortingButtonEvent.None; var buttonPaddingTop = 1.0f; var buttonPaddingBottom = 1.0f; var buttonGroupWidth = 60.0f; var buttonRect = new Rect( labelRect.x + labelRect.width - buttonGroupWidth, labelRect.y + buttonPaddingTop, buttonGroupWidth, labelRect.height - (buttonPaddingBottom + buttonPaddingTop)); buttonEvent = this.DrawReorderingButtons(buttonRect, disableUpButton, disableDownButton); return(buttonEvent); }