Skip to content

Commit 267ea65

Browse files
committed
feat: Move context menu options to the toolbar
1 parent 3eb7c87 commit 267ea65

File tree

6 files changed

+112
-18
lines changed

6 files changed

+112
-18
lines changed

Editor/Scripts/Element.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using UnityEditor.UIElements;
2+
using UnityEngine.UIElements;
3+
4+
namespace GBG.PlayableGraphMonitor.Editor
5+
{
6+
public class ToolbarDropdownToggle : VisualElement, INotifyValueChanged<bool>
7+
{
8+
private readonly ToolbarToggle _toggle;
9+
private readonly ToolbarMenu _menu;
10+
11+
public string text
12+
{
13+
get => _toggle.text;
14+
set => _toggle.text = value;
15+
}
16+
public string label
17+
{
18+
get => _toggle.label;
19+
set => _toggle.label = value;
20+
}
21+
public Label labelElement => _toggle.labelElement;
22+
public new string tooltip
23+
{
24+
get => _toggle.tooltip;
25+
set => _toggle.tooltip = value;
26+
}
27+
public bool value
28+
{
29+
get => _toggle.value;
30+
set => _toggle.value = value;
31+
}
32+
public string menuTooltip
33+
{
34+
get => _menu.tooltip;
35+
set => _menu.tooltip = value;
36+
}
37+
public DropdownMenu menu => _menu.menu;
38+
public ToolbarMenu.Variant menuVariant
39+
{
40+
get => _menu.variant;
41+
set => _menu.variant = value;
42+
}
43+
44+
45+
public ToolbarDropdownToggle()
46+
{
47+
style.flexDirection = FlexDirection.Row;
48+
style.flexShrink = 0;
49+
50+
_toggle = new ToolbarToggle();
51+
_toggle.style.borderRightWidth = 0;
52+
_toggle.style.minWidth = 0;
53+
Add(_toggle);
54+
55+
_menu = new ToolbarMenu();
56+
_menu.style.borderLeftWidth = 0;
57+
Add(_menu);
58+
}
59+
60+
public void SetValueWithoutNotify(bool newValue)
61+
{
62+
_toggle.SetValueWithoutNotify(newValue);
63+
}
64+
}
65+
}

Editor/Scripts/Element/ToolbarDropdownToggle.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/Scripts/Window/PlayableGraphMonitorWindow.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -228,24 +228,13 @@ private void OnDestroyingGraph(PlayableGraph graph)
228228

229229
void IHasCustomMenu.AddItemsToMenu(GenericMenu menu)
230230
{
231-
#if UNITY_2021_1_OR_NEWER
232-
menu.AddItem(new GUIContent("Show clip progress bar title (will degrade performance)"),
233-
_viewUpdateContext.ShowClipProgressBarTitle, OnToggleShowClipProgressBarTitle);
234-
menu.AddSeparator("");
235-
#endif
236-
237231
// Source Code
238232
menu.AddItem(new GUIContent("Source Code"), false, () =>
239233
{
240234
Application.OpenURL("https://github.com/SolarianZ/UnityPlayableGraphMonitorTool");
241235
});
242236
}
243237

244-
private void OnToggleShowClipProgressBarTitle()
245-
{
246-
_viewUpdateContext.ShowClipProgressBarTitle = !_viewUpdateContext.ShowClipProgressBarTitle;
247-
}
248-
249238
#endregion
250239
}
251240
}

Editor/Scripts/Window/PlayableGraphMonitorWindow_Toolbar.cs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,29 @@ private void CreateToolbar()
9595
_toolbar.Add(_inspectorToggle);
9696

9797
// Clip ProgressBar toggle
98-
var clipProgressBarToggle = new ToolbarToggle()
98+
var clipProgressDropdownToggle = new ToolbarDropdownToggle()
9999
{
100100
text = "Clip Progress",
101101
tooltip = "Disabling this option can significantly improve performance.",
102102
value = _viewUpdateContext.ShowClipProgressBar,
103103
};
104-
clipProgressBarToggle.RegisterValueChangedCallback(ToggleDisplayClipProgressBar);
105-
clipProgressBarToggle.Q<TextElement>(className: "unity-text-element").style.color = NormalTextColor;
106-
_toolbar.Add(clipProgressBarToggle);
104+
clipProgressDropdownToggle.RegisterValueChangedCallback(ToggleDisplayClipProgressBar);
105+
clipProgressDropdownToggle.Q<TextElement>(className: "unity-text-element").style.color = NormalTextColor;
106+
clipProgressDropdownToggle.menu.AppendAction("Progress Text (Low-Performance)",
107+
ToggleDisplayClipProgressBarText,
108+
(_) =>
109+
{
110+
var @checked = _viewUpdateContext.ShowClipProgressBarTitle
111+
? DropdownMenuAction.Status.Checked
112+
: DropdownMenuAction.Status.Normal;
113+
var disabled = _viewUpdateContext.ShowClipProgressBar
114+
? DropdownMenuAction.Status.Normal
115+
: DropdownMenuAction.Status.Disabled;
116+
return @checked | disabled;
117+
});
118+
_toolbar.Add(clipProgressDropdownToggle);
107119

120+
// Update edge toggle
108121
var updateEdgeToggle = new ToolbarToggle()
109122
{
110123
text = "Always Update Edges",
@@ -157,6 +170,7 @@ private void CreateToolbar()
157170
var frameAllButton = new ToolbarButton(OnFrameAllButtonClicked)
158171
{
159172
text = "Frame All",
173+
style = { flexShrink = 0 },
160174
};
161175
frameAllButton.Q<TextElement>(className: "unity-text-element").style.color = NormalTextColor;
162176
_toolbar.Add(frameAllButton);
@@ -165,15 +179,17 @@ private void CreateToolbar()
165179
_toolbar.Add(new ToolbarSpacer());
166180
_selectOutputNodeMenu = new ToolbarMenu
167181
{
168-
text = "Select Output Node"
182+
text = "Select Output Node",
183+
style = { flexShrink = 0 },
169184
};
170185
_selectOutputNodeMenu.RegisterCallback<PointerEnterEvent>(OnHoverSelectOutputNodeMenu);
171186
_toolbar.Add(_selectOutputNodeMenu);
172187

173188
// Select root node
174189
_selectRootNodeMenu = new ToolbarMenu
175190
{
176-
text = "Select Root Node"
191+
text = "Select Root Node",
192+
style = { flexShrink = 0 },
177193
};
178194
_selectRootNodeMenu.RegisterCallback<PointerEnterEvent>(OnHoverSelectRootNodeMenu);
179195
_toolbar.Add(_selectRootNodeMenu);
@@ -221,6 +237,11 @@ private void ToggleDisplayClipProgressBar(ChangeEvent<bool> evt)
221237
_viewUpdateContext.ShowClipProgressBar = evt.newValue;
222238
}
223239

240+
private void ToggleDisplayClipProgressBarText(DropdownMenuAction _)
241+
{
242+
_viewUpdateContext.ShowClipProgressBarTitle = !_viewUpdateContext.ShowClipProgressBarTitle;
243+
}
244+
224245
private void ToggleKeepUpdatingEdges(ChangeEvent<bool> evt)
225246
{
226247
_viewUpdateContext.KeepUpdatingEdges = evt.newValue;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "com.greenbamboogames.playablegraphmonitor",
3-
"version": "2.5.8",
3+
"version": "2.5.9",
44
"displayName": "PlayableGraph Monitor!",
55
"description": "PlayableGraph monitor.",
66
"unity": "2019.4",

0 commit comments

Comments
 (0)