open another sln

This commit is contained in:
Matt Parker
2025-08-03 01:32:19 +10:00
parent a16507d17c
commit 505080e9b1
2 changed files with 20 additions and 11 deletions

View File

@@ -17,6 +17,9 @@
[CascadingParameter] [CascadingParameter]
public IMudDialogInstance MudDialog { get; set; } = null!; public IMudDialogInstance MudDialog { get; set; } = null!;
[Parameter]
public bool AutoOpenLastSolution { get; set; }
private string? _solutionFilePath; private string? _solutionFilePath;
protected override void OnInitialized() protected override void OnInitialized()
@@ -28,7 +31,7 @@
{ {
if (firstRender) if (firstRender)
{ {
if (AppState.IdeSettings.AutoOpenLastSolution && !string.IsNullOrWhiteSpace(_solutionFilePath)) if (AutoOpenLastSolution && !string.IsNullOrWhiteSpace(_solutionFilePath))
{ {
MudDialog.Close(_solutionFilePath); MudDialog.Close(_solutionFilePath);
} }

View File

@@ -14,7 +14,7 @@
<MudButton OnClick="@DrawerToggle" Style="min-width: 20px;"> <MudButton OnClick="@DrawerToggle" Style="min-width: 20px;">
<MudIcon Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit"/> <MudIcon Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit"/>
</MudButton> </MudButton>
<MudButton Style="min-width: 20px;"> <MudButton OnClick="@LoadSolutionFromInteractivePicker" Style="min-width: 20px;">
<MudIcon Icon="@Icons.Material.Filled.FolderOpen" Color="Color.Inherit"/> <MudIcon Icon="@Icons.Material.Filled.FolderOpen" Color="Color.Inherit"/>
</MudButton> </MudButton>
<MudButtonGroup OverrideStyles="false"> <MudButtonGroup OverrideStyles="false">
@@ -77,15 +77,7 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
var dialogRef = await DialogService.ShowAsync<SolutionPickerDialog>("Open Solution", new DialogOptions { FullWidth = true, MaxWidth = MaxWidth.Medium, BackdropClick = false }); await LoadSolutionFromInteractivePicker(AppState.IdeSettings.AutoOpenLastSolution);
var result = await dialogRef.Result;
if (result is null) throw new InvalidOperationException("Dialog result is null");
if (result.Canceled) throw new OperationCanceledException("Dialog was canceled");
var solutionFilePath = (string)result.Data!;
_solutionFilePath = solutionFilePath;
var solutionModel = await VsPersistenceMapper.GetSolutionModel(_solutionFilePath);
_solutionModel = solutionModel;
if (AppState.IdeSettings.AutoOpenTerminalOnLaunch) if (AppState.IdeSettings.AutoOpenTerminalOnLaunch)
{ {
_ = Task.Run(async () => _ = Task.Run(async () =>
@@ -98,6 +90,20 @@
} }
} }
private async Task LoadSolutionFromInteractivePicker() => await LoadSolutionFromInteractivePicker(false);
private async Task LoadSolutionFromInteractivePicker(bool autoOpenLastSolution)
{
var dialogRef = await DialogService.ShowAsync<SolutionPickerDialog>("Open Solution",new DialogParameters { [nameof(SolutionPickerDialog.AutoOpenLastSolution)] = autoOpenLastSolution }, new DialogOptions { FullWidth = true, MaxWidth = MaxWidth.Medium, BackdropClick = false });
var result = await dialogRef.Result;
if (result is null) throw new InvalidOperationException("Dialog result is null");
if (result.Canceled) throw new OperationCanceledException("Dialog was canceled");
var solutionFilePath = (string)result.Data!;
_solutionFilePath = solutionFilePath;
var solutionModel = await VsPersistenceMapper.GetSolutionModel(_solutionFilePath);
_solutionModel = solutionModel;
}
private CancellationTokenSource? _cancellationTokenSource = null!; private CancellationTokenSource? _cancellationTokenSource = null!;
private async Task BuildSolution() => await MsBuildSolution(BuildType.Build); private async Task BuildSolution() => await MsBuildSolution(BuildType.Build);
private async Task RebuildSolution() => await MsBuildSolution(BuildType.Rebuild); private async Task RebuildSolution() => await MsBuildSolution(BuildType.Rebuild);