42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Windows;
|
|
using System.Windows.Navigation;
|
|
using CursorLang.Services;
|
|
using CursorLang.ViewModels;
|
|
|
|
namespace CursorLang.Views;
|
|
|
|
/// <summary>
|
|
/// The settings window of the application.
|
|
/// </summary>
|
|
public partial class MainWindow : Window
|
|
{
|
|
public MainWindow(SettingsViewModel viewModel, IThemeService theme, MainWindowPlacement placement)
|
|
{
|
|
InitializeComponent();
|
|
DataContext = viewModel;
|
|
theme.Register(this);
|
|
placement.Attach(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Opens the release page in a browser. A link in WPF leads nowhere on its own:
|
|
/// where to hand it over is up to the application.
|
|
/// </summary>
|
|
private void OnReleaseLinkNavigate(object sender, RequestNavigateEventArgs e)
|
|
{
|
|
e.Handled = true;
|
|
|
|
try
|
|
{
|
|
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true })?.Dispose();
|
|
}
|
|
catch (Exception exception) when (exception is Win32Exception or InvalidOperationException)
|
|
{
|
|
// There is no browser in the system — that does not get in the way of the
|
|
// update, which is downloaded by the button next to it anyway
|
|
}
|
|
}
|
|
}
|