using Avalonia.Controls; using Avalonia.Input.Platform; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; using LanMountainDesktop.Launcher.Resources; namespace LanMountainDesktop.Launcher.Views; public partial class MultiInstancePromptWindow : Window { private readonly TaskCompletionSource _completionSource = new(TaskCreationOptions.RunContinuationsAsynchronously); private string _details = Strings.MultiInstance_AlreadyRunning; public MultiInstancePromptWindow() { AvaloniaXamlLoader.Load(this); Loaded += OnLoaded; Closed += (_, _) => _completionSource.TrySetResult(MultiInstancePromptResult.Close); } public Task WaitForChoiceAsync() => _completionSource.Task; public void SetDetails(int processId, string shellState) { _details = string.Format(Strings.MultiInstance_DetailsFormat, processId, shellState); if (this.FindControl("DetailsText") is { } detailsText) { detailsText.Text = _details; } } private void OnLoaded(object? sender, RoutedEventArgs e) { if (this.FindControl