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();
        }
Esempio n. 3
0
 /// <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();
         }
     }
 }
Esempio n. 4
0
        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);
                }
            }
        }
Esempio n. 5
0
        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();
        }