private void DrawHelpButton() { GUILayout.Space(33); Rect position = new Rect(Window.position.width - 37, 2, 34, 26); using (var helpMenuContent = ControlContent.Basic( RotorzEditorStyles.Skin.ContextHelp, TileLang.ParticularText("Action", "Help") )) { if (EditorInternalUtility.DropdownMenu(position, helpMenuContent, RotorzEditorStyles.Instance.FlatButton)) { var helpMenu = new EditorMenu(); helpMenu.AddCommand(TileLang.ParticularText("Action", "Show Tips")) .Checked(ControlContent.TrailingTipsVisible) .Action(() => { ControlContent.TrailingTipsVisible = !ControlContent.TrailingTipsVisible; }); --position.y; helpMenu.ShowAsDropdown(position); } } }
/// <summary> /// Draw selection history navigation buttons in fixed position of designer window. /// </summary> private void DrawHistoryButtons() { Rect backButtonPosition = new Rect(2, 4, 28, 21); Rect forwardButtonPosition = new Rect(backButtonPosition.xMax + 1, backButtonPosition.y, 28, 21); this._recentHistoryButtonPosition = new Rect(forwardButtonPosition.xMax + 1, backButtonPosition.y, 27, 21); EditorGUI.BeginDisabledGroup(!this.History.CanGoBack); if (RotorzEditorGUI.HoverButton(backButtonPosition, s_content_HistoryBackButton, RotorzEditorStyles.Instance.HistoryNavButton)) { this.History.GoBack(); GUIUtility.ExitGUI(); } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(!this.History.CanGoForward); if (RotorzEditorGUI.HoverButton(forwardButtonPosition, s_content_HistoryForwardButton, RotorzEditorStyles.Instance.HistoryNavButton)) { this.History.GoForward(); GUIUtility.ExitGUI(); } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(this.History.Recent.Count == 0); if (EditorInternalUtility.DropdownMenu(this._recentHistoryButtonPosition, s_content_HistoryRecentButton, RotorzEditorStyles.Instance.HistoryNavButton)) { this.ShowRecentHistoryMenu(); } EditorGUI.EndDisabledGroup(); }
/// <summary> /// Use to draw menu button somewhere within designer window. /// </summary> /// <remarks> /// <para>Custom menu items can be added to menu by providing a custom implementation /// of <see cref="AddItemsToMenu"/>.</para> /// </remarks> /// <param name="position">Position of button in space of editor window.</param> /// <param name="tooltip">Tooltip text.</param> protected void DrawMenuButton(Rect position, string tooltip = null) { using (var content = ControlContent.Basic(RotorzEditorStyles.Skin.GearButton, tooltip)) { if (EditorInternalUtility.DropdownMenu(position, content, RotorzEditorStyles.Instance.FlatButton)) { this.DisplayMenu(new Rect(position.x, position.y, position.width, position.height - 1)); GUIUtility.ExitGUI(); } } }
private void DrawHelpButton() { using (var content = ControlContent.Basic(RotorzEditorStyles.Skin.ContextHelp)) { Rect position = GUILayoutUtility.GetRect(content, RotorzEditorStyles.Instance.ToolbarButtonPadded); if (EditorInternalUtility.DropdownMenu(position, content, RotorzEditorStyles.Instance.ToolbarButtonPadded)) { var helpMenu = new EditorMenu(); helpMenu.AddCommand(TileLang.ParticularText("Action", "Show Tips")) .Checked(ControlContent.TrailingTipsVisible) .Action(() => { ControlContent.TrailingTipsVisible = !ControlContent.TrailingTipsVisible; }); --position.y; helpMenu.ShowAsDropdown(position); } } }
private static void SpacingCoordinateField(Rect position, string label, SnapAxis axis) { var fieldStyle = RotorzEditorStyles.Instance.TextFieldRoundEdge; var textStyle = RotorzEditorStyles.Instance.TransparentTextField; var buttonStyle = RotorzEditorStyles.Instance.TextFieldRoundEdgeCancelButtonEmpty; int controlID = EditorGUIUtility.GetControlID(s_SpacingCoordinateFieldHint, FocusType.Passive); int realTextControlID = controlID + 1; // Display prefix label? if (!string.IsNullOrEmpty(label)) { if (Event.current.type == EventType.Repaint) { EditorStyles.label.Draw(new Rect(position.x, position.y, 12, position.height), label, false, false, false, false); } position.x += 12; position.width -= 12; } // Display popup field for alignment selection. Rect alignmentPosition = position; alignmentPosition.y -= 1; alignmentPosition.width = 33; alignmentPosition.height += 1; using (var content = AlignmentContent(label, axis)) { if (EditorInternalUtility.DropdownMenu(alignmentPosition, content, RotorzEditorStyles.Instance.FlatButton)) { DropDownAlignment(alignmentPosition, axis); } } position.x += alignmentPosition.width; position.width -= alignmentPosition.width; EditorGUI.BeginDisabledGroup(axis.Alignment == SnapAlignment.Free); { // Add small amount of padding after control. Rect textPosition = position; textPosition.width -= 3; if (axis.Alignment == SnapAlignment.Free) { // Draw background for text field. if (Event.current.type == EventType.Repaint) { position.width -= buttonStyle.fixedWidth; fieldStyle.Draw(position, false, false, false, false); // Draw end of text field control. position.x += position.width; position.width = buttonStyle.fixedWidth; position.height = buttonStyle.fixedHeight; buttonStyle.Draw(position, false, false, false, false); } } else { using (var fieldPrefixContent = ControlContent.Basic( labelText: axis.GridType == SnapGridType.Fraction ? "1/" : " ", image: RotorzEditorStyles.Skin.DownArrow )) { // Draw background for text field. if (Event.current.type == EventType.Repaint) { position.width -= buttonStyle.fixedWidth; GUI.contentColor = EditorGUIUtility.isProSkin ? Color.black : new Color(0f, 0f, 0f, 0.5f); fieldStyle.Draw(position, fieldPrefixContent, realTextControlID); GUI.contentColor = Color.white; // Draw end of text field control. position.x += position.width; position.width = buttonStyle.fixedWidth; position.height = buttonStyle.fixedHeight; buttonStyle.Draw(position, false, false, false, false); } float prefixWidth = fieldStyle.CalcSize(fieldPrefixContent).x; if (Event.current.GetTypeForControl(controlID) == EventType.MouseDown) { Rect popupPosition = textPosition; popupPosition.width = prefixWidth; if (popupPosition.Contains(Event.current.mousePosition)) { Event.current.Use(); DropDownSpacingCoordinate(popupPosition, axis); } } // Draw actual text field. textPosition.x += prefixWidth; textPosition.y += 1; textPosition.width -= prefixWidth; switch (axis.GridType) { default: case SnapGridType.Fraction: axis.SetFraction(EditorGUI.IntField(textPosition, axis.FractionDenominator, textStyle)); break; case SnapGridType.Custom: axis.SetCustomSize(EditorGUI.FloatField(textPosition, axis.CustomSize, textStyle)); break; } } } } EditorGUI.EndDisabledGroup(); }
private void OnToolSelectorGUI() { GUILayout.Space(6); this.FilterRegisteredTools(); // Calculate metrics. int buttonColumns = Screen.width / 46; if (buttonColumns > this.filteredToolList.Count + 1) { buttonColumns = this.filteredToolList.Count + 1; } // Prepare style for tool button. if (s_ToolButtonStyle == null) { s_ToolButtonStyle = new GUIStyle(RotorzEditorStyles.Instance.ToolButton); } s_ToolButtonStyle.fixedWidth = Mathf.FloorToInt((float)Screen.width / (float)buttonColumns) - 3; // Display tool items. GUILayout.BeginHorizontal(); GUILayout.Space(4); using (var content = ControlContent.Basic( RotorzEditorStyles.Skin.MenuButton, TileLang.ParticularText("Action", "Main Menu") )) { if (EditorInternalUtility.DropdownMenu(content, s_ToolButtonStyle)) { EditorUtility.DisplayPopupMenu(this.menuPosition, "CONTEXT/_RTS_TOOLS_", new MenuCommand(this, 0)); } if (Event.current.type == EventType.Repaint) { this.menuPosition = GUILayoutUtility.GetLastRect(); } } int currentColumn = 1; for (int i = 0; i < this.filteredToolList.Count; ++i) { var tool = this.filteredToolList[i]; // Place tool button at start of new row upon overflowing width of palette. if (currentColumn++ >= buttonColumns) { currentColumn = 0; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Space(4); } bool selected = ToolManager.Instance.CurrentTool == tool; // Get label for tool button and select icon based upon tool selection. var toolIconTexture = selected ? tool.IconActive : tool.IconNormal; using (var buttonContent = ControlContent.Basic(tool.Label, toolIconTexture)) { // Fallback to 'normal' icon if 'active' icon is not specified. if (selected && toolIconTexture == null) { buttonContent.LabelContent.image = tool.IconNormal; } if (this.ToolButton(buttonContent, selected)) { ToolManager.Instance.CurrentTool = !selected ? tool : null; } } } GUILayout.EndHorizontal(); ExtraEditorGUI.SeparatorLight(marginBottom: 0); this.scrolling = GUILayout.BeginScrollView(this.scrolling); if (ToolManager.Instance.CurrentTool != null) { GUILayout.Space(6); float restoreLabelWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 130; { var tool = ToolManager.Instance.CurrentTool; tool.OnToolOptionsGUI(); if (tool.HasAdvancedToolOptionsGUI) { GUILayout.Space(-2); tool.ShowAdvancedOptionsGUI = GUILayout.Toggle(tool.ShowAdvancedOptionsGUI, TileLang.ParticularText("Section", "Advanced"), RotorzEditorStyles.Instance.FlatToggle); if (tool.ShowAdvancedOptionsGUI) { tool.OnAdvancedToolOptionsGUI(); } } } EditorGUIUtility.labelWidth = restoreLabelWidth; } else { GUILayout.Space(6 + 2); GUILayout.Label(TileLang.Text("No tool selected"), EditorStyles.miniLabel); } GUILayout.Space(3); GUILayout.FlexibleSpace(); GUILayout.EndScrollView(); }