ViewerMainForm.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using Microsoft.AspNetCore.Components.WebView.WindowsForms;
  2. using WarcViewerBlazorWinForm.UI;
  3. namespace WarcViewerBlazorWinForm
  4. {
  5. public partial class ViewerMainForm : Form
  6. {
  7. public IServiceProvider? ServiceProvider { get; set; }
  8. public ViewerMainForm()
  9. {
  10. InitializeComponent();
  11. }
  12. private async void ViewerMainForm_Shown(object sender, EventArgs e)
  13. {
  14. if (ServiceProvider == null) throw new InvalidOperationException($"Must set {nameof(ServiceProvider)} before show!");
  15. MainBlazorWebView.HostPage = "wwwroot\\index.html";
  16. MainBlazorWebView.Services = ServiceProvider;
  17. MainBlazorWebView.RootComponents.Add<App>("#app");
  18. #if DEBUG
  19. await ShowF12();
  20. #endif
  21. }
  22. public async Task ShowF12()
  23. {
  24. await MainBlazorWebView.WebView.EnsureCoreWebView2Async();
  25. MainBlazorWebView.WebView.CoreWebView2.OpenDevToolsWindow();
  26. }
  27. public string? OpenFileWarc()
  28. {
  29. return OpenFile("All supported warc files (*.warc;*.7z;*.zip)|*.warc;*.7z;*.zip", "Open WARC file");
  30. }
  31. public string? OpenFile(string filter = "All files (*.*)|*.*", string? title = null)
  32. {
  33. var dlg = new OpenFileDialog
  34. {
  35. Multiselect = false,
  36. Title = title,
  37. Filter = filter,
  38. CheckFileExists = true,
  39. };
  40. var result = dlg.ShowDialog(this);
  41. return result == DialogResult.OK
  42. ? dlg.FileName : null;
  43. }
  44. }
  45. }