Files
Nitrox/Nitrox.Launcher/Views/CrashWindow.axaml
2025-07-06 00:23:46 +02:00

76 lines
4.2 KiB
XML

<Window
MinHeight="100"
MinWidth="800"
SizeToContent="WidthAndHeight"
Title="{Binding Title, TargetNullValue='Crash Report'}"
Width="1200"
WindowStartupLocation="CenterScreen"
d:DesignHeight="400"
d:DesignWidth="800"
mc:Ignorable="d"
x:Class="Nitrox.Launcher.Views.CrashWindow"
x:DataType="viewModels:CrashWindowViewModel"
xmlns="https://github.com/avaloniaui"
xmlns:controls="clr-namespace:Nitrox.Launcher.Models.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:design="clr-namespace:Nitrox.Launcher.Models.Design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:Nitrox.Launcher.ViewModels"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Design.DataContext>
<viewModels:CrashWindowViewModel>
<!-- TODO: Why isn't displayed as multi-line? -->
<viewModels:CrashWindowViewModel.Message>
<![CDATA[System.Exception: oops
at Nitrox.Launcher.ViewModels.MainWindowViewModel.OpenOptionsViewAsync() in Nitrox.Launcher/ViewModels/MainWindowViewModel.cs:line 152
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
at Avalonia.Threading.SendOrPostCallbackDispatcherOperation.InvokeCore()
at Avalonia.Threading.DispatcherOperation.Execute()
at Avalonia.Threading.Dispatcher.ExecuteJob(DispatcherOperation job)
at Avalonia.Threading.Dispatcher.ExecuteJobsCore(Boolean fromExplicitBackgroundProcessingCallback)
at Avalonia.Threading.Dispatcher.Signaled()
at Avalonia.X11.X11PlatformThreading.CheckSignaled()
at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken)
at Avalonia.Threading.DispatcherFrame.Run(IControlledDispatcherImpl impl)
at Avalonia.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken)
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args)
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime(AppBuilder builder, String[] args, Action`1 lifetimeBuilder)
at Nitrox.Launcher.Program.LoadAvalonia(String[] args) in Nitrox.Launcher/Program.cs:line 117
]]>
</viewModels:CrashWindowViewModel.Message>
</viewModels:CrashWindowViewModel>
</Design.DataContext>
<DockPanel LastChildFill="True">
<controls:CustomTitlebar DockPanel.Dock="Top" IsVisible="{Binding $parent[Window].(design:NitroxAttached.UseCustomTitleBar)}" ShowTitle="True" />
<Grid RowDefinitions="*,Auto">
<ScrollViewer>
<!-- TODO: Nice color highlighting (with option to click on line to open the source file?) -->
<SelectableTextBlock
FontSize="14"
Foreground="#FF4444"
Padding="10"
Text="{Binding Message}" />
</ScrollViewer>
<Border
Grid.Row="1"
Background="{DynamicResource BrandPanelBackground}"
Padding="10">
<StackPanel
HorizontalAlignment="Right"
Orientation="Horizontal"
Spacing="10">
<Button
Background="Transparent"
Command="{Binding CopyToClipboardCommand}"
CommandParameter="{Binding $self}"
Content="Copy to clipboard"
HotKey="Ctrl+Shift+C" />
<Button Command="{Binding ReportCommand}" Content="Report on GitHub" />
<Button Command="{Binding RestartCommand}" Content="Restart Nitrox" />
</StackPanel>
</Border>
</Grid>
</DockPanel>
</Window>