From eb6e3a7e8eba962223ebddb960749fe87ff1e009 Mon Sep 17 00:00:00 2001 From: W2Wizard <63303990+W2Wizard@users.noreply.github.com> Date: Sun, 13 Jun 2021 14:49:10 +0200 Subject: [PATCH] Replace clickable images with actual buttons With the new icons the clickable images for adding functions for the Visject surface got too small and unreadable. Instead using more visible buttons should counteract this. --- Source/Editor/EditorIcons.cs | 8 ++ .../Windows/Assets/VisualScriptWindow.cs | 77 ++++++++----------- 2 files changed, 38 insertions(+), 47 deletions(-) diff --git a/Source/Editor/EditorIcons.cs b/Source/Editor/EditorIcons.cs index d4b89b8d3..ff3164dcc 100644 --- a/Source/Editor/EditorIcons.cs +++ b/Source/Editor/EditorIcons.cs @@ -46,6 +46,10 @@ namespace FlaxEditor public SpriteHandle Down32; public SpriteHandle FolderClosed32; public SpriteHandle FolderOpen32; + public SpriteHandle FolderFill32; + public SpriteHandle Info32; + public SpriteHandle Warning32; + public SpriteHandle Error32; // Visject public SpriteHandle VisjectBoxOpen32; @@ -128,6 +132,10 @@ namespace FlaxEditor public SpriteHandle AndroidIcon128; public SpriteHandle PS4Icon128; public SpriteHandle FlaxLogo128; + public SpriteHandle SwitchIcon128; + public SpriteHandle SwitchSettings128; + public SpriteHandle Json128; + public SpriteHandle LocalizationSettings128; internal void LoadIcons() { diff --git a/Source/Editor/Windows/Assets/VisualScriptWindow.cs b/Source/Editor/Windows/Assets/VisualScriptWindow.cs index b9ddafa87..545f15867 100644 --- a/Source/Editor/Windows/Assets/VisualScriptWindow.cs +++ b/Source/Editor/Windows/Assets/VisualScriptWindow.cs @@ -167,6 +167,8 @@ namespace FlaxEditor.Windows.Assets /// public override DisplayStyle Style => DisplayStyle.InlineIntoParent; + private Control _overrideButton; + /// public override void Initialize(LayoutElementsContainer layout) { @@ -178,6 +180,21 @@ namespace FlaxEditor.Windows.Assets var group = layout.Group("Functions"); var nodes = window.VisjectSurface.Nodes; + var grid = group.CustomContainer(); + var gridControl = grid.CustomControl; + gridControl.ClipChildren = false; + gridControl.Height = Button.DefaultHeight; + gridControl.SlotsHorizontally = 2; + gridControl.SlotsVertically = 1; + + var addOverride = grid.Button("Add Override"); + addOverride.Button.Clicked += OnOverrideMethodClicked; + // TODO: Add sender arg to button clicked action? + _overrideButton = addOverride.Control; + + var addFuncction = grid.Button("Add Function"); + addFuncction.Button.Clicked += OnAddNewFunctionClicked; + // List of functions in the graph for (int i = 0; i < nodes.Count; i++) { @@ -192,60 +209,20 @@ namespace FlaxEditor.Windows.Assets } else if (node is Surface.Archetypes.Function.MethodOverrideNode overrideNode) { - var label = group.ClickableLabel(overrideNode.Title + " (override)").CustomControl; + var label = group.ClickableLabel($"{overrideNode.Title} (override)").CustomControl; label.TextColorHighlighted = Color.FromBgra(0xFFA0A0A0); label.TooltipText = overrideNode.TooltipText; label.DoubleClick += () => ((VisualScriptWindow)Values[0]).Surface.FocusNode(overrideNode); label.RightClick += () => ShowContextMenu(overrideNode, label); } } - - // New function button - const float groupPanelButtonSize = 14; - var addNewFunction = new Image - { - TooltipText = "Add new function", - AutoFocus = true, - AnchorPreset = AnchorPresets.TopRight, - Parent = group.Panel, - Bounds = new Rectangle(group.Panel.Width - groupPanelButtonSize, 0, groupPanelButtonSize, groupPanelButtonSize), - IsScrollable = false, - Color = FlaxEngine.GUI.Style.Current.ForegroundGrey, - Margin = new Margin(1), - Brush = new SpriteBrush(Editor.Instance.Icons.Add64), - }; - addNewFunction.Clicked += OnAddNewFunctionClicked; - - // Override method button - var overrideMethod = new Image - { - TooltipText = "Override method", - AutoFocus = true, - AnchorPreset = AnchorPresets.TopRight, - Parent = group.Panel, - Bounds = new Rectangle(group.Panel.Width - groupPanelButtonSize * 2, 0, groupPanelButtonSize, groupPanelButtonSize), - IsScrollable = false, - Color = FlaxEngine.GUI.Style.Current.ForegroundGrey, - Margin = new Margin(1), - Brush = new SpriteBrush(Editor.Instance.Icons.Import64), - }; - overrideMethod.Clicked += OnOverrideMethodClicked; - } - - private void OnAddNewFunctionClicked(Image image, MouseButton button) - { - if (button != MouseButton.Left) - return; - var surface = ((VisualScriptWindow)Values[0]).Surface; - var surfaceBounds = surface.AllNodesBounds; - surface.ShowArea(new Rectangle(surfaceBounds.BottomLeft, new Vector2(200, 150)).MakeExpanded(400.0f)); - var node = surface.Context.SpawnNode(16, 6, surfaceBounds.BottomLeft + new Vector2(0, 50)); - surface.Select(node); } private void ShowContextMenu(SurfaceNode node, ClickableLabel label) { + // TODO: Execute only on "Edit Signature...", this makes the "Show" button useless ((VisualScriptWindow)Values[0]).Surface.FocusNode(node); + var cm = new ContextMenu(); cm.AddButton("Show", () => ((VisualScriptWindow)Values[0]).Surface.FocusNode(node)).Icon = Editor.Instance.Icons.Search12; cm.AddButton("Delete", () => ((VisualScriptWindow)Values[0]).Surface.Delete(node)).Icon = Editor.Instance.Icons.Cross12; @@ -253,11 +230,17 @@ namespace FlaxEditor.Windows.Assets cm.Show(label, new Vector2(0, label.Height)); } - private void OnOverrideMethodClicked(Image image, MouseButton button) + private void OnAddNewFunctionClicked() { - if (button != MouseButton.Left) - return; + var surface = ((VisualScriptWindow)Values[0]).Surface; + var surfaceBounds = surface.AllNodesBounds; + surface.ShowArea(new Rectangle(surfaceBounds.BottomLeft, new Vector2(200, 150)).MakeExpanded(400.0f)); + var node = surface.Context.SpawnNode(16, 6, surfaceBounds.BottomLeft + new Vector2(0, 50)); + surface.Select(node); + } + private void OnOverrideMethodClicked() + { var cm = new ContextMenu(); var window = (VisualScriptWindow)Values[0]; var scriptMeta = window.Asset.Meta; @@ -310,7 +293,7 @@ namespace FlaxEditor.Windows.Assets { cm.AddButton("Nothing to override"); } - cm.Show(image, new Vector2(0, image.Height)); + cm.Show(_overrideButton, new Vector2(0, _overrideButton.Height)); } }