diff --git a/src/SharpIDE.Application/Features/Run/RunService.cs b/src/SharpIDE.Application/Features/Run/RunService.cs index d549565..2cff7ad 100644 --- a/src/SharpIDE.Application/Features/Run/RunService.cs +++ b/src/SharpIDE.Application/Features/Run/RunService.cs @@ -103,6 +103,8 @@ public class RunService project.RunningCancellationTokenSource = null; project.Running = false; GlobalEvents.InvokeProjectsRunningChanged(); + GlobalEvents.InvokeProjectStoppedRunning(project); + project.InvokeProjectStoppedRunning(); Console.WriteLine("Project finished running"); } @@ -119,7 +121,6 @@ public class RunService if (project.RunningCancellationTokenSource is null) throw new InvalidOperationException($"Project {project.Name} does not have a running cancellation token source."); await project.RunningCancellationTokenSource.CancelAsync().ConfigureAwait(false); - GlobalEvents.InvokeProjectStoppedRunning(project); } private string GetRunArguments(SharpIdeProjectModel project) diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs index 3141483..41cea11 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs @@ -99,6 +99,10 @@ public class SharpIdeProjectModel : ISharpIdeNode, IExpandableSharpIdeNode, IChi public string BlazorDevServerVersion => MsBuildEvaluationProject.Items.Single(s => s.ItemType is "PackageReference" && s.EvaluatedInclude is "Microsoft.AspNetCore.Components.WebAssembly.DevServer").GetMetadataValue("Version"); public bool OpenInRunPanel { get; set; } public Channel? RunningOutputChannel { get; set; } + public event Func ProjectStartedRunning = () => Task.CompletedTask; - public void InvokeProjectStartedRunning() => ProjectStartedRunning?.Invoke(); + public void InvokeProjectStartedRunning() => ProjectStartedRunning.Invoke(); + + public event Func ProjectStoppedRunning = () => Task.CompletedTask; + public void InvokeProjectStoppedRunning() => ProjectStoppedRunning.Invoke(); } diff --git a/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs b/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs index 082f69b..81c6ab4 100644 --- a/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs +++ b/src/SharpIDE.Godot/Features/Run/RunMenuItem.cs @@ -19,6 +19,16 @@ public partial class RunMenuItem : HBoxContainer _stopButton = GetNode