28 instantiations of LinuxTrayMenuItem
Aspire.Tray.Tests (28)
LinuxTrayTests.cs (1)
340Assert.Throws<UnauthorizedAccessException>(() => application.Execute(new("", LinuxTrayAction.Folder, host)));
src\Aspire.Tray\Linux\LinuxTrayApplication.cs (1)
667Execute(new("", command, action.Host)
src\Aspire.Tray\Linux\LinuxTrayMenu.cs (26)
31List<LinuxTrayMenuItem> items = [new($"Aspire \u00b7 {summary}", Enabled: false)]; 36items.Add(new(notice, Enabled: false)); 42items.Add(new("", LinuxTrayAction.Separator)); 44recent.Add(new("", LinuxTrayAction.Separator)); 45recent.Add(new("Clear recent AppHosts...", LinuxTrayAction.ClearRecent, Enabled: state.CanClearRecent)); 46items.Add(new($"Recently opened \u00b7 {state.RecentAppHosts.Count}", Children: recent)); 48items.Add(new("", LinuxTrayAction.Separator)); 49items.Add(new("Settings...", LinuxTrayAction.Settings) { Icon = LinuxTrayIcon.Settings }); 50items.Add(new("Documentation", LinuxTrayAction.Documentation) { Icon = LinuxTrayIcon.Documentation }); 51items.Add(new("Quit", LinuxTrayAction.Quit)); 61items.Add(new("", LinuxTrayAction.Separator)); 62items.Add(new(title, Enabled: false)); 71actions.Add(new("Open dashboard", LinuxTrayAction.Dashboard, host, host.CanOpenDashboard)); 72actions.Add(new(host.IsStopping ? "Stopping..." : "Stop", 77actions.Add(new(host.IsStarting ? "Starting..." : "Start", LinuxTrayAction.Start, host, host.CanStart)); 79actions.Add(new("", LinuxTrayAction.Separator)); 82actions.Add(new("Open in", Children: applications.Select(application => 83new LinuxTrayMenuItem(application.Title, LinuxTrayAction.OpenIn, host) { Application = application }).ToArray())); 85actions.Add(new("Show in file manager", LinuxTrayAction.Folder, host)); 86actions.Add(new("Copy path", LinuxTrayAction.CopyPath, host)); 87actions.Add(new(host.IsPinned ? "Unpin" : "Pin", LinuxTrayAction.TogglePin, host)); 90actions.Add(new("Remove from recent", LinuxTrayAction.RemoveRecent, host)); 92actions.Add(new("", LinuxTrayAction.Separator)); 93actions.Add(new(host.Error ?? Status(host), Enabled: false)); 95actions.Add(new(host.IsRunning ? $"{location} \u00b7 PID {host.Id.AppHostPid}" : location, Enabled: false)); 100return new($"{host.Title} \u00b7 {status}", Host: host, Children: actions)
26 references to LinuxTrayMenuItem
Aspire.Tray.Tests (26)
LinuxTrayTests.cs (16)
56void Append(IReadOnlyList<LinuxTrayMenuItem> items, int depth) 58foreach (var item in items) 458var row = Assert.Single(menu, item => item.Host is not null); 467var openIn = row.Children!.Single(item => item.Label == "Open in"); 468var editor = Assert.Single(openIn.Children!); 488var row = Assert.Single(menu, item => item.Host is not null); 490var recentRow = Assert.Single(menu.Single(item => item.Label == "Recently opened \u00b7 1").Children!, item => item.Host is not null); 508var row = Assert.Single(menu, item => item.Host is not null); 528var recent = menu.Single(item => item.Label == "Recently opened \u00b7 2"); 529var row = recent.Children!.Single(item => item.Host?.Id.AppHostPath == removed); 530var action = row.Children!.Single(item => item.Action == LinuxTrayAction.RemoveRecent); 560var openIn = row.Children!.Single(item => item.Label == "Open in"); 585var row = Assert.Single(menu, item => item.Host is not null); 595var row = Assert.Single(LinuxTrayMenu.Build(new(DiscoveryState.Live, [host], ""), []), item => item.Host is not null); 617var row = Assert.Single(LinuxTrayMenu.Build(state, []), item => item.Host is not null); 641var row = LinuxTrayMenu.Build(new(DiscoveryState.Live, [host], ""), [])
src\Aspire.Tray\Linux\LinuxTrayApplication.cs (5)
17private readonly Dictionary<nint, LinuxTrayMenuItem> _commands = []; 372private unsafe nint BuildMenu(IReadOnlyList<LinuxTrayMenuItem> items) 375foreach (var item in items) 473&& app._commands.TryGetValue(widget, out var item) && item.Enabled) 486internal void Execute(LinuxTrayMenuItem item)
src\Aspire.Tray\Linux\LinuxTrayMenu.cs (5)
10AppHostMenuItem? Host = null, bool Enabled = true, IReadOnlyList<LinuxTrayMenuItem>? Children = null) 28internal static IReadOnlyList<LinuxTrayMenuItem> Build(TrayViewState state, IReadOnlyList<LinuxFolderApplication> applications) 31List<LinuxTrayMenuItem> items = [new($"Aspire \u00b7 {summary}", Enabled: false)]; 66LinuxTrayMenuItem Host(AppHostMenuItem host, bool recent) 68List<LinuxTrayMenuItem> actions = [];